{"version":3,"file":"js/entry.js","mappings":"gCA+xBA,SAASA,IAEP,OADUC,OAAOC,aAAeC,SAASC,gBAAgBC,SAE3D,CAEA,SAASC,EAAOC,EAAQC,GAAS,IAAAC,EAa7BC,EACAC,EAbEC,EAAQX,OAAOC,YACjBW,EAAM,CACJC,SAAUN,EAAQM,SAClBC,OAAQP,EAAQO,QAAU,EAC1BC,SAAUR,EAAQQ,SAClBC,OAAQT,EAAQS,QA+BpB,SAAuBC,EAAGC,EAAGC,EAAGC,GAE9B,OADAH,GAAKG,EAAI,GACD,EAAWD,EAAI,EAAKF,EAAIA,EAAIC,GAE3BC,EAAI,KADbF,GACwBA,EAAI,GAAK,GAAKC,CACxC,GAlCEG,EACoB,iBAAXf,EACHM,EAAIE,SAAwC,QAA9BN,EAAAN,SAASoB,cAAchB,UAAO,IAAAE,OAAA,EAA9BA,EAAgCe,wBAAwBC,MAAO,GAC7ElB,EACNO,EAAmC,mBAAjBD,EAAIC,SAA0BD,EAAIC,SAASQ,GAAYT,EAAIC,SAS/E,SAASY,EAAKC,GACZhB,EAAcgB,EAAOjB,EAErBT,OAAO2B,SAAS,EAAGf,EAAII,OAAON,EAAaC,EAAOU,EAAUR,IAExDH,EAAcG,EAAUe,sBAAsBH,IAKlDzB,OAAO2B,SAAS,EAAGhB,EAAQU,GAEC,mBAAjBT,EAAIG,UAAyBH,EAAIG,WAL9C,CAZAa,uBAAsB,SAAUF,GAC9BjB,EAAYiB,EACZD,EAAKC,EACP,GAwBF,CA/0BAxB,SAAS2B,iBAAiB,oBAAoB,WAC5C,IAAMC,EAAO5B,SAAS4B,KAChBC,EAAW,eACXC,EAAa,iBACbC,EAAS/B,SAASgC,eAAe,UACjCC,EAASjC,SAASgC,eAAe,UAEvC,GAAID,EAAQ,CACV,IAAIG,EAAoBlC,SAASgC,eAAe,eAC5CE,GACFH,EAAOI,aAAa,mBAAoB,QACxCF,EAAOG,UAAUC,IAAI,sBACrBN,EAAOK,UAAUC,IAAI,mBAErBN,EAAOK,UAAUC,IAAI,iBAEzB,CAEA,IAAIC,EAActC,SAASgC,eAAe,aACtCO,EAAgB,EAEpBC,IAAIC,KAAK,CACPC,MAAM,IAIR,IAAMC,EAAW3C,SAASgC,eAAe,oBACnCY,EAAiB5C,SAASgC,eAAe,uBAE3CW,GACFA,EAAShB,iBAAiB,SAAS,SAAUkB,GAC3CjB,EAAKQ,UAAUU,OAAO,gBACxB,IAGEF,IACFA,EAAejB,iBAAiB,iBAAiB,SAAUkB,GACzDjB,EAAKQ,UAAUC,IAAI,uBACrB,IAEAO,EAAejB,iBAAiB,mBAAmB,SAAUkB,GAC3DjB,EAAKQ,UAAUW,OAAO,uBACxB,IAEAjD,OAAO6B,iBAAiB,SAAS,SAAUkB,GACpC7C,SAASoB,cAAc,oBAAoB4B,SAASH,EAAEzC,SACzDwB,EAAKQ,UAAUW,OAAO,gBAE1B,KAKEd,GACOpC,IACA,GACPoC,EAAOG,UAAUW,OAAO,sBAI5B,IAAIE,EAAgBjD,SAASoB,cAAc,gBAC3C,GAAI6B,EAAe,CACjB,IAAIC,EAAiBD,EAAc7B,cAAc,eAC7C+B,EAAc,IAAIC,OAAOH,EAAe,CAC1CI,OAAQ,OACRC,MAAO,IACPC,SAAU,CACRC,MAAO,KAETC,cAAe,IAGjBN,EAAYO,GAAG,eAAe,WAC5BC,MAAMC,KAAKT,EAAYU,QAAQC,SAAQ,SAAUC,GAC/C,GAAIA,EAAM3B,UAAUY,SAAS,aAAc,CACzC,IAAIgB,EAAQD,EAAME,qBAAqB,SACvCD,EAAM,GAAG5B,UAAUC,IAAI,SACvB2B,EAAM,GAAGE,OACX,CACF,IACkBhB,EAAeiB,iBAAiB,oBACtCL,SAAQ,SAAUM,GAC5BA,EAAWhC,UAAUW,OAAO,UACxBqB,EAAWC,QAAQC,YAAcnB,EAAYoB,aAC/CH,EAAWhC,UAAUC,IAAI,SAE7B,GACF,IAEAc,EAAYO,GAAG,8BAA8B,WACvCP,EAAYU,OAAOV,EAAYqB,WAAWpC,UAAUY,SAAS,cACnDG,EAAYU,OAAOV,EAAYqB,WAAWP,qBAAqB,SACrE,GAAGQ,MAEb,IAEAvB,EAAeiB,iBAAiB,UAAUL,SAAQ,SAAUY,EAAIC,GAC9DD,EAAG/C,iBAAiB,SAAS,SAAUkB,GACrCA,EAAE+B,iBACF3B,EAAcd,aAAa,uBAAwB,SACnDuC,EAAGG,WAAWzC,UAAUC,IAAI,UAC5Bc,EAAY2B,QAAQJ,EAAGG,WAAWR,QAAQC,YAE1CpB,EAAeiB,iBAAiB,MAAML,SAAQ,SAAUiB,EAAKC,GACvDL,IAAQK,GACVD,EAAI3C,UAAUW,OAAO,SAEzB,GACF,GACF,GACF,CAEA,IAAIkC,EAAiBjF,SAASgC,eAAe,gBAsCzCkD,GArCe,IAAI9B,OAAO6B,EAAgB,CAC5C3B,MAAO,IACPG,cAAe,EACf0B,eAAe,EACfC,WAAY,CACVC,cAAe,0BACfC,YAAa,wBACbC,UAAW,sBACXC,OAAQ,uBACRC,OAAQ,wBAEVC,WAAY,CACVC,cAAe,qBACfC,qBAAsB,qCACtBlB,GAAI,iCACJmB,KAAM,eAERC,YAAa,CACX,IAAK,CACHrC,cAAe,EACfsC,aAAc,IAEhB,IAAK,CACHtC,cAAe,EACfsC,aAAc,IAEhB,IAAK,CACHtC,cAAe,EACfsC,aAAc,IAEhB,KAAM,CACJtC,cAAe,EACfsC,aAAc,OAKG/F,SAASgC,eAAe,mBAC3CkD,GACmB,IAAI9B,OAAO8B,EAAkB,CAChD5B,MAAO,IACPG,cAAe,EACf0B,eAAe,EACfC,WAAY,CACVC,cAAe,0BACfC,YAAa,wBACbC,UAAW,sBACXC,OAAQN,EAAiB9D,cAAc,wBACvCqE,OAAQP,EAAiB9D,cAAc,yBAEzCsE,WAAY,CACVE,qBAAsB,qCACtBlB,GAAIQ,EAAiB9D,cAAc,kCACnCyE,KAAM,eAERC,YAAa,CACX,IAAK,CACHrC,cAAe,EACfsC,aAAc,IAEhB,IAAK,CACHtC,cAAe,EACfsC,aAAc,IAEhB,IAAK,CACHtC,cAAe,EACfsC,aAAc,IAEhB,KAAM,CACJtC,cAAe,EACfsC,aAAc,OAMtB,IAAIC,EAAsBhG,SAASgC,eAAe,qBAC9CgE,GACsB,IAAI5C,OAAO4C,EAAqB,CACtD1C,MAAO,IACPG,cAAe,EACf0B,eAAe,EACfC,WAAY,CACVI,OAAQQ,EAAoB5E,cAAc,wBAC1CqE,OAAQO,EAAoB5E,cAAc,yBAE5CsE,WAAY,CACVE,qBAAsB,qCACtBP,cAAe,0BACfC,YAAa,wBACbC,UAAW,sBACXb,GAAIsB,EAAoB5E,cAAc,kCACtCyE,KAAM,eAERC,YAAa,CACX,IAAK,CACHrC,cAAe,EACfsC,aAAc,IAEhB,IAAK,CACHtC,cAAe,EACfsC,aAAc,IAEhB,IAAK,CACHtC,cAAe,EACfsC,aAAc,IAEhB,KAAM,CACJtC,cAAe,EACfsC,aAAc,OAOI,GAAGE,MAAMC,KACjClG,SAASmE,iBAAiB,iDAERL,SAAQ,SAAUqC,GACpCA,EAAexE,iBAAiB,gBAAgB,SAAUkB,GACxD,GAAIA,EAAEzC,OAAQ,CACZ,IAAIgG,EAAYvD,EAAEzC,OAAOiG,aAAa,SAElCC,EADUtG,SAASoB,cAAcgF,GACdnC,qBAAqB,UAC/BsC,OAAS,GACpBD,EAAS,GAAG7B,MAEhB,MAAO,GAAI5B,EAAE2D,cAAe,CAC1B,IAEIF,EAFAF,EAAYvD,EAAE2D,cAAcH,aAAa,SAEzCC,EADUtG,SAASoB,cAAcgF,GACdnC,qBAAqB,UAC/BsC,OAAS,GACpBD,EAAS,GAAGpC,OAEhB,CACF,GACF,IAGA,IAAIuC,EAA4BzG,SAASoB,cAAc,uBACnDqF,GACsB,IAAIrD,OAAOqD,EAA2B,CAC5DrB,WAAY,CACVC,cAAe,0BACfC,YAAa,wBACbC,UAAW,sBACXC,OAAQiB,EAA0BrF,cAAc,wBAChDqE,OAAQgB,EAA0BrF,cAAc,yBAElDsC,GAAI,CACFjB,KAAM,WACJ,IAAIiE,EAAcC,KAAKjC,GAAGtD,cAAc,iDACtCwF,EAAaD,KAAKjC,GAAGtD,cAAc,+CACrCsF,EAAYG,UAAY,KAAOF,KAAKpC,YAAc,GAClDqC,EAAWC,UAAY,IAAMF,KAAK9C,OAAO0C,MAC3C,EACAO,YAAa,WACX,IAAIC,EAAc,GAAGd,MAAMC,KACzBlG,SAASmE,iBAAiB,kDAExB4C,IACFA,EAAYjD,SAAQ,SAAUkD,GAC5BA,EAAKC,MAAMC,YAAY,UAAW,IACpC,IACAH,EAAYJ,KAAKnC,WAAWyC,MAAMC,YAAY,UAAW,MAE3D,IAAIC,EAAe,KAAOR,KAAKnC,UAAY,GAC3CmC,KAAKjC,GAAGtD,cAAc,iDAAiDyF,UACrEM,CACJ,GAEF9D,OAAQ,OACRC,MAAO,IACPG,cAAe,IAInB,IAAI2D,EAAkBpH,SAASoB,cAAc,kBAC7C,GAAIgG,EAAiB,CACnB,IAAIC,EAAmBD,EAAgBhG,cAAc,eACjDkG,EAAgB,IAAIlE,OAAOgE,EAAiB,CAC9C/D,OAAQ,OACRC,MAAO,IACPC,SAAU,CACRC,MAAO,KAETC,cAAe,IAGjB6D,EAAc5D,GAAG,8BAA8B,WACzC4D,EAAczD,OAAOyD,EAAc9C,WAAWpC,UAAUY,SAAS,cACvDsE,EAAczD,OAAOyD,EAAc9C,WAAWP,qBAAqB,SACzE,GAAGQ,MAEb,IAEA6C,EAAc5D,GAAG,eAAe,WAC9BC,MAAMC,KAAK0D,EAAczD,QAAQC,SAAQ,SAAUC,GACjD,GAAIA,EAAM3B,UAAUY,SAAS,aAAc,CACzC,IAAIgB,EAAQD,EAAME,qBAAqB,SACvCD,EAAM,GAAG5B,UAAUC,IAAI,SACvB2B,EAAM,GAAGE,OACX,CACF,IAEkBkD,EAAgBjD,iBAAiB,oBACvCL,SAAQ,SAAUM,GAC5BA,EAAWhC,UAAUW,OAAO,UACxBqB,EAAWC,QAAQC,YAAcgD,EAAc/C,aACjDH,EAAWhC,UAAUC,IAAI,SAE7B,GACF,IAEAgF,EAAiBlD,iBAAiB,UAAUL,SAAQ,SAAUY,EAAIC,GAChED,EAAG/C,iBAAiB,SAAS,SAAUkB,GACrCA,EAAE+B,iBACFwC,EAAgBjF,aAAa,uBAAwB,SACrDuC,EAAGG,WAAWzC,UAAUC,IAAI,UAC5BiF,EAAcxC,QAAQJ,EAAGG,WAAWR,QAAQC,YAE5C+C,EAAiBlD,iBAAiB,MAAML,SAAQ,SAAUiB,EAAKC,GACzDL,IAAQK,GACVD,EAAI3C,UAAUW,OAAO,SAEzB,GACF,GACF,GACF,CAGA,IAAIwE,EAAmBvH,SAASgC,eAAe,kBAC/C,GAAIuF,EAAkB,CACpB,IAAIC,EAAwB,CAC1BlE,MAAO,IACP6B,eAAe,EACfC,WAAY,CACVC,cAAe,0BACfC,YAAa,wBACbC,UAAW,sBACXC,OAAQ+B,EAAiBnG,cAAc,0CACvCqE,OAAQ8B,EAAiBnG,cAAc,2CAEzCsC,GAAI,CACFjB,KAAM,WACJ,IAAIiE,EAAcC,KAAKjC,GAAGtD,cAAc,yBACtCwF,EAAaD,KAAKjC,GAAGtD,cAAc,uBACrCsF,EAAYG,UAAY,KAAOF,KAAKpC,YAAc,GAClDqC,EAAWC,UAAY,IAAMF,KAAK9C,OAAO0C,MAC3C,EACAO,YAAa,WACX,IAAIK,EAAe,KAAOR,KAAKnC,UAAY,GAC3CmC,KAAKjC,GAAGtD,cAAc,yBAAyByF,UAAYM,CAC7D,IAGAM,EAAiB,IAAIrE,OAAOmE,EAAkBC,GAElDC,EAAe/D,GAAG,8BAA8B,WAC1CiD,KAAK9C,OAAO8C,KAAKnC,WAAWpC,UAAUY,SAAS,cACrC2D,KAAK9C,OAAO8C,KAAKnC,WAAWP,qBAAqB,SACvD,GAAGQ,MAEb,IAEAgD,EAAe/D,GAAG,eAAe,WAC/BC,MAAMC,KAAK+C,KAAK9C,QAAQC,SAAQ,SAAUC,GACxC,GAAIA,EAAM3B,UAAUY,SAAS,aAAc,CACzC,IAAIgB,EAAQD,EAAME,qBAAqB,SACvCD,EAAM,GAAG5B,UAAUC,IAAI,SACvB2B,EAAM,GAAGE,OACX,CACF,GACF,GACF,CAGA,IAAIwD,EAAkB1H,SAASgC,eAAe,iBAC1C0F,GAoCkB,IAAItE,OAAOsE,EAnCJ,CACzBpE,MAAO,IACP6B,eAAe,EACfwC,uBAAuB,EACvBvC,WAAY,CACVC,cAAe,0BACfC,YAAa,wBACbC,UAAW,sBACXC,OAAQ,uCACRC,OAAQ,wCAEVC,WAAY,CACVE,qBAAsB,qCACtBlB,GAAI,iCACJmB,KAAM,eAERC,YAAa,CACX,IAAK,CACHrC,cAAe,EACfsC,aAAc,IAEhB,IAAK,CACHtC,cAAe,EACfsC,aAAc,IAEhB,IAAK,CACHtC,cAAe,EACfsC,aAAc,IAEhB,KAAM,CACJtC,cAAe,EACfsC,aAAc,OAQtB,IAAI6B,EAAc5H,SAASoB,cAAc,wBACrCwG,GACFA,EAAYjG,iBAAiB,SAAS,SAAUkB,GAC9C+E,EAAYxF,UAAUU,OAAO,UAC7BlB,EAAKQ,UAAUU,OAAO,aAEtB8E,EAAYzF,aACV,gBAC8C,UAA9CyF,EAAYvB,aAAa,iBAA+B,OAAS,QAErE,IAGF,IAAIwB,EAAc7H,SAASgC,eAAe,eACtC6F,GAC2BA,EAAY1D,iBACvC,0CAEqBL,SAAQ,SAAUgE,EAAgBnD,GACvDmD,EAAenG,iBAAiB,SAAS,SAAUkB,GACjDA,EAAE+B,iBACFkD,EAAejD,WAAW1C,aACxB,gBAC4D,UAA5D2F,EAAejD,WAAWwB,aAAa,iBAA+B,OAAS,QAEnF,GACF,IAIF,IAAI0B,EAAiB/H,SAASoB,cAAc,oBACxC2G,IACFA,EAAeC,QAAU,SAAUnF,GACjCA,EAAE+B,iBACF,IAAIqD,EAAoBjI,SAASoB,cAAc,0CACxB,IAAI8G,UAAUC,IAAIF,GACxBG,MACnB,GAGF,IAAIC,EAAerI,SAASgC,eAAe,gBAEvCqG,GACFA,EAAa1G,iBAAiB,mBAAmB,SAAUkB,GACzD,IAAIyF,EAAatI,SAASoB,cAAc,wCACxB,IAAI8G,UAAUC,IAAIG,GACxBF,MACZ,IAGF,IAAMG,EAAgBvI,SAASoB,cAAc,0BACvCoH,EAAgBxI,SAASgC,eAAe,mBACxCyG,EAAazI,SAASgC,eAAe,UAE3C,GAAIuG,EAAe,CACjB,IAAMG,EAAoBH,EAAcnH,cAAc,YAEhDuH,EAAyB,SAAzBA,EAA0B9F,GAE3B4F,EAAWrH,cAAc,kBAAkB4B,SAASH,EAAEzC,SACtD6B,EAAOe,SAASH,EAAEzC,SAC0B,SAA7CqI,EAAWpC,aAAa,mBAExBzE,EAAKQ,UAAUU,OAAO,eACtB2F,EAAWtG,aAAa,gBAAiB,SACzCoG,EAAcnG,UAAUW,OAAO,UAC/BwF,EAAcpG,aAAa,gBAAiB,SAC5CuG,EAAkBtG,UAAUW,OAAO,iBACnC2F,EAAkBtG,UAAUC,IAAI,kBAChCrC,SAAS4I,oBAAoB,QAASD,GAE1C,EAEAJ,EAAc5G,iBAAiB,SAAS,SAAUkB,GAChDA,EAAE+B,iBACFhD,EAAKQ,UAAUU,OAAO,eACtB2F,EAAWtG,aACT,gBAC6C,UAA7CsG,EAAWpC,aAAa,iBAA+B,OAAS,SAElErG,SAAS2B,iBAAiB,QAASgH,GAE/B/G,EAAKQ,UAAUY,SAAS,gBAC1B0F,EAAkBtG,UAAUW,OAAO,kBACnC2F,EAAkBtG,UAAUC,IAAI,iBAChCkG,EAAcnG,UAAUC,IAAI,UAC5BkG,EAAcpG,aAAa,gBAAiB,QAC5C0G,YAAW,WA8QnB,IAAkBC,KA7QCN,KA+QV,wCAAwCO,KAAKD,EAAQE,WACxDF,EAAQG,UAAY,GAGtBH,EAAQI,QAlRJ,GAAG,OAEHR,EAAkBtG,UAAUW,OAAO,iBACnC2F,EAAkBtG,UAAUC,IAAI,kBAChCkG,EAAcnG,UAAUW,OAAO,UAC/BwF,EAAcpG,aAAa,gBAAiB,SAEhD,GACF,CAEAnC,SAAS2B,iBAAiB,WAAW,SAAUwH,GAC3B,WAAdA,EAAMxE,MACJ/C,EAAKQ,UAAUY,SAAS,gBAC1BpB,EAAKQ,UAAUW,OAAO,eACtB2F,kBAAkBtG,UAAUC,IAAI,kBAChCqG,kBAAkBtG,UAAUW,OAAO,iBACnCwF,EAAcnG,UAAUW,OAAO,UAC/BwF,EAAcpG,aAAa,gBAAiB,UACnCP,EAAKQ,UAAUY,SAAS,eACjCpB,EAAKQ,UAAUW,OAAO,eACbnB,EAAKQ,UAAUY,SAAS,kBACjCpB,EAAKQ,UAAUW,OAAO,iBAG5B,IAGIT,GACFA,EAAYX,iBAAiB,SAAS,SAAUkB,GAC9CA,EAAEuG,kBACFvG,EAAE+B,iBACFzE,EAAO0C,EAAEzC,OAAOiJ,KAAM,CACpB1I,SAAU,KAEd,IAIFX,SAASmE,iBAAiB,4BAA4BL,SAAQ,SAAUY,GACtEA,EAAG/C,iBAAiB,SAAS,SAAUkB,GACrCA,EAAE+B,iBACF,IAAMxE,EAASsE,EAAGL,QAAQjE,OAC1BJ,SAASoB,cAAchB,GAAQ8I,QAC/B,IAAMI,EAAO5E,EAAGtD,cAAc,YAE6B,YAAvDpB,SAASoB,cAAchB,GAAQiG,aAAa,SAC9CrG,SAASoB,cAAchB,GAAQ+B,aAAa,OAAQ,QACpDmH,EAAKlH,UAAUW,OAAO,eACtBuG,EAAKlH,UAAUC,IAAI,qBAEnBrC,SAASoB,cAAchB,GAAQ+B,aAAa,OAAQ,YACpDmH,EAAKlH,UAAUW,OAAO,mBACtBuG,EAAKlH,UAAUC,IAAI,eAEvB,GACF,IAEA,IAAIkH,EAAqB,EAErBC,EAAkBxJ,SAASgC,eAAe,oBAC1CyH,EAAgBzJ,SAASgC,eAAe,kBACxC0H,EAAiB1J,SAASoB,cAAc,oBAEtCuI,EAAkB3J,SAASgC,eAAe,qBAE5CwH,GAAmBC,GAAiBC,IACtCF,EAAgB7H,iBAAiB,SAAS,SAAUkB,GAClDjB,EAAKQ,UAAUU,OAAO,cACxB,IACA4G,EAAe/H,iBAAiB,SAAS,SAAUkB,GACjDjB,EAAKQ,UAAUW,OAAO,cAGxB,IACA0G,EAAc9H,iBAAiB,SAAS,SAAUkB,GAC5C0G,EAAqB,GACvBI,EAAgBC,QAElBhI,EAAKQ,UAAUW,OAAO,cACxB,KAGF,IAAM8G,EAAiB7J,SAASgC,eAAe,oBAG3C6H,GACFA,EAAelI,iBAAiB,SAAS,SAAUwH,GAC5CA,EAAM/I,OAAO0J,QAAQ,sBAE1BC,EADAR,EAAqBM,EAAe1F,iBAAiB,6BAA6BoC,OAEpF,IAGF,IAAIyD,EAAsBhK,SAASmE,iBAAiB,yBAChD6F,GACFA,EAAoBlG,SAAQ,SAACmG,GACvBA,EAAI7H,UAAUY,SAAS,eACzBiH,EAAItI,iBAAiB,SAAS,SAACkB,GAC7BqH,GACF,IAEAD,EAAItI,iBAAiB,SAAS,SAACkB,GAC7BqH,IACAP,EAAgBC,OAClB,GAEJ,IAGF,IAAIO,EAAmBnK,SAASmE,iBAAiB,yBACjD,SAAS4F,EAAsBK,GACzBD,GACFA,EAAiBrG,SAAQ,SAACY,GACxBA,EAAG2F,YAAc,IAAHC,OAAOF,EAAK,IAC5B,GAEJ,CACA,SAASF,IACPL,EAAe1F,iBAAiB,qBAAqBL,SAAQ,SAACyG,GAC5DA,EAASC,SAAU,EAEnBT,EADAR,EAAqB,EAGvB,GACF,CAGA,IAAIkB,EAAmBzK,SAASgC,eAAe,kBAE/ChC,SAASmE,iBAAiB,4BAA4BL,SAAQ,SAAUY,GACtEA,EAAG/C,iBAAiB,SAAS,SAAUkB,GACrCA,EAAE+B,iBACF,IAAI8F,EAAY1K,SAASoB,cACvB,uBAAyBsD,EAAG2B,aAAa,QAAU,MAEjDqE,GAAaD,IACfC,EAAUd,QACVhI,EAAKQ,UAAUU,OAAO,iBACtB2H,EAAiBtI,aAAa,gBAAiB,QAC/CsI,EAAiB9I,iBAAiB,QAASgJ,GAAkB,GAEjE,GACF,IAEA,IAAIC,EAAgB5K,SAASoB,cAAc,6BACvCwJ,GACFA,EAAcjJ,iBAAiB,SAAS,SAAUkB,GAChD,IAAIgI,EAAS7K,SAASoB,cAAc,mCAChCyJ,IACFjJ,EAAKQ,UAAUW,OAAO,iBACtB8H,EAAO1I,aAAa,gBAAiB,SAEzC,IAEF,IAAIwI,EAAmB,SAAnBA,EAA6B9H,GAC1BA,EAAEzC,OAAO0K,QAAQ,sBACpBlJ,EAAKQ,UAAUW,OAAO,iBACtBF,EAAEzC,OAAO+B,aAAa,gBAAiB,SACvCU,EAAEzC,OAAOwI,oBAAoB,QAAS+B,GAAkB,GAE5D,EAEII,EAAkB/K,SAASmE,iBAAiB,2BAE5C4G,GACFA,EAAgBjH,SAAQ,SAAUkH,GAChCA,EAAIrJ,iBAAiB,eAAe,SAAUkB,GAC5C,IAAIoI,EAAcD,EAAIF,QAAQ,iBAE1BjI,EAAEzC,OAAOgC,UAAUY,SAAS,cACTiI,EAAY7J,cAC/B,gCAAkCyB,EAAEzC,OAAOiG,aAAa,QAAU,MAEhCpC,qBAAqB,SAC1C,GAAGQ,OAEhB5B,EAAE2D,cAAcpE,UAAUY,SAAS,cAChBiI,EAAY7J,cAC/B,gCAAkCyB,EAAE2D,cAAcH,aAAa,QAAU,MAEvCpC,qBAAqB,SAC1C,GAAGC,OAEtB,GACF,IAIEjC,GACFnC,OAAO6B,iBACL,UACA,WACE,IAAIuJ,EAAKrL,IACLqL,EAAK3I,GAEPX,EAAKQ,UAAUW,OAAOlB,GACtBD,EAAKQ,UAAUC,IAAIP,GACE,GAAjBS,GAAsB2I,EAAK,IAC7BtJ,EAAKQ,UAAUW,OAAOjB,KAIxBF,EAAKQ,UAAUW,OAAOjB,GACtBF,EAAKQ,UAAUC,IAAIR,GAEfU,EAAgB,IAAML,EACxBD,EAAOG,UAAUC,IAAI,sBAErBJ,EAAOG,UAAUW,OAAO,uBAGlB,GAANmI,IACFtJ,EAAKQ,UAAUW,OAAOjB,GACtBF,EAAKQ,UAAUW,OAAOlB,IAGpBqJ,EAAK5I,EAAY+B,QAAQ8G,WAC3B7I,EAAYF,UAAUC,IAAI,UAE1BC,EAAYF,UAAUW,OAAO,UAG/BR,EAAgB2I,GAAM,EAAI,EAAIA,CAChC,IACA,GAKJpL,OAAO6B,iBAAiB,QAAQ,SAAUkB,GACxC,IAAMjB,EAAO5B,SAAS4B,KAItB,GAHAA,EAAKQ,UAAUW,OAAO,gBACtBnB,EAAKQ,UAAUC,IAAI,eAEfvC,OAAOsL,SAAS/B,KAAM,CACxB,IAAIA,EAAOvJ,OAAOsL,SAAS/B,KAAKgC,UAAU,GAE9B,mBAARhC,GACFlJ,EAAO,kBAAoBkJ,EAAO,KAAM,CACtC1I,SAAU,MAEZ2K,EAAE,sBAAsBC,SAAS,SAEjCpL,EAAO,kBAAoBkJ,EAAO,KAAM,CACtC1I,SAAU,KAGhB,CACAX,SAASmE,iBAAiB,WAAWL,SAAQ,SAAUY,GACrDA,EAAG/C,iBAAiB,SAAS,SAAUkB,GAGrC,IAAIjC,EAFJiC,EAAEuG,kBACFvG,EAAE+B,iBAKAhE,EAHG8D,EAAG8G,aAAa,sBAGV9G,EAAGL,QAAQoH,cAFV,GAKZtL,EAAO,iBAAmB0C,EAAEzC,OAAOiJ,KAAO,KAAM,CAC9C1I,SAAU,IACVC,OAAQ8K,SAAS9K,IAErB,GACF,GACF,GACF,G,WCnxBA,IAAM+K,EAAY3L,SAASoB,cAAc,kBACnCwK,EAA2B5L,SAASmE,iBAAiB,0BAE3D,SAAS0H,IACP7L,SAAS4B,KAAKQ,UAAUC,IAAI,yBAC5BsJ,EAAUvJ,UAAUC,IAAI,mBAC1B,CAEIsJ,GAAaC,EAAyBrF,OAAS,GACjDqF,EAAyB9H,SAAQ,SAAChB,GAAM,OAAKA,EAAOnB,iBAAiB,QAASkK,EAAkB,G,WCTlG7L,SAAS2B,iBAAiB,oBAAoB,WACvB3B,SAASmE,iBAAiB,oBAElCL,SAAQ,SAACgI,GACpB,IAAMC,EAAUD,EAAY1K,cAAc,aACpC4K,EAASF,EAAY1K,cAAc,UACnC6K,EAAcH,EAAY1K,cAAc,8BAE1C2K,GACFA,EAAQpK,iBAAiB,SAAS,WAChC,IAAIuK,EAAYF,EAAOG,IAEnBD,EAAUE,SAAS,KACrBF,GAAa,cAEbA,GAAa,cAGfF,EAAOG,IAAMD,EACbD,EAAYhF,MAAMoF,QAAU,OAC5BN,EAAQ9E,MAAMoF,QAAU,MAC1B,GAEJ,GACF,G,GCvBIC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCrBAJ,EAAoBrL,EAAI,CAACyL,EAASG,KACjC,IAAI,IAAInI,KAAOmI,EACXP,EAAoBQ,EAAED,EAAYnI,KAAS4H,EAAoBQ,EAAEJ,EAAShI,IAC5EqI,OAAOC,eAAeN,EAAShI,EAAK,CAAEuI,YAAY,EAAMC,IAAKL,EAAWnI,IAE1E,ECND4H,EAAoBQ,EAAI,CAACK,EAAKC,IAAUL,OAAOM,UAAUC,eAAerH,KAAKkH,EAAKC,GCClFd,EAAoBiB,EAAKb,IACH,oBAAXc,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeN,EAASc,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeN,EAAS,aAAc,CAAEgB,OAAO,GAAO,E,gSCL9D,MAAMC,EAAQ,eACRC,EAAgB,IAAIC,OAAO,IAAMF,EAAQ,aAAc,MACvDG,EAAe,IAAID,OAAO,IAAMF,EAAQ,KAAM,MAEpD,SAASI,EAAiBC,EAAYC,GACrC,IAEC,MAAO,CAACC,mBAAmBF,EAAWG,KAAK,KAC5C,CAAE,MAEF,CAEA,GAA0B,IAAtBH,EAAW1H,OACd,OAAO0H,EAGRC,EAAQA,GAAS,EAGjB,MAAMG,EAAOJ,EAAWhI,MAAM,EAAGiI,GAC3BI,EAAQL,EAAWhI,MAAMiI,GAE/B,OAAOvK,MAAM2J,UAAUhD,OAAOpE,KAAK,GAAI8H,EAAiBK,GAAOL,EAAiBM,GACjF,CAEA,SAASC,EAAOC,GACf,IACC,OAAOL,mBAAmBK,EAC3B,CAAE,MACD,IAAIC,EAASD,EAAME,MAAMb,IAAkB,GAE3C,IAAK,IAAIc,EAAI,EAAGA,EAAIF,EAAOlI,OAAQoI,IAGlCF,GAFAD,EAAQR,EAAiBS,EAAQE,GAAGP,KAAK,KAE1BM,MAAMb,IAAkB,GAGxC,OAAOW,CACR,CACD,CCvCe,SAASI,EAAaC,EAAQC,GAC5C,GAAwB,iBAAXD,GAA4C,iBAAdC,EAC1C,MAAM,IAAIC,UAAU,iDAGrB,GAAe,KAAXF,GAA+B,KAAdC,EACpB,MAAO,GAGR,MAAME,EAAiBH,EAAOI,QAAQH,GAEtC,OAAwB,IAApBE,EACI,GAGD,CACNH,EAAO5I,MAAM,EAAG+I,GAChBH,EAAO5I,MAAM+I,EAAiBF,EAAUvI,QAE1C,CCnBO,SAAS2I,EAAYC,EAAQC,GACnC,MAAMC,EAAS,CAAC,EAEhB,GAAI1L,MAAM2L,QAAQF,GACjB,IAAK,MAAMzK,KAAOyK,EAAW,CAC5B,MAAMG,EAAavC,OAAOwC,yBAAyBL,EAAQxK,GACvD4K,GAAYrC,YACfF,OAAOC,eAAeoC,EAAQ1K,EAAK4K,EAErC,MAGA,IAAK,MAAM5K,KAAO8K,QAAQC,QAAQP,GAAS,CAC1C,MAAMI,EAAavC,OAAOwC,yBAAyBL,EAAQxK,GACvD4K,EAAWrC,YAEVkC,EAAUzK,EADAwK,EAAOxK,GACKwK,IACzBnC,OAAOC,eAAeoC,EAAQ1K,EAAK4K,EAGtC,CAGD,OAAOF,CACR,CCpBA,MAAMM,EAAoBhC,GAASA,QAG7BiC,EAAkBf,GAAUgB,mBAAmBhB,GAAQiB,WAAW,YAAYC,GAAK,IAAIA,EAAEC,WAAW,GAAGC,SAAS,IAAIC,kBAEpHC,EAA2B1C,OAAO,4BA8OxC,SAAS2C,EAA6BzC,GACrC,GAAqB,iBAAVA,GAAuC,IAAjBA,EAAMpH,OACtC,MAAM,IAAIwI,UAAU,uDAEtB,CAEA,SAASsB,EAAO1C,EAAOtN,GACtB,OAAIA,EAAQgQ,OACJhQ,EAAQiQ,OAASV,EAAgBjC,GAASkC,mBAAmBlC,GAG9DA,CACR,CAEA,SAAS,EAAOA,EAAOtN,GACtB,OAAIA,EAAQkO,OHzLE,SAA4BgC,GAC1C,GAA0B,iBAAfA,EACV,MAAM,IAAIxB,UAAU,6DAA+DwB,EAAa,KAGjG,IAEC,OAAOpC,mBAAmBoC,EAC3B,CAAE,MAED,OA9CF,SAAkC/B,GAEjC,MAAMgC,EAAa,CAClB,SAAU,KACV,SAAU,MAGX,IAAI9B,EAAQX,EAAa0C,KAAKjC,GAC9B,KAAOE,GAAO,CACb,IAEC8B,EAAW9B,EAAM,IAAMP,mBAAmBO,EAAM,GACjD,CAAE,MACD,MAAMW,EAASd,EAAOG,EAAM,IAExBW,IAAWX,EAAM,KACpB8B,EAAW9B,EAAM,IAAMW,EAEzB,CAEAX,EAAQX,EAAa0C,KAAKjC,EAC3B,CAGAgC,EAAW,OAAS,IAEpB,MAAME,EAAU1D,OAAO2D,KAAKH,GAE5B,IAAK,MAAM7L,KAAO+L,EAEjBlC,EAAQA,EAAMoC,QAAQ,IAAI9C,OAAOnJ,EAAK,KAAM6L,EAAW7L,IAGxD,OAAO6J,CACR,CAYSqC,CAAyBN,EACjC,CACD,CG8KS,CAAgB5C,GAGjBA,CACR,CAEA,SAASmD,EAAWtC,GACnB,OAAI7K,MAAM2L,QAAQd,GACVA,EAAMuC,OAGO,iBAAVvC,EACHsC,EAAW9D,OAAO2D,KAAKnC,IAC5BuC,MAAK,CAACC,EAAGhQ,IAAMiQ,OAAOD,GAAKC,OAAOjQ,KAClCkQ,KAAIvM,GAAO6J,EAAM7J,KAGb6J,CACR,CAEA,SAAS2C,EAAW3C,GACnB,MAAM4C,EAAY5C,EAAMS,QAAQ,KAKhC,OAJmB,IAAfmC,IACH5C,EAAQA,EAAMvI,MAAM,EAAGmL,IAGjB5C,CACR,CAYA,SAAS6C,EAAW1D,EAAOtN,GAO1B,OANIA,EAAQiR,eAAiBL,OAAOM,MAAMN,OAAOtD,KAA6B,iBAAVA,GAAuC,KAAjBA,EAAM6D,OAC/F7D,EAAQsD,OAAOtD,IACLtN,EAAQoR,eAA2B,OAAV9D,GAA2C,SAAxBA,EAAM+D,eAAoD,UAAxB/D,EAAM+D,gBAC9F/D,EAAgC,SAAxBA,EAAM+D,eAGR/D,CACR,CAEO,SAASgE,EAAQnD,GAEvB,MAAMoD,GADNpD,EAAQ2C,EAAW3C,IACMS,QAAQ,KACjC,OAAoB,IAAhB2C,EACI,GAGDpD,EAAMvI,MAAM2L,EAAa,EACjC,CAEO,SAASC,EAAMC,EAAOzR,GAW5B+P,GAVA/P,EAAU,CACTkO,QAAQ,EACRwC,MAAM,EACNgB,YAAa,OACbC,qBAAsB,IACtBV,cAAc,EACdG,eAAe,KACZpR,IAGiC2R,sBAErC,MAAMC,EApMP,SAA8B5R,GAC7B,IAAIgP,EAEJ,OAAQhP,EAAQ0R,aACf,IAAK,QACJ,MAAO,CAACpN,EAAKgJ,EAAOuE,KACnB7C,EAAS,YAAYoB,KAAK9L,GAE1BA,EAAMA,EAAIiM,QAAQ,UAAW,IAExBvB,QAKoB3C,IAArBwF,EAAYvN,KACfuN,EAAYvN,GAAO,CAAC,GAGrBuN,EAAYvN,GAAK0K,EAAO,IAAM1B,GAR7BuE,EAAYvN,GAAOgJ,CAQe,EAIrC,IAAK,UACJ,MAAO,CAAChJ,EAAKgJ,EAAOuE,KACnB7C,EAAS,SAASoB,KAAK9L,GACvBA,EAAMA,EAAIiM,QAAQ,OAAQ,IAErBvB,OAKoB3C,IAArBwF,EAAYvN,GAKhBuN,EAAYvN,GAAO,IAAIuN,EAAYvN,GAAMgJ,GAJxCuE,EAAYvN,GAAO,CAACgJ,GALpBuE,EAAYvN,GAAOgJ,CAS2B,EAIjD,IAAK,uBACJ,MAAO,CAAChJ,EAAKgJ,EAAOuE,KACnB7C,EAAS,WAAWoB,KAAK9L,GACzBA,EAAMA,EAAIiM,QAAQ,SAAU,IAEvBvB,OAKoB3C,IAArBwF,EAAYvN,GAKhBuN,EAAYvN,GAAO,IAAIuN,EAAYvN,GAAMgJ,GAJxCuE,EAAYvN,GAAO,CAACgJ,GALpBuE,EAAYvN,GAAOgJ,CAS2B,EAIjD,IAAK,QACL,IAAK,YACJ,MAAO,CAAChJ,EAAKgJ,EAAOuE,KACnB,MAAM5C,EAA2B,iBAAV3B,GAAsBA,EAAMvB,SAAS/L,EAAQ2R,sBAC9DG,EAAmC,iBAAVxE,IAAuB2B,GAAW,EAAO3B,EAAOtN,GAAS+L,SAAS/L,EAAQ2R,sBACzGrE,EAAQwE,EAAiB,EAAOxE,EAAOtN,GAAWsN,EAClD,MAAMyE,EAAW9C,GAAW6C,EAAiBxE,EAAMO,MAAM7N,EAAQ2R,sBAAsBd,KAAIlK,GAAQ,EAAOA,EAAM3G,KAAuB,OAAVsN,EAAiBA,EAAQ,EAAOA,EAAOtN,GACpK6R,EAAYvN,GAAOyN,CAAQ,EAI7B,IAAK,oBACJ,MAAO,CAACzN,EAAKgJ,EAAOuE,KACnB,MAAM5C,EAAU,SAASvG,KAAKpE,GAG9B,GAFAA,EAAMA,EAAIiM,QAAQ,OAAQ,KAErBtB,EAEJ,YADA4C,EAAYvN,GAAOgJ,EAAQ,EAAOA,EAAOtN,GAAWsN,GAIrD,MAAM0E,EAAuB,OAAV1E,EAChB,GACAA,EAAMO,MAAM7N,EAAQ2R,sBAAsBd,KAAIlK,GAAQ,EAAOA,EAAM3G,UAE7CqM,IAArBwF,EAAYvN,GAKhBuN,EAAYvN,GAAO,IAAIuN,EAAYvN,MAAS0N,GAJ3CH,EAAYvN,GAAO0N,CAImC,EAIzD,QACC,MAAO,CAAC1N,EAAKgJ,EAAOuE,UACMxF,IAArBwF,EAAYvN,GAKhBuN,EAAYvN,GAAO,IAAI,CAACuN,EAAYvN,IAAM2N,OAAQ3E,GAJjDuE,EAAYvN,GAAOgJ,CAIoC,EAI5D,CA0FmB4E,CAAqBlS,GAGjCmS,EAAcxF,OAAOyF,OAAO,MAElC,GAAqB,iBAAVX,EACV,OAAOU,EAKR,KAFAV,EAAQA,EAAMN,OAAOZ,QAAQ,SAAU,KAGtC,OAAO4B,EAGR,IAAK,MAAME,KAAaZ,EAAM5D,MAAM,KAAM,CACzC,GAAkB,KAAdwE,EACH,SAGD,MAAMC,EAAatS,EAAQkO,OAASmE,EAAU5C,WAAW,IAAK,KAAO4C,EAErE,IAAK/N,EAAKgJ,GAASiB,EAAa+D,EAAY,UAEhCjG,IAAR/H,IACHA,EAAMgO,GAKPhF,OAAkBjB,IAAViB,EAAsB,KAAQ,CAAC,QAAS,YAAa,qBAAqBvB,SAAS/L,EAAQ0R,aAAepE,EAAQ,EAAOA,EAAOtN,GACxI4R,EAAU,EAAOtN,EAAKtE,GAAUsN,EAAO6E,EACxC,CAEA,IAAK,MAAO7N,EAAKgJ,KAAUX,OAAO0D,QAAQ8B,GACzC,GAAqB,iBAAV7E,GAAgC,OAAVA,EAChC,IAAK,MAAOiF,EAAMC,KAAW7F,OAAO0D,QAAQ/C,GAC3CA,EAAMiF,GAAQvB,EAAWwB,EAAQxS,QAGlCmS,EAAY7N,GAAO0M,EAAW1D,EAAOtN,GAIvC,OAAqB,IAAjBA,EAAQ0Q,KACJyB,IAKiB,IAAjBnS,EAAQ0Q,KAAgB/D,OAAO2D,KAAK6B,GAAazB,OAAS/D,OAAO2D,KAAK6B,GAAazB,KAAK1Q,EAAQ0Q,OAAO+B,QAAO,CAACzD,EAAQ1K,KAC9H,MAAMgJ,EAAQ6E,EAAY7N,GAE1B,OADA0K,EAAO1K,GAAOoO,QAAQpF,IAA2B,iBAAVA,IAAuBhK,MAAM2L,QAAQ3B,GAASmD,EAAWnD,GAASA,EAClG0B,CAAM,GACXrC,OAAOyF,OAAO,MAClB,CAEO,SAASO,EAAU7D,EAAQ9O,GACjC,IAAK8O,EACJ,MAAO,GAWRiB,GARA/P,EAAU,CACTgQ,QAAQ,EACRC,QAAQ,EACRyB,YAAa,OACbC,qBAAsB,OACnB3R,IAGiC2R,sBAErC,MAAMiB,EAAetO,GACnBtE,EAAQ6S,UAAYvD,EAAkBR,EAAOxK,KAC1CtE,EAAQ8S,iBAAmC,KAAhBhE,EAAOxK,GAGjCsN,EAjZP,SAA+B5R,GAC9B,OAAQA,EAAQ0R,aACf,IAAK,QACJ,OAAOpN,GAAO,CAAC0K,EAAQ1B,KACtB,MAAMyF,EAAQ/D,EAAO9I,OAErB,YACWmG,IAAViB,GACItN,EAAQ6S,UAAsB,OAAVvF,GACpBtN,EAAQ8S,iBAA6B,KAAVxF,EAExB0B,EAGM,OAAV1B,EACI,IACH0B,EAAQ,CAACgB,EAAO1L,EAAKtE,GAAU,IAAK+S,EAAO,KAAKhF,KAAK,KAInD,IACHiB,EACH,CAACgB,EAAO1L,EAAKtE,GAAU,IAAKgQ,EAAO+C,EAAO/S,GAAU,KAAMgQ,EAAO1C,EAAOtN,IAAU+N,KAAK,IACvF,EAIH,IAAK,UACJ,OAAOzJ,GAAO,CAAC0K,EAAQ1B,SAEXjB,IAAViB,GACItN,EAAQ6S,UAAsB,OAAVvF,GACpBtN,EAAQ8S,iBAA6B,KAAVxF,EAExB0B,EAGM,OAAV1B,EACI,IACH0B,EACH,CAACgB,EAAO1L,EAAKtE,GAAU,MAAM+N,KAAK,KAI7B,IACHiB,EACH,CAACgB,EAAO1L,EAAKtE,GAAU,MAAOgQ,EAAO1C,EAAOtN,IAAU+N,KAAK,KAK9D,IAAK,uBACJ,OAAOzJ,GAAO,CAAC0K,EAAQ1B,SAEXjB,IAAViB,GACItN,EAAQ6S,UAAsB,OAAVvF,GACpBtN,EAAQ8S,iBAA6B,KAAVxF,EAExB0B,EAGM,OAAV1B,EACI,IACH0B,EACH,CAACgB,EAAO1L,EAAKtE,GAAU,UAAU+N,KAAK,KAIjC,IACHiB,EACH,CAACgB,EAAO1L,EAAKtE,GAAU,SAAUgQ,EAAO1C,EAAOtN,IAAU+N,KAAK,KAKjE,IAAK,QACL,IAAK,YACL,IAAK,oBAAqB,CACzB,MAAMiF,EAA4C,sBAAxBhT,EAAQ0R,YAC/B,MACA,IAEH,OAAOpN,GAAO,CAAC0K,EAAQ1B,SAEXjB,IAAViB,GACItN,EAAQ6S,UAAsB,OAAVvF,GACpBtN,EAAQ8S,iBAA6B,KAAVxF,EAExB0B,GAIR1B,EAAkB,OAAVA,EAAiB,GAAKA,EAER,IAAlB0B,EAAO9I,OACH,CAAC,CAAC8J,EAAO1L,EAAKtE,GAAUgT,EAAmBhD,EAAO1C,EAAOtN,IAAU+N,KAAK,KAGzE,CAAC,CAACiB,EAAQgB,EAAO1C,EAAOtN,IAAU+N,KAAK/N,EAAQ2R,uBAExD,CAEA,QACC,OAAOrN,GAAO,CAAC0K,EAAQ1B,SAEXjB,IAAViB,GACItN,EAAQ6S,UAAsB,OAAVvF,GACpBtN,EAAQ8S,iBAA6B,KAAVxF,EAExB0B,EAGM,OAAV1B,EACI,IACH0B,EACHgB,EAAO1L,EAAKtE,IAIP,IACHgP,EACH,CAACgB,EAAO1L,EAAKtE,GAAU,IAAKgQ,EAAO1C,EAAOtN,IAAU+N,KAAK,KAK9D,CAmRmBkF,CAAsBjT,GAElCkT,EAAa,CAAC,EAEpB,IAAK,MAAO5O,EAAKgJ,KAAUX,OAAO0D,QAAQvB,GACpC8D,EAAatO,KACjB4O,EAAW5O,GAAOgJ,GAIpB,MAAMgD,EAAO3D,OAAO2D,KAAK4C,GAMzB,OAJqB,IAAjBlT,EAAQ0Q,MACXJ,EAAKI,KAAK1Q,EAAQ0Q,MAGZJ,EAAKO,KAAIvM,IACf,MAAMgJ,EAAQwB,EAAOxK,GAErB,YAAc+H,IAAViB,EACI,GAGM,OAAVA,EACI0C,EAAO1L,EAAKtE,GAGhBsD,MAAM2L,QAAQ3B,GACI,IAAjBA,EAAMpH,QAAwC,sBAAxBlG,EAAQ0R,YAC1B1B,EAAO1L,EAAKtE,GAAW,KAGxBsN,EACLmF,OAAOb,EAAUtN,GAAM,IACvByJ,KAAK,KAGDiC,EAAO1L,EAAKtE,GAAW,IAAMgQ,EAAO1C,EAAOtN,EAAQ,IACxDmT,QAAOzD,GAAKA,EAAExJ,OAAS,IAAG6H,KAAK,IACnC,CAEO,SAASqF,EAASC,EAAKrT,GAC7BA,EAAU,CACTkO,QAAQ,KACLlO,GAGJ,IAAKsT,EAAMtK,GAAQuF,EAAa8E,EAAK,KAMrC,YAJahH,IAATiH,IACHA,EAAOD,GAGD,CACNA,IAAKC,GAAMzF,MAAM,OAAO,IAAM,GAC9B4D,MAAOD,EAAMF,EAAQ+B,GAAMrT,MACvBA,GAAWA,EAAQuT,yBAA2BvK,EAAO,CAACwK,mBAAoB,EAAOxK,EAAMhJ,IAAY,CAAC,EAE1G,CAEO,SAASyT,EAAa3E,EAAQ9O,GACpCA,EAAU,CACTgQ,QAAQ,EACRC,QAAQ,EACR,CAACH,IAA2B,KACzB9P,GAGJ,MAAMqT,EAAMvC,EAAWhC,EAAOuE,KAAKxF,MAAM,KAAK,IAAM,GAQpD,IAAI6F,EAAcf,EALJ,IACVnB,EAHiBF,EAAQxC,EAAOuE,KAGZ,CAAC3C,MAAM,OAC3B5B,EAAO2C,OAGwBzR,GACnC0T,IAAgB,IAAIA,IAEpB,IAAI1K,EAvML,SAAiBqK,GAChB,IAAIrK,EAAO,GACX,MAAM+H,EAAYsC,EAAIzE,QAAQ,KAK9B,OAJmB,IAAfmC,IACH/H,EAAOqK,EAAIzN,MAAMmL,IAGX/H,CACR,CA+LY2K,CAAQ7E,EAAOuE,KAC1B,GAAyC,iBAA9BvE,EAAO0E,mBAAiC,CAClD,MAAMI,EAA6B,IAAIC,IAAIR,GAC3CO,EAA2B5K,KAAO8F,EAAO0E,mBACzCxK,EAAOhJ,EAAQ8P,GAA4B8D,EAA2B5K,KAAO,IAAI8F,EAAO0E,oBACzF,CAEA,MAAO,GAAGH,IAAMK,IAAc1K,GAC/B,CAEO,SAAS8K,EAAK3F,EAAOgF,EAAQnT,GACnCA,EAAU,CACTuT,yBAAyB,EACzB,CAACzD,IAA2B,KACzB9P,GAGJ,MAAM,IAACqT,EAAG,MAAE5B,EAAK,mBAAE+B,GAAsBJ,EAASjF,EAAOnO,GAEzD,OAAOyT,EAAa,CACnBJ,MACA5B,MAAO5C,EAAY4C,EAAO0B,GAC1BK,sBACExT,EACJ,CAEO,SAAS+T,EAAQ5F,EAAOgF,EAAQnT,GAGtC,OAAO8T,EAAK3F,EAFY7K,MAAM2L,QAAQkE,GAAU7O,IAAQ6O,EAAOpH,SAASzH,GAAO,CAACA,EAAKgJ,KAAW6F,EAAO7O,EAAKgJ,GAExEtN,EACrC,CCvgBA,UCAAP,OAAO6B,iBAAiB,oBAAoB,WAE1C,IAAM0S,EAAarU,SAASgC,eAAe,cACrCsS,EAAmBtU,SAASgC,eAAe,oBAG7CqS,IACFA,EAAW1S,iBAAiB,iBAAiB,SAACkB,GAC5C,IAAM0R,EAAW1R,EAAE2D,cACbgO,EAAWT,EAAYD,aAAa,CACxCJ,IAAKa,EAASlO,aAAa,QAC3ByL,MAAO,CAAEvO,SAAU,EAAGkR,IAAK,KAI7BH,EAAiBnS,aAAa,MAAOqS,EAGvC,IAGAH,EAAW1S,iBAAiB,iBAAiB,kBAC3C2S,EAAiBnS,aAAa,MAAO,cAAc,IAGzD,IC3BA,IAAMuS,EAAa1U,SAASmE,iBAAiB,iBACvCwQ,EAAY,IAAIC,gBAAgB9U,OAAOsL,SAASyJ,QAStD,SAASC,EAAmBC,EAAWC,GACrC,IAAIC,EAAiBvJ,SAASiJ,EAAUxH,IAAI,aAAD7C,OAAc0K,EAAc,UAMnEC,GAAkB,IAAgC,oBAAnBC,iBAAmCA,iBACpEH,EAAUI,iBAGZ,IAAMC,EAAYL,EAAU5Q,iBAAiB,2BAE7CiR,EAAUtR,SAAQ,SAACuR,EAAUjC,GAC3B,IAAMkC,EAASD,EAASE,KAAKrH,MAAM,KAAK,GAGpCjF,EAAWmK,EAAQ,GAEN,GAAZnK,IAAkBgM,GAAmBhM,GAAYgM,KACpDI,EAASjT,UAAUC,IAAI,2BACvB0S,EAAU3T,cAAc,IAADkJ,OAAKgL,IAAUlT,UAAUC,IAAI,8BACpD0S,EAAU3T,cAAc,IAADkJ,OAAKgL,EAAM,SAAQlT,UAAUC,IAAI,6BAG1DgT,EAAS1T,iBAAiB,SAAS,SAACkB,GAClCA,EAAE+B,iBAEF,IAAI8O,EAAM,IAAIQ,IAAIpU,OAAOsL,UAEzBsI,EAAI8B,aAAaC,IAAI,aAADnL,OAAc0K,EAAc,QAAQ/L,GACxDnJ,OAAO4V,QAAQC,aAAa,CAAC,EAAG,GAAIjC,GAEpC0B,EAAUtR,SAAQ,SAACuR,GACjBA,EAASjT,UAAUW,OAAO,0BAC5B,IAEAsS,EAASjT,UAAUC,IAAI,2BAEvB0S,EACG3T,cAAc,+BACdgB,UAAUW,OAAO,8BACpBgS,EAAU3T,cAAc,IAADkJ,OAAKgL,IAAUlT,UAAUC,IAAI,8BAEpD0S,EACG3T,cAAc,6BACdgB,UAAUW,OAAO,4BACpBgS,EAAU3T,cAAc,IAADkJ,OAAKgL,EAAM,SAAQlT,UAAUC,IAAI,2BAC1D,IAEA,IAAMuT,EAASb,EACZ3T,cAAc,IAADkJ,OAAKgL,IAClBnR,iBAAiB,+BACd0R,EAASd,EACZ3T,cAAc,IAADkJ,OAAKgL,EAAM,SACxBnR,iBAAiB,4BAEpByR,EAAO9R,SAAQ,SAACgS,EAAO1C,GACrB,IAAM2C,EAAOD,EAAM1U,cAAc,+BAC3B4U,EAAQF,EAAM1U,cAAc,gCACrB,GAATgS,GACF2C,EAAK3T,UAAUC,IAAI,sCAGrByT,EAAMnU,iBAAiB,SAAS,WAC9BiU,EAAO9R,SAAQ,SAACgS,GACdA,EACG1U,cAAc,+BACdgB,UAAUW,OAAO,sCACpB+S,EACG1U,cAAc,gCACdgB,UAAUW,OAAO,sCACtB,IACA8S,EAAO/R,SAAQ,SAACmS,GACdA,EAAM7T,UAAUW,OAAO,kCACzB,IAEAgT,EAAK3T,UAAUC,IAAI,sCACnB2T,EAAM5T,UAAUC,IAAI,uCACpB0S,EACG3T,cAAc,IAADkJ,OAAKwL,EAAMI,GAAE,SAC1B9T,UAAUC,IAAI,kCACnB,GACF,GACF,GACF,CCnFA,SAAS8T,EAAS/I,GAChB,OAAe,OAARA,GAA+B,iBAARA,GAAoB,gBAAiBA,GAAOA,EAAIgJ,cAAgBpJ,MAChG,CACA,SAASqJ,EAAOjW,EAAQ+L,QACP,IAAX/L,IACFA,EAAS,CAAC,QAEA,IAAR+L,IACFA,EAAM,CAAC,GAETa,OAAO2D,KAAKxE,GAAKrI,SAAQa,SACI,IAAhBvE,EAAOuE,GAAsBvE,EAAOuE,GAAOwH,EAAIxH,GAAcwR,EAAShK,EAAIxH,KAASwR,EAAS/V,EAAOuE,KAASqI,OAAO2D,KAAKxE,EAAIxH,IAAM4B,OAAS,GACpJ8P,EAAOjW,EAAOuE,GAAMwH,EAAIxH,GAC1B,GAEJ,CDxBA+P,EAAW5Q,SAAQ,SAACiR,EAAW3B,GAI7B0B,EAAmBC,EAFI3B,EAAQ,EAGjC,I,OCoBA,MAAMkD,EAAc,CAClB1U,KAAM,CAAC,EACP,gBAAAD,GAAoB,EACpB,mBAAAiH,GAAuB,EACvB2N,cAAe,CACb,IAAAC,GAAQ,EACRC,SAAU,IAEZrV,cAAa,IACJ,KAET+C,iBAAgB,IACP,GAETnC,eAAc,IACL,KAET0U,YAAW,KACF,CACL,SAAAC,GAAa,IAGjBC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZ7P,MAAO,CAAC,EACR,YAAA9E,GAAgB,EAChB8B,qBAAoB,IACX,KAIb8S,gBAAe,KACN,CAAC,GAEVC,WAAU,IACD,KAET5L,SAAU,CACR/B,KAAM,GACN4N,KAAM,GACNC,SAAU,GACV3B,KAAM,GACN4B,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVxC,OAAQ,KAGZ,SAASyC,IACP,MAAMC,EAA0B,oBAAbvX,SAA2BA,SAAW,CAAC,EAE1D,OADAqW,EAAOkB,EAAKjB,GACLiB,CACT,CACA,MAAMC,EAAY,CAChBxX,SAAUsW,EACVmB,UAAW,CACTC,UAAW,IAEbtM,SAAU,CACR/B,KAAM,GACN4N,KAAM,GACNC,SAAU,GACV3B,KAAM,GACN4B,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVxC,OAAQ,IAEVa,QAAS,CACP,YAAAC,GAAgB,EAChB,SAAAgC,GAAa,EACb,EAAAC,GAAM,EACN,IAAAC,GAAQ,GAEVC,YAAa,WACX,OAAOnR,IACT,EACA,gBAAAhF,GAAoB,EACpB,mBAAAiH,GAAuB,EACvBmP,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIb,KAAAC,GAAS,EACT,IAAAC,GAAQ,EACRC,OAAQ,CAAC,EACT,UAAAtP,GAAc,EACd,YAAAuP,GAAgB,EAChBC,WAAU,KACD,CAAC,GAEV3W,sBAAsBb,GACM,oBAAfgI,YACThI,IACO,MAEFgI,WAAWhI,EAAU,GAE9B,oBAAAyX,CAAqBpC,GACO,oBAAfrN,YAGXuP,aAAalC,EACf,GAEF,SAASqC,IACP,MAAMC,EAAwB,oBAAX1Y,OAAyBA,OAAS,CAAC,EAEtD,OADAuW,EAAOmC,EAAKhB,GACLgB,CACT,CC5IA,SAASC,EAAgBC,GAIvB,YAHgB,IAAZA,IACFA,EAAU,IAELA,EAAQlH,OAAOtD,MAAM,KAAKsF,QAAOvS,KAAOA,EAAEuQ,QACnD,CAiBA,SAASmH,EAAS9X,EAAU2C,GAI1B,YAHc,IAAVA,IACFA,EAAQ,GAEHqF,WAAWhI,EAAU2C,EAC9B,CACA,SAASoV,IACP,OAAOV,KAAKU,KACd,CAeA,SAASC,EAAanU,EAAIoU,QACX,IAATA,IACFA,EAAO,KAET,MAAMhZ,EAASyY,IACf,IAAIQ,EACAC,EACAC,EACJ,MAAMC,EAtBR,SAA0BxU,GACxB,MAAM5E,EAASyY,IACf,IAAItR,EAUJ,OATInH,EAAOiY,mBACT9Q,EAAQnH,EAAOiY,iBAAiBrT,EAAI,QAEjCuC,GAASvC,EAAGyU,eACflS,EAAQvC,EAAGyU,cAERlS,IACHA,EAAQvC,EAAGuC,OAENA,CACT,CASmB,CAAiBvC,GA6BlC,OA5BI5E,EAAOsZ,iBACTJ,EAAeE,EAASG,WAAaH,EAASI,gBAC1CN,EAAa9K,MAAM,KAAK3H,OAAS,IACnCyS,EAAeA,EAAa9K,MAAM,MAAMgD,KAAIF,GAAKA,EAAEJ,QAAQ,IAAK,OAAMxC,KAAK,OAI7E6K,EAAkB,IAAInZ,EAAOsZ,gBAAiC,SAAjBJ,EAA0B,GAAKA,KAE5EC,EAAkBC,EAASK,cAAgBL,EAASM,YAAcN,EAASO,aAAeP,EAASQ,aAAeR,EAASG,WAAaH,EAASlB,iBAAiB,aAAapH,QAAQ,aAAc,sBACrMmI,EAASE,EAAgBhJ,WAAW/B,MAAM,MAE/B,MAAT4K,IAE0BE,EAAxBlZ,EAAOsZ,gBAAgCH,EAAgBU,IAEhC,KAAlBZ,EAAOxS,OAA8BqT,WAAWb,EAAO,KAE5Ca,WAAWb,EAAO,KAE3B,MAATD,IAE0BE,EAAxBlZ,EAAOsZ,gBAAgCH,EAAgBY,IAEhC,KAAlBd,EAAOxS,OAA8BqT,WAAWb,EAAO,KAE5Ca,WAAWb,EAAO,KAEjCC,GAAgB,CACzB,CACA,SAAS,EAASjM,GAChB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAEqJ,aAAkE,WAAnDpJ,OAAOM,UAAU2C,SAAS/J,KAAK6G,GAAG9G,MAAM,GAAI,EAC7G,CAQA,SAAS,IACP,MAAM6T,EAAK9M,OAAO+M,UAAUxT,QAAU,OAAImG,EAAYqN,UAAU,IAC1DC,EAAW,CAAC,YAAa,cAAe,aAC9C,IAAK,IAAIrL,EAAI,EAAGA,EAAIoL,UAAUxT,OAAQoI,GAAK,EAAG,CAC5C,MAAMsL,EAAatL,EAAI,GAAKoL,UAAUxT,QAAUoI,OAAIjC,EAAYqN,UAAUpL,GAC1E,GAAIsL,UAZQC,EAYmDD,IAV3C,oBAAXna,aAAwD,IAAvBA,OAAOqa,YAC1CD,aAAgBC,YAElBD,IAA2B,IAAlBA,EAAKE,UAAoC,KAAlBF,EAAKE,YAOkC,CAC1E,MAAMC,EAAYrN,OAAO2D,KAAK3D,OAAOiN,IAAazG,QAAO7O,GAAOqV,EAAS/K,QAAQtK,GAAO,IACxF,IAAK,IAAI2V,EAAY,EAAGC,EAAMF,EAAU9T,OAAQ+T,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUH,EAAUC,GACpBG,EAAOzN,OAAOwC,yBAAyByK,EAAYO,QAC5C9N,IAAT+N,GAAsBA,EAAKvN,aACzB,EAAS4M,EAAGU,KAAa,EAASP,EAAWO,IAC3CP,EAAWO,GAASE,WACtBZ,EAAGU,GAAWP,EAAWO,GAEzB,EAAOV,EAAGU,GAAUP,EAAWO,KAEvB,EAASV,EAAGU,KAAa,EAASP,EAAWO,KACvDV,EAAGU,GAAW,CAAC,EACXP,EAAWO,GAASE,WACtBZ,EAAGU,GAAWP,EAAWO,GAEzB,EAAOV,EAAGU,GAAUP,EAAWO,KAGjCV,EAAGU,GAAWP,EAAWO,GAG/B,CACF,CACF,CArCF,IAAgBN,EAsCd,OAAOJ,CACT,CACA,SAASa,EAAejW,EAAIkW,EAASC,GACnCnW,EAAGuC,MAAMC,YAAY0T,EAASC,EAChC,CACA,SAASC,EAAqBC,GAC5B,IAAI,OACFC,EAAM,eACNC,EAAc,KACdC,GACEH,EACJ,MAAMjb,EAASyY,IACT4C,GAAiBH,EAAOI,UAC9B,IACI5Z,EADA6Z,EAAY,KAEhB,MAAM1a,EAAWqa,EAAOM,OAAOhY,MAC/B0X,EAAOO,UAAUtU,MAAMuU,eAAiB,OACxC1b,EAAOwY,qBAAqB0C,EAAOS,gBACnC,MAAMC,EAAMT,EAAiBE,EAAgB,OAAS,OAChDQ,EAAe,CAACC,EAASxb,IACd,SAARsb,GAAkBE,GAAWxb,GAAkB,SAARsb,GAAkBE,GAAWxb,EAEvEyb,EAAU,KACdra,GAAO,IAAI0W,MAAO4D,UACA,OAAdT,IACFA,EAAY7Z,GAEd,MAAMua,EAAWC,KAAKC,IAAID,KAAKE,KAAK1a,EAAO6Z,GAAa1a,EAAU,GAAI,GAChEwb,EAAe,GAAMH,KAAKI,IAAIL,EAAWC,KAAKK,IAAM,EAC1D,IAAIC,EAAkBnB,EAAgBgB,GAAgBlB,EAAiBE,GAOvE,GANIQ,EAAaW,EAAiBrB,KAChCqB,EAAkBrB,GAEpBD,EAAOO,UAAU9Z,SAAS,CACxB,CAACyZ,GAAOoB,IAENX,EAAaW,EAAiBrB,GAUhC,OATAD,EAAOO,UAAUtU,MAAMsV,SAAW,SAClCvB,EAAOO,UAAUtU,MAAMuU,eAAiB,GACxC3S,YAAW,KACTmS,EAAOO,UAAUtU,MAAMsV,SAAW,GAClCvB,EAAOO,UAAU9Z,SAAS,CACxB,CAACyZ,GAAOoB,GACR,SAEJxc,EAAOwY,qBAAqB0C,EAAOS,gBAGrCT,EAAOS,eAAiB3b,EAAO4B,sBAAsBma,EAAQ,EAE/DA,GACF,CACA,SAASW,EAAoBC,GAC3B,OAAOA,EAAQrb,cAAc,4BAA8Bqb,EAAQC,YAAcD,EAAQC,WAAWtb,cAAc,4BAA8Bqb,CAClJ,CACA,SAASE,EAAgB7T,EAAS8T,QACf,IAAbA,IACFA,EAAW,IAEb,MAAM/F,EAAW,IAAI/N,EAAQ+N,UAI7B,OAHI/N,aAAmB+T,iBACrBhG,EAASiG,QAAQhU,EAAQiU,oBAEtBH,EAGE/F,EAASrD,QAAO9O,GAAMA,EAAGoF,QAAQ8S,KAF/B/F,CAGX,CASA,SAASmG,EAAYjH,GACnB,IAEE,YADAkH,QAAQC,KAAKnH,EAEf,CAAE,MAAOoH,GAET,CACF,CACA,SAASvG,EAAcwG,EAAK1E,QACV,IAAZA,IACFA,EAAU,IAEZ,MAAMhU,EAAK1E,SAAS4W,cAAcwG,GAElC,OADA1Y,EAAGtC,UAAUC,OAAQsB,MAAM2L,QAAQoJ,GAAWA,EAAUD,EAAgBC,IACjEhU,CACT,CACA,SAAS2Y,EAAc3Y,GACrB,MAAM5E,EAASyY,IACTvY,EAAWsX,IACXgG,EAAM5Y,EAAGrD,wBACTO,EAAO5B,EAAS4B,KAChB2b,EAAY7Y,EAAG6Y,WAAa3b,EAAK2b,WAAa,EAC9CC,EAAa9Y,EAAG8Y,YAAc5b,EAAK4b,YAAc,EACjDtd,EAAYwE,IAAO5E,EAASA,EAAO2d,QAAU/Y,EAAGxE,UAChDwd,EAAahZ,IAAO5E,EAASA,EAAO6d,QAAUjZ,EAAGgZ,WACvD,MAAO,CACLpc,IAAKgc,EAAIhc,IAAMpB,EAAYqd,EAC3BlP,KAAMiP,EAAIjP,KAAOqP,EAAaF,EAElC,CAuBA,SAASI,EAAalZ,EAAI2I,GAExB,OADekL,IACDR,iBAAiBrT,EAAI,MAAMsT,iBAAiB3K,EAC5D,CACA,SAASwQ,EAAanZ,GACpB,IACIiK,EADAmP,EAAQpZ,EAEZ,GAAIoZ,EAAO,CAGT,IAFAnP,EAAI,EAEuC,QAAnCmP,EAAQA,EAAMC,kBACG,IAAnBD,EAAM1D,WAAgBzL,GAAK,GAEjC,OAAOA,CACT,CAEF,CACA,SAASqP,EAAetZ,EAAIkY,GAC1B,MAAMqB,EAAU,GAChB,IAAIC,EAASxZ,EAAGyZ,cAChB,KAAOD,GACDtB,EACEsB,EAAOpU,QAAQ8S,IAAWqB,EAAQnB,KAAKoB,GAE3CD,EAAQnB,KAAKoB,GAEfA,EAASA,EAAOC,cAElB,OAAOF,CACT,CACA,SAASG,EAAqB1Z,EAAI7D,GAM5BA,GACF6D,EAAG/C,iBAAiB,iBANtB,SAAS0c,EAAaxb,GAChBA,EAAEzC,SAAWsE,IACjB7D,EAASqF,KAAKxB,EAAI7B,GAClB6B,EAAGkE,oBAAoB,gBAAiByV,GAC1C,GAIF,CACA,SAASC,EAAiB5Z,EAAI6Z,EAAMC,GAClC,MAAM1e,EAASyY,IACf,OAAIiG,EACK9Z,EAAY,UAAT6Z,EAAmB,cAAgB,gBAAkB3E,WAAW9Z,EAAOiY,iBAAiBrT,EAAI,MAAMsT,iBAA0B,UAATuG,EAAmB,eAAiB,eAAiB3E,WAAW9Z,EAAOiY,iBAAiBrT,EAAI,MAAMsT,iBAA0B,UAATuG,EAAmB,cAAgB,kBAE9Q7Z,EAAG+Z,WACZ,CACA,SAASC,GAAkBha,GACzB,OAAQf,MAAM2L,QAAQ5K,GAAMA,EAAK,CAACA,IAAK8O,QAAO3Q,KAAOA,GACvD,CACA,SAAS8b,GAAa3D,GACpB,OAAO4D,GACD5C,KAAK6C,IAAID,GAAK,GAAK5D,EAAO8D,SAAW9D,EAAO8D,QAAQC,WAAa/C,KAAK6C,IAAID,GAAK,IAAO,EACjFA,EAAI,KAENA,CAEX,CCrTA,IAAII,GAgBAC,GAqDAH,GA5DJ,SAASI,KAIP,OAHKF,KACHA,GAVJ,WACE,MAAMlf,EAASyY,IACTvY,EAAWsX,IACjB,MAAO,CACL6H,aAAcnf,EAASC,iBAAmBD,EAASC,gBAAgBgH,OAAS,mBAAoBjH,EAASC,gBAAgBgH,MACzHmY,SAAU,iBAAkBtf,GAAUA,EAAOuf,eAAiBrf,aAAoBF,EAAOuf,eAE7F,CAGcC,IAELN,EACT,CA6CA,SAASO,GAAUC,GAOjB,YANkB,IAAdA,IACFA,EAAY,CAAC,GAEVP,KACHA,GA/CJ,SAAoBQ,GAClB,IAAI,UACF/H,QACY,IAAV+H,EAAmB,CAAC,EAAIA,EAC5B,MAAMT,EAAUE,KACVpf,EAASyY,IACTmH,EAAW5f,EAAO2X,UAAUiI,SAC5BC,EAAKjI,GAAa5X,EAAO2X,UAAUC,UACnCkI,EAAS,CACbC,KAAK,EACLC,SAAS,GAELC,EAAcjgB,EAAOqY,OAAO6H,MAC5BC,EAAengB,EAAOqY,OAAO+H,OAC7BJ,EAAUH,EAAGjR,MAAM,+BACzB,IAAIyR,EAAOR,EAAGjR,MAAM,wBACpB,MAAM0R,EAAOT,EAAGjR,MAAM,2BAChB2R,GAAUF,GAAQR,EAAGjR,MAAM,8BAC3B4R,EAAuB,UAAbZ,EAChB,IAAIa,EAAqB,aAAbb,EAqBZ,OAjBKS,GAAQI,GAASvB,EAAQI,OADV,CAAC,YAAa,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YACxGnQ,QAAQ,GAAG8Q,KAAeE,MAAmB,IAC9FE,EAAOR,EAAGjR,MAAM,uBACXyR,IAAMA,EAAO,CAAC,EAAG,EAAG,WACzBI,GAAQ,GAINT,IAAYQ,IACdV,EAAOY,GAAK,UACZZ,EAAOE,SAAU,IAEfK,GAAQE,GAAUD,KACpBR,EAAOY,GAAK,MACZZ,EAAOC,KAAM,GAIRD,CACT,CAMmBa,CAAWjB,IAErBP,EACT,CAkLA,IAAIyB,GAAgB,CAClB,EAAAhd,CAAGid,EAAQC,EAASC,GAClB,MAAMC,EAAOna,KACb,IAAKma,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZF,EAAwB,OAAOE,EAC1C,MAAMG,EAASJ,EAAW,UAAY,OAKtC,OAJAF,EAAOzS,MAAM,KAAKpK,SAAQqF,IACnB2X,EAAKC,gBAAgB5X,KAAQ2X,EAAKC,gBAAgB5X,GAAS,IAChE2X,EAAKC,gBAAgB5X,GAAO8X,GAAQL,EAAQ,IAEvCE,CACT,EACA,IAAApe,CAAKie,EAAQC,EAASC,GACpB,MAAMC,EAAOna,KACb,IAAKma,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZF,EAAwB,OAAOE,EAC1C,SAASI,IACPJ,EAAKK,IAAIR,EAAQO,GACbA,EAAYE,uBACPF,EAAYE,eAErB,IAAK,IAAIC,EAAOtH,UAAUxT,OAAQ+a,EAAO,IAAI3d,MAAM0d,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQxH,UAAUwH,GAEzBX,EAAQY,MAAMV,EAAMQ,EACtB,CAEA,OADAJ,EAAYE,eAAiBR,EACtBE,EAAKpd,GAAGid,EAAQO,EAAaL,EACtC,EACA,KAAAY,CAAMb,EAASC,GACb,MAAMC,EAAOna,KACb,IAAKma,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZF,EAAwB,OAAOE,EAC1C,MAAMG,EAASJ,EAAW,UAAY,OAItC,OAHIC,EAAKY,mBAAmBzS,QAAQ2R,GAAW,GAC7CE,EAAKY,mBAAmBT,GAAQL,GAE3BE,CACT,EACA,MAAAa,CAAOf,GACL,MAAME,EAAOna,KACb,IAAKma,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,IAAKA,EAAKY,mBAAoB,OAAOZ,EACrC,MAAM1N,EAAQ0N,EAAKY,mBAAmBzS,QAAQ2R,GAI9C,OAHIxN,GAAS,GACX0N,EAAKY,mBAAmBE,OAAOxO,EAAO,GAEjC0N,CACT,EACA,GAAAK,CAAIR,EAAQC,GACV,MAAME,EAAOna,KACb,OAAKma,EAAKC,iBAAmBD,EAAKE,UAAkBF,EAC/CA,EAAKC,iBACVJ,EAAOzS,MAAM,KAAKpK,SAAQqF,SACD,IAAZyX,EACTE,EAAKC,gBAAgB5X,GAAS,GACrB2X,EAAKC,gBAAgB5X,IAC9B2X,EAAKC,gBAAgB5X,GAAOrF,SAAQ,CAAC+d,EAAczO,MAC7CyO,IAAiBjB,GAAWiB,EAAaT,gBAAkBS,EAAaT,iBAAmBR,IAC7FE,EAAKC,gBAAgB5X,GAAOyY,OAAOxO,EAAO,EAC5C,GAEJ,IAEK0N,GAZ2BA,CAapC,EACA,IAAAgB,GACE,MAAMhB,EAAOna,KACb,IAAKma,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,IAAKA,EAAKC,gBAAiB,OAAOD,EAClC,IAAIH,EACAoB,EACAC,EACJ,IAAK,IAAIC,EAAQlI,UAAUxT,OAAQ+a,EAAO,IAAI3d,MAAMse,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFZ,EAAKY,GAASnI,UAAUmI,GAyB1B,MAvBuB,iBAAZZ,EAAK,IAAmB3d,MAAM2L,QAAQgS,EAAK,KACpDX,EAASW,EAAK,GACdS,EAAOT,EAAKrb,MAAM,EAAGqb,EAAK/a,QAC1Byb,EAAUlB,IAEVH,EAASW,EAAK,GAAGX,OACjBoB,EAAOT,EAAK,GAAGS,KACfC,EAAUV,EAAK,GAAGU,SAAWlB,GAE/BiB,EAAKI,QAAQH,IACOre,MAAM2L,QAAQqR,GAAUA,EAASA,EAAOzS,MAAM,MACtDpK,SAAQqF,IACd2X,EAAKY,oBAAsBZ,EAAKY,mBAAmBnb,QACrDua,EAAKY,mBAAmB5d,SAAQ+d,IAC9BA,EAAaL,MAAMQ,EAAS,CAAC7Y,KAAU4Y,GAAM,IAG7CjB,EAAKC,iBAAmBD,EAAKC,gBAAgB5X,IAC/C2X,EAAKC,gBAAgB5X,GAAOrF,SAAQ+d,IAClCA,EAAaL,MAAMQ,EAASD,EAAK,GAErC,IAEKjB,CACT,GA6WF,MAAMsB,GAAuB,CAAC3F,EAAS4F,EAAWC,KAC5CD,IAAc5F,EAAQra,UAAUY,SAASsf,GAC3C7F,EAAQra,UAAUC,IAAIigB,IACZD,GAAa5F,EAAQra,UAAUY,SAASsf,IAClD7F,EAAQra,UAAUW,OAAOuf,EAC3B,EA+GIC,GAAqB,CAAC9F,EAAS4F,EAAWC,KAC1CD,IAAc5F,EAAQra,UAAUY,SAASsf,GAC3C7F,EAAQra,UAAUC,IAAIigB,IACZD,GAAa5F,EAAQra,UAAUY,SAASsf,IAClD7F,EAAQra,UAAUW,OAAOuf,EAC3B,EA2DIE,GAAuB,CAACxH,EAAQyH,KACpC,IAAKzH,GAAUA,EAAOgG,YAAchG,EAAOM,OAAQ,OACnD,MACMmB,EAAUgG,EAAQ3X,QADIkQ,EAAO0H,UAAY,eAAiB,IAAI1H,EAAOM,OAAOqH,cAElF,GAAIlG,EAAS,CACX,IAAImG,EAASnG,EAAQrb,cAAc,IAAI4Z,EAAOM,OAAOuH,uBAChDD,GAAU5H,EAAO0H,YAChBjG,EAAQC,WACVkG,EAASnG,EAAQC,WAAWtb,cAAc,IAAI4Z,EAAOM,OAAOuH,sBAG5DnhB,uBAAsB,KAChB+a,EAAQC,aACVkG,EAASnG,EAAQC,WAAWtb,cAAc,IAAI4Z,EAAOM,OAAOuH,sBACxDD,GAAQA,EAAO7f,SACrB,KAIF6f,GAAQA,EAAO7f,QACrB,GAEI+f,GAAS,CAAC9H,EAAQ5H,KACtB,IAAK4H,EAAOnX,OAAOuP,GAAQ,OAC3B,MAAMqP,EAAUzH,EAAOnX,OAAOuP,GAAOhS,cAAc,oBAC/CqhB,GAASA,EAAQM,gBAAgB,UAAU,EAE3CC,GAAUhI,IACd,IAAKA,GAAUA,EAAOgG,YAAchG,EAAOM,OAAQ,OACnD,IAAI2H,EAASjI,EAAOM,OAAO4H,oBAC3B,MAAM3I,EAAMS,EAAOnX,OAAO0C,OAC1B,IAAKgU,IAAQ0I,GAAUA,EAAS,EAAG,OACnCA,EAASjH,KAAKE,IAAI+G,EAAQ1I,GAC1B,MAAM9W,EAAgD,SAAhCuX,EAAOM,OAAO7X,cAA2BuX,EAAOmI,uBAAyBnH,KAAKoH,KAAKpI,EAAOM,OAAO7X,eACjHc,EAAcyW,EAAOzW,YAC3B,GAAIyW,EAAOM,OAAO+H,MAAQrI,EAAOM,OAAO+H,KAAKC,KAAO,EAAG,CACrD,MAAMC,EAAehf,EACfif,EAAiB,CAACD,EAAeN,GASvC,OARAO,EAAe1G,QAAQnZ,MAAMC,KAAK,CAChC2C,OAAQ0c,IACP/R,KAAI,CAACuS,EAAG9U,IACF4U,EAAe9f,EAAgBkL,UAExCqM,EAAOnX,OAAOC,SAAQ,CAAC2Y,EAAS9N,KAC1B6U,EAAepX,SAASqQ,EAAQiH,SAASZ,GAAO9H,EAAQrM,EAAE,GAGlE,CACA,MAAMgV,EAAuBpf,EAAcd,EAAgB,EAC3D,GAAIuX,EAAOM,OAAOsI,QAAU5I,EAAOM,OAAO/Z,KACxC,IAAK,IAAIoN,EAAIpK,EAAc0e,EAAQtU,GAAKgV,EAAuBV,EAAQtU,GAAK,EAAG,CAC7E,MAAMnK,GAAamK,EAAI4L,EAAMA,GAAOA,GAChC/V,EAAYD,GAAeC,EAAYmf,IAAsBb,GAAO9H,EAAQxW,EAClF,MAEA,IAAK,IAAImK,EAAIqN,KAAKC,IAAI1X,EAAc0e,EAAQ,GAAItU,GAAKqN,KAAKE,IAAIyH,EAAuBV,EAAQ1I,EAAM,GAAI5L,GAAK,EACtGA,IAAMpK,IAAgBoK,EAAIgV,GAAwBhV,EAAIpK,IACxDue,GAAO9H,EAAQrM,EAGrB,EAyJF,IAAIkV,GAAS,CACXC,WApvBF,WACE,MAAM9I,EAASrU,KACf,IAAIqZ,EACAE,EACJ,MAAMxb,EAAKsW,EAAOtW,GAEhBsb,OADiC,IAAxBhF,EAAOM,OAAO0E,OAAiD,OAAxBhF,EAAOM,OAAO0E,MACtDhF,EAAOM,OAAO0E,MAEdtb,EAAGqf,YAGX7D,OADkC,IAAzBlF,EAAOM,OAAO4E,QAAmD,OAAzBlF,EAAOM,OAAO4E,OACtDlF,EAAOM,OAAO4E,OAEdxb,EAAGsf,aAEA,IAAVhE,GAAehF,EAAOiJ,gBAA6B,IAAX/D,GAAgBlF,EAAOkJ,eAKnElE,EAAQA,EAAQtU,SAASkS,EAAalZ,EAAI,iBAAmB,EAAG,IAAMgH,SAASkS,EAAalZ,EAAI,kBAAoB,EAAG,IACvHwb,EAASA,EAASxU,SAASkS,EAAalZ,EAAI,gBAAkB,EAAG,IAAMgH,SAASkS,EAAalZ,EAAI,mBAAqB,EAAG,IACrHuM,OAAOM,MAAMyO,KAAQA,EAAQ,GAC7B/O,OAAOM,MAAM2O,KAASA,EAAS,GACnClT,OAAOmX,OAAOnJ,EAAQ,CACpBgF,QACAE,SACA3B,KAAMvD,EAAOiJ,eAAiBjE,EAAQE,IAE1C,EAwtBEkE,aAttBF,WACE,MAAMpJ,EAASrU,KACf,SAAS0d,EAA0BnK,EAAMoK,GACvC,OAAO1K,WAAWM,EAAKlC,iBAAiBgD,EAAOuJ,kBAAkBD,KAAW,EAC9E,CACA,MAAMhJ,EAASN,EAAOM,QAChB,UACJC,EAAS,SACTiJ,EACAjG,KAAMkG,EACNC,aAAcC,EAAG,SACjBC,GACE5J,EACE6J,EAAY7J,EAAO8J,SAAWxJ,EAAOwJ,QAAQC,QAC7CC,EAAuBH,EAAY7J,EAAO8J,QAAQjhB,OAAO0C,OAASyU,EAAOnX,OAAO0C,OAChF1C,EAAS8Y,EAAgB6H,EAAU,IAAIxJ,EAAOM,OAAOqH,4BACrDsC,EAAeJ,EAAY7J,EAAO8J,QAAQjhB,OAAO0C,OAAS1C,EAAO0C,OACvE,IAAI2e,EAAW,GACf,MAAMC,EAAa,GACbC,EAAkB,GACxB,IAAIC,EAAe/J,EAAOgK,mBACE,mBAAjBD,IACTA,EAAe/J,EAAOgK,mBAAmBpf,KAAK8U,IAEhD,IAAIuK,EAAcjK,EAAOkK,kBACE,mBAAhBD,IACTA,EAAcjK,EAAOkK,kBAAkBtf,KAAK8U,IAE9C,MAAMyK,EAAyBzK,EAAOkK,SAAS3e,OACzCmf,EAA2B1K,EAAOmK,WAAW5e,OACnD,IAAIR,EAAeuV,EAAOvV,aACtB4f,GAAiBN,EACjBO,EAAgB,EAChBxS,EAAQ,EACZ,QAA0B,IAAfqR,EACT,OAE0B,iBAAjB1e,GAA6BA,EAAakJ,QAAQ,MAAQ,EACnElJ,EAAe6T,WAAW7T,EAAa6K,QAAQ,IAAK,KAAO,IAAM6T,EAChC,iBAAjB1e,IAChBA,EAAe6T,WAAW7T,IAE5BiV,EAAO6K,aAAe9f,EAGtBlC,EAAOC,SAAQ2Y,IACTkI,EACFlI,EAAQxV,MAAM6e,WAAa,GAE3BrJ,EAAQxV,MAAM8e,YAAc,GAE9BtJ,EAAQxV,MAAM+e,aAAe,GAC7BvJ,EAAQxV,MAAMgf,UAAY,EAAE,IAI1B3K,EAAO4K,gBAAkB5K,EAAO6K,UAClCxL,EAAeY,EAAW,kCAAmC,IAC7DZ,EAAeY,EAAW,iCAAkC,KAE9D,MAAM6K,EAAc9K,EAAO+H,MAAQ/H,EAAO+H,KAAKC,KAAO,GAAKtI,EAAOqI,KAQlE,IAAIgD,EAPAD,EACFpL,EAAOqI,KAAKiD,WAAWziB,GACdmX,EAAOqI,MAChBrI,EAAOqI,KAAKkD,cAKd,MAAMC,EAAgD,SAAzBlL,EAAO7X,eAA4B6X,EAAOxV,aAAekH,OAAO2D,KAAK2K,EAAOxV,aAAa0N,QAAO7O,QACnE,IAA1C2W,EAAOxV,YAAYnB,GAAKlB,gBACrC8C,OAAS,EACZ,IAAK,IAAIoI,EAAI,EAAGA,EAAIsW,EAActW,GAAK,EAAG,CAExC,IAAI5K,EAKJ,GANAsiB,EAAY,EAERxiB,EAAO8K,KAAI5K,EAAQF,EAAO8K,IAC1ByX,GACFpL,EAAOqI,KAAKoD,YAAY9X,EAAG5K,EAAOF,IAEhCA,EAAO8K,IAAyC,SAAnCiP,EAAa7Z,EAAO,WAArC,CAEA,GAA6B,SAAzBuX,EAAO7X,cAA0B,CAC/B+iB,IACF3iB,EAAO8K,GAAG1H,MAAM+T,EAAOuJ,kBAAkB,UAAY,IAEvD,MAAMmC,EAAc3O,iBAAiBhU,GAC/B4iB,EAAmB5iB,EAAMkD,MAAMoS,UAC/BuN,EAAyB7iB,EAAMkD,MAAMqS,gBAO3C,GANIqN,IACF5iB,EAAMkD,MAAMoS,UAAY,QAEtBuN,IACF7iB,EAAMkD,MAAMqS,gBAAkB,QAE5BgC,EAAOuL,aACTR,EAAYrL,EAAOiJ,eAAiB3F,EAAiBva,EAAO,SAAS,GAAQua,EAAiBva,EAAO,UAAU,OAC1G,CAEL,MAAMic,EAAQqE,EAA0BqC,EAAa,SAC/CI,EAAczC,EAA0BqC,EAAa,gBACrDK,EAAe1C,EAA0BqC,EAAa,iBACtDZ,EAAazB,EAA0BqC,EAAa,eACpDX,EAAc1B,EAA0BqC,EAAa,gBACrDM,EAAYN,EAAY1O,iBAAiB,cAC/C,GAAIgP,GAA2B,eAAdA,EACfX,EAAYrG,EAAQ8F,EAAaC,MAC5B,CACL,MAAM,YACJhC,EAAW,YACXtF,GACE1a,EACJsiB,EAAYrG,EAAQ8G,EAAcC,EAAejB,EAAaC,GAAetH,EAAcsF,EAC7F,CACF,CACI4C,IACF5iB,EAAMkD,MAAMoS,UAAYsN,GAEtBC,IACF7iB,EAAMkD,MAAMqS,gBAAkBsN,GAE5BtL,EAAOuL,eAAcR,EAAYrK,KAAKiL,MAAMZ,GAClD,MACEA,GAAa5B,GAAcnJ,EAAO7X,cAAgB,GAAKsC,GAAgBuV,EAAO7X,cAC1E6X,EAAOuL,eAAcR,EAAYrK,KAAKiL,MAAMZ,IAC5CxiB,EAAO8K,KACT9K,EAAO8K,GAAG1H,MAAM+T,EAAOuJ,kBAAkB,UAAY,GAAG8B,OAGxDxiB,EAAO8K,KACT9K,EAAO8K,GAAGuY,gBAAkBb,GAE9BjB,EAAgBtI,KAAKuJ,GACjB/K,EAAO4K,gBACTP,EAAgBA,EAAgBU,EAAY,EAAIT,EAAgB,EAAI7f,EAC9C,IAAlB6f,GAA6B,IAANjX,IAASgX,EAAgBA,EAAgBlB,EAAa,EAAI1e,GAC3E,IAAN4I,IAASgX,EAAgBA,EAAgBlB,EAAa,EAAI1e,GAC1DiW,KAAK6C,IAAI8G,GAAiB,OAAUA,EAAgB,GACpDrK,EAAOuL,eAAclB,EAAgB3J,KAAKiL,MAAMtB,IAChDvS,EAAQkI,EAAO6L,gBAAmB,GAAGjC,EAASpI,KAAK6I,GACvDR,EAAWrI,KAAK6I,KAEZrK,EAAOuL,eAAclB,EAAgB3J,KAAKiL,MAAMtB,KAC/CvS,EAAQ4I,KAAKE,IAAIlB,EAAOM,OAAO8L,mBAAoBhU,IAAU4H,EAAOM,OAAO6L,gBAAmB,GAAGjC,EAASpI,KAAK6I,GACpHR,EAAWrI,KAAK6I,GAChBA,EAAgBA,EAAgBU,EAAYtgB,GAE9CiV,EAAO6K,aAAeQ,EAAYtgB,EAClC6f,EAAgBS,EAChBjT,GAAS,CArE2D,CAsEtE,CAaA,GAZA4H,EAAO6K,YAAc7J,KAAKC,IAAIjB,EAAO6K,YAAapB,GAAcc,EAC5DZ,GAAOC,IAA+B,UAAlBtJ,EAAOjY,QAAwC,cAAlBiY,EAAOjY,UAC1DkY,EAAUtU,MAAM+Y,MAAQ,GAAGhF,EAAO6K,YAAc9f,OAE9CuV,EAAO+L,iBACT9L,EAAUtU,MAAM+T,EAAOuJ,kBAAkB,UAAY,GAAGvJ,EAAO6K,YAAc9f,OAE3EqgB,GACFpL,EAAOqI,KAAKiE,kBAAkBjB,EAAWnB,IAItC5J,EAAO4K,eAAgB,CAC1B,MAAMqB,EAAgB,GACtB,IAAK,IAAI5Y,EAAI,EAAGA,EAAIuW,EAAS3e,OAAQoI,GAAK,EAAG,CAC3C,IAAI6Y,EAAiBtC,EAASvW,GAC1B2M,EAAOuL,eAAcW,EAAiBxL,KAAKiL,MAAMO,IACjDtC,EAASvW,IAAMqM,EAAO6K,YAAcpB,GACtC8C,EAAczK,KAAK0K,EAEvB,CACAtC,EAAWqC,EACPvL,KAAKiL,MAAMjM,EAAO6K,YAAcpB,GAAczI,KAAKiL,MAAM/B,EAASA,EAAS3e,OAAS,IAAM,GAC5F2e,EAASpI,KAAK9B,EAAO6K,YAAcpB,EAEvC,CACA,GAAII,GAAavJ,EAAO/Z,KAAM,CAC5B,MAAMgd,EAAO6G,EAAgB,GAAKrf,EAClC,GAAIuV,EAAO6L,eAAiB,EAAG,CAC7B,MAAMM,EAASzL,KAAKoH,MAAMpI,EAAO8J,QAAQ4C,aAAe1M,EAAO8J,QAAQ6C,aAAerM,EAAO6L,gBACvFS,EAAYrJ,EAAOjD,EAAO6L,eAChC,IAAK,IAAIxY,EAAI,EAAGA,EAAI8Y,EAAQ9Y,GAAK,EAC/BuW,EAASpI,KAAKoI,EAASA,EAAS3e,OAAS,GAAKqhB,EAElD,CACA,IAAK,IAAIjZ,EAAI,EAAGA,EAAIqM,EAAO8J,QAAQ4C,aAAe1M,EAAO8J,QAAQ6C,YAAahZ,GAAK,EACnD,IAA1B2M,EAAO6L,gBACTjC,EAASpI,KAAKoI,EAASA,EAAS3e,OAAS,GAAKgY,GAEhD4G,EAAWrI,KAAKqI,EAAWA,EAAW5e,OAAS,GAAKgY,GACpDvD,EAAO6K,aAAetH,CAE1B,CAEA,GADwB,IAApB2G,EAAS3e,SAAc2e,EAAW,CAAC,IAClB,IAAjBnf,EAAoB,CACtB,MAAMpB,EAAMqW,EAAOiJ,gBAAkBU,EAAM,aAAe3J,EAAOuJ,kBAAkB,eACnF1gB,EAAO2P,QAAO,CAACiQ,EAAGnf,MACXgX,EAAO6K,UAAW7K,EAAO/Z,OAC1B+C,IAAeT,EAAO0C,OAAS,IAIlCzC,SAAQ2Y,IACTA,EAAQxV,MAAMtC,GAAO,GAAGoB,KAAgB,GAE5C,CACA,GAAIuV,EAAO4K,gBAAkB5K,EAAOuM,qBAAsB,CACxD,IAAIC,EAAgB,EACpB1C,EAAgBthB,SAAQikB,IACtBD,GAAiBC,GAAkBhiB,GAAgB,EAAE,IAEvD+hB,GAAiB/hB,EACjB,MAAMiiB,EAAUF,EAAgBrD,EAAaqD,EAAgBrD,EAAa,EAC1ES,EAAWA,EAAShU,KAAI+W,GAClBA,GAAQ,GAAW5C,EACnB4C,EAAOD,EAAgBA,EAAUzC,EAC9B0C,GAEX,CACA,GAAI3M,EAAO4M,yBAA0B,CACnC,IAAIJ,EAAgB,EACpB1C,EAAgBthB,SAAQikB,IACtBD,GAAiBC,GAAkBhiB,GAAgB,EAAE,IAEvD+hB,GAAiB/hB,EACjB,MAAMoiB,GAAc7M,EAAOgK,oBAAsB,IAAMhK,EAAOkK,mBAAqB,GACnF,GAAIsC,EAAgBK,EAAa1D,EAAY,CAC3C,MAAM2D,GAAmB3D,EAAaqD,EAAgBK,GAAc,EACpEjD,EAASphB,SAAQ,CAACmkB,EAAMI,KACtBnD,EAASmD,GAAaJ,EAAOG,CAAe,IAE9CjD,EAAWrhB,SAAQ,CAACmkB,EAAMI,KACxBlD,EAAWkD,GAAaJ,EAAOG,CAAe,GAElD,CACF,CAOA,GANApb,OAAOmX,OAAOnJ,EAAQ,CACpBnX,SACAqhB,WACAC,aACAC,oBAEE9J,EAAO4K,gBAAkB5K,EAAO6K,UAAY7K,EAAOuM,qBAAsB,CAC3ElN,EAAeY,EAAW,mCAAuC2J,EAAS,GAAb,MAC7DvK,EAAeY,EAAW,iCAAqCP,EAAOuD,KAAO,EAAI6G,EAAgBA,EAAgB7e,OAAS,GAAK,EAAnE,MAC5D,MAAM+hB,GAAiBtN,EAAOkK,SAAS,GACjCqD,GAAmBvN,EAAOmK,WAAW,GAC3CnK,EAAOkK,SAAWlK,EAAOkK,SAAShU,KAAI0N,GAAKA,EAAI0J,IAC/CtN,EAAOmK,WAAanK,EAAOmK,WAAWjU,KAAI0N,GAAKA,EAAI2J,GACrD,CAeA,GAdItD,IAAiBD,GACnBhK,EAAO8G,KAAK,sBAEVoD,EAAS3e,SAAWkf,IAClBzK,EAAOM,OAAOkN,eAAexN,EAAOyN,gBACxCzN,EAAO8G,KAAK,yBAEVqD,EAAW5e,SAAWmf,GACxB1K,EAAO8G,KAAK,0BAEVxG,EAAOoN,qBACT1N,EAAO2N,qBAET3N,EAAO8G,KAAK,mBACP+C,GAAcvJ,EAAO6K,SAA8B,UAAlB7K,EAAOjY,QAAwC,SAAlBiY,EAAOjY,QAAoB,CAC5F,MAAMulB,EAAsB,GAAGtN,EAAOuN,wCAChCC,EAA6B9N,EAAOtW,GAAGtC,UAAUY,SAAS4lB,GAC5D3D,GAAgB3J,EAAOyN,wBACpBD,GAA4B9N,EAAOtW,GAAGtC,UAAUC,IAAIumB,GAChDE,GACT9N,EAAOtW,GAAGtC,UAAUW,OAAO6lB,EAE/B,CACF,EAscEI,iBApcF,SAA0B1lB,GACxB,MAAM0X,EAASrU,KACTsiB,EAAe,GACfpE,EAAY7J,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAC1D,IACIpW,EADAua,EAAY,EAEK,iBAAV5lB,EACT0X,EAAOmO,cAAc7lB,IACF,IAAVA,GACT0X,EAAOmO,cAAcnO,EAAOM,OAAOhY,OAErC,MAAM8lB,EAAkBhW,GAClByR,EACK7J,EAAOnX,OAAOmX,EAAOqO,oBAAoBjW,IAE3C4H,EAAOnX,OAAOuP,GAGvB,GAAoC,SAAhC4H,EAAOM,OAAO7X,eAA4BuX,EAAOM,OAAO7X,cAAgB,EAC1E,GAAIuX,EAAOM,OAAO4K,gBACflL,EAAOsO,eAAiB,IAAIxlB,SAAQC,IACnCklB,EAAanM,KAAK/Y,EAAM,SAG1B,IAAK4K,EAAI,EAAGA,EAAIqN,KAAKoH,KAAKpI,EAAOM,OAAO7X,eAAgBkL,GAAK,EAAG,CAC9D,MAAMyE,EAAQ4H,EAAOzW,YAAcoK,EACnC,GAAIyE,EAAQ4H,EAAOnX,OAAO0C,SAAWse,EAAW,MAChDoE,EAAanM,KAAKsM,EAAgBhW,GACpC,MAGF6V,EAAanM,KAAKsM,EAAgBpO,EAAOzW,cAI3C,IAAKoK,EAAI,EAAGA,EAAIsa,EAAa1iB,OAAQoI,GAAK,EACxC,QAA+B,IAApBsa,EAAata,GAAoB,CAC1C,MAAMuR,EAAS+I,EAAata,GAAG4a,aAC/BL,EAAYhJ,EAASgJ,EAAYhJ,EAASgJ,CAC5C,EAIEA,GAA2B,IAAdA,KAAiBlO,EAAOO,UAAUtU,MAAMiZ,OAAS,GAAGgJ,MACvE,EAyZEP,mBAvZF,WACE,MAAM3N,EAASrU,KACT9C,EAASmX,EAAOnX,OAEhB2lB,EAAcxO,EAAO0H,UAAY1H,EAAOiJ,eAAiBjJ,EAAOO,UAAUkO,WAAazO,EAAOO,UAAUmO,UAAY,EAC1H,IAAK,IAAI/a,EAAI,EAAGA,EAAI9K,EAAO0C,OAAQoI,GAAK,EACtC9K,EAAO8K,GAAGgb,mBAAqB3O,EAAOiJ,eAAiBpgB,EAAO8K,GAAG8a,WAAa5lB,EAAO8K,GAAG+a,WAAaF,EAAcxO,EAAO4O,uBAE9H,EAgZEC,qBAvYF,SAA8BzO,QACV,IAAdA,IACFA,EAAYzU,MAAQA,KAAKyU,WAAa,GAExC,MAAMJ,EAASrU,KACT2U,EAASN,EAAOM,QAChB,OACJzX,EACA6gB,aAAcC,EAAG,SACjBO,GACElK,EACJ,GAAsB,IAAlBnX,EAAO0C,OAAc,YACkB,IAAhC1C,EAAO,GAAG8lB,mBAAmC3O,EAAO2N,qBAC/D,IAAImB,GAAgB1O,EAChBuJ,IAAKmF,EAAe1O,GACxBJ,EAAO+O,qBAAuB,GAC9B/O,EAAOsO,cAAgB,GACvB,IAAIvjB,EAAeuV,EAAOvV,aACE,iBAAjBA,GAA6BA,EAAakJ,QAAQ,MAAQ,EACnElJ,EAAe6T,WAAW7T,EAAa6K,QAAQ,IAAK,KAAO,IAAMoK,EAAOuD,KACvC,iBAAjBxY,IAChBA,EAAe6T,WAAW7T,IAE5B,IAAK,IAAI4I,EAAI,EAAGA,EAAI9K,EAAO0C,OAAQoI,GAAK,EAAG,CACzC,MAAM5K,EAAQF,EAAO8K,GACrB,IAAIqb,EAAcjmB,EAAM4lB,kBACpBrO,EAAO6K,SAAW7K,EAAO4K,iBAC3B8D,GAAenmB,EAAO,GAAG8lB,mBAE3B,MAAMM,GAAiBH,GAAgBxO,EAAO4K,eAAiBlL,EAAOkP,eAAiB,GAAKF,IAAgBjmB,EAAMmjB,gBAAkBnhB,GAC9HokB,GAAyBL,EAAe5E,EAAS,IAAM5J,EAAO4K,eAAiBlL,EAAOkP,eAAiB,GAAKF,IAAgBjmB,EAAMmjB,gBAAkBnhB,GACpJqkB,IAAgBN,EAAeE,GAC/BK,EAAaD,EAAcpP,EAAOoK,gBAAgBzW,GAClD2b,EAAiBF,GAAe,GAAKA,GAAepP,EAAOuD,KAAOvD,EAAOoK,gBAAgBzW,GACzF4b,EAAYH,GAAe,GAAKA,EAAcpP,EAAOuD,KAAO,GAAK8L,EAAa,GAAKA,GAAcrP,EAAOuD,MAAQ6L,GAAe,GAAKC,GAAcrP,EAAOuD,KAC3JgM,IACFvP,EAAOsO,cAAcxM,KAAK/Y,GAC1BiX,EAAO+O,qBAAqBjN,KAAKnO,IAEnCyT,GAAqBre,EAAOwmB,EAAWjP,EAAOkP,mBAC9CpI,GAAqBre,EAAOumB,EAAgBhP,EAAOmP,wBACnD1mB,EAAMgY,SAAW4I,GAAOsF,EAAgBA,EACxClmB,EAAM2mB,iBAAmB/F,GAAOwF,EAAwBA,CAC1D,CACF,EA4VEQ,eA1VF,SAAwBvP,GACtB,MAAMJ,EAASrU,KACf,QAAyB,IAAdyU,EAA2B,CACpC,MAAMwP,EAAa5P,EAAO0J,cAAgB,EAAI,EAE9CtJ,EAAYJ,GAAUA,EAAOI,WAAaJ,EAAOI,UAAYwP,GAAc,CAC7E,CACA,MAAMtP,EAASN,EAAOM,OAChBuP,EAAiB7P,EAAO8P,eAAiB9P,EAAOkP,eACtD,IAAI,SACFnO,EAAQ,YACRgP,EAAW,MACXC,EAAK,aACLC,GACEjQ,EACJ,MAAMkQ,EAAeH,EACfI,EAASH,EACf,GAAuB,IAAnBH,EACF9O,EAAW,EACXgP,GAAc,EACdC,GAAQ,MACH,CACLjP,GAAYX,EAAYJ,EAAOkP,gBAAkBW,EACjD,MAAMO,EAAqBpP,KAAK6C,IAAIzD,EAAYJ,EAAOkP,gBAAkB,EACnEmB,EAAerP,KAAK6C,IAAIzD,EAAYJ,EAAO8P,gBAAkB,EACnEC,EAAcK,GAAsBrP,GAAY,EAChDiP,EAAQK,GAAgBtP,GAAY,EAChCqP,IAAoBrP,EAAW,GAC/BsP,IAActP,EAAW,EAC/B,CACA,GAAIT,EAAO/Z,KAAM,CACf,MAAM+pB,EAAkBtQ,EAAOqO,oBAAoB,GAC7CkC,EAAiBvQ,EAAOqO,oBAAoBrO,EAAOnX,OAAO0C,OAAS,GACnEilB,EAAsBxQ,EAAOmK,WAAWmG,GACxCG,EAAqBzQ,EAAOmK,WAAWoG,GACvCG,EAAe1Q,EAAOmK,WAAWnK,EAAOmK,WAAW5e,OAAS,GAC5DolB,EAAe3P,KAAK6C,IAAIzD,GAE5B6P,EADEU,GAAgBH,GACFG,EAAeH,GAAuBE,GAEtCC,EAAeD,EAAeD,GAAsBC,EAElET,EAAe,IAAGA,GAAgB,EACxC,CACAje,OAAOmX,OAAOnJ,EAAQ,CACpBe,WACAkP,eACAF,cACAC,WAEE1P,EAAOoN,qBAAuBpN,EAAO4K,gBAAkB5K,EAAOsQ,aAAY5Q,EAAO6O,qBAAqBzO,GACtG2P,IAAgBG,GAClBlQ,EAAO8G,KAAK,yBAEVkJ,IAAUG,GACZnQ,EAAO8G,KAAK,oBAEVoJ,IAAiBH,GAAeI,IAAWH,IAC7ChQ,EAAO8G,KAAK,YAEd9G,EAAO8G,KAAK,WAAY/F,EAC1B,EA8RE8P,oBArRF,WACE,MAAM7Q,EAASrU,MACT,OACJ9C,EAAM,OACNyX,EAAM,SACNkJ,EAAQ,YACRjgB,GACEyW,EACE6J,EAAY7J,EAAO8J,SAAWxJ,EAAOwJ,QAAQC,QAC7CqB,EAAcpL,EAAOqI,MAAQ/H,EAAO+H,MAAQ/H,EAAO+H,KAAKC,KAAO,EAC/DwI,EAAmBlP,GAChBD,EAAgB6H,EAAU,IAAIlJ,EAAOqH,aAAa/F,kBAAyBA,KAAY,GAEhG,IAAImP,EACAC,EACAC,EACJ,GAAIpH,EACF,GAAIvJ,EAAO/Z,KAAM,CACf,IAAI+C,EAAaC,EAAcyW,EAAO8J,QAAQ4C,aAC1CpjB,EAAa,IAAGA,EAAa0W,EAAO8J,QAAQjhB,OAAO0C,OAASjC,GAC5DA,GAAc0W,EAAO8J,QAAQjhB,OAAO0C,SAAQjC,GAAc0W,EAAO8J,QAAQjhB,OAAO0C,QACpFwlB,EAAcD,EAAiB,6BAA6BxnB,MAC9D,MACEynB,EAAcD,EAAiB,6BAA6BvnB,YAG1D6hB,GACF2F,EAAcloB,EAAO2P,QAAOiJ,GAAWA,EAAQiH,SAAWnf,IAAa,GACvE0nB,EAAYpoB,EAAO2P,QAAOiJ,GAAWA,EAAQiH,SAAWnf,EAAc,IAAG,GACzEynB,EAAYnoB,EAAO2P,QAAOiJ,GAAWA,EAAQiH,SAAWnf,EAAc,IAAG,IAEzEwnB,EAAcloB,EAAOU,GAGrBwnB,IACG3F,IAEH6F,EDrnBN,SAAwBvnB,EAAIkY,GAC1B,MAAMsP,EAAU,GAChB,KAAOxnB,EAAGynB,oBAAoB,CAC5B,MAAMC,EAAO1nB,EAAGynB,mBACZvP,EACEwP,EAAKtiB,QAAQ8S,IAAWsP,EAAQpP,KAAKsP,GACpCF,EAAQpP,KAAKsP,GACpB1nB,EAAK0nB,CACP,CACA,OAAOF,CACT,CC2mBkBG,CAAeN,EAAa,IAAIzQ,EAAOqH,4BAA4B,GAC3ErH,EAAO/Z,OAAS0qB,IAClBA,EAAYpoB,EAAO,IAIrBmoB,EDtoBN,SAAwBtnB,EAAIkY,GAC1B,MAAM0P,EAAU,GAChB,KAAO5nB,EAAG6nB,wBAAwB,CAChC,MAAMC,EAAO9nB,EAAG6nB,uBACZ3P,EACE4P,EAAK1iB,QAAQ8S,IAAW0P,EAAQxP,KAAK0P,GACpCF,EAAQxP,KAAK0P,GACpB9nB,EAAK8nB,CACP,CACA,OAAOF,CACT,CC4nBkBG,CAAeV,EAAa,IAAIzQ,EAAOqH,4BAA4B,GAC3ErH,EAAO/Z,MAAuB,KAAdyqB,IAClBA,EAAYnoB,EAAOA,EAAO0C,OAAS,MAIzC1C,EAAOC,SAAQ2Y,IACb8F,GAAmB9F,EAASA,IAAYsP,EAAazQ,EAAOoR,kBAC5DnK,GAAmB9F,EAASA,IAAYwP,EAAW3Q,EAAOqR,gBAC1DpK,GAAmB9F,EAASA,IAAYuP,EAAW1Q,EAAOsR,eAAe,IAE3E5R,EAAO6R,mBACT,EA+NEC,kBAtIF,SAA2BC,GACzB,MAAM/R,EAASrU,KACTyU,EAAYJ,EAAO0J,aAAe1J,EAAOI,WAAaJ,EAAOI,WAC7D,SACJ8J,EAAQ,OACR5J,EACA/W,YAAayoB,EACbxoB,UAAWyoB,EACX5E,UAAW6E,GACTlS,EACJ,IACIqN,EADA9jB,EAAcwoB,EAElB,MAAMI,EAAsBC,IAC1B,IAAI5oB,EAAY4oB,EAASpS,EAAO8J,QAAQ4C,aAOxC,OANIljB,EAAY,IACdA,EAAYwW,EAAO8J,QAAQjhB,OAAO0C,OAAS/B,GAEzCA,GAAawW,EAAO8J,QAAQjhB,OAAO0C,SACrC/B,GAAawW,EAAO8J,QAAQjhB,OAAO0C,QAE9B/B,CAAS,EAKlB,QAH2B,IAAhBD,IACTA,EA/CJ,SAAmCyW,GACjC,MAAM,WACJmK,EAAU,OACV7J,GACEN,EACEI,EAAYJ,EAAO0J,aAAe1J,EAAOI,WAAaJ,EAAOI,UACnE,IAAI7W,EACJ,IAAK,IAAIoK,EAAI,EAAGA,EAAIwW,EAAW5e,OAAQoI,GAAK,OACT,IAAtBwW,EAAWxW,EAAI,GACpByM,GAAa+J,EAAWxW,IAAMyM,EAAY+J,EAAWxW,EAAI,IAAMwW,EAAWxW,EAAI,GAAKwW,EAAWxW,IAAM,EACtGpK,EAAcoK,EACLyM,GAAa+J,EAAWxW,IAAMyM,EAAY+J,EAAWxW,EAAI,KAClEpK,EAAcoK,EAAI,GAEXyM,GAAa+J,EAAWxW,KACjCpK,EAAcoK,GAOlB,OAHI2M,EAAO+R,sBACL9oB,EAAc,QAA4B,IAAhBA,KAA6BA,EAAc,GAEpEA,CACT,CAwBkB+oB,CAA0BtS,IAEtCkK,EAASjW,QAAQmM,IAAc,EACjCiN,EAAYnD,EAASjW,QAAQmM,OACxB,CACL,MAAMmS,EAAOvR,KAAKE,IAAIZ,EAAO8L,mBAAoB7iB,GACjD8jB,EAAYkF,EAAOvR,KAAKiL,OAAO1iB,EAAcgpB,GAAQjS,EAAO6L,eAC9D,CAEA,GADIkB,GAAanD,EAAS3e,SAAQ8hB,EAAYnD,EAAS3e,OAAS,GAC5DhC,IAAgByoB,IAAkBhS,EAAOM,OAAO/Z,KAKlD,YAJI8mB,IAAc6E,IAChBlS,EAAOqN,UAAYA,EACnBrN,EAAO8G,KAAK,qBAIhB,GAAIvd,IAAgByoB,GAAiBhS,EAAOM,OAAO/Z,MAAQyZ,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAEjG,YADA/J,EAAOxW,UAAY2oB,EAAoB5oB,IAGzC,MAAM6hB,EAAcpL,EAAOqI,MAAQ/H,EAAO+H,MAAQ/H,EAAO+H,KAAKC,KAAO,EAGrE,IAAI9e,EACJ,GAAIwW,EAAO8J,SAAWxJ,EAAOwJ,QAAQC,SAAWzJ,EAAO/Z,KACrDiD,EAAY2oB,EAAoB5oB,QAC3B,GAAI6hB,EAAa,CACtB,MAAMoH,EAAqBxS,EAAOnX,OAAO2P,QAAOiJ,GAAWA,EAAQiH,SAAWnf,IAAa,GAC3F,IAAIkpB,EAAmB/hB,SAAS8hB,EAAmBnnB,aAAa,2BAA4B,IACxF4K,OAAOM,MAAMkc,KACfA,EAAmBzR,KAAKC,IAAIjB,EAAOnX,OAAOoL,QAAQue,GAAqB,IAEzEhpB,EAAYwX,KAAKiL,MAAMwG,EAAmBnS,EAAO+H,KAAKC,KACxD,MAAO,GAAItI,EAAOnX,OAAOU,GAAc,CACrC,MAAMD,EAAa0W,EAAOnX,OAAOU,GAAa8B,aAAa,2BAEzD7B,EADEF,EACUoH,SAASpH,EAAY,IAErBC,CAEhB,MACEC,EAAYD,EAEdyI,OAAOmX,OAAOnJ,EAAQ,CACpBkS,oBACA7E,YACA4E,oBACAzoB,YACAwoB,gBACAzoB,gBAEEyW,EAAO0S,aACT1K,GAAQhI,GAEVA,EAAO8G,KAAK,qBACZ9G,EAAO8G,KAAK,oBACR9G,EAAO0S,aAAe1S,EAAOM,OAAOqS,sBAClCV,IAAsBzoB,GACxBwW,EAAO8G,KAAK,mBAEd9G,EAAO8G,KAAK,eAEhB,EAkDE8L,mBAhDF,SAA4BlpB,EAAImpB,GAC9B,MAAM7S,EAASrU,KACT2U,EAASN,EAAOM,OACtB,IAAIvX,EAAQW,EAAGoG,QAAQ,IAAIwQ,EAAOqH,6BAC7B5e,GAASiX,EAAO0H,WAAamL,GAAQA,EAAKtnB,OAAS,GAAKsnB,EAAKzhB,SAAS1H,IACzE,IAAImpB,EAAK5nB,MAAM4nB,EAAK5e,QAAQvK,GAAM,EAAGmpB,EAAKtnB,SAASzC,SAAQgqB,KACpD/pB,GAAS+pB,EAAOhkB,SAAWgkB,EAAOhkB,QAAQ,IAAIwR,EAAOqH,8BACxD5e,EAAQ+pB,EACV,IAGJ,IACIxpB,EADAypB,GAAa,EAEjB,GAAIhqB,EACF,IAAK,IAAI4K,EAAI,EAAGA,EAAIqM,EAAOnX,OAAO0C,OAAQoI,GAAK,EAC7C,GAAIqM,EAAOnX,OAAO8K,KAAO5K,EAAO,CAC9BgqB,GAAa,EACbzpB,EAAaqK,EACb,KACF,CAGJ,IAAI5K,IAASgqB,EAUX,OAFA/S,EAAOgT,kBAAethB,OACtBsO,EAAOiT,kBAAevhB,GARtBsO,EAAOgT,aAAejqB,EAClBiX,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAC1C/J,EAAOiT,aAAeviB,SAAS3H,EAAMsC,aAAa,2BAA4B,IAE9E2U,EAAOiT,aAAe3pB,EAOtBgX,EAAO4S,0BAA+CxhB,IAAxBsO,EAAOiT,cAA8BjT,EAAOiT,eAAiBjT,EAAOzW,aACpGyW,EAAOkT,qBAEX,GAgMA,SAASC,GAAepT,GACtB,IAAI,OACFC,EAAM,aACNoT,EAAY,UACZC,EAAS,KACTC,GACEvT,EACJ,MAAM,YACJxW,EAAW,cACXyoB,GACEhS,EACJ,IAAIU,EAAM2S,EAKV,GAJK3S,IAC8BA,EAA7BnX,EAAcyoB,EAAqB,OAAgBzoB,EAAcyoB,EAAqB,OAAkB,SAE9GhS,EAAO8G,KAAK,aAAawM,KACrBF,GAAgB7pB,IAAgByoB,EAAe,CACjD,GAAY,UAARtR,EAEF,YADAV,EAAO8G,KAAK,uBAAuBwM,KAGrCtT,EAAO8G,KAAK,wBAAwBwM,KACxB,SAAR5S,EACFV,EAAO8G,KAAK,sBAAsBwM,KAElCtT,EAAO8G,KAAK,sBAAsBwM,IAEtC,CACF,CAwdA,IAAIvqB,GAAQ,CACVe,QA1aF,SAAiBsO,EAAO9P,EAAO8qB,EAAcG,EAAUC,QACvC,IAAVpb,IACFA,EAAQ,QAEW,IAAjBgb,IACFA,GAAe,GAEI,iBAAVhb,IACTA,EAAQ1H,SAAS0H,EAAO,KAE1B,MAAM4H,EAASrU,KACf,IAAIrC,EAAa8O,EACb9O,EAAa,IAAGA,EAAa,GACjC,MAAM,OACJgX,EAAM,SACN4J,EAAQ,WACRC,EAAU,cACV6H,EAAa,YACbzoB,EACAmgB,aAAcC,EAAG,UACjBpJ,EAAS,QACTwJ,GACE/J,EACJ,IAAK+J,IAAYwJ,IAAaC,GAAWxT,EAAOgG,WAAahG,EAAOyT,WAAanT,EAAOoT,+BACtF,OAAO,OAEY,IAAVprB,IACTA,EAAQ0X,EAAOM,OAAOhY,OAExB,MAAMiqB,EAAOvR,KAAKE,IAAIlB,EAAOM,OAAO8L,mBAAoB9iB,GACxD,IAAI+jB,EAAYkF,EAAOvR,KAAKiL,OAAO3iB,EAAaipB,GAAQvS,EAAOM,OAAO6L,gBAClEkB,GAAanD,EAAS3e,SAAQ8hB,EAAYnD,EAAS3e,OAAS,GAChE,MAAM6U,GAAa8J,EAASmD,GAE5B,GAAI/M,EAAO+R,oBACT,IAAK,IAAI1e,EAAI,EAAGA,EAAIwW,EAAW5e,OAAQoI,GAAK,EAAG,CAC7C,MAAMggB,GAAuB3S,KAAKiL,MAAkB,IAAZ7L,GAClCwT,EAAiB5S,KAAKiL,MAAsB,IAAhB9B,EAAWxW,IACvCkgB,EAAqB7S,KAAKiL,MAA0B,IAApB9B,EAAWxW,EAAI,SACpB,IAAtBwW,EAAWxW,EAAI,GACpBggB,GAAuBC,GAAkBD,EAAsBE,GAAsBA,EAAqBD,GAAkB,EAC9HtqB,EAAaqK,EACJggB,GAAuBC,GAAkBD,EAAsBE,IACxEvqB,EAAaqK,EAAI,GAEVggB,GAAuBC,IAChCtqB,EAAaqK,EAEjB,CAGF,GAAIqM,EAAO0S,aAAeppB,IAAeC,EAAa,CACpD,IAAKyW,EAAO8T,iBAAmBnK,EAAMvJ,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAOkP,eAAiB9O,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAOkP,gBAC1J,OAAO,EAET,IAAKlP,EAAO+T,gBAAkB3T,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAO8P,iBAC1EvmB,GAAe,KAAOD,EACzB,OAAO,CAGb,CAOA,IAAI+pB,EANA/pB,KAAgB0oB,GAAiB,IAAMoB,GACzCpT,EAAO8G,KAAK,0BAId9G,EAAO2P,eAAevP,GAEQiT,EAA1B/pB,EAAaC,EAAyB,OAAgBD,EAAaC,EAAyB,OAAwB,QAGxH,MAAMsgB,EAAY7J,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAG1D,KAFyBF,IAAa2J,KAEZ7J,IAAQvJ,IAAcJ,EAAOI,YAAcuJ,GAAOvJ,IAAcJ,EAAOI,WAc/F,OAbAJ,EAAO8R,kBAAkBxoB,GAErBgX,EAAOsQ,YACT5Q,EAAOgO,mBAEThO,EAAO6Q,sBACe,UAAlBvQ,EAAOjY,QACT2X,EAAOgU,aAAa5T,GAEJ,UAAdiT,IACFrT,EAAOiU,gBAAgBb,EAAcC,GACrCrT,EAAOkU,cAAcd,EAAcC,KAE9B,EAET,GAAI/S,EAAO6K,QAAS,CAClB,MAAMgJ,EAAMnU,EAAOiJ,eACbljB,EAAI4jB,EAAMvJ,GAAaA,EAC7B,GAAc,IAAV9X,EACEuhB,IACF7J,EAAOO,UAAUtU,MAAMuU,eAAiB,OACxCR,EAAOoU,mBAAoB,GAEzBvK,IAAc7J,EAAOqU,2BAA6BrU,EAAOM,OAAOgU,aAAe,GACjFtU,EAAOqU,2BAA4B,EACnC3tB,uBAAsB,KACpB6Z,EAAU4T,EAAM,aAAe,aAAepuB,CAAC,KAGjDwa,EAAU4T,EAAM,aAAe,aAAepuB,EAE5C8jB,GACFnjB,uBAAsB,KACpBsZ,EAAOO,UAAUtU,MAAMuU,eAAiB,GACxCR,EAAOoU,mBAAoB,CAAK,QAG/B,CACL,IAAKpU,EAAOgE,QAAQG,aAMlB,OALArE,EAAqB,CACnBE,SACAC,eAAgBla,EAChBma,KAAMiU,EAAM,OAAS,SAEhB,EAET5T,EAAU9Z,SAAS,CACjB,CAAC0tB,EAAM,OAAS,OAAQpuB,EACxBwuB,SAAU,UAEd,CACA,OAAO,CACT,CAuBA,OAtBAvU,EAAOmO,cAAc7lB,GACrB0X,EAAOgU,aAAa5T,GACpBJ,EAAO8R,kBAAkBxoB,GACzB0W,EAAO6Q,sBACP7Q,EAAO8G,KAAK,wBAAyBxe,EAAOirB,GAC5CvT,EAAOiU,gBAAgBb,EAAcC,GACvB,IAAV/qB,EACF0X,EAAOkU,cAAcd,EAAcC,GACzBrT,EAAOyT,YACjBzT,EAAOyT,WAAY,EACdzT,EAAOwU,gCACVxU,EAAOwU,8BAAgC,SAAuB3sB,GACvDmY,IAAUA,EAAOgG,WAClBne,EAAEzC,SAAWuG,OACjBqU,EAAOO,UAAU3S,oBAAoB,gBAAiBoS,EAAOwU,+BAC7DxU,EAAOwU,8BAAgC,YAChCxU,EAAOwU,8BACdxU,EAAOkU,cAAcd,EAAcC,GACrC,GAEFrT,EAAOO,UAAU5Z,iBAAiB,gBAAiBqZ,EAAOwU,iCAErD,CACT,EAoREC,YAlRF,SAAqBrc,EAAO9P,EAAO8qB,EAAcG,QACjC,IAAVnb,IACFA,EAAQ,QAEW,IAAjBgb,IACFA,GAAe,GAEI,iBAAVhb,IAETA,EADsB1H,SAAS0H,EAAO,KAGxC,MAAM4H,EAASrU,KACf,GAAIqU,EAAOgG,UAAW,YACD,IAAV1d,IACTA,EAAQ0X,EAAOM,OAAOhY,OAExB,MAAM8iB,EAAcpL,EAAOqI,MAAQrI,EAAOM,OAAO+H,MAAQrI,EAAOM,OAAO+H,KAAKC,KAAO,EACnF,IAAIoM,EAAWtc,EACf,GAAI4H,EAAOM,OAAO/Z,KAChB,GAAIyZ,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAE1C2K,GAAsB1U,EAAO8J,QAAQ4C,iBAChC,CACL,IAAIiI,EACJ,GAAIvJ,EAAa,CACf,MAAM9hB,EAAaorB,EAAW1U,EAAOM,OAAO+H,KAAKC,KACjDqM,EAAmB3U,EAAOnX,OAAO2P,QAAOiJ,GAA6D,EAAlDA,EAAQpW,aAAa,6BAAmC/B,IAAY,GAAGof,MAC5H,MACEiM,EAAmB3U,EAAOqO,oBAAoBqG,GAEhD,MAAME,EAAOxJ,EAAcpK,KAAKoH,KAAKpI,EAAOnX,OAAO0C,OAASyU,EAAOM,OAAO+H,KAAKC,MAAQtI,EAAOnX,OAAO0C,QAC/F,eACJ2f,GACElL,EAAOM,OACX,IAAI7X,EAAgBuX,EAAOM,OAAO7X,cACZ,SAAlBA,EACFA,EAAgBuX,EAAOmI,wBAEvB1f,EAAgBuY,KAAKoH,KAAKxJ,WAAWoB,EAAOM,OAAO7X,cAAe,KAC9DyiB,GAAkBziB,EAAgB,GAAM,IAC1CA,GAAgC,IAGpC,IAAIosB,EAAcD,EAAOD,EAAmBlsB,EAO5C,GANIyiB,IACF2J,EAAcA,GAAeF,EAAmB3T,KAAKoH,KAAK3f,EAAgB,IAExE8qB,GAAYrI,GAAkD,SAAhClL,EAAOM,OAAO7X,gBAA6B2iB,IAC3EyJ,GAAc,GAEZA,EAAa,CACf,MAAMxB,EAAYnI,EAAiByJ,EAAmB3U,EAAOzW,YAAc,OAAS,OAASorB,EAAmB3U,EAAOzW,YAAc,EAAIyW,EAAOM,OAAO7X,cAAgB,OAAS,OAChLuX,EAAO8U,QAAQ,CACbzB,YACAvpB,SAAS,EACT2oB,iBAAgC,SAAdY,EAAuBsB,EAAmB,EAAIA,EAAmBC,EAAO,EAC1FG,eAA8B,SAAd1B,EAAuBrT,EAAOxW,eAAYkI,GAE9D,CACA,GAAI0Z,EAAa,CACf,MAAM9hB,EAAaorB,EAAW1U,EAAOM,OAAO+H,KAAKC,KACjDoM,EAAW1U,EAAOnX,OAAO2P,QAAOiJ,GAA6D,EAAlDA,EAAQpW,aAAa,6BAAmC/B,IAAY,GAAGof,MACpH,MACEgM,EAAW1U,EAAOqO,oBAAoBqG,EAE1C,CAKF,OAHAhuB,uBAAsB,KACpBsZ,EAAOlW,QAAQ4qB,EAAUpsB,EAAO8qB,EAAcG,EAAS,IAElDvT,CACT,EA4MEgV,UAzMF,SAAmB1sB,EAAO8qB,EAAcG,QACjB,IAAjBH,IACFA,GAAe,GAEjB,MAAMpT,EAASrU,MACT,QACJoe,EAAO,OACPzJ,EAAM,UACNmT,GACEzT,EACJ,IAAK+J,GAAW/J,EAAOgG,UAAW,OAAOhG,OACpB,IAAV1X,IACTA,EAAQ0X,EAAOM,OAAOhY,OAExB,IAAI2sB,EAAW3U,EAAO6L,eACO,SAAzB7L,EAAO7X,eAAsD,IAA1B6X,EAAO6L,gBAAwB7L,EAAO4U,qBAC3ED,EAAWjU,KAAKC,IAAIjB,EAAOmI,qBAAqB,WAAW,GAAO,IAEpE,MAAMgN,EAAYnV,EAAOzW,YAAc+W,EAAO8L,mBAAqB,EAAI6I,EACjEpL,EAAY7J,EAAO8J,SAAWxJ,EAAOwJ,QAAQC,QACnD,GAAIzJ,EAAO/Z,KAAM,CACf,GAAIktB,IAAc5J,GAAavJ,EAAO8U,oBAAqB,OAAO,EAMlE,GALApV,EAAO8U,QAAQ,CACbzB,UAAW,SAGbrT,EAAOqV,YAAcrV,EAAOO,UAAUiC,WAClCxC,EAAOzW,cAAgByW,EAAOnX,OAAO0C,OAAS,GAAK+U,EAAO6K,QAI5D,OAHAzkB,uBAAsB,KACpBsZ,EAAOlW,QAAQkW,EAAOzW,YAAc4rB,EAAW7sB,EAAO8qB,EAAcG,EAAS,KAExE,CAEX,CACA,OAAIjT,EAAOsI,QAAU5I,EAAOgQ,MACnBhQ,EAAOlW,QAAQ,EAAGxB,EAAO8qB,EAAcG,GAEzCvT,EAAOlW,QAAQkW,EAAOzW,YAAc4rB,EAAW7sB,EAAO8qB,EAAcG,EAC7E,EAoKE+B,UAjKF,SAAmBhtB,EAAO8qB,EAAcG,QACjB,IAAjBH,IACFA,GAAe,GAEjB,MAAMpT,EAASrU,MACT,OACJ2U,EAAM,SACN4J,EAAQ,WACRC,EAAU,aACVT,EAAY,QACZK,EAAO,UACP0J,GACEzT,EACJ,IAAK+J,GAAW/J,EAAOgG,UAAW,OAAOhG,OACpB,IAAV1X,IACTA,EAAQ0X,EAAOM,OAAOhY,OAExB,MAAMuhB,EAAY7J,EAAO8J,SAAWxJ,EAAOwJ,QAAQC,QACnD,GAAIzJ,EAAO/Z,KAAM,CACf,GAAIktB,IAAc5J,GAAavJ,EAAO8U,oBAAqB,OAAO,EAClEpV,EAAO8U,QAAQ,CACbzB,UAAW,SAGbrT,EAAOqV,YAAcrV,EAAOO,UAAUiC,UACxC,CAEA,SAAS+S,EAAUC,GACjB,OAAIA,EAAM,GAAWxU,KAAKiL,MAAMjL,KAAK6C,IAAI2R,IAClCxU,KAAKiL,MAAMuJ,EACpB,CACA,MAAM7B,EAAsB4B,EALV7L,EAAe1J,EAAOI,WAAaJ,EAAOI,WAMtDqV,EAAqBvL,EAAShU,KAAIsf,GAAOD,EAAUC,KACzD,IAAIE,EAAWxL,EAASuL,EAAmBxhB,QAAQ0f,GAAuB,GAC1E,QAAwB,IAAb+B,GAA4BpV,EAAO6K,QAAS,CACrD,IAAIwK,EACJzL,EAASphB,SAAQ,CAACmkB,EAAMI,KAClBsG,GAAuB1G,IAEzB0I,EAAgBtI,EAClB,SAE2B,IAAlBsI,IACTD,EAAWxL,EAASyL,EAAgB,EAAIA,EAAgB,EAAIA,GAEhE,CACA,IAAIC,EAAY,EAShB,QARwB,IAAbF,IACTE,EAAYzL,EAAWlW,QAAQyhB,GAC3BE,EAAY,IAAGA,EAAY5V,EAAOzW,YAAc,GACvB,SAAzB+W,EAAO7X,eAAsD,IAA1B6X,EAAO6L,gBAAwB7L,EAAO4U,qBAC3EU,EAAYA,EAAY5V,EAAOmI,qBAAqB,YAAY,GAAQ,EACxEyN,EAAY5U,KAAKC,IAAI2U,EAAW,KAGhCtV,EAAOsI,QAAU5I,EAAO+P,YAAa,CACvC,MAAM8F,EAAY7V,EAAOM,OAAOwJ,SAAW9J,EAAOM,OAAOwJ,QAAQC,SAAW/J,EAAO8J,QAAU9J,EAAO8J,QAAQjhB,OAAO0C,OAAS,EAAIyU,EAAOnX,OAAO0C,OAAS,EACvJ,OAAOyU,EAAOlW,QAAQ+rB,EAAWvtB,EAAO8qB,EAAcG,EACxD,CAAO,OAAIjT,EAAO/Z,MAA+B,IAAvByZ,EAAOzW,aAAqB+W,EAAO6K,SAC3DzkB,uBAAsB,KACpBsZ,EAAOlW,QAAQ8rB,EAAWttB,EAAO8qB,EAAcG,EAAS,KAEnD,GAEFvT,EAAOlW,QAAQ8rB,EAAWttB,EAAO8qB,EAAcG,EACxD,EAiGEuC,WA9FF,SAAoBxtB,EAAO8qB,EAAcG,QAClB,IAAjBH,IACFA,GAAe,GAEjB,MAAMpT,EAASrU,KACf,IAAIqU,EAAOgG,UAIX,YAHqB,IAAV1d,IACTA,EAAQ0X,EAAOM,OAAOhY,OAEjB0X,EAAOlW,QAAQkW,EAAOzW,YAAajB,EAAO8qB,EAAcG,EACjE,EAqFEwC,eAlFF,SAAwBztB,EAAO8qB,EAAcG,EAAUyC,QAChC,IAAjB5C,IACFA,GAAe,QAEC,IAAd4C,IACFA,EAAY,IAEd,MAAMhW,EAASrU,KACf,GAAIqU,EAAOgG,UAAW,YACD,IAAV1d,IACTA,EAAQ0X,EAAOM,OAAOhY,OAExB,IAAI8P,EAAQ4H,EAAOzW,YACnB,MAAMgpB,EAAOvR,KAAKE,IAAIlB,EAAOM,OAAO8L,mBAAoBhU,GAClDiV,EAAYkF,EAAOvR,KAAKiL,OAAO7T,EAAQma,GAAQvS,EAAOM,OAAO6L,gBAC7D/L,EAAYJ,EAAO0J,aAAe1J,EAAOI,WAAaJ,EAAOI,UACnE,GAAIA,GAAaJ,EAAOkK,SAASmD,GAAY,CAG3C,MAAM4I,EAAcjW,EAAOkK,SAASmD,GAEhCjN,EAAY6V,GADCjW,EAAOkK,SAASmD,EAAY,GACH4I,GAAeD,IACvD5d,GAAS4H,EAAOM,OAAO6L,eAE3B,KAAO,CAGL,MAAMuJ,EAAW1V,EAAOkK,SAASmD,EAAY,GAEzCjN,EAAYsV,IADI1V,EAAOkK,SAASmD,GACOqI,GAAYM,IACrD5d,GAAS4H,EAAOM,OAAO6L,eAE3B,CAGA,OAFA/T,EAAQ4I,KAAKC,IAAI7I,EAAO,GACxBA,EAAQ4I,KAAKE,IAAI9I,EAAO4H,EAAOmK,WAAW5e,OAAS,GAC5CyU,EAAOlW,QAAQsO,EAAO9P,EAAO8qB,EAAcG,EACpD,EA+CEL,oBA7CF,WACE,MAAMlT,EAASrU,KACf,GAAIqU,EAAOgG,UAAW,OACtB,MAAM,OACJ1F,EAAM,SACNkJ,GACExJ,EACEvX,EAAyC,SAAzB6X,EAAO7X,cAA2BuX,EAAOmI,uBAAyB7H,EAAO7X,cAC/F,IACIe,EADA0sB,EAAelW,EAAOiT,aAE1B,MAAMkD,EAAgBnW,EAAO0H,UAAY,eAAiB,IAAIpH,EAAOqH,aACrE,GAAIrH,EAAO/Z,KAAM,CACf,GAAIyZ,EAAOyT,UAAW,OACtBjqB,EAAYkH,SAASsP,EAAOgT,aAAa3nB,aAAa,2BAA4B,IAC9EiV,EAAO4K,eACLgL,EAAelW,EAAOoW,aAAe3tB,EAAgB,GAAKytB,EAAelW,EAAOnX,OAAO0C,OAASyU,EAAOoW,aAAe3tB,EAAgB,GACxIuX,EAAO8U,UACPoB,EAAelW,EAAOqW,cAAc1U,EAAgB6H,EAAU,GAAG2M,8BAA0C3sB,OAAe,IAC1HmU,GAAS,KACPqC,EAAOlW,QAAQosB,EAAa,KAG9BlW,EAAOlW,QAAQosB,GAERA,EAAelW,EAAOnX,OAAO0C,OAAS9C,GAC/CuX,EAAO8U,UACPoB,EAAelW,EAAOqW,cAAc1U,EAAgB6H,EAAU,GAAG2M,8BAA0C3sB,OAAe,IAC1HmU,GAAS,KACPqC,EAAOlW,QAAQosB,EAAa,KAG9BlW,EAAOlW,QAAQosB,EAEnB,MACElW,EAAOlW,QAAQosB,EAEnB,GAoSI3vB,GAAO,CACT+vB,WAzRF,SAAoBvB,GAClB,MAAM/U,EAASrU,MACT,OACJ2U,EAAM,SACNkJ,GACExJ,EACJ,IAAKM,EAAO/Z,MAAQyZ,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAAS,OACrE,MAAMuB,EAAa,KACF3J,EAAgB6H,EAAU,IAAIlJ,EAAOqH,4BAC7C7e,SAAQ,CAACY,EAAI0O,KAClB1O,EAAGvC,aAAa,0BAA2BiR,EAAM,GACjD,EAEEgT,EAAcpL,EAAOqI,MAAQ/H,EAAO+H,MAAQ/H,EAAO+H,KAAKC,KAAO,EAC/D6D,EAAiB7L,EAAO6L,gBAAkBf,EAAc9K,EAAO+H,KAAKC,KAAO,GAC3EiO,EAAkBvW,EAAOnX,OAAO0C,OAAS4gB,GAAmB,EAC5DqK,EAAiBpL,GAAepL,EAAOnX,OAAO0C,OAAS+U,EAAO+H,KAAKC,MAAS,EAC5EmO,EAAiBC,IACrB,IAAK,IAAI/iB,EAAI,EAAGA,EAAI+iB,EAAgB/iB,GAAK,EAAG,CAC1C,MAAM8N,EAAUzB,EAAO0H,UAAY9L,EAAc,eAAgB,CAAC0E,EAAOqW,kBAAoB/a,EAAc,MAAO,CAAC0E,EAAOqH,WAAYrH,EAAOqW,kBAC7I3W,EAAOwJ,SAASoN,OAAOnV,EACzB,GAEE8U,GACEjW,EAAOuW,oBAETJ,EADoBtK,EAAiBnM,EAAOnX,OAAO0C,OAAS4gB,GAE5DnM,EAAO8W,eACP9W,EAAOoJ,gBAEPpH,EAAY,mLAEdsJ,KACSkL,GACLlW,EAAOuW,oBAETJ,EADoBnW,EAAO+H,KAAKC,KAAOtI,EAAOnX,OAAO0C,OAAS+U,EAAO+H,KAAKC,MAE1EtI,EAAO8W,eACP9W,EAAOoJ,gBAEPpH,EAAY,8KAEdsJ,KAEAA,IAEFtL,EAAO8U,QAAQ,CACbC,iBACA1B,UAAW/S,EAAO4K,oBAAiBxZ,EAAY,QAEnD,EAwOEojB,QAtOF,SAAiBrQ,GACf,IAAI,eACFsQ,EAAc,QACdjrB,GAAU,EAAI,UACdupB,EAAS,aACTW,EAAY,iBACZvB,EAAgB,aAChBsE,EAAY,aACZC,QACY,IAAVvS,EAAmB,CAAC,EAAIA,EAC5B,MAAMzE,EAASrU,KACf,IAAKqU,EAAOM,OAAO/Z,KAAM,OACzByZ,EAAO8G,KAAK,iBACZ,MAAM,OACJje,EAAM,eACNkrB,EAAc,eACdD,EAAc,SACdtK,EAAQ,OACRlJ,GACEN,GACE,eACJkL,GACE5K,EAGJ,GAFAN,EAAO+T,gBAAiB,EACxB/T,EAAO8T,gBAAiB,EACpB9T,EAAO8J,SAAWxJ,EAAOwJ,QAAQC,QAanC,OAZIjgB,IACGwW,EAAO4K,gBAAuC,IAArBlL,EAAOqN,UAE1B/M,EAAO4K,gBAAkBlL,EAAOqN,UAAY/M,EAAO7X,cAC5DuX,EAAOlW,QAAQkW,EAAO8J,QAAQjhB,OAAO0C,OAASyU,EAAOqN,UAAW,GAAG,GAAO,GACjErN,EAAOqN,YAAcrN,EAAOkK,SAAS3e,OAAS,GACvDyU,EAAOlW,QAAQkW,EAAO8J,QAAQ4C,aAAc,GAAG,GAAO,GAJtD1M,EAAOlW,QAAQkW,EAAO8J,QAAQjhB,OAAO0C,OAAQ,GAAG,GAAO,IAO3DyU,EAAO+T,eAAiBA,EACxB/T,EAAO8T,eAAiBA,OACxB9T,EAAO8G,KAAK,WAGd,IAAIre,EAAgB6X,EAAO7X,cACL,SAAlBA,EACFA,EAAgBuX,EAAOmI,wBAEvB1f,EAAgBuY,KAAKoH,KAAKxJ,WAAW0B,EAAO7X,cAAe,KACvDyiB,GAAkBziB,EAAgB,GAAM,IAC1CA,GAAgC,IAGpC,MAAM0jB,EAAiB7L,EAAO4U,mBAAqBzsB,EAAgB6X,EAAO6L,eAC1E,IAAIiK,EAAejK,EACfiK,EAAejK,GAAmB,IACpCiK,GAAgBjK,EAAiBiK,EAAejK,GAElDiK,GAAgB9V,EAAO2W,qBACvBjX,EAAOoW,aAAeA,EACtB,MAAMhL,EAAcpL,EAAOqI,MAAQ/H,EAAO+H,MAAQ/H,EAAO+H,KAAKC,KAAO,EACjEzf,EAAO0C,OAAS9C,EAAgB2tB,EAClCpU,EAAY,6OACHoJ,GAAoC,QAArB9K,EAAO+H,KAAK6O,MACpClV,EAAY,2EAEd,MAAMmV,EAAuB,GACvBC,EAAsB,GAC5B,IAAI7tB,EAAcyW,EAAOzW,iBACO,IAArBkpB,EACTA,EAAmBzS,EAAOqW,cAAcxtB,EAAO2P,QAAO9O,GAAMA,EAAGtC,UAAUY,SAASsY,EAAOoR,oBAAmB,IAE5GnoB,EAAckpB,EAEhB,MAAM4E,EAAuB,SAAdhE,IAAyBA,EAClCiE,EAAuB,SAAdjE,IAAyBA,EACxC,IAAIkE,EAAkB,EAClBC,EAAiB,EACrB,MAAM5C,EAAOxJ,EAAcpK,KAAKoH,KAAKvf,EAAO0C,OAAS+U,EAAO+H,KAAKC,MAAQzf,EAAO0C,OAE1EksB,GADiBrM,EAAcviB,EAAO4pB,GAAkB/J,OAAS+J,IACrBvH,QAA0C,IAAjB8I,GAAgCvrB,EAAgB,EAAI,GAAM,GAErI,GAAIgvB,EAA0BrB,EAAc,CAC1CmB,EAAkBvW,KAAKC,IAAImV,EAAeqB,EAAyBtL,GACnE,IAAK,IAAIxY,EAAI,EAAGA,EAAIyiB,EAAeqB,EAAyB9jB,GAAK,EAAG,CAClE,MAAMyE,EAAQzE,EAAIqN,KAAKiL,MAAMtY,EAAIihB,GAAQA,EACzC,GAAIxJ,EAAa,CACf,MAAMsM,EAAoB9C,EAAOxc,EAAQ,EACzC,IAAK,IAAIzE,EAAI9K,EAAO0C,OAAS,EAAGoI,GAAK,EAAGA,GAAK,EACvC9K,EAAO8K,GAAG+U,SAAWgP,GAAmBP,EAAqBrV,KAAKnO,EAK1E,MACEwjB,EAAqBrV,KAAK8S,EAAOxc,EAAQ,EAE7C,CACF,MAAO,GAAIqf,EAA0BhvB,EAAgBmsB,EAAOwB,EAAc,CACxEoB,EAAiBxW,KAAKC,IAAIwW,GAA2B7C,EAAsB,EAAfwB,GAAmBjK,GAC/E,IAAK,IAAIxY,EAAI,EAAGA,EAAI6jB,EAAgB7jB,GAAK,EAAG,CAC1C,MAAMyE,EAAQzE,EAAIqN,KAAKiL,MAAMtY,EAAIihB,GAAQA,EACrCxJ,EACFviB,EAAOC,SAAQ,CAACC,EAAOO,KACjBP,EAAM2f,SAAWtQ,GAAOgf,EAAoBtV,KAAKxY,EAAW,IAGlE8tB,EAAoBtV,KAAK1J,EAE7B,CACF,CA8BA,GA7BA4H,EAAO2X,qBAAsB,EAC7BjxB,uBAAsB,KACpBsZ,EAAO2X,qBAAsB,CAAK,IAEhCL,GACFH,EAAqBruB,SAAQsP,IAC3BvP,EAAOuP,GAAOwf,mBAAoB,EAClCpO,EAASqO,QAAQhvB,EAAOuP,IACxBvP,EAAOuP,GAAOwf,mBAAoB,CAAK,IAGvCP,GACFD,EAAoBtuB,SAAQsP,IAC1BvP,EAAOuP,GAAOwf,mBAAoB,EAClCpO,EAASoN,OAAO/tB,EAAOuP,IACvBvP,EAAOuP,GAAOwf,mBAAoB,CAAK,IAG3C5X,EAAO8W,eACsB,SAAzBxW,EAAO7X,cACTuX,EAAOoJ,eACEgC,IAAgB+L,EAAqB5rB,OAAS,GAAK+rB,GAAUF,EAAoB7rB,OAAS,GAAK8rB,IACxGrX,EAAOnX,OAAOC,SAAQ,CAACC,EAAOO,KAC5B0W,EAAOqI,KAAKoD,YAAYniB,EAAYP,EAAOiX,EAAOnX,OAAO,IAGzDyX,EAAOoN,qBACT1N,EAAO2N,qBAEL7jB,EACF,GAAIqtB,EAAqB5rB,OAAS,GAAK+rB,GACrC,QAA8B,IAAnBvC,EAAgC,CACzC,MAAM+C,EAAwB9X,EAAOmK,WAAW5gB,GAE1CwuB,EADoB/X,EAAOmK,WAAW5gB,EAAcguB,GACzBO,EAC7Bd,EACFhX,EAAOgU,aAAahU,EAAOI,UAAY2X,IAEvC/X,EAAOlW,QAAQP,EAAcyX,KAAKoH,KAAKmP,GAAkB,GAAG,GAAO,GAC/DvD,IACFhU,EAAOgY,gBAAgBC,eAAiBjY,EAAOgY,gBAAgBC,eAAiBF,EAChF/X,EAAOgY,gBAAgBE,iBAAmBlY,EAAOgY,gBAAgBE,iBAAmBH,GAG1F,MACE,GAAI/D,EAAc,CAChB,MAAMmE,EAAQ/M,EAAc+L,EAAqB5rB,OAAS+U,EAAO+H,KAAKC,KAAO6O,EAAqB5rB,OAClGyU,EAAOlW,QAAQkW,EAAOzW,YAAc4uB,EAAO,GAAG,GAAO,GACrDnY,EAAOgY,gBAAgBE,iBAAmBlY,EAAOI,SACnD,OAEG,GAAIgX,EAAoB7rB,OAAS,GAAK8rB,EAC3C,QAA8B,IAAnBtC,EAAgC,CACzC,MAAM+C,EAAwB9X,EAAOmK,WAAW5gB,GAE1CwuB,EADoB/X,EAAOmK,WAAW5gB,EAAciuB,GACzBM,EAC7Bd,EACFhX,EAAOgU,aAAahU,EAAOI,UAAY2X,IAEvC/X,EAAOlW,QAAQP,EAAciuB,EAAgB,GAAG,GAAO,GACnDxD,IACFhU,EAAOgY,gBAAgBC,eAAiBjY,EAAOgY,gBAAgBC,eAAiBF,EAChF/X,EAAOgY,gBAAgBE,iBAAmBlY,EAAOgY,gBAAgBE,iBAAmBH,GAG1F,KAAO,CACL,MAAMI,EAAQ/M,EAAcgM,EAAoB7rB,OAAS+U,EAAO+H,KAAKC,KAAO8O,EAAoB7rB,OAChGyU,EAAOlW,QAAQkW,EAAOzW,YAAc4uB,EAAO,GAAG,GAAO,EACvD,CAKJ,GAFAnY,EAAO+T,eAAiBA,EACxB/T,EAAO8T,eAAiBA,EACpB9T,EAAOoY,YAAcpY,EAAOoY,WAAWC,UAAYtB,EAAc,CACnE,MAAMuB,EAAa,CACjBvD,iBACA1B,YACAW,eACAvB,mBACAsE,cAAc,GAEZpuB,MAAM2L,QAAQ0L,EAAOoY,WAAWC,SAClCrY,EAAOoY,WAAWC,QAAQvvB,SAAQ7C,KAC3BA,EAAE+f,WAAa/f,EAAEqa,OAAO/Z,MAAMN,EAAE6uB,QAAQ,IACxCwD,EACHxuB,QAAS7D,EAAEqa,OAAO7X,gBAAkB6X,EAAO7X,eAAgBqB,GAC3D,IAEKkW,EAAOoY,WAAWC,mBAAmBrY,EAAO5E,aAAe4E,EAAOoY,WAAWC,QAAQ/X,OAAO/Z,MACrGyZ,EAAOoY,WAAWC,QAAQvD,QAAQ,IAC7BwD,EACHxuB,QAASkW,EAAOoY,WAAWC,QAAQ/X,OAAO7X,gBAAkB6X,EAAO7X,eAAgBqB,GAGzF,CACAkW,EAAO8G,KAAK,UACd,EA4BEyR,YA1BF,WACE,MAAMvY,EAASrU,MACT,OACJ2U,EAAM,SACNkJ,GACExJ,EACJ,IAAKM,EAAO/Z,MAAQyZ,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAAS,OACrE/J,EAAO8W,eACP,MAAM0B,EAAiB,GACvBxY,EAAOnX,OAAOC,SAAQ2Y,IACpB,MAAMrJ,OAA4C,IAA7BqJ,EAAQgX,iBAAqF,EAAlDhX,EAAQpW,aAAa,2BAAiCoW,EAAQgX,iBAC9HD,EAAepgB,GAASqJ,CAAO,IAEjCzB,EAAOnX,OAAOC,SAAQ2Y,IACpBA,EAAQsG,gBAAgB,0BAA0B,IAEpDyQ,EAAe1vB,SAAQ2Y,IACrB+H,EAASoN,OAAOnV,EAAQ,IAE1BzB,EAAO8W,eACP9W,EAAOlW,QAAQkW,EAAOxW,UAAW,EACnC,GA6DA,SAASkvB,GAAiB1Y,EAAQ7R,EAAOwqB,GACvC,MAAM7zB,EAASyY,KACT,OACJ+C,GACEN,EACE4Y,EAAqBtY,EAAOsY,mBAC5BC,EAAqBvY,EAAOuY,mBAClC,OAAID,KAAuBD,GAAUE,GAAsBF,GAAU7zB,EAAOg0B,WAAaD,IAC5D,YAAvBD,IACFzqB,EAAMvE,kBACC,EAKb,CACA,SAASmvB,GAAa5qB,GACpB,MAAM6R,EAASrU,KACT3G,EAAWsX,IACjB,IAAIzU,EAAIsG,EACJtG,EAAEmxB,gBAAenxB,EAAIA,EAAEmxB,eAC3B,MAAMjS,EAAO/G,EAAOgY,gBACpB,GAAe,gBAAXnwB,EAAEgD,KAAwB,CAC5B,GAAuB,OAAnBkc,EAAKkS,WAAsBlS,EAAKkS,YAAcpxB,EAAEoxB,UAClD,OAEFlS,EAAKkS,UAAYpxB,EAAEoxB,SACrB,KAAsB,eAAXpxB,EAAEgD,MAAoD,IAA3BhD,EAAEqxB,cAAc3tB,SACpDwb,EAAKoS,QAAUtxB,EAAEqxB,cAAc,GAAGE,YAEpC,GAAe,eAAXvxB,EAAEgD,KAGJ,YADA6tB,GAAiB1Y,EAAQnY,EAAGA,EAAEqxB,cAAc,GAAGG,OAGjD,MAAM,OACJ/Y,EAAM,QACNgZ,EAAO,QACPvP,GACE/J,EACJ,IAAK+J,EAAS,OACd,IAAKzJ,EAAOnW,eAAmC,UAAlBtC,EAAE0xB,YAAyB,OACxD,GAAIvZ,EAAOyT,WAAanT,EAAOoT,+BAC7B,QAEG1T,EAAOyT,WAAanT,EAAO6K,SAAW7K,EAAO/Z,MAChDyZ,EAAO8U,UAET,IAAI0E,EAAW3xB,EAAEzC,OACjB,GAAiC,YAA7Bkb,EAAOmZ,oBD/8Db,SAA0B/vB,EAAIwZ,GAC5B,MAAMwW,EAAUxW,EAAOlb,SAAS0B,GAChC,OAAKgwB,GAAWxW,aAAkBrB,gBACf,IAAIqB,EAAOnB,oBACZ3Q,SAAS1H,GAEpBgwB,CACT,CCy8DSC,CAAiBH,EAAUxZ,EAAOO,WAAY,OAErD,GAAI,UAAW1Y,GAAiB,IAAZA,EAAE+xB,MAAa,OACnC,GAAI,WAAY/xB,GAAKA,EAAEgyB,OAAS,EAAG,OACnC,GAAI9S,EAAK+S,WAAa/S,EAAKgT,QAAS,OAGpC,MAAMC,IAAyB1Z,EAAO2Z,gBAA4C,KAA1B3Z,EAAO2Z,eAEzDC,EAAYryB,EAAEsyB,aAAetyB,EAAEsyB,eAAiBtyB,EAAEgrB,KACpDmH,GAAwBnyB,EAAEzC,QAAUyC,EAAEzC,OAAOsc,YAAcwY,IAC7DV,EAAWU,EAAU,IAEvB,MAAME,EAAoB9Z,EAAO8Z,kBAAoB9Z,EAAO8Z,kBAAoB,IAAI9Z,EAAO2Z,iBACrFI,KAAoBxyB,EAAEzC,SAAUyC,EAAEzC,OAAOsc,YAG/C,GAAIpB,EAAOga,YAAcD,EAlF3B,SAAwBzY,EAAU2Y,GAahC,YAZa,IAATA,IACFA,EAAO5uB,MAET,SAAS6uB,EAAc9wB,GACrB,IAAKA,GAAMA,IAAO4S,KAAiB5S,IAAO6T,IAAa,OAAO,KAC1D7T,EAAG+wB,eAAc/wB,EAAKA,EAAG+wB,cAC7B,MAAMC,EAAQhxB,EAAGoG,QAAQ8R,GACzB,OAAK8Y,GAAUhxB,EAAGixB,YAGXD,GAASF,EAAc9wB,EAAGixB,cAAc1e,MAFtC,IAGX,CACOue,CAAcD,EACvB,CAoE4CK,CAAeR,EAAmBZ,GAAYA,EAAS1pB,QAAQsqB,IAEvG,YADApa,EAAO6a,YAAa,GAGtB,GAAIva,EAAOwa,eACJtB,EAAS1pB,QAAQwQ,EAAOwa,cAAe,OAE9CxB,EAAQyB,SAAWlzB,EAAEwxB,MACrBC,EAAQ0B,SAAWnzB,EAAEozB,MACrB,MAAMtC,EAASW,EAAQyB,SACjBG,EAAS5B,EAAQ0B,SAIvB,IAAKtC,GAAiB1Y,EAAQnY,EAAG8wB,GAC/B,OAEF3mB,OAAOmX,OAAOpC,EAAM,CAClB+S,WAAW,EACXC,SAAS,EACToB,qBAAqB,EACrBC,iBAAa1pB,EACb2pB,iBAAa3pB,IAEf4nB,EAAQX,OAASA,EACjBW,EAAQ4B,OAASA,EACjBnU,EAAKuU,eAAiB1d,IACtBoC,EAAO6a,YAAa,EACpB7a,EAAO8I,aACP9I,EAAOub,oBAAiB7pB,EACpB4O,EAAO0V,UAAY,IAAGjP,EAAKyU,oBAAqB,GACpD,IAAI5xB,GAAiB,EACjB4vB,EAAS1qB,QAAQiY,EAAK0U,qBACxB7xB,GAAiB,EACS,WAAtB4vB,EAAS/d,WACXsL,EAAK+S,WAAY,IAGjB90B,EAASuW,eAAiBvW,EAASuW,cAAczM,QAAQiY,EAAK0U,oBAAsBz2B,EAASuW,gBAAkBie,IAA+B,UAAlB3xB,EAAE0xB,aAA6C,UAAlB1xB,EAAE0xB,cAA4BC,EAAS1qB,QAAQiY,EAAK0U,qBAC/Mz2B,EAASuW,cAAcC,OAEzB,MAAMkgB,EAAuB9xB,GAAkBoW,EAAO2b,gBAAkBrb,EAAOsb,0BAC1Etb,EAAOub,gCAAiCH,GAA0BlC,EAASsC,mBAC9Ej0B,EAAE+B,iBAEA0W,EAAOyb,UAAYzb,EAAOyb,SAAShS,SAAW/J,EAAO+b,UAAY/b,EAAOyT,YAAcnT,EAAO6K,SAC/FnL,EAAO+b,SAAShD,eAElB/Y,EAAO8G,KAAK,aAAcjf,EAC5B,CAEA,SAASm0B,GAAY7tB,GACnB,MAAMnJ,EAAWsX,IACX0D,EAASrU,KACTob,EAAO/G,EAAOgY,iBACd,OACJ1X,EAAM,QACNgZ,EACA5P,aAAcC,EAAG,QACjBI,GACE/J,EACJ,IAAK+J,EAAS,OACd,IAAKzJ,EAAOnW,eAAuC,UAAtBgE,EAAMorB,YAAyB,OAC5D,IAOI0C,EAPAp0B,EAAIsG,EAER,GADItG,EAAEmxB,gBAAenxB,EAAIA,EAAEmxB,eACZ,gBAAXnxB,EAAEgD,KAAwB,CAC5B,GAAqB,OAAjBkc,EAAKoS,QAAkB,OAE3B,GADWtxB,EAAEoxB,YACFlS,EAAKkS,UAAW,MAC7B,CAEA,GAAe,cAAXpxB,EAAEgD,MAEJ,GADAoxB,EAAc,IAAIp0B,EAAEq0B,gBAAgB1jB,QAAOzS,GAAKA,EAAEqzB,aAAerS,EAAKoS,UAAS,IAC1E8C,GAAeA,EAAY7C,aAAerS,EAAKoS,QAAS,YAE7D8C,EAAcp0B,EAEhB,IAAKkf,EAAK+S,UAIR,YAHI/S,EAAKsU,aAAetU,EAAKqU,aAC3Bpb,EAAO8G,KAAK,oBAAqBjf,IAIrC,MAAMwxB,EAAQ4C,EAAY5C,MACpB4B,EAAQgB,EAAYhB,MAC1B,GAAIpzB,EAAEs0B,wBAGJ,OAFA7C,EAAQX,OAASU,OACjBC,EAAQ4B,OAASD,GAGnB,IAAKjb,EAAO2b,eAaV,OAZK9zB,EAAEzC,OAAO0J,QAAQiY,EAAK0U,qBACzBzb,EAAO6a,YAAa,QAElB9T,EAAK+S,YACP9nB,OAAOmX,OAAOmQ,EAAS,CACrBX,OAAQU,EACR6B,OAAQD,EACRF,SAAU1B,EACV2B,SAAUC,IAEZlU,EAAKuU,eAAiB1d,MAI1B,GAAI0C,EAAO8b,sBAAwB9b,EAAO/Z,KACxC,GAAIyZ,EAAOkJ,cAET,GAAI+R,EAAQ3B,EAAQ4B,QAAUlb,EAAOI,WAAaJ,EAAO8P,gBAAkBmL,EAAQ3B,EAAQ4B,QAAUlb,EAAOI,WAAaJ,EAAOkP,eAG9H,OAFAnI,EAAK+S,WAAY,OACjB/S,EAAKgT,SAAU,QAGZ,GAAIV,EAAQC,EAAQX,QAAU3Y,EAAOI,WAAaJ,EAAO8P,gBAAkBuJ,EAAQC,EAAQX,QAAU3Y,EAAOI,WAAaJ,EAAOkP,eACrI,OAMJ,GAHIlqB,EAASuW,eAAiBvW,EAASuW,cAAczM,QAAQiY,EAAK0U,oBAAsBz2B,EAASuW,gBAAkB1T,EAAEzC,QAA4B,UAAlByC,EAAE0xB,aAC/Hv0B,EAASuW,cAAcC,OAErBxW,EAASuW,eACP1T,EAAEzC,SAAWJ,EAASuW,eAAiB1T,EAAEzC,OAAO0J,QAAQiY,EAAK0U,mBAG/D,OAFA1U,EAAKgT,SAAU,OACf/Z,EAAO6a,YAAa,GAIpB9T,EAAKoU,qBACPnb,EAAO8G,KAAK,YAAajf,GAE3ByxB,EAAQ+C,UAAY/C,EAAQyB,SAC5BzB,EAAQgD,UAAYhD,EAAQ0B,SAC5B1B,EAAQyB,SAAW1B,EACnBC,EAAQ0B,SAAWC,EACnB,MAAMsB,EAAQjD,EAAQyB,SAAWzB,EAAQX,OACnC6D,EAAQlD,EAAQ0B,SAAW1B,EAAQ4B,OACzC,GAAIlb,EAAOM,OAAO0V,WAAahV,KAAKyb,KAAKF,GAAS,EAAIC,GAAS,GAAKxc,EAAOM,OAAO0V,UAAW,OAC7F,QAAgC,IAArBjP,EAAKqU,YAA6B,CAC3C,IAAIsB,EACA1c,EAAOiJ,gBAAkBqQ,EAAQ0B,WAAa1B,EAAQ4B,QAAUlb,EAAOkJ,cAAgBoQ,EAAQyB,WAAazB,EAAQX,OACtH5R,EAAKqU,aAAc,EAGfmB,EAAQA,EAAQC,EAAQA,GAAS,KACnCE,EAA4D,IAA/C1b,KAAK2b,MAAM3b,KAAK6C,IAAI2Y,GAAQxb,KAAK6C,IAAI0Y,IAAgBvb,KAAKK,GACvE0F,EAAKqU,YAAcpb,EAAOiJ,eAAiByT,EAAapc,EAAOoc,WAAa,GAAKA,EAAapc,EAAOoc,WAG3G,CASA,GARI3V,EAAKqU,aACPpb,EAAO8G,KAAK,oBAAqBjf,QAEH,IAArBkf,EAAKsU,cACV/B,EAAQyB,WAAazB,EAAQX,QAAUW,EAAQ0B,WAAa1B,EAAQ4B,SACtEnU,EAAKsU,aAAc,IAGnBtU,EAAKqU,aAA0B,cAAXvzB,EAAEgD,MAAwBkc,EAAK6V,gCAErD,YADA7V,EAAK+S,WAAY,GAGnB,IAAK/S,EAAKsU,YACR,OAEFrb,EAAO6a,YAAa,GACfva,EAAO6K,SAAWtjB,EAAEg1B,YACvBh1B,EAAE+B,iBAEA0W,EAAOwc,2BAA6Bxc,EAAOyc,QAC7Cl1B,EAAEuG,kBAEJ,IAAI2pB,EAAO/X,EAAOiJ,eAAiBsT,EAAQC,EACvCQ,EAAchd,EAAOiJ,eAAiBqQ,EAAQyB,SAAWzB,EAAQ+C,UAAY/C,EAAQ0B,SAAW1B,EAAQgD,UACxGhc,EAAO2c,iBACTlF,EAAO/W,KAAK6C,IAAIkU,IAASpO,EAAM,GAAK,GACpCqT,EAAchc,KAAK6C,IAAImZ,IAAgBrT,EAAM,GAAK,IAEpD2P,EAAQvB,KAAOA,EACfA,GAAQzX,EAAO4c,WACXvT,IACFoO,GAAQA,EACRiF,GAAeA,GAEjB,MAAMG,EAAuBnd,EAAOod,iBACpCpd,EAAOub,eAAiBxD,EAAO,EAAI,OAAS,OAC5C/X,EAAOod,iBAAmBJ,EAAc,EAAI,OAAS,OACrD,MAAMK,EAASrd,EAAOM,OAAO/Z,OAAS+Z,EAAO6K,QACvCmS,EAA2C,SAA5Btd,EAAOod,kBAA+Bpd,EAAO8T,gBAA8C,SAA5B9T,EAAOod,kBAA+Bpd,EAAO+T,eACjI,IAAKhN,EAAKgT,QAAS,CAQjB,GAPIsD,GAAUC,GACZtd,EAAO8U,QAAQ,CACbzB,UAAWrT,EAAOub,iBAGtBxU,EAAKkR,eAAiBjY,EAAOnC,eAC7BmC,EAAOmO,cAAc,GACjBnO,EAAOyT,UAAW,CACpB,MAAM8J,EAAM,IAAIz4B,OAAOgY,YAAY,gBAAiB,CAClD0gB,SAAS,EACTX,YAAY,EACZY,OAAQ,CACNC,mBAAmB,KAGvB1d,EAAOO,UAAUod,cAAcJ,EACjC,CACAxW,EAAK6W,qBAAsB,GAEvBtd,EAAOud,aAAyC,IAA1B7d,EAAO8T,iBAAqD,IAA1B9T,EAAO+T,gBACjE/T,EAAO8d,eAAc,GAEvB9d,EAAO8G,KAAK,kBAAmBjf,EACjC,CAGA,IADA,IAAIqV,MAAO4D,UACPiG,EAAKgT,SAAWhT,EAAKyU,oBAAsB2B,IAAyBnd,EAAOod,kBAAoBC,GAAUC,GAAgBtc,KAAK6C,IAAIkU,IAAS,EAU7I,OATA/lB,OAAOmX,OAAOmQ,EAAS,CACrBX,OAAQU,EACR6B,OAAQD,EACRF,SAAU1B,EACV2B,SAAUC,EACVhD,eAAgBlR,EAAKmR,mBAEvBnR,EAAKgX,eAAgB,OACrBhX,EAAKkR,eAAiBlR,EAAKmR,kBAG7BlY,EAAO8G,KAAK,aAAcjf,GAC1Bkf,EAAKgT,SAAU,EACfhT,EAAKmR,iBAAmBH,EAAOhR,EAAKkR,eACpC,IAAI+F,GAAsB,EACtBC,EAAkB3d,EAAO2d,gBAiD7B,GAhDI3d,EAAO8b,sBACT6B,EAAkB,GAEhBlG,EAAO,GACLsF,GAAUC,GAA8BvW,EAAKyU,oBAAsBzU,EAAKmR,kBAAoB5X,EAAO4K,eAAiBlL,EAAOkP,eAAiBlP,EAAOoK,gBAAgBpK,EAAOzW,YAAc,IAA+B,SAAzB+W,EAAO7X,eAA4BuX,EAAOnX,OAAO0C,OAAS+U,EAAO7X,eAAiB,EAAIuX,EAAOoK,gBAAgBpK,EAAOzW,YAAc,GAAKyW,EAAOM,OAAOvV,aAAe,GAAKiV,EAAOM,OAAOvV,aAAeiV,EAAOkP,iBAC7YlP,EAAO8U,QAAQ,CACbzB,UAAW,OACXW,cAAc,EACdvB,iBAAkB,IAGlB1L,EAAKmR,iBAAmBlY,EAAOkP,iBACjC8O,GAAsB,EAClB1d,EAAO4d,aACTnX,EAAKmR,iBAAmBlY,EAAOkP,eAAiB,IAAMlP,EAAOkP,eAAiBnI,EAAKkR,eAAiBF,IAASkG,KAGxGlG,EAAO,IACZsF,GAAUC,GAA8BvW,EAAKyU,oBAAsBzU,EAAKmR,kBAAoB5X,EAAO4K,eAAiBlL,EAAO8P,eAAiB9P,EAAOoK,gBAAgBpK,EAAOoK,gBAAgB7e,OAAS,GAAKyU,EAAOM,OAAOvV,cAAyC,SAAzBuV,EAAO7X,eAA4BuX,EAAOnX,OAAO0C,OAAS+U,EAAO7X,eAAiB,EAAIuX,EAAOoK,gBAAgBpK,EAAOoK,gBAAgB7e,OAAS,GAAKyU,EAAOM,OAAOvV,aAAe,GAAKiV,EAAO8P,iBACna9P,EAAO8U,QAAQ,CACbzB,UAAW,OACXW,cAAc,EACdvB,iBAAkBzS,EAAOnX,OAAO0C,QAAmC,SAAzB+U,EAAO7X,cAA2BuX,EAAOmI,uBAAyBnH,KAAKoH,KAAKxJ,WAAW0B,EAAO7X,cAAe,QAGvJse,EAAKmR,iBAAmBlY,EAAO8P,iBACjCkO,GAAsB,EAClB1d,EAAO4d,aACTnX,EAAKmR,iBAAmBlY,EAAO8P,eAAiB,GAAK9P,EAAO8P,eAAiB/I,EAAKkR,eAAiBF,IAASkG,KAI9GD,IACFn2B,EAAEs0B,yBAA0B,IAIzBnc,EAAO8T,gBAA4C,SAA1B9T,EAAOub,gBAA6BxU,EAAKmR,iBAAmBnR,EAAKkR,iBAC7FlR,EAAKmR,iBAAmBnR,EAAKkR,iBAE1BjY,EAAO+T,gBAA4C,SAA1B/T,EAAOub,gBAA6BxU,EAAKmR,iBAAmBnR,EAAKkR,iBAC7FlR,EAAKmR,iBAAmBnR,EAAKkR,gBAE1BjY,EAAO+T,gBAAmB/T,EAAO8T,iBACpC/M,EAAKmR,iBAAmBnR,EAAKkR,gBAI3B3X,EAAO0V,UAAY,EAAG,CACxB,KAAIhV,KAAK6C,IAAIkU,GAAQzX,EAAO0V,WAAajP,EAAKyU,oBAW5C,YADAzU,EAAKmR,iBAAmBnR,EAAKkR,gBAT7B,IAAKlR,EAAKyU,mBAMR,OALAzU,EAAKyU,oBAAqB,EAC1BlC,EAAQX,OAASW,EAAQyB,SACzBzB,EAAQ4B,OAAS5B,EAAQ0B,SACzBjU,EAAKmR,iBAAmBnR,EAAKkR,oBAC7BqB,EAAQvB,KAAO/X,EAAOiJ,eAAiBqQ,EAAQyB,SAAWzB,EAAQX,OAASW,EAAQ0B,SAAW1B,EAAQ4B,OAO5G,CACK5a,EAAO6d,eAAgB7d,EAAO6K,WAG/B7K,EAAOyb,UAAYzb,EAAOyb,SAAShS,SAAW/J,EAAO+b,UAAYzb,EAAOoN,uBAC1E1N,EAAO8R,oBACP9R,EAAO6Q,uBAELvQ,EAAOyb,UAAYzb,EAAOyb,SAAShS,SAAW/J,EAAO+b,UACvD/b,EAAO+b,SAASC,cAGlBhc,EAAO2P,eAAe5I,EAAKmR,kBAE3BlY,EAAOgU,aAAajN,EAAKmR,kBAC3B,CAEA,SAASkG,GAAWjwB,GAClB,MAAM6R,EAASrU,KACTob,EAAO/G,EAAOgY,gBACpB,IAEIiE,EAFAp0B,EAAIsG,EAIR,GAHItG,EAAEmxB,gBAAenxB,EAAIA,EAAEmxB,eAEK,aAAXnxB,EAAEgD,MAAkC,gBAAXhD,EAAEgD,MAO9C,GADAoxB,EAAc,IAAIp0B,EAAEq0B,gBAAgB1jB,QAAOzS,GAAKA,EAAEqzB,aAAerS,EAAKoS,UAAS,IAC1E8C,GAAeA,EAAY7C,aAAerS,EAAKoS,QAAS,WAN5C,CACjB,GAAqB,OAAjBpS,EAAKoS,QAAkB,OAC3B,GAAItxB,EAAEoxB,YAAclS,EAAKkS,UAAW,OACpCgD,EAAcp0B,CAChB,CAIA,GAAI,CAAC,gBAAiB,aAAc,eAAgB,eAAeuJ,SAASvJ,EAAEgD,SAC5D,CAAC,gBAAiB,eAAeuG,SAASvJ,EAAEgD,QAAUmV,EAAO8D,QAAQua,WAAYre,EAAO8D,QAAQwa,WAE9G,OAGJvX,EAAKkS,UAAY,KACjBlS,EAAKoS,QAAU,KACf,MAAM,OACJ7Y,EAAM,QACNgZ,EACA5P,aAAcC,EAAG,WACjBQ,EAAU,QACVJ,GACE/J,EACJ,IAAK+J,EAAS,OACd,IAAKzJ,EAAOnW,eAAmC,UAAlBtC,EAAE0xB,YAAyB,OAKxD,GAJIxS,EAAKoU,qBACPnb,EAAO8G,KAAK,WAAYjf,GAE1Bkf,EAAKoU,qBAAsB,GACtBpU,EAAK+S,UAMR,OALI/S,EAAKgT,SAAWzZ,EAAOud,YACzB7d,EAAO8d,eAAc,GAEvB/W,EAAKgT,SAAU,OACfhT,EAAKsU,aAAc,GAKjB/a,EAAOud,YAAc9W,EAAKgT,SAAWhT,EAAK+S,aAAwC,IAA1B9Z,EAAO8T,iBAAqD,IAA1B9T,EAAO+T,iBACnG/T,EAAO8d,eAAc,GAIvB,MAAMS,EAAe3gB,IACf4gB,EAAWD,EAAexX,EAAKuU,eAGrC,GAAItb,EAAO6a,WAAY,CACrB,MAAM4D,EAAW52B,EAAEgrB,MAAQhrB,EAAEsyB,cAAgBtyB,EAAEsyB,eAC/Cna,EAAO4S,mBAAmB6L,GAAYA,EAAS,IAAM52B,EAAEzC,OAAQq5B,GAC/Dze,EAAO8G,KAAK,YAAajf,GACrB22B,EAAW,KAAOD,EAAexX,EAAK2X,cAAgB,KACxD1e,EAAO8G,KAAK,wBAAyBjf,EAEzC,CAKA,GAJAkf,EAAK2X,cAAgB9gB,IACrBD,GAAS,KACFqC,EAAOgG,YAAWhG,EAAO6a,YAAa,EAAI,KAE5C9T,EAAK+S,YAAc/S,EAAKgT,UAAY/Z,EAAOub,gBAAmC,IAAjBjC,EAAQvB,OAAehR,EAAKgX,eAAiBhX,EAAKmR,mBAAqBnR,EAAKkR,iBAAmBlR,EAAKgX,cAIpK,OAHAhX,EAAK+S,WAAY,EACjB/S,EAAKgT,SAAU,OACfhT,EAAKsU,aAAc,GAMrB,IAAIsD,EAMJ,GATA5X,EAAK+S,WAAY,EACjB/S,EAAKgT,SAAU,EACfhT,EAAKsU,aAAc,EAGjBsD,EADEre,EAAO6d,aACIxU,EAAM3J,EAAOI,WAAaJ,EAAOI,WAEhC2G,EAAKmR,iBAEjB5X,EAAO6K,QACT,OAEF,GAAI7K,EAAOyb,UAAYzb,EAAOyb,SAAShS,QAIrC,YAHA/J,EAAO+b,SAASqC,WAAW,CACzBO,eAMJ,MAAMC,EAAcD,IAAe3e,EAAO8P,iBAAmB9P,EAAOM,OAAO/Z,KAC3E,IAAIs4B,EAAY,EACZjS,EAAY5M,EAAOoK,gBAAgB,GACvC,IAAK,IAAIzW,EAAI,EAAGA,EAAIwW,EAAW5e,OAAQoI,GAAKA,EAAI2M,EAAO8L,mBAAqB,EAAI9L,EAAO6L,eAAgB,CACrG,MAAMgJ,EAAYxhB,EAAI2M,EAAO8L,mBAAqB,EAAI,EAAI9L,EAAO6L,oBACxB,IAA9BhC,EAAWxW,EAAIwhB,IACpByJ,GAAeD,GAAcxU,EAAWxW,IAAMgrB,EAAaxU,EAAWxW,EAAIwhB,MAC5E0J,EAAYlrB,EACZiZ,EAAYzC,EAAWxW,EAAIwhB,GAAahL,EAAWxW,KAE5CirB,GAAeD,GAAcxU,EAAWxW,MACjDkrB,EAAYlrB,EACZiZ,EAAYzC,EAAWA,EAAW5e,OAAS,GAAK4e,EAAWA,EAAW5e,OAAS,GAEnF,CACA,IAAIuzB,EAAmB,KACnBC,EAAkB,KAClBze,EAAOsI,SACL5I,EAAO+P,YACTgP,EAAkBze,EAAOwJ,SAAWxJ,EAAOwJ,QAAQC,SAAW/J,EAAO8J,QAAU9J,EAAO8J,QAAQjhB,OAAO0C,OAAS,EAAIyU,EAAOnX,OAAO0C,OAAS,EAChIyU,EAAOgQ,QAChB8O,EAAmB,IAIvB,MAAME,GAASL,EAAaxU,EAAW0U,IAAcjS,EAC/CuI,EAAY0J,EAAYve,EAAO8L,mBAAqB,EAAI,EAAI9L,EAAO6L,eACzE,GAAIqS,EAAWle,EAAO2e,aAAc,CAElC,IAAK3e,EAAO4e,WAEV,YADAlf,EAAOlW,QAAQkW,EAAOzW,aAGM,SAA1ByW,EAAOub,iBACLyD,GAAS1e,EAAO6e,gBAAiBnf,EAAOlW,QAAQwW,EAAOsI,QAAU5I,EAAOgQ,MAAQ8O,EAAmBD,EAAY1J,GAAgBnV,EAAOlW,QAAQ+0B,IAEtH,SAA1B7e,EAAOub,iBACLyD,EAAQ,EAAI1e,EAAO6e,gBACrBnf,EAAOlW,QAAQ+0B,EAAY1J,GACE,OAApB4J,GAA4BC,EAAQ,GAAKhe,KAAK6C,IAAImb,GAAS1e,EAAO6e,gBAC3Enf,EAAOlW,QAAQi1B,GAEf/e,EAAOlW,QAAQ+0B,GAGrB,KAAO,CAEL,IAAKve,EAAO8e,YAEV,YADApf,EAAOlW,QAAQkW,EAAOzW,cAGEyW,EAAO5V,YAAevC,EAAEzC,SAAW4a,EAAO5V,WAAWI,QAAU3C,EAAEzC,SAAW4a,EAAO5V,WAAWK,QAExF,SAA1BuV,EAAOub,gBACTvb,EAAOlW,QAA6B,OAArBg1B,EAA4BA,EAAmBD,EAAY1J,GAE9C,SAA1BnV,EAAOub,gBACTvb,EAAOlW,QAA4B,OAApBi1B,EAA2BA,EAAkBF,IAErDh3B,EAAEzC,SAAW4a,EAAO5V,WAAWI,OACxCwV,EAAOlW,QAAQ+0B,EAAY1J,GAE3BnV,EAAOlW,QAAQ+0B,EAEnB,CACF,CAEA,SAASQ,KACP,MAAMrf,EAASrU,MACT,OACJ2U,EAAM,GACN5W,GACEsW,EACJ,GAAItW,GAAyB,IAAnBA,EAAG+Z,YAAmB,OAG5BnD,EAAOxV,aACTkV,EAAOsf,gBAIT,MAAM,eACJxL,EAAc,eACdC,EAAc,SACd7J,GACElK,EACE6J,EAAY7J,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAG1D/J,EAAO8T,gBAAiB,EACxB9T,EAAO+T,gBAAiB,EACxB/T,EAAO8I,aACP9I,EAAOoJ,eACPpJ,EAAO6Q,sBACP,MAAM0O,EAAgB1V,GAAavJ,EAAO/Z,OACZ,SAAzB+Z,EAAO7X,eAA4B6X,EAAO7X,cAAgB,KAAMuX,EAAOgQ,OAAUhQ,EAAO+P,aAAgB/P,EAAOM,OAAO4K,gBAAmBqU,EAGxIvf,EAAOM,OAAO/Z,OAASsjB,EACzB7J,EAAOyU,YAAYzU,EAAOxW,UAAW,GAAG,GAAO,GAE/CwW,EAAOlW,QAAQkW,EAAOzW,YAAa,GAAG,GAAO,GAL/CyW,EAAOlW,QAAQkW,EAAOnX,OAAO0C,OAAS,EAAG,GAAG,GAAO,GAQjDyU,EAAOzX,UAAYyX,EAAOzX,SAASi3B,SAAWxf,EAAOzX,SAASk3B,SAChEriB,aAAa4C,EAAOzX,SAASm3B,eAC7B1f,EAAOzX,SAASm3B,cAAgB7xB,YAAW,KACrCmS,EAAOzX,UAAYyX,EAAOzX,SAASi3B,SAAWxf,EAAOzX,SAASk3B,QAChEzf,EAAOzX,SAASo3B,QAClB,GACC,MAGL3f,EAAO+T,eAAiBA,EACxB/T,EAAO8T,eAAiBA,EACpB9T,EAAOM,OAAOkN,eAAiBtD,IAAalK,EAAOkK,UACrDlK,EAAOyN,eAEX,CAEA,SAASmS,GAAQ/3B,GACf,MAAMmY,EAASrU,KACVqU,EAAO+J,UACP/J,EAAO6a,aACN7a,EAAOM,OAAOuf,eAAeh4B,EAAE+B,iBAC/BoW,EAAOM,OAAOwf,0BAA4B9f,EAAOyT,YACnD5rB,EAAEuG,kBACFvG,EAAEk4B,6BAGR,CAEA,SAASC,KACP,MAAMhgB,EAASrU,MACT,UACJ4U,EAAS,aACTmJ,EAAY,QACZK,GACE/J,EACJ,IAAK+J,EAAS,OAWd,IAAIkW,EAVJjgB,EAAOkgB,kBAAoBlgB,EAAOI,UAC9BJ,EAAOiJ,eACTjJ,EAAOI,WAAaG,EAAUmC,WAE9B1C,EAAOI,WAAaG,EAAUrb,UAGP,IAArB8a,EAAOI,YAAiBJ,EAAOI,UAAY,GAC/CJ,EAAO8R,oBACP9R,EAAO6Q,sBAEP,MAAMhB,EAAiB7P,EAAO8P,eAAiB9P,EAAOkP,eAEpD+Q,EADqB,IAAnBpQ,EACY,GAEC7P,EAAOI,UAAYJ,EAAOkP,gBAAkBW,EAEzDoQ,IAAgBjgB,EAAOe,UACzBf,EAAO2P,eAAejG,GAAgB1J,EAAOI,UAAYJ,EAAOI,WAElEJ,EAAO8G,KAAK,eAAgB9G,EAAOI,WAAW,EAChD,CAEA,SAAS+f,GAAOt4B,GACd,MAAMmY,EAASrU,KACf6b,GAAqBxH,EAAQnY,EAAEzC,QAC3B4a,EAAOM,OAAO6K,SAA2C,SAAhCnL,EAAOM,OAAO7X,gBAA6BuX,EAAOM,OAAOsQ,YAGtF5Q,EAAO6I,QACT,CAEA,SAASuX,KACP,MAAMpgB,EAASrU,KACXqU,EAAOqgB,gCACXrgB,EAAOqgB,+BAAgC,EACnCrgB,EAAOM,OAAO8b,sBAChBpc,EAAOtW,GAAGuC,MAAMq0B,YAAc,QAElC,CAEA,MAAM3a,GAAS,CAAC3F,EAAQiG,KACtB,MAAMjhB,EAAWsX,KACX,OACJgE,EAAM,GACN5W,EAAE,UACF6W,EAAS,OACTqE,GACE5E,EACEugB,IAAYjgB,EAAOyc,OACnByD,EAAuB,OAAXva,EAAkB,mBAAqB,sBACnDwa,EAAexa,EAChBvc,GAAoB,iBAAPA,IAGlB1E,EAASw7B,GAAW,aAAcxgB,EAAOogB,qBAAsB,CAC7DM,SAAS,EACTH,YAEF72B,EAAG82B,GAAW,aAAcxgB,EAAO+Y,aAAc,CAC/C2H,SAAS,IAEXh3B,EAAG82B,GAAW,cAAexgB,EAAO+Y,aAAc,CAChD2H,SAAS,IAEX17B,EAASw7B,GAAW,YAAaxgB,EAAOgc,YAAa,CACnD0E,SAAS,EACTH,YAEFv7B,EAASw7B,GAAW,cAAexgB,EAAOgc,YAAa,CACrD0E,SAAS,EACTH,YAEFv7B,EAASw7B,GAAW,WAAYxgB,EAAOoe,WAAY,CACjDsC,SAAS,IAEX17B,EAASw7B,GAAW,YAAaxgB,EAAOoe,WAAY,CAClDsC,SAAS,IAEX17B,EAASw7B,GAAW,gBAAiBxgB,EAAOoe,WAAY,CACtDsC,SAAS,IAEX17B,EAASw7B,GAAW,cAAexgB,EAAOoe,WAAY,CACpDsC,SAAS,IAEX17B,EAASw7B,GAAW,aAAcxgB,EAAOoe,WAAY,CACnDsC,SAAS,IAEX17B,EAASw7B,GAAW,eAAgBxgB,EAAOoe,WAAY,CACrDsC,SAAS,IAEX17B,EAASw7B,GAAW,cAAexgB,EAAOoe,WAAY,CACpDsC,SAAS,KAIPpgB,EAAOuf,eAAiBvf,EAAOwf,2BACjCp2B,EAAG82B,GAAW,QAASxgB,EAAO4f,SAAS,GAErCtf,EAAO6K,SACT5K,EAAUigB,GAAW,SAAUxgB,EAAOggB,UAIpC1f,EAAOqgB,qBACT3gB,EAAOygB,GAAc7b,EAAOC,KAAOD,EAAOE,QAAU,0CAA4C,wBAAyBua,IAAU,GAEnIrf,EAAOygB,GAAc,iBAAkBpB,IAAU,GAInD31B,EAAG82B,GAAW,OAAQxgB,EAAOmgB,OAAQ,CACnCI,SAAS,IACT,EA2BEK,GAAgB,CAAC5gB,EAAQM,IACtBN,EAAOqI,MAAQ/H,EAAO+H,MAAQ/H,EAAO+H,KAAKC,KAAO,EAmO1D,IAIIuY,GAAW,CACbp5B,MAAM,EACN4rB,UAAW,aACX4J,gBAAgB,EAChB6D,sBAAuB,mBACvBrH,kBAAmB,UACnBnF,aAAc,EACdhsB,MAAO,IACP6iB,SAAS,EACTwV,sBAAsB,EACtBI,gBAAgB,EAChBhE,QAAQ,EACRiE,gBAAgB,EAChBC,aAAc,SACdlX,SAAS,EACT0R,kBAAmB,wDAEnBzW,MAAO,KACPE,OAAQ,KAERwO,gCAAgC,EAEhChX,UAAW,KACXhE,IAAK,KAELkgB,oBAAoB,EACpBC,mBAAoB,GAEpBjI,YAAY,EAEZvE,gBAAgB,EAEhB6U,kBAAkB,EAElB74B,OAAQ,QAIRyC,iBAAa4G,EACbyvB,gBAAiB,SAEjBp2B,aAAc,EACdtC,cAAe,EACf0jB,eAAgB,EAChBC,mBAAoB,EACpB8I,oBAAoB,EACpBhK,gBAAgB,EAChB2B,sBAAsB,EACtBvC,mBAAoB,EAEpBE,kBAAmB,EAEnB6H,qBAAqB,EACrBnF,0BAA0B,EAE1BM,eAAe,EAEf3B,cAAc,EAEdqR,WAAY,EACZR,WAAY,GACZvyB,eAAe,EACfi1B,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBF,aAAc,IACdd,cAAc,EACdxC,gBAAgB,EAChB3F,UAAW,EACX8G,0BAA0B,EAC1BlB,0BAA0B,EAC1BC,+BAA+B,EAC/BO,qBAAqB,EAErBgF,mBAAmB,EAEnBlD,YAAY,EACZD,gBAAiB,IAEjBvQ,qBAAqB,EAErBmQ,YAAY,EAEZgC,eAAe,EACfC,0BAA0B,EAC1B5M,qBAAqB,EAErB3sB,MAAM,EACNswB,oBAAoB,EACpBI,qBAAsB,EACtB7B,qBAAqB,EAErBxM,QAAQ,EAERmL,gBAAgB,EAChBD,gBAAgB,EAChBgH,aAAc,KAEdR,WAAW,EACXL,eAAgB,oBAChBG,kBAAmB,KAEnBiH,kBAAkB,EAClBtT,wBAAyB,GAEzBF,uBAAwB,UAExBlG,WAAY,eACZgP,gBAAiB,qBACjBjF,iBAAkB,sBAClBlC,kBAAmB,uBACnBC,uBAAwB,6BACxBkC,eAAgB,oBAChBC,eAAgB,oBAChB0P,aAAc,iBACdzZ,mBAAoB,wBACpBK,oBAAqB,EAErByK,oBAAoB,EAEpB4O,cAAc,GAGhB,SAASC,GAAmBlhB,EAAQmhB,GAClC,OAAO,SAAsBrvB,QACf,IAARA,IACFA,EAAM,CAAC,GAET,MAAMsvB,EAAkB1vB,OAAO2D,KAAKvD,GAAK,GACnCuvB,EAAevvB,EAAIsvB,GACG,iBAAjBC,GAA8C,OAAjBA,IAIR,IAA5BrhB,EAAOohB,KACTphB,EAAOohB,GAAmB,CACxB3X,SAAS,IAGW,eAApB2X,GAAoCphB,EAAOohB,IAAoBphB,EAAOohB,GAAiB3X,UAAYzJ,EAAOohB,GAAiBj3B,SAAW6V,EAAOohB,GAAiBl3B,SAChK8V,EAAOohB,GAAiBE,MAAO,GAE7B,CAAC,aAAc,aAAa3tB,QAAQytB,IAAoB,GAAKphB,EAAOohB,IAAoBphB,EAAOohB,GAAiB3X,UAAYzJ,EAAOohB,GAAiBh4B,KACtJ4W,EAAOohB,GAAiBE,MAAO,GAE3BF,KAAmBphB,GAAU,YAAaqhB,GAIT,iBAA5BrhB,EAAOohB,IAAmC,YAAaphB,EAAOohB,KACvEphB,EAAOohB,GAAiB3X,SAAU,GAE/BzJ,EAAOohB,KAAkBphB,EAAOohB,GAAmB,CACtD3X,SAAS,IAEX,EAAO0X,EAAkBrvB,IATvB,EAAOqvB,EAAkBrvB,IAfzB,EAAOqvB,EAAkBrvB,EAyB7B,CACF,CAGA,MAAMyvB,GAAa,CACjBnc,iBACAmD,UACAzI,UA59Dc,CACdvC,aAlKF,SAA4BC,QACb,IAATA,IACFA,EAAOnS,KAAKsd,eAAiB,IAAM,KAErC,MACM,OACJ3I,EACAoJ,aAAcC,EAAG,UACjBvJ,EAAS,UACTG,GALa5U,KAOf,GAAI2U,EAAO4gB,iBACT,OAAOvX,GAAOvJ,EAAYA,EAE5B,GAAIE,EAAO6K,QACT,OAAO/K,EAET,IAAI8X,EAAmBra,EAAa0C,EAAWzC,GAG/C,OAFAoa,GAdevsB,KAcYijB,wBACvBjF,IAAKuO,GAAoBA,GACtBA,GAAoB,CAC7B,EA8IElE,aA5IF,SAAsB5T,EAAW2W,GAC/B,MAAM/W,EAASrU,MAEb+d,aAAcC,EAAG,OACjBrJ,EAAM,UACNC,EAAS,SACTQ,GACEf,EACJ,IA0BIigB,EA1BAlrB,EAAI,EACJ+sB,EAAI,EAEJ9hB,EAAOiJ,eACTlU,EAAI4U,GAAOvJ,EAAYA,EAEvB0hB,EAAI1hB,EAEFE,EAAOuL,eACT9W,EAAIiM,KAAKiL,MAAMlX,GACf+sB,EAAI9gB,KAAKiL,MAAM6V,IAEjB9hB,EAAOkgB,kBAAoBlgB,EAAOI,UAClCJ,EAAOI,UAAYJ,EAAOiJ,eAAiBlU,EAAI+sB,EAC3CxhB,EAAO6K,QACT5K,EAAUP,EAAOiJ,eAAiB,aAAe,aAAejJ,EAAOiJ,gBAAkBlU,GAAK+sB,EACpFxhB,EAAO4gB,mBACblhB,EAAOiJ,eACTlU,GAAKiL,EAAO4O,wBAEZkT,GAAK9hB,EAAO4O,wBAEdrO,EAAUtU,MAAMoS,UAAY,eAAetJ,QAAQ+sB,aAKrD,MAAMjS,EAAiB7P,EAAO8P,eAAiB9P,EAAOkP,eAEpD+Q,EADqB,IAAnBpQ,EACY,GAECzP,EAAYJ,EAAOkP,gBAAkBW,EAElDoQ,IAAgBlf,GAClBf,EAAO2P,eAAevP,GAExBJ,EAAO8G,KAAK,eAAgB9G,EAAOI,UAAW2W,EAChD,EAgGE7H,aA9FF,WACE,OAAQvjB,KAAKue,SAAS,EACxB,EA6FE4F,aA3FF,WACE,OAAQnkB,KAAKue,SAASve,KAAKue,SAAS3e,OAAS,EAC/C,EA0FEw2B,YAxFF,SAAqB3hB,EAAW9X,EAAO8qB,EAAc4O,EAAiBzO,QAClD,IAAdnT,IACFA,EAAY,QAEA,IAAV9X,IACFA,EAAQqD,KAAK2U,OAAOhY,YAED,IAAjB8qB,IACFA,GAAe,QAEO,IAApB4O,IACFA,GAAkB,GAEpB,MAAMhiB,EAASrU,MACT,OACJ2U,EAAM,UACNC,GACEP,EACJ,GAAIA,EAAOyT,WAAanT,EAAOoT,+BAC7B,OAAO,EAET,MAAMxE,EAAelP,EAAOkP,eACtBY,EAAe9P,EAAO8P,eAC5B,IAAImS,EAKJ,GAJiDA,EAA7CD,GAAmB5hB,EAAY8O,EAA6BA,EAAsB8S,GAAmB5hB,EAAY0P,EAA6BA,EAAiC1P,EAGnLJ,EAAO2P,eAAesS,GAClB3hB,EAAO6K,QAAS,CAClB,MAAMgJ,EAAMnU,EAAOiJ,eACnB,GAAc,IAAV3gB,EACFiY,EAAU4T,EAAM,aAAe,cAAgB8N,MAC1C,CACL,IAAKjiB,EAAOgE,QAAQG,aAMlB,OALArE,EAAqB,CACnBE,SACAC,gBAAiBgiB,EACjB/hB,KAAMiU,EAAM,OAAS,SAEhB,EAET5T,EAAU9Z,SAAS,CACjB,CAAC0tB,EAAM,OAAS,QAAS8N,EACzB1N,SAAU,UAEd,CACA,OAAO,CACT,CAiCA,OAhCc,IAAVjsB,GACF0X,EAAOmO,cAAc,GACrBnO,EAAOgU,aAAaiO,GAChB7O,IACFpT,EAAO8G,KAAK,wBAAyBxe,EAAOirB,GAC5CvT,EAAO8G,KAAK,oBAGd9G,EAAOmO,cAAc7lB,GACrB0X,EAAOgU,aAAaiO,GAChB7O,IACFpT,EAAO8G,KAAK,wBAAyBxe,EAAOirB,GAC5CvT,EAAO8G,KAAK,oBAET9G,EAAOyT,YACVzT,EAAOyT,WAAY,EACdzT,EAAOkiB,oCACVliB,EAAOkiB,kCAAoC,SAAuBr6B,GAC3DmY,IAAUA,EAAOgG,WAClBne,EAAEzC,SAAWuG,OACjBqU,EAAOO,UAAU3S,oBAAoB,gBAAiBoS,EAAOkiB,mCAC7DliB,EAAOkiB,kCAAoC,YACpCliB,EAAOkiB,kCACdliB,EAAOyT,WAAY,EACfL,GACFpT,EAAO8G,KAAK,iBAEhB,GAEF9G,EAAOO,UAAU5Z,iBAAiB,gBAAiBqZ,EAAOkiB,sCAGvD,CACT,GA+9DEC,WAv4De,CACfhU,cA/EF,SAAuBxoB,EAAUoxB,GAC/B,MAAM/W,EAASrU,KACVqU,EAAOM,OAAO6K,UACjBnL,EAAOO,UAAUtU,MAAMm2B,mBAAqB,GAAGz8B,MAC/Cqa,EAAOO,UAAUtU,MAAMo2B,gBAA+B,IAAb18B,EAAiB,MAAQ,IAEpEqa,EAAO8G,KAAK,gBAAiBnhB,EAAUoxB,EACzC,EAyEE9C,gBAzCF,SAAyBb,EAAcC,QAChB,IAAjBD,IACFA,GAAe,GAEjB,MAAMpT,EAASrU,MACT,OACJ2U,GACEN,EACAM,EAAO6K,UACP7K,EAAOsQ,YACT5Q,EAAOgO,mBAETmF,GAAe,CACbnT,SACAoT,eACAC,YACAC,KAAM,UAEV,EAwBEY,cAtBF,SAAuBd,EAAcC,QACd,IAAjBD,IACFA,GAAe,GAEjB,MAAMpT,EAASrU,MACT,OACJ2U,GACEN,EACJA,EAAOyT,WAAY,EACfnT,EAAO6K,UACXnL,EAAOmO,cAAc,GACrBgF,GAAe,CACbnT,SACAoT,eACAC,YACAC,KAAM,QAEV,GA04DEvqB,SACAxC,QACAs3B,WAnpCe,CACfC,cAjCF,SAAuBwE,GACrB,MAAMtiB,EAASrU,KACf,IAAKqU,EAAOM,OAAOnW,eAAiB6V,EAAOM,OAAOkN,eAAiBxN,EAAOuiB,UAAYviB,EAAOM,OAAO6K,QAAS,OAC7G,MAAMzhB,EAAyC,cAApCsW,EAAOM,OAAOmZ,kBAAoCzZ,EAAOtW,GAAKsW,EAAOO,UAC5EP,EAAO0H,YACT1H,EAAO2X,qBAAsB,GAE/BjuB,EAAGuC,MAAMu2B,OAAS,OAClB94B,EAAGuC,MAAMu2B,OAASF,EAAS,WAAa,OACpCtiB,EAAO0H,WACThhB,uBAAsB,KACpBsZ,EAAO2X,qBAAsB,CAAK,GAGxC,EAoBE8K,gBAlBF,WACE,MAAMziB,EAASrU,KACXqU,EAAOM,OAAOkN,eAAiBxN,EAAOuiB,UAAYviB,EAAOM,OAAO6K,UAGhEnL,EAAO0H,YACT1H,EAAO2X,qBAAsB,GAE/B3X,EAA2C,cAApCA,EAAOM,OAAOmZ,kBAAoC,KAAO,aAAaxtB,MAAMu2B,OAAS,GACxFxiB,EAAO0H,WACThhB,uBAAsB,KACpBsZ,EAAO2X,qBAAsB,CAAK,IAGxC,GAspCEhS,OArZa,CACb+c,aArBF,WACE,MAAM1iB,EAASrU,MACT,OACJ2U,GACEN,EACJA,EAAO+Y,aAAeA,GAAa4J,KAAK3iB,GACxCA,EAAOgc,YAAcA,GAAY2G,KAAK3iB,GACtCA,EAAOoe,WAAaA,GAAWuE,KAAK3iB,GACpCA,EAAOogB,qBAAuBA,GAAqBuC,KAAK3iB,GACpDM,EAAO6K,UACTnL,EAAOggB,SAAWA,GAAS2C,KAAK3iB,IAElCA,EAAO4f,QAAUA,GAAQ+C,KAAK3iB,GAC9BA,EAAOmgB,OAASA,GAAOwC,KAAK3iB,GAC5B2F,GAAO3F,EAAQ,KACjB,EAOE4iB,aANF,WAEEjd,GADeha,KACA,MACjB,GAuZEb,YAlRgB,CAChBw0B,cA7HF,WACE,MAAMtf,EAASrU,MACT,UACJnC,EAAS,YACTkpB,EAAW,OACXpS,EAAM,GACN5W,GACEsW,EACElV,EAAcwV,EAAOxV,YAC3B,IAAKA,GAAeA,GAAmD,IAApCkH,OAAO2D,KAAK7K,GAAaS,OAAc,OAG1E,MAAMs3B,EAAa7iB,EAAO8iB,cAAch4B,EAAakV,EAAOM,OAAO6gB,gBAAiBnhB,EAAOtW,IAC3F,IAAKm5B,GAAc7iB,EAAO+iB,oBAAsBF,EAAY,OAC5D,MACMG,GADuBH,KAAc/3B,EAAcA,EAAY+3B,QAAcnxB,IAClCsO,EAAOijB,eAClDC,EAActC,GAAc5gB,EAAQM,GACpC6iB,EAAavC,GAAc5gB,EAAQgjB,GACnCI,EAAgBpjB,EAAOM,OAAOud,WAC9BwF,EAAeL,EAAiBnF,WAChCyF,EAAahjB,EAAOyJ,QACtBmZ,IAAgBC,GAClBz5B,EAAGtC,UAAUW,OAAO,GAAGuY,EAAOuN,6BAA8B,GAAGvN,EAAOuN,qCACtE7N,EAAOujB,yBACGL,GAAeC,IACzBz5B,EAAGtC,UAAUC,IAAI,GAAGiZ,EAAOuN,+BACvBmV,EAAiB3a,KAAK6O,MAAuC,WAA/B8L,EAAiB3a,KAAK6O,OAAsB8L,EAAiB3a,KAAK6O,MAA6B,WAArB5W,EAAO+H,KAAK6O,OACtHxtB,EAAGtC,UAAUC,IAAI,GAAGiZ,EAAOuN,qCAE7B7N,EAAOujB,wBAELH,IAAkBC,EACpBrjB,EAAOyiB,mBACGW,GAAiBC,GAC3BrjB,EAAO8d,gBAIT,CAAC,aAAc,aAAc,aAAah1B,SAAQuJ,IAChD,QAAsC,IAA3B2wB,EAAiB3wB,GAAuB,OACnD,MAAMmxB,EAAmBljB,EAAOjO,IAASiO,EAAOjO,GAAM0X,QAChD0Z,EAAkBT,EAAiB3wB,IAAS2wB,EAAiB3wB,GAAM0X,QACrEyZ,IAAqBC,GACvBzjB,EAAO3N,GAAMqxB,WAEVF,GAAoBC,GACvBzjB,EAAO3N,GAAMsxB,QACf,IAEF,MAAMC,EAAmBZ,EAAiB3P,WAAa2P,EAAiB3P,YAAc/S,EAAO+S,UACvFwQ,EAAcvjB,EAAO/Z,OAASy8B,EAAiBv6B,gBAAkB6X,EAAO7X,eAAiBm7B,GACzFE,EAAUxjB,EAAO/Z,KACnBq9B,GAAoBlR,GACtB1S,EAAO+jB,kBAET,EAAO/jB,EAAOM,OAAQ0iB,GACtB,MAAMgB,EAAYhkB,EAAOM,OAAOyJ,QAC1Bka,EAAUjkB,EAAOM,OAAO/Z,KAC9ByL,OAAOmX,OAAOnJ,EAAQ,CACpB2b,eAAgB3b,EAAOM,OAAOqb,eAC9B7H,eAAgB9T,EAAOM,OAAOwT,eAC9BC,eAAgB/T,EAAOM,OAAOyT,iBAE5BuP,IAAeU,EACjBhkB,EAAO0jB,WACGJ,GAAcU,GACxBhkB,EAAO2jB,SAET3jB,EAAO+iB,kBAAoBF,EAC3B7iB,EAAO8G,KAAK,oBAAqBkc,GAC7BtQ,IACEmR,GACF7jB,EAAOuY,cACPvY,EAAOsW,WAAW9sB,GAClBwW,EAAOoJ,iBACG0a,GAAWG,GACrBjkB,EAAOsW,WAAW9sB,GAClBwW,EAAOoJ,gBACE0a,IAAYG,GACrBjkB,EAAOuY,eAGXvY,EAAO8G,KAAK,aAAckc,EAC5B,EA2CEF,cAzCF,SAAuBh4B,EAAayvB,EAAM2J,GAIxC,QAHa,IAAT3J,IACFA,EAAO,WAEJzvB,GAAwB,cAATyvB,IAAyB2J,EAAa,OAC1D,IAAIrB,GAAa,EACjB,MAAM/9B,EAASyY,IACT4mB,EAAyB,WAAT5J,EAAoBz1B,EAAOs/B,YAAcF,EAAYlb,aACrEqb,EAASryB,OAAO2D,KAAK7K,GAAaoL,KAAIouB,IAC1C,GAAqB,iBAAVA,GAA6C,IAAvBA,EAAMrwB,QAAQ,KAAY,CACzD,MAAMswB,EAAW3lB,WAAW0lB,EAAME,OAAO,IAEzC,MAAO,CACL7xB,MAFYwxB,EAAgBI,EAG5BD,QAEJ,CACA,MAAO,CACL3xB,MAAO2xB,EACPA,QACD,IAEHD,EAAOtuB,MAAK,CAACC,EAAGhQ,IAAM0K,SAASsF,EAAErD,MAAO,IAAMjC,SAAS1K,EAAE2M,MAAO,MAChE,IAAK,IAAIgB,EAAI,EAAGA,EAAI0wB,EAAO94B,OAAQoI,GAAK,EAAG,CACzC,MAAM,MACJ2wB,EAAK,MACL3xB,GACE0xB,EAAO1wB,GACE,WAAT4mB,EACEz1B,EAAOuY,WAAW,eAAe1K,QAAY7D,UAC/C+zB,EAAayB,GAEN3xB,GAASuxB,EAAYnb,cAC9B8Z,EAAayB,EAEjB,CACA,OAAOzB,GAAc,KACvB,GAqREpV,cA9KoB,CACpBA,cA9BF,WACE,MAAMzN,EAASrU,MAEb42B,SAAUkC,EAAS,OACnBnkB,GACEN,GACE,mBACJsK,GACEhK,EACJ,GAAIgK,EAAoB,CACtB,MAAMiG,EAAiBvQ,EAAOnX,OAAO0C,OAAS,EACxCm5B,EAAqB1kB,EAAOmK,WAAWoG,GAAkBvQ,EAAOoK,gBAAgBmG,GAAuC,EAArBjG,EACxGtK,EAAOuiB,SAAWviB,EAAOuD,KAAOmhB,CAClC,MACE1kB,EAAOuiB,SAAsC,IAA3BviB,EAAOkK,SAAS3e,QAEN,IAA1B+U,EAAOwT,iBACT9T,EAAO8T,gBAAkB9T,EAAOuiB,WAEJ,IAA1BjiB,EAAOyT,iBACT/T,EAAO+T,gBAAkB/T,EAAOuiB,UAE9BkC,GAAaA,IAAczkB,EAAOuiB,WACpCviB,EAAOgQ,OAAQ,GAEbyU,IAAczkB,EAAOuiB,UACvBviB,EAAO8G,KAAK9G,EAAOuiB,SAAW,OAAS,SAE3C,GAgLE7kB,QAjNY,CACZinB,WAhDF,WACE,MAAM3kB,EAASrU,MACT,WACJi5B,EAAU,OACVtkB,EAAM,IACNqJ,EAAG,GACHjgB,EAAE,OACFkb,GACE5E,EAEE6kB,EAzBR,SAAwBnvB,EAASovB,GAC/B,MAAMC,EAAgB,GAYtB,OAXArvB,EAAQ5M,SAAQkD,IACM,iBAATA,EACTgG,OAAO2D,KAAK3J,GAAMlD,SAAQ87B,IACpB54B,EAAK44B,IACPG,EAAcjjB,KAAKgjB,EAASF,EAC9B,IAEuB,iBAAT54B,GAChB+4B,EAAcjjB,KAAKgjB,EAAS94B,EAC9B,IAEK+4B,CACT,CAWmBC,CAAe,CAAC,cAAe1kB,EAAO+S,UAAW,CAChE,YAAarT,EAAOM,OAAOyb,UAAYzb,EAAOyb,SAAShS,SACtD,CACD,WAAczJ,EAAOsQ,YACpB,CACD,IAAOjH,GACN,CACD,KAAQrJ,EAAO+H,MAAQ/H,EAAO+H,KAAKC,KAAO,GACzC,CACD,cAAehI,EAAO+H,MAAQ/H,EAAO+H,KAAKC,KAAO,GAA0B,WAArBhI,EAAO+H,KAAK6O,MACjE,CACD,QAAWtS,EAAOE,SACjB,CACD,IAAOF,EAAOC,KACb,CACD,WAAYvE,EAAO6K,SAClB,CACD,SAAY7K,EAAO6K,SAAW7K,EAAO4K,gBACpC,CACD,iBAAkB5K,EAAOoN,sBACvBpN,EAAOuN,wBACX+W,EAAW9iB,QAAQ+iB,GACnBn7B,EAAGtC,UAAUC,OAAOu9B,GACpB5kB,EAAOujB,sBACT,EAeE0B,cAbF,WACE,MACM,GACJv7B,EAAE,WACFk7B,GAHaj5B,KAKVjC,GAAoB,iBAAPA,IAClBA,EAAGtC,UAAUW,UAAU68B,GANRj5B,KAOR43B,uBACT,IAqNM2B,GAAmB,CAAC,EAC1B,MAAM98B,GACJ,WAAAgT,GACE,IAAI1R,EACA4W,EACJ,IAAK,IAAI+F,EAAOtH,UAAUxT,OAAQ+a,EAAO,IAAI3d,MAAM0d,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQxH,UAAUwH,GAEL,IAAhBD,EAAK/a,QAAgB+a,EAAK,GAAGlL,aAAwE,WAAzDpJ,OAAOM,UAAU2C,SAAS/J,KAAKob,EAAK,IAAIrb,MAAM,GAAI,GAChGqV,EAASgG,EAAK,IAEb5c,EAAI4W,GAAUgG,EAEZhG,IAAQA,EAAS,CAAC,GACvBA,EAAS,EAAO,CAAC,EAAGA,GAChB5W,IAAO4W,EAAO5W,KAAI4W,EAAO5W,GAAKA,GAClC,MAAM1E,EAAWsX,IACjB,GAAIgE,EAAO5W,IAA2B,iBAAd4W,EAAO5W,IAAmB1E,EAASmE,iBAAiBmX,EAAO5W,IAAI6B,OAAS,EAAG,CACjG,MAAM45B,EAAU,GAQhB,OAPAngC,EAASmE,iBAAiBmX,EAAO5W,IAAIZ,SAAQo7B,IAC3C,MAAMkB,EAAY,EAAO,CAAC,EAAG9kB,EAAQ,CACnC5W,GAAIw6B,IAENiB,EAAQrjB,KAAK,IAAI1Z,GAAOg9B,GAAW,IAG9BD,CACT,CAGA,MAAMnlB,EAASrU,KACfqU,EAAON,YAAa,EACpBM,EAAOgE,QAAUE,KACjBlE,EAAO4E,OAASL,GAAU,CACxB7H,UAAW4D,EAAO5D,YAEpBsD,EAAO8D,SAtqGJA,KACHA,GA3BJ,WACE,MAAMhf,EAASyY,IACTqH,EAASL,KACf,IAAI8gB,GAAqB,EACzB,SAAShH,IACP,MAAM1Z,EAAK7f,EAAO2X,UAAUC,UAAUhG,cACtC,OAAOiO,EAAG1Q,QAAQ,WAAa,GAAK0Q,EAAG1Q,QAAQ,UAAY,GAAK0Q,EAAG1Q,QAAQ,WAAa,CAC1F,CACA,GAAIoqB,IAAY,CACd,MAAM1Z,EAAK2gB,OAAOxgC,EAAO2X,UAAUC,WACnC,GAAIiI,EAAGvT,SAAS,YAAa,CAC3B,MAAOm0B,EAAOC,GAAS7gB,EAAGzR,MAAM,YAAY,GAAGA,MAAM,KAAK,GAAGA,MAAM,KAAKgD,KAAIuvB,GAAOxvB,OAAOwvB,KAC1FJ,EAAqBE,EAAQ,IAAgB,KAAVA,GAAgBC,EAAQ,CAC7D,CACF,CACA,MAAMlH,EAAY,+CAA+CvwB,KAAKjJ,EAAO2X,UAAUC,WACjFgpB,EAAkBrH,IAExB,MAAO,CACLA,SAAUgH,GAAsBK,EAChCL,qBACAthB,UAJgB2hB,GAAmBpH,GAAa1Z,EAAOC,IAKvDyZ,YAEJ,CAGcqH,IAEL7hB,IAoqGL9D,EAAO+F,gBAAkB,CAAC,EAC1B/F,EAAO0G,mBAAqB,GAC5B1G,EAAO4lB,QAAU,IAAI5lB,EAAO6lB,aACxBvlB,EAAOslB,SAAWj9B,MAAM2L,QAAQgM,EAAOslB,UACzC5lB,EAAO4lB,QAAQ9jB,QAAQxB,EAAOslB,SAEhC,MAAMnE,EAAmB,CAAC,EAC1BzhB,EAAO4lB,QAAQ98B,SAAQg9B,IACrBA,EAAI,CACFxlB,SACAN,SACA+lB,aAAcvE,GAAmBlhB,EAAQmhB,GACzC/4B,GAAIsX,EAAOtX,GAAGi6B,KAAK3iB,GACnBtY,KAAMsY,EAAOtY,KAAKi7B,KAAK3iB,GACvBmG,IAAKnG,EAAOmG,IAAIwc,KAAK3iB,GACrB8G,KAAM9G,EAAO8G,KAAK6b,KAAK3iB,IACvB,IAIJ,MAAMgmB,EAAe,EAAO,CAAC,EAAGnF,GAAUY,GAqG1C,OAlGAzhB,EAAOM,OAAS,EAAO,CAAC,EAAG0lB,EAAcd,GAAkB5kB,GAC3DN,EAAOijB,eAAiB,EAAO,CAAC,EAAGjjB,EAAOM,QAC1CN,EAAOimB,aAAe,EAAO,CAAC,EAAG3lB,GAG7BN,EAAOM,QAAUN,EAAOM,OAAO5X,IACjCsJ,OAAO2D,KAAKqK,EAAOM,OAAO5X,IAAII,SAAQo9B,IACpClmB,EAAOtX,GAAGw9B,EAAWlmB,EAAOM,OAAO5X,GAAGw9B,GAAW,IAGjDlmB,EAAOM,QAAUN,EAAOM,OAAOmG,OACjCzG,EAAOyG,MAAMzG,EAAOM,OAAOmG,OAI7BzU,OAAOmX,OAAOnJ,EAAQ,CACpB+J,QAAS/J,EAAOM,OAAOyJ,QACvBrgB,KAEAk7B,WAAY,GAEZ/7B,OAAQ,GACRshB,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAEjBnB,aAAY,IACyB,eAA5BjJ,EAAOM,OAAO+S,UAEvBnK,WAAU,IAC2B,aAA5BlJ,EAAOM,OAAO+S,UAGvB9pB,YAAa,EACbC,UAAW,EAEXumB,aAAa,EACbC,OAAO,EAEP5P,UAAW,EACX8f,kBAAmB,EACnBnf,SAAU,EACVolB,SAAU,EACV1S,WAAW,EACX,qBAAA7E,GAGE,OAAO5N,KAAKolB,MAAMz6B,KAAKyU,UAAY,GAAK,IAAM,GAAK,EACrD,EAEA0T,eAAgB9T,EAAOM,OAAOwT,eAC9BC,eAAgB/T,EAAOM,OAAOyT,eAE9BiE,gBAAiB,CACf8B,eAAWpoB,EACXqoB,aAASroB,EACTypB,yBAAqBzpB,EACrB4pB,oBAAgB5pB,EAChB0pB,iBAAa1pB,EACbwmB,sBAAkBxmB,EAClBumB,oBAAgBvmB,EAChB8pB,wBAAoB9pB,EAEpB+pB,kBAAmBzb,EAAOM,OAAOmb,kBAEjCiD,cAAe,EACf2H,kBAAc30B,EAEd40B,WAAY,GACZ1I,yBAAqBlsB,EACrB2pB,iBAAa3pB,EACbunB,UAAW,KACXE,QAAS,MAGX0B,YAAY,EAEZc,eAAgB3b,EAAOM,OAAOqb,eAC9BrC,QAAS,CACPX,OAAQ,EACRuC,OAAQ,EACRH,SAAU,EACVC,SAAU,EACVjD,KAAM,GAGRwO,aAAc,GACdC,aAAc,IAEhBxmB,EAAO8G,KAAK,WAGR9G,EAAOM,OAAO7Y,MAChBuY,EAAOvY,OAKFuY,CACT,CACA,iBAAAuJ,CAAkBkd,GAChB,OAAI96B,KAAKsd,eACAwd,EAGF,CACL,MAAS,SACT,aAAc,cACd,iBAAkB,eAClB,cAAe,aACf,eAAgB,gBAChB,eAAgB,cAChB,gBAAiB,iBACjB,YAAe,gBACfA,EACJ,CACA,aAAApQ,CAAc5U,GACZ,MAAM,SACJ+H,EAAQ,OACRlJ,GACE3U,KAEE2kB,EAAkBzN,EADTlB,EAAgB6H,EAAU,IAAIlJ,EAAOqH,4BACR,IAC5C,OAAO9E,EAAapB,GAAW6O,CACjC,CACA,mBAAAjC,CAAoBjW,GAClB,OAAOzM,KAAK0qB,cAAc1qB,KAAK9C,OAAO2P,QAAOiJ,GAA6D,EAAlDA,EAAQpW,aAAa,6BAAmC+M,IAAO,GACzH,CACA,YAAA0e,GACE,MACM,SACJtN,EAAQ,OACRlJ,GAHa3U,UAKR9C,OAAS8Y,EAAgB6H,EAAU,IAAIlJ,EAAOqH,2BACvD,CACA,MAAAgc,GACE,MAAM3jB,EAASrU,KACXqU,EAAO+J,UACX/J,EAAO+J,SAAU,EACb/J,EAAOM,OAAOud,YAChB7d,EAAO8d,gBAET9d,EAAO8G,KAAK,UACd,CACA,OAAA4c,GACE,MAAM1jB,EAASrU,KACVqU,EAAO+J,UACZ/J,EAAO+J,SAAU,EACb/J,EAAOM,OAAOud,YAChB7d,EAAOyiB,kBAETziB,EAAO8G,KAAK,WACd,CACA,WAAA4f,CAAY3lB,EAAUzY,GACpB,MAAM0X,EAASrU,KACfoV,EAAWC,KAAKE,IAAIF,KAAKC,IAAIF,EAAU,GAAI,GAC3C,MAAMG,EAAMlB,EAAOkP,eAEbtO,GADMZ,EAAO8P,eACI5O,GAAOH,EAAWG,EACzClB,EAAO+hB,YAAYnhB,OAA0B,IAAVtY,EAAwB,EAAIA,GAC/D0X,EAAO8R,oBACP9R,EAAO6Q,qBACT,CACA,oBAAA0S,GACE,MAAMvjB,EAASrU,KACf,IAAKqU,EAAOM,OAAOihB,eAAiBvhB,EAAOtW,GAAI,OAC/C,MAAMi9B,EAAM3mB,EAAOtW,GAAG4d,UAAUpU,MAAM,KAAKsF,QAAO8O,GACT,IAAhCA,EAAUrT,QAAQ,WAA+E,IAA5DqT,EAAUrT,QAAQ+L,EAAOM,OAAOuN,0BAE9E7N,EAAO8G,KAAK,oBAAqB6f,EAAIvzB,KAAK,KAC5C,CACA,eAAAwzB,CAAgBnlB,GACd,MAAMzB,EAASrU,KACf,OAAIqU,EAAOgG,UAAkB,GACtBvE,EAAQ6F,UAAUpU,MAAM,KAAKsF,QAAO8O,GACI,IAAtCA,EAAUrT,QAAQ,iBAAyE,IAAhDqT,EAAUrT,QAAQ+L,EAAOM,OAAOqH,cACjFvU,KAAK,IACV,CACA,iBAAAye,GACE,MAAM7R,EAASrU,KACf,IAAKqU,EAAOM,OAAOihB,eAAiBvhB,EAAOtW,GAAI,OAC/C,MAAMm9B,EAAU,GAChB7mB,EAAOnX,OAAOC,SAAQ2Y,IACpB,MAAMmjB,EAAa5kB,EAAO4mB,gBAAgBnlB,GAC1ColB,EAAQ/kB,KAAK,CACXL,UACAmjB,eAEF5kB,EAAO8G,KAAK,cAAerF,EAASmjB,EAAW,IAEjD5kB,EAAO8G,KAAK,gBAAiB+f,EAC/B,CACA,oBAAA1e,CAAqB2e,EAAMC,QACZ,IAATD,IACFA,EAAO,gBAEK,IAAVC,IACFA,GAAQ,GAEV,MACM,OACJzmB,EAAM,OACNzX,EAAM,WACNshB,EAAU,gBACVC,EACA7G,KAAMkG,EAAU,YAChBlgB,GAPaoC,KASf,IAAIq7B,EAAM,EACV,GAAoC,iBAAzB1mB,EAAO7X,cAA4B,OAAO6X,EAAO7X,cAC5D,GAAI6X,EAAO4K,eAAgB,CACzB,IACI+b,EADA5b,EAAYxiB,EAAOU,GAAeyX,KAAKoH,KAAKvf,EAAOU,GAAa2iB,iBAAmB,EAEvF,IAAK,IAAIvY,EAAIpK,EAAc,EAAGoK,EAAI9K,EAAO0C,OAAQoI,GAAK,EAChD9K,EAAO8K,KAAOszB,IAChB5b,GAAarK,KAAKoH,KAAKvf,EAAO8K,GAAGuY,iBACjC8a,GAAO,EACH3b,EAAY5B,IAAYwd,GAAY,IAG5C,IAAK,IAAItzB,EAAIpK,EAAc,EAAGoK,GAAK,EAAGA,GAAK,EACrC9K,EAAO8K,KAAOszB,IAChB5b,GAAaxiB,EAAO8K,GAAGuY,gBACvB8a,GAAO,EACH3b,EAAY5B,IAAYwd,GAAY,GAG9C,MAEE,GAAa,YAATH,EACF,IAAK,IAAInzB,EAAIpK,EAAc,EAAGoK,EAAI9K,EAAO0C,OAAQoI,GAAK,GAChCozB,EAAQ5c,EAAWxW,GAAKyW,EAAgBzW,GAAKwW,EAAW5gB,GAAekgB,EAAaU,EAAWxW,GAAKwW,EAAW5gB,GAAekgB,KAEhJud,GAAO,QAKX,IAAK,IAAIrzB,EAAIpK,EAAc,EAAGoK,GAAK,EAAGA,GAAK,EACrBwW,EAAW5gB,GAAe4gB,EAAWxW,GAAK8V,IAE5Dud,GAAO,GAKf,OAAOA,CACT,CACA,MAAAne,GACE,MAAM7I,EAASrU,KACf,IAAKqU,GAAUA,EAAOgG,UAAW,OACjC,MAAM,SACJkE,EAAQ,OACR5J,GACEN,EAcJ,SAASgU,IACP,MAAMkT,EAAiBlnB,EAAO0J,cAAmC,EAApB1J,EAAOI,UAAiBJ,EAAOI,UACtE6hB,EAAejhB,KAAKE,IAAIF,KAAKC,IAAIimB,EAAgBlnB,EAAO8P,gBAAiB9P,EAAOkP,gBACtFlP,EAAOgU,aAAaiO,GACpBjiB,EAAO8R,oBACP9R,EAAO6Q,qBACT,CACA,IAAIsW,EACJ,GApBI7mB,EAAOxV,aACTkV,EAAOsf,gBAET,IAAItf,EAAOtW,GAAGP,iBAAiB,qBAAqBL,SAAQ2e,IACtDA,EAAQ2f,UACV5f,GAAqBxH,EAAQyH,EAC/B,IAEFzH,EAAO8I,aACP9I,EAAOoJ,eACPpJ,EAAO2P,iBACP3P,EAAO6Q,sBASHvQ,EAAOyb,UAAYzb,EAAOyb,SAAShS,UAAYzJ,EAAO6K,QACxD6I,IACI1T,EAAOsQ,YACT5Q,EAAOgO,uBAEJ,CACL,IAA8B,SAAzB1N,EAAO7X,eAA4B6X,EAAO7X,cAAgB,IAAMuX,EAAOgQ,QAAU1P,EAAO4K,eAAgB,CAC3G,MAAMriB,EAASmX,EAAO8J,SAAWxJ,EAAOwJ,QAAQC,QAAU/J,EAAO8J,QAAQjhB,OAASmX,EAAOnX,OACzFs+B,EAAannB,EAAOlW,QAAQjB,EAAO0C,OAAS,EAAG,GAAG,GAAO,EAC3D,MACE47B,EAAannB,EAAOlW,QAAQkW,EAAOzW,YAAa,GAAG,GAAO,GAEvD49B,GACHnT,GAEJ,CACI1T,EAAOkN,eAAiBtD,IAAalK,EAAOkK,UAC9ClK,EAAOyN,gBAETzN,EAAO8G,KAAK,SACd,CACA,eAAAid,CAAgBsD,EAAcC,QACT,IAAfA,IACFA,GAAa,GAEf,MAAMtnB,EAASrU,KACT47B,EAAmBvnB,EAAOM,OAAO+S,UAKvC,OAJKgU,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAE9DF,IAAiBE,GAAqC,eAAjBF,GAAkD,aAAjBA,IAG1ErnB,EAAOtW,GAAGtC,UAAUW,OAAO,GAAGiY,EAAOM,OAAOuN,yBAAyB0Z,KACrEvnB,EAAOtW,GAAGtC,UAAUC,IAAI,GAAG2Y,EAAOM,OAAOuN,yBAAyBwZ,KAClErnB,EAAOujB,uBACPvjB,EAAOM,OAAO+S,UAAYgU,EAC1BrnB,EAAOnX,OAAOC,SAAQ2Y,IACC,aAAjB4lB,EACF5lB,EAAQxV,MAAM+Y,MAAQ,GAEtBvD,EAAQxV,MAAMiZ,OAAS,EACzB,IAEFlF,EAAO8G,KAAK,mBACRwgB,GAAYtnB,EAAO6I,UAdd7I,CAgBX,CACA,uBAAAwnB,CAAwBnU,GACtB,MAAMrT,EAASrU,KACXqU,EAAO2J,KAAqB,QAAd0J,IAAwBrT,EAAO2J,KAAqB,QAAd0J,IACxDrT,EAAO2J,IAAoB,QAAd0J,EACbrT,EAAO0J,aAA2C,eAA5B1J,EAAOM,OAAO+S,WAA8BrT,EAAO2J,IACrE3J,EAAO2J,KACT3J,EAAOtW,GAAGtC,UAAUC,IAAI,GAAG2Y,EAAOM,OAAOuN,6BACzC7N,EAAOtW,GAAGgX,IAAM,QAEhBV,EAAOtW,GAAGtC,UAAUW,OAAO,GAAGiY,EAAOM,OAAOuN,6BAC5C7N,EAAOtW,GAAGgX,IAAM,OAElBV,EAAO6I,SACT,CACA,KAAA4e,CAAM35B,GACJ,MAAMkS,EAASrU,KACf,GAAIqU,EAAO0nB,QAAS,OAAO,EAG3B,IAAIh+B,EAAKoE,GAAWkS,EAAOM,OAAO5W,GAIlC,GAHkB,iBAAPA,IACTA,EAAK1E,SAASoB,cAAcsD,KAEzBA,EACH,OAAO,EAETA,EAAGsW,OAASA,EACRtW,EAAGG,YAAcH,EAAGG,WAAWoS,MAAQvS,EAAGG,WAAWoS,KAAKR,WAAauE,EAAOM,OAAOwgB,sBAAsB5rB,gBAC7G8K,EAAO0H,WAAY,GAErB,MAAMigB,EAAqB,IAClB,KAAK3nB,EAAOM,OAAOghB,cAAgB,IAAI9qB,OAAOtD,MAAM,KAAKE,KAAK,OAWvE,IAAImN,EARE7W,GAAMA,EAAGgY,YAAchY,EAAGgY,WAAWtb,cAC3BsD,EAAGgY,WAAWtb,cAAcuhC,KAInChmB,EAAgBjY,EAAIi+B,KAAsB,GAsBnD,OAlBKpnB,GAAaP,EAAOM,OAAO0gB,iBAC9BzgB,EAAY3E,EAAc,MAAOoE,EAAOM,OAAOghB,cAC/C53B,EAAGktB,OAAOrW,GACVoB,EAAgBjY,EAAI,IAAIsW,EAAOM,OAAOqH,cAAc7e,SAAQ2Y,IAC1DlB,EAAUqW,OAAOnV,EAAQ,KAG7BzP,OAAOmX,OAAOnJ,EAAQ,CACpBtW,KACA6W,YACAiJ,SAAUxJ,EAAO0H,YAAche,EAAGG,WAAWoS,KAAK2rB,WAAal+B,EAAGG,WAAWoS,KAAOsE,EACpFsnB,OAAQ7nB,EAAO0H,UAAYhe,EAAGG,WAAWoS,KAAOvS,EAChDg+B,SAAS,EAET/d,IAA8B,QAAzBjgB,EAAGgX,IAAIhK,eAA6D,QAAlCkM,EAAalZ,EAAI,aACxDggB,aAA0C,eAA5B1J,EAAOM,OAAO+S,YAAwD,QAAzB3pB,EAAGgX,IAAIhK,eAA6D,QAAlCkM,EAAalZ,EAAI,cAC9GkgB,SAAiD,gBAAvChH,EAAarC,EAAW,cAE7B,CACT,CACA,IAAA9Y,CAAKiC,GACH,MAAMsW,EAASrU,KACf,GAAIqU,EAAO0S,YAAa,OAAO1S,EAE/B,IAAgB,IADAA,EAAOynB,MAAM/9B,GACN,OAAOsW,EAC9BA,EAAO8G,KAAK,cAGR9G,EAAOM,OAAOxV,aAChBkV,EAAOsf,gBAITtf,EAAO2kB,aAGP3kB,EAAO8I,aAGP9I,EAAOoJ,eACHpJ,EAAOM,OAAOkN,eAChBxN,EAAOyN,gBAILzN,EAAOM,OAAOud,YAAc7d,EAAO+J,SACrC/J,EAAO8d,gBAIL9d,EAAOM,OAAO/Z,MAAQyZ,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAChE/J,EAAOlW,QAAQkW,EAAOM,OAAOgU,aAAetU,EAAO8J,QAAQ4C,aAAc,EAAG1M,EAAOM,OAAOqS,oBAAoB,GAAO,GAErH3S,EAAOlW,QAAQkW,EAAOM,OAAOgU,aAAc,EAAGtU,EAAOM,OAAOqS,oBAAoB,GAAO,GAIrF3S,EAAOM,OAAO/Z,MAChByZ,EAAOsW,aAITtW,EAAO0iB,eACP,MAAMoF,EAAe,IAAI9nB,EAAOtW,GAAGP,iBAAiB,qBAsBpD,OArBI6W,EAAO0H,WACTogB,EAAahmB,QAAQ9B,EAAO6nB,OAAO1+B,iBAAiB,qBAEtD2+B,EAAah/B,SAAQ2e,IACfA,EAAQ2f,SACV5f,GAAqBxH,EAAQyH,GAE7BA,EAAQ9gB,iBAAiB,QAAQkB,IAC/B2f,GAAqBxH,EAAQnY,EAAEzC,OAAO,GAE1C,IAEF4iB,GAAQhI,GAGRA,EAAO0S,aAAc,EACrB1K,GAAQhI,GAGRA,EAAO8G,KAAK,QACZ9G,EAAO8G,KAAK,aACL9G,CACT,CACA,OAAA+nB,CAAQC,EAAgBC,QACC,IAAnBD,IACFA,GAAiB,QAEC,IAAhBC,IACFA,GAAc,GAEhB,MAAMjoB,EAASrU,MACT,OACJ2U,EAAM,GACN5W,EAAE,UACF6W,EAAS,OACT1X,GACEmX,EACJ,YAA6B,IAAlBA,EAAOM,QAA0BN,EAAOgG,YAGnDhG,EAAO8G,KAAK,iBAGZ9G,EAAO0S,aAAc,EAGrB1S,EAAO4iB,eAGHtiB,EAAO/Z,MACTyZ,EAAOuY,cAIL0P,IACFjoB,EAAOilB,gBACHv7B,GAAoB,iBAAPA,GACfA,EAAGqe,gBAAgB,SAEjBxH,GACFA,EAAUwH,gBAAgB,SAExBlf,GAAUA,EAAO0C,QACnB1C,EAAOC,SAAQ2Y,IACbA,EAAQra,UAAUW,OAAOuY,EAAOkP,kBAAmBlP,EAAOmP,uBAAwBnP,EAAOoR,iBAAkBpR,EAAOqR,eAAgBrR,EAAOsR,gBACzInQ,EAAQsG,gBAAgB,SACxBtG,EAAQsG,gBAAgB,0BAA0B,KAIxD/H,EAAO8G,KAAK,WAGZ9U,OAAO2D,KAAKqK,EAAO+F,iBAAiBjd,SAAQo9B,IAC1ClmB,EAAOmG,IAAI+f,EAAU,KAEA,IAAnB8B,IACEhoB,EAAOtW,IAA2B,iBAAdsW,EAAOtW,KAC7BsW,EAAOtW,GAAGsW,OAAS,MDvxH3B,SAAqB5N,GACnB,MAAM+B,EAAS/B,EACfJ,OAAO2D,KAAKxB,GAAQrL,SAAQa,IAC1B,IACEwK,EAAOxK,GAAO,IAChB,CAAE,MAAO9B,GAET,CACA,WACSsM,EAAOxK,EAChB,CAAE,MAAO9B,GAET,IAEJ,CC2wHMqgC,CAAYloB,IAEdA,EAAOgG,WAAY,GA5CV,IA8CX,CACA,qBAAOmiB,CAAeC,GACpB,EAAOlD,GAAkBkD,EAC3B,CACA,2BAAWlD,GACT,OAAOA,EACT,CACA,mBAAWrE,GACT,OAAOA,EACT,CACA,oBAAOwH,CAAcvC,GACd19B,GAAOkK,UAAUuzB,cAAaz9B,GAAOkK,UAAUuzB,YAAc,IAClE,MAAMD,EAAUx9B,GAAOkK,UAAUuzB,YACd,mBAARC,GAAsBF,EAAQ3xB,QAAQ6xB,GAAO,GACtDF,EAAQ9jB,KAAKgkB,EAEjB,CACA,UAAOwC,CAAI12B,GACT,OAAIjJ,MAAM2L,QAAQ1C,IAChBA,EAAO9I,SAAQy/B,GAAKngC,GAAOigC,cAAcE,KAClCngC,KAETA,GAAOigC,cAAcz2B,GACdxJ,GACT,EC5zHF,SAASogC,GAA0BxoB,EAAQijB,EAAgB3iB,EAAQmoB,GAejE,OAdIzoB,EAAOM,OAAO0gB,gBAChBhvB,OAAO2D,KAAK8yB,GAAY3/B,SAAQa,IAC9B,IAAK2W,EAAO3W,KAAwB,IAAhB2W,EAAOshB,KAAe,CACxC,IAAI9zB,EAAU6T,EAAgB3B,EAAOtW,GAAI,IAAI++B,EAAW9+B,MAAQ,GAC3DmE,IACHA,EAAU8N,EAAc,MAAO6sB,EAAW9+B,IAC1CmE,EAAQwZ,UAAYmhB,EAAW9+B,GAC/BqW,EAAOtW,GAAGktB,OAAO9oB,IAEnBwS,EAAO3W,GAAOmE,EACdm1B,EAAet5B,GAAOmE,CACxB,KAGGwS,CACT,CClBA,SAASooB,GAAkBhrB,GAIzB,YAHgB,IAAZA,IACFA,EAAU,IAEL,IAAIA,EAAQlH,OAAOZ,QAAQ,eAAgB,QACjDA,QAAQ,KAAM,MACjB,CCNA,SAAS+yB,GAAY9/B,GACnB,MAAMmX,EAASrU,MACT,OACJ2U,EAAM,SACNkJ,GACExJ,EACAM,EAAO/Z,MACTyZ,EAAOuY,cAET,MAAMqQ,EAAgBnnB,IACpB,GAAuB,iBAAZA,EAAsB,CAC/B,MAAMonB,EAAU7jC,SAAS4W,cAAc,OACvCitB,EAAQh9B,UAAY4V,EACpB+H,EAASoN,OAAOiS,EAAQhtB,SAAS,IACjCgtB,EAAQh9B,UAAY,EACtB,MACE2d,EAASoN,OAAOnV,EAClB,EAEF,GAAsB,iBAAX5Y,GAAuB,WAAYA,EAC5C,IAAK,IAAI8K,EAAI,EAAGA,EAAI9K,EAAO0C,OAAQoI,GAAK,EAClC9K,EAAO8K,IAAIi1B,EAAc//B,EAAO8K,SAGtCi1B,EAAc//B,GAEhBmX,EAAO8W,eACHxW,EAAO/Z,MACTyZ,EAAOsW,aAEJhW,EAAOwoB,WAAY9oB,EAAO0H,WAC7B1H,EAAO6I,QAEX,CAEA,SAASkgB,GAAalgC,GACpB,MAAMmX,EAASrU,MACT,OACJ2U,EAAM,YACN/W,EAAW,SACXigB,GACExJ,EACAM,EAAO/Z,MACTyZ,EAAOuY,cAET,IAAIxG,EAAiBxoB,EAAc,EACnC,MAAMy/B,EAAiBvnB,IACrB,GAAuB,iBAAZA,EAAsB,CAC/B,MAAMonB,EAAU7jC,SAAS4W,cAAc,OACvCitB,EAAQh9B,UAAY4V,EACpB+H,EAASqO,QAAQgR,EAAQhtB,SAAS,IAClCgtB,EAAQh9B,UAAY,EACtB,MACE2d,EAASqO,QAAQpW,EACnB,EAEF,GAAsB,iBAAX5Y,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAI8K,EAAI,EAAGA,EAAI9K,EAAO0C,OAAQoI,GAAK,EAClC9K,EAAO8K,IAAIq1B,EAAengC,EAAO8K,IAEvCoe,EAAiBxoB,EAAcV,EAAO0C,MACxC,MACEy9B,EAAengC,GAEjBmX,EAAO8W,eACHxW,EAAO/Z,MACTyZ,EAAOsW,aAEJhW,EAAOwoB,WAAY9oB,EAAO0H,WAC7B1H,EAAO6I,SAET7I,EAAOlW,QAAQioB,EAAgB,GAAG,EACpC,CAEA,SAASkX,GAAS7wB,EAAOvP,GACvB,MAAMmX,EAASrU,MACT,OACJ2U,EAAM,YACN/W,EAAW,SACXigB,GACExJ,EACJ,IAAIkpB,EAAoB3/B,EACpB+W,EAAO/Z,OACT2iC,GAAqBlpB,EAAOoW,aAC5BpW,EAAOuY,cACPvY,EAAO8W,gBAET,MAAMqS,EAAanpB,EAAOnX,OAAO0C,OACjC,GAAI6M,GAAS,EAEX,YADA4H,EAAO+oB,aAAalgC,GAGtB,GAAIuP,GAAS+wB,EAEX,YADAnpB,EAAO2oB,YAAY9/B,GAGrB,IAAIkpB,EAAiBmX,EAAoB9wB,EAAQ8wB,EAAoB,EAAIA,EACzE,MAAME,EAAe,GACrB,IAAK,IAAIz1B,EAAIw1B,EAAa,EAAGx1B,GAAKyE,EAAOzE,GAAK,EAAG,CAC/C,MAAMxH,EAAe6T,EAAOnX,OAAO8K,GACnCxH,EAAapE,SACbqhC,EAAajiB,QAAQhb,EACvB,CACA,GAAsB,iBAAXtD,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAI8K,EAAI,EAAGA,EAAI9K,EAAO0C,OAAQoI,GAAK,EAClC9K,EAAO8K,IAAI6V,EAASoN,OAAO/tB,EAAO8K,IAExCoe,EAAiBmX,EAAoB9wB,EAAQ8wB,EAAoBrgC,EAAO0C,OAAS29B,CACnF,MACE1f,EAASoN,OAAO/tB,GAElB,IAAK,IAAI8K,EAAI,EAAGA,EAAIy1B,EAAa79B,OAAQoI,GAAK,EAC5C6V,EAASoN,OAAOwS,EAAaz1B,IAE/BqM,EAAO8W,eACHxW,EAAO/Z,MACTyZ,EAAOsW,aAEJhW,EAAOwoB,WAAY9oB,EAAO0H,WAC7B1H,EAAO6I,SAELvI,EAAO/Z,KACTyZ,EAAOlW,QAAQioB,EAAiB/R,EAAOoW,aAAc,GAAG,GAExDpW,EAAOlW,QAAQioB,EAAgB,GAAG,EAEtC,CAEA,SAASsX,GAAYC,GACnB,MAAMtpB,EAASrU,MACT,OACJ2U,EAAM,YACN/W,GACEyW,EACJ,IAAIkpB,EAAoB3/B,EACpB+W,EAAO/Z,OACT2iC,GAAqBlpB,EAAOoW,aAC5BpW,EAAOuY,eAET,IACIgR,EADAxX,EAAiBmX,EAErB,GAA6B,iBAAlBI,GAA8B,WAAYA,EAAe,CAClE,IAAK,IAAI31B,EAAI,EAAGA,EAAI21B,EAAc/9B,OAAQoI,GAAK,EAC7C41B,EAAgBD,EAAc31B,GAC1BqM,EAAOnX,OAAO0gC,IAAgBvpB,EAAOnX,OAAO0gC,GAAexhC,SAC3DwhC,EAAgBxX,IAAgBA,GAAkB,GAExDA,EAAiB/Q,KAAKC,IAAI8Q,EAAgB,EAC5C,MACEwX,EAAgBD,EACZtpB,EAAOnX,OAAO0gC,IAAgBvpB,EAAOnX,OAAO0gC,GAAexhC,SAC3DwhC,EAAgBxX,IAAgBA,GAAkB,GACtDA,EAAiB/Q,KAAKC,IAAI8Q,EAAgB,GAE5C/R,EAAO8W,eACHxW,EAAO/Z,MACTyZ,EAAOsW,aAEJhW,EAAOwoB,WAAY9oB,EAAO0H,WAC7B1H,EAAO6I,SAELvI,EAAO/Z,KACTyZ,EAAOlW,QAAQioB,EAAiB/R,EAAOoW,aAAc,GAAG,GAExDpW,EAAOlW,QAAQioB,EAAgB,GAAG,EAEtC,CAEA,SAASyX,KACP,MAAMxpB,EAASrU,KACT29B,EAAgB,GACtB,IAAK,IAAI31B,EAAI,EAAGA,EAAIqM,EAAOnX,OAAO0C,OAAQoI,GAAK,EAC7C21B,EAAcxnB,KAAKnO,GAErBqM,EAAOqpB,YAAYC,EACrB,CC/KA,SAASG,GAAWnpB,GAClB,MAAM,OACJjY,EAAM,OACN2X,EAAM,GACNtX,EAAE,aACFsrB,EAAY,cACZ7F,EAAa,gBACbub,EAAe,YACfC,EAAW,gBACXC,EAAe,gBACfC,GACEvpB,EA+BJ,IAAIwpB,EA9BJphC,EAAG,cAAc,KACf,GAAIsX,EAAOM,OAAOjY,SAAWA,EAAQ,OACrC2X,EAAO4kB,WAAW9iB,KAAK,GAAG9B,EAAOM,OAAOuN,yBAAyBxlB,KAC7DshC,GAAeA,KACjB3pB,EAAO4kB,WAAW9iB,KAAK,GAAG9B,EAAOM,OAAOuN,4BAE1C,MAAMkc,EAAwBL,EAAkBA,IAAoB,CAAC,EACrE13B,OAAOmX,OAAOnJ,EAAOM,OAAQypB,GAC7B/3B,OAAOmX,OAAOnJ,EAAOijB,eAAgB8G,EAAsB,IAE7DrhC,EAAG,gBAAgB,KACbsX,EAAOM,OAAOjY,SAAWA,GAC7B2rB,GAAc,IAEhBtrB,EAAG,iBAAiB,CAACshC,EAAIrkC,KACnBqa,EAAOM,OAAOjY,SAAWA,GAC7B8lB,EAAcxoB,EAAS,IAEzB+C,EAAG,iBAAiB,KAClB,GAAIsX,EAAOM,OAAOjY,SAAWA,GACzBuhC,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBI,aAAc,OAEzDjqB,EAAOnX,OAAOC,SAAQ2Y,IACpBA,EAAQtY,iBAAiB,gHAAgHL,SAAQohC,GAAYA,EAASniC,UAAS,IAGjL6hC,GACF,KAGFlhC,EAAG,iBAAiB,KACdsX,EAAOM,OAAOjY,SAAWA,IACxB2X,EAAOnX,OAAO0C,SACjBu+B,GAAyB,GAE3BpjC,uBAAsB,KAChBojC,GAA0B9pB,EAAOnX,QAAUmX,EAAOnX,OAAO0C,SAC3DyoB,IACA8V,GAAyB,EAC3B,IACA,GAEN,CCrDA,SAASK,GAAaC,EAAc3oB,GAClC,MAAM4oB,EAAc7oB,EAAoBC,GAKxC,OAJI4oB,IAAgB5oB,IAClB4oB,EAAYp+B,MAAMq+B,mBAAqB,SACvCD,EAAYp+B,MAAM,+BAAiC,UAE9Co+B,CACT,CCPA,SAASE,GAA2BxqB,GAClC,IAAI,OACFC,EAAM,SACNra,EAAQ,kBACR6kC,EAAiB,UACjBC,GACE1qB,EACJ,MAAM,YACJxW,GACEyW,EASJ,GAAIA,EAAOM,OAAO4gB,kBAAiC,IAAbv7B,EAAgB,CACpD,IACI+kC,EADAC,GAAiB,EAGnBD,EADED,EACoBD,EAEAA,EAAkBhyB,QAAO6xB,IAC7C,MAAM3gC,EAAK2gC,EAAYjjC,UAAUY,SAAS,0BAf/B0B,IACVA,EAAGyZ,cAKDzZ,EAAGyZ,cAHMnD,EAAOnX,OAAO2P,QAAOiJ,GAAWA,EAAQC,YAAcD,EAAQC,aAAehY,EAAGG,aAAY,GAYlC+gC,CAASP,GAAeA,EAC9F,OAAOrqB,EAAOqW,cAAc3sB,KAAQH,CAAW,IAGnDmhC,EAAoB5hC,SAAQY,IAC1B0Z,EAAqB1Z,GAAI,KACvB,GAAIihC,EAAgB,OACpB,IAAK3qB,GAAUA,EAAOgG,UAAW,OACjC2kB,GAAiB,EACjB3qB,EAAOyT,WAAY,EACnB,MAAM8J,EAAM,IAAIz4B,OAAOgY,YAAY,gBAAiB,CAClD0gB,SAAS,EACTX,YAAY,IAEd7c,EAAOO,UAAUod,cAAcJ,EAAI,GACnC,GAEN,CACF,CC3CA,SAASsN,GAAaC,EAAQrpB,EAASvB,GACrC,MAAM6qB,EAAc,sBAAsB7qB,EAAO,IAAIA,IAAS,KAAK4qB,EAAS,wBAAwBA,IAAW,KACzGE,EAAkBxpB,EAAoBC,GAC5C,IAAIyoB,EAAWc,EAAgB5kC,cAAc,IAAI2kC,EAAY73B,MAAM,KAAKE,KAAK,QAK7E,OAJK82B,IACHA,EAAWtuB,EAAc,MAAOmvB,EAAY73B,MAAM,MAClD83B,EAAgBpU,OAAOsT,IAElBA,CACT,CPqzHAl4B,OAAO2D,KAAKksB,IAAY/4B,SAAQmiC,IAC9Bj5B,OAAO2D,KAAKksB,GAAWoJ,IAAiBniC,SAAQoiC,IAC9C9iC,GAAOkK,UAAU44B,GAAerJ,GAAWoJ,GAAgBC,EAAY,GACvE,IAEJ9iC,GAAOkgC,IAAI,CA5tHX,SAAgBvoB,GACd,IAAI,OACFC,EAAM,GACNtX,EAAE,KACFoe,GACE/G,EACJ,MAAMjb,EAASyY,IACf,IAAIurB,EAAW,KACXqC,EAAiB,KACrB,MAAMC,EAAgB,KACfprB,IAAUA,EAAOgG,WAAchG,EAAO0S,cAC3C5L,EAAK,gBACLA,EAAK,UAAS,EAsCVukB,EAA2B,KAC1BrrB,IAAUA,EAAOgG,WAAchG,EAAO0S,aAC3C5L,EAAK,oBAAoB,EAE3Bpe,EAAG,QAAQ,KACLsX,EAAOM,OAAOygB,qBAAmD,IAA1Bj8B,EAAOwmC,eAxC7CtrB,IAAUA,EAAOgG,WAAchG,EAAO0S,cAC3CoW,EAAW,IAAIwC,gBAAe51B,IAC5By1B,EAAiBrmC,EAAO4B,uBAAsB,KAC5C,MAAM,MACJse,EAAK,OACLE,GACElF,EACJ,IAAIurB,EAAWvmB,EACXkJ,EAAYhJ,EAChBxP,EAAQ5M,SAAQ0iC,IACd,IAAI,eACFC,EAAc,YACdC,EAAW,OACXtmC,GACEomC,EACApmC,GAAUA,IAAW4a,EAAOtW,KAChC6hC,EAAWG,EAAcA,EAAY1mB,OAASymB,EAAe,IAAMA,GAAgBE,WACnFzd,EAAYwd,EAAcA,EAAYxmB,QAAUumB,EAAe,IAAMA,GAAgBG,UAAS,IAE5FL,IAAavmB,GAASkJ,IAAchJ,GACtCkmB,GACF,GACA,IAEJtC,EAAS+C,QAAQ7rB,EAAOtW,MAoBxB5E,EAAO6B,iBAAiB,SAAUykC,GAClCtmC,EAAO6B,iBAAiB,oBAAqB0kC,GAAyB,IAExE3iC,EAAG,WAAW,KApBRyiC,GACFrmC,EAAOwY,qBAAqB6tB,GAE1BrC,GAAYA,EAASgD,WAAa9rB,EAAOtW,KAC3Co/B,EAASgD,UAAU9rB,EAAOtW,IAC1Bo/B,EAAW,MAiBbhkC,EAAO8I,oBAAoB,SAAUw9B,GACrCtmC,EAAO8I,oBAAoB,oBAAqBy9B,EAAyB,GAE7E,EAEA,SAAkBtrB,GAChB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,EAAE,KACFoe,GACE/G,EACJ,MAAMgsB,EAAY,GACZjnC,EAASyY,IACTyuB,EAAS,SAAU5mC,EAAQC,QACf,IAAZA,IACFA,EAAU,CAAC,GAEb,MACMyjC,EAAW,IADIhkC,EAAOmnC,kBAAoBnnC,EAAOonC,yBACrBC,IAIhC,GAAInsB,EAAO2X,oBAAqB,OAChC,GAAyB,IAArBwU,EAAU5gC,OAEZ,YADAub,EAAK,iBAAkBqlB,EAAU,IAGnC,MAAMC,EAAiB,WACrBtlB,EAAK,iBAAkBqlB,EAAU,GACnC,EACIrnC,EAAO4B,sBACT5B,EAAO4B,sBAAsB0lC,GAE7BtnC,EAAO+I,WAAWu+B,EAAgB,EACpC,IAEFtD,EAAS+C,QAAQzmC,EAAQ,CACvBinC,gBAA0C,IAAvBhnC,EAAQgnC,YAAoChnC,EAAQgnC,WACvEC,UAAWtsB,EAAO0H,iBAA2C,IAAtBriB,EAAQinC,WAAmCjnC,GAASinC,UAC3FC,mBAAgD,IAA1BlnC,EAAQknC,eAAuClnC,EAAQknC,gBAE/ER,EAAUjqB,KAAKgnB,EACjB,EAyBA/C,EAAa,CACX+C,UAAU,EACV0D,gBAAgB,EAChBC,sBAAsB,IAExB/jC,EAAG,QA7BU,KACX,GAAKsX,EAAOM,OAAOwoB,SAAnB,CACA,GAAI9oB,EAAOM,OAAOksB,eAAgB,CAChC,MAAME,EAAmB1pB,EAAehD,EAAO6nB,QAC/C,IAAK,IAAIl0B,EAAI,EAAGA,EAAI+4B,EAAiBnhC,OAAQoI,GAAK,EAChDq4B,EAAOU,EAAiB/4B,GAE5B,CAEAq4B,EAAOhsB,EAAO6nB,OAAQ,CACpByE,UAAWtsB,EAAOM,OAAOmsB,uBAI3BT,EAAOhsB,EAAOO,UAAW,CACvB8rB,YAAY,GAdqB,CAejC,IAcJ3jC,EAAG,WAZa,KACdqjC,EAAUjjC,SAAQggC,IAChBA,EAAS6D,YAAY,IAEvBZ,EAAUnlB,OAAO,EAAGmlB,EAAUxgC,OAAO,GASzC,IQ9MA,MAAMq6B,GAAU,CCnChB,SAAiB7lB,GACf,IAkBI6sB,GAlBA,OACF5sB,EAAM,aACN+lB,EAAY,GACZr9B,EAAE,KACFoe,GACE/G,EACJgmB,EAAa,CACXjc,QAAS,CACPC,SAAS,EACTlhB,OAAQ,GACRgkC,OAAO,EACPC,YAAa,KACbC,eAAgB,KAChBC,sBAAsB,EACtBC,gBAAiB,EACjBC,eAAgB,KAIpB,MAAMloC,EAAWsX,IACjB0D,EAAO8J,QAAU,CACf+iB,MAAO,CAAC,EACRjkC,UAAM8I,EACNoN,QAAIpN,EACJ7I,OAAQ,GACRjD,OAAQ,EACRukB,WAAY,IAEd,MAAM0e,EAAU7jC,EAAS4W,cAAc,OACvC,SAASkxB,EAAY/jC,EAAOqP,GAC1B,MAAMkI,EAASN,EAAOM,OAAOwJ,QAC7B,GAAIxJ,EAAOusB,OAAS7sB,EAAO8J,QAAQ+iB,MAAMz0B,GACvC,OAAO4H,EAAO8J,QAAQ+iB,MAAMz0B,GAG9B,IAAIqJ,EAmBJ,OAlBInB,EAAOwsB,aACTrrB,EAAUnB,EAAOwsB,YAAY5hC,KAAK8U,EAAQjX,EAAOqP,GAC1B,iBAAZqJ,IACTonB,EAAQh9B,UAAY4V,EACpBA,EAAUonB,EAAQhtB,SAAS,KAG7B4F,EADSzB,EAAO0H,UACN9L,EAAc,gBAEdA,EAAc,MAAOoE,EAAOM,OAAOqH,YAE/ClG,EAAQta,aAAa,0BAA2BiR,GAC3CkI,EAAOwsB,cACVrrB,EAAQ5V,UAAY9C,GAElBuX,EAAOusB,QACT7sB,EAAO8J,QAAQ+iB,MAAMz0B,GAASqJ,GAEzBA,CACT,CACA,SAASoH,EAAOskB,EAAOC,GACrB,MAAM,cACJ3kC,EAAa,eACb0jB,EAAc,eACdjB,EACA3kB,KAAM82B,EAAM,aACZ/I,GACEtU,EAAOM,OACX,GAAI8sB,IAAe/P,GAAU/I,EAAe,EAC1C,OAEF,MAAM,gBACJ2Y,EAAe,eACfC,GACEltB,EAAOM,OAAOwJ,SAEhBlhB,KAAMykC,EACNvuB,GAAIwuB,EAAU,OACdzkC,EACAshB,WAAYojB,EACZ3nC,OAAQ4nC,GACNxtB,EAAO8J,QACN9J,EAAOM,OAAO6K,SACjBnL,EAAO8R,oBAET,MAAMvoB,EAAcyW,EAAOzW,aAAe,EAC1C,IAAIkkC,EAEA9gB,EACAD,EAFqB+gB,EAArBztB,EAAO0J,aAA2B,QAA0B1J,EAAOiJ,eAAiB,OAAS,MAG7FiC,GACFyB,EAAc3L,KAAKiL,MAAMxjB,EAAgB,GAAK0jB,EAAiB+gB,EAC/DxgB,EAAe1L,KAAKiL,MAAMxjB,EAAgB,GAAK0jB,EAAiB8gB,IAEhEtgB,EAAclkB,GAAiB0jB,EAAiB,GAAK+gB,EACrDxgB,GAAgB2Q,EAAS50B,EAAgB0jB,GAAkB8gB,GAE7D,IAAIrkC,EAAOW,EAAcmjB,EACrB5N,EAAKvV,EAAcojB,EAClB0Q,IACHz0B,EAAOoY,KAAKC,IAAIrY,EAAM,GACtBkW,EAAKkC,KAAKE,IAAIpC,EAAIjW,EAAO0C,OAAS,IAEpC,IAAI3F,GAAUoa,EAAOmK,WAAWvhB,IAAS,IAAMoX,EAAOmK,WAAW,IAAM,GAgBvE,SAASujB,IACP1tB,EAAOoJ,eACPpJ,EAAO2P,iBACP3P,EAAO6Q,sBACP/J,EAAK,gBACP,CACA,GArBIuW,GAAU9zB,GAAemjB,GAC3B9jB,GAAQ8jB,EACHxB,IAAgBtlB,GAAUoa,EAAOmK,WAAW,KACxCkT,GAAU9zB,EAAcmjB,IACjC9jB,GAAQ8jB,EACJxB,IAAgBtlB,GAAUoa,EAAOmK,WAAW,KAElDnY,OAAOmX,OAAOnJ,EAAO8J,QAAS,CAC5BlhB,OACAkW,KACAlZ,SACAukB,WAAYnK,EAAOmK,WACnBuC,eACAC,gBAQE0gB,IAAiBzkC,GAAQ0kC,IAAexuB,IAAOquB,EAQjD,OAPIntB,EAAOmK,aAAeojB,GAAsB3nC,IAAW4nC,GACzDxtB,EAAOnX,OAAOC,SAAQ2Y,IACpBA,EAAQxV,MAAMwhC,GAAiB7nC,EAASob,KAAK6C,IAAI7D,EAAO4O,yBAA5B,IAAwD,IAGxF5O,EAAO2P,sBACP7I,EAAK,iBAGP,GAAI9G,EAAOM,OAAOwJ,QAAQijB,eAkBxB,OAjBA/sB,EAAOM,OAAOwJ,QAAQijB,eAAe7hC,KAAK8U,EAAQ,CAChDpa,SACAgD,OACAkW,KACAjW,OAAQ,WACN,MAAM8kC,EAAiB,GACvB,IAAK,IAAIh6B,EAAI/K,EAAM+K,GAAKmL,EAAInL,GAAK,EAC/Bg6B,EAAe7rB,KAAKjZ,EAAO8K,IAE7B,OAAOg6B,CACT,CANQ,UAQN3tB,EAAOM,OAAOwJ,QAAQkjB,qBACxBU,IAEA5mB,EAAK,kBAIT,MAAM8mB,EAAiB,GACjBC,EAAgB,GAChBxX,EAAgBje,IACpB,IAAI9O,EAAa8O,EAOjB,OANIA,EAAQ,EACV9O,EAAaT,EAAO0C,OAAS6M,EACpB9O,GAAcT,EAAO0C,SAE9BjC,GAA0BT,EAAO0C,QAE5BjC,CAAU,EAEnB,GAAI6jC,EACFntB,EAAOnX,OAAO2P,QAAO9O,GAAMA,EAAGoF,QAAQ,IAAIkR,EAAOM,OAAOqH,8BAA6B7e,SAAQ2Y,IAC3FA,EAAQ1Z,QAAQ,SAGlB,IAAK,IAAI4L,EAAI05B,EAAc15B,GAAK25B,EAAY35B,GAAK,EAC/C,GAAIA,EAAI/K,GAAQ+K,EAAImL,EAAI,CACtB,MAAMxV,EAAa+sB,EAAc1iB,GACjCqM,EAAOnX,OAAO2P,QAAO9O,GAAMA,EAAGoF,QAAQ,IAAIkR,EAAOM,OAAOqH,uCAAuCre,8CAAuDA,SAAiBR,SAAQ2Y,IAC7KA,EAAQ1Z,QAAQ,GAEpB,CAGJ,MAAM+lC,EAAWzQ,GAAUx0B,EAAO0C,OAAS,EACrCwiC,EAAS1Q,EAAyB,EAAhBx0B,EAAO0C,OAAa1C,EAAO0C,OACnD,IAAK,IAAIoI,EAAIm6B,EAAUn6B,EAAIo6B,EAAQp6B,GAAK,EACtC,GAAIA,GAAK/K,GAAQ+K,GAAKmL,EAAI,CACxB,MAAMxV,EAAa+sB,EAAc1iB,QACP,IAAf25B,GAA8BH,EACvCU,EAAc/rB,KAAKxY,IAEfqK,EAAI25B,GAAYO,EAAc/rB,KAAKxY,GACnCqK,EAAI05B,GAAcO,EAAe9rB,KAAKxY,GAE9C,CAKF,GAHAukC,EAAc/kC,SAAQsP,IACpB4H,EAAOwJ,SAASoN,OAAOkW,EAAYjkC,EAAOuP,GAAQA,GAAO,IAEvDilB,EACF,IAAK,IAAI1pB,EAAIi6B,EAAeriC,OAAS,EAAGoI,GAAK,EAAGA,GAAK,EAAG,CACtD,MAAMyE,EAAQw1B,EAAej6B,GAC7BqM,EAAOwJ,SAASqO,QAAQiV,EAAYjkC,EAAOuP,GAAQA,GACrD,MAEAw1B,EAAe73B,MAAK,CAACC,EAAGhQ,IAAMA,EAAIgQ,IAClC43B,EAAe9kC,SAAQsP,IACrB4H,EAAOwJ,SAASqO,QAAQiV,EAAYjkC,EAAOuP,GAAQA,GAAO,IAG9DuJ,EAAgB3B,EAAOwJ,SAAU,+BAA+B1gB,SAAQ2Y,IACtEA,EAAQxV,MAAMwhC,GAAiB7nC,EAASob,KAAK6C,IAAI7D,EAAO4O,yBAA5B,IAAwD,IAEtF8e,GACF,CAuFAhlC,EAAG,cAAc,KACf,IAAKsX,EAAOM,OAAOwJ,QAAQC,QAAS,OACpC,IAAIikB,EACJ,QAAkD,IAAvChuB,EAAOimB,aAAanc,QAAQjhB,OAAwB,CAC7D,MAAMA,EAAS,IAAImX,EAAOwJ,SAAS3N,UAAUrD,QAAO9O,GAAMA,EAAGoF,QAAQ,IAAIkR,EAAOM,OAAOqH,8BACnF9e,GAAUA,EAAO0C,SACnByU,EAAO8J,QAAQjhB,OAAS,IAAIA,GAC5BmlC,GAAoB,EACpBnlC,EAAOC,SAAQ,CAAC2Y,EAASnY,KACvBmY,EAAQta,aAAa,0BAA2BmC,GAChD0W,EAAO8J,QAAQ+iB,MAAMvjC,GAAcmY,EACnCA,EAAQ1Z,QAAQ,IAGtB,CACKimC,IACHhuB,EAAO8J,QAAQjhB,OAASmX,EAAOM,OAAOwJ,QAAQjhB,QAEhDmX,EAAO4kB,WAAW9iB,KAAK,GAAG9B,EAAOM,OAAOuN,iCACxC7N,EAAOM,OAAOoN,qBAAsB,EACpC1N,EAAOijB,eAAevV,qBAAsB,EAC5C7E,GAAO,GAAO,EAAK,IAErBngB,EAAG,gBAAgB,KACZsX,EAAOM,OAAOwJ,QAAQC,UACvB/J,EAAOM,OAAO6K,UAAYnL,EAAOoU,mBACnChX,aAAawvB,GACbA,EAAiB/+B,YAAW,KAC1Bgb,GAAQ,GACP,MAEHA,IACF,IAEFngB,EAAG,sBAAsB,KAClBsX,EAAOM,OAAOwJ,QAAQC,SACvB/J,EAAOM,OAAO6K,SAChBxL,EAAeK,EAAOO,UAAW,wBAAyB,GAAGP,EAAO6K,gBACtE,IAEF7Y,OAAOmX,OAAOnJ,EAAO8J,QAAS,CAC5B6e,YA/HF,SAAqB9/B,GACnB,GAAsB,iBAAXA,GAAuB,WAAYA,EAC5C,IAAK,IAAI8K,EAAI,EAAGA,EAAI9K,EAAO0C,OAAQoI,GAAK,EAClC9K,EAAO8K,IAAIqM,EAAO8J,QAAQjhB,OAAOiZ,KAAKjZ,EAAO8K,SAGnDqM,EAAO8J,QAAQjhB,OAAOiZ,KAAKjZ,GAE7BggB,GAAO,EACT,EAuHEkgB,aAtHF,SAAsBlgC,GACpB,MAAMU,EAAcyW,EAAOzW,YAC3B,IAAIwoB,EAAiBxoB,EAAc,EAC/B0kC,EAAoB,EACxB,GAAItlC,MAAM2L,QAAQzL,GAAS,CACzB,IAAK,IAAI8K,EAAI,EAAGA,EAAI9K,EAAO0C,OAAQoI,GAAK,EAClC9K,EAAO8K,IAAIqM,EAAO8J,QAAQjhB,OAAOse,QAAQte,EAAO8K,IAEtDoe,EAAiBxoB,EAAcV,EAAO0C,OACtC0iC,EAAoBplC,EAAO0C,MAC7B,MACEyU,EAAO8J,QAAQjhB,OAAOse,QAAQte,GAEhC,GAAImX,EAAOM,OAAOwJ,QAAQ+iB,MAAO,CAC/B,MAAMA,EAAQ7sB,EAAO8J,QAAQ+iB,MACvBqB,EAAW,CAAC,EAClBl8B,OAAO2D,KAAKk3B,GAAO/jC,SAAQqlC,IACzB,MAAMC,EAAWvB,EAAMsB,GACjBE,EAAgBD,EAAS/iC,aAAa,2BACxCgjC,GACFD,EAASjnC,aAAa,0BAA2BuJ,SAAS29B,EAAe,IAAMJ,GAEjFC,EAASx9B,SAASy9B,EAAa,IAAMF,GAAqBG,CAAQ,IAEpEpuB,EAAO8J,QAAQ+iB,MAAQqB,CACzB,CACArlB,GAAO,GACP7I,EAAOlW,QAAQioB,EAAgB,EACjC,EA2FEsX,YA1FF,SAAqBC,GACnB,GAAI,MAAOA,EAAyD,OACpE,IAAI//B,EAAcyW,EAAOzW,YACzB,GAAIZ,MAAM2L,QAAQg1B,GAChB,IAAK,IAAI31B,EAAI21B,EAAc/9B,OAAS,EAAGoI,GAAK,EAAGA,GAAK,EAC9CqM,EAAOM,OAAOwJ,QAAQ+iB,eACjB7sB,EAAO8J,QAAQ+iB,MAAMvD,EAAc31B,IAE1C3B,OAAO2D,KAAKqK,EAAO8J,QAAQ+iB,OAAO/jC,SAAQa,IACpCA,EAAM2/B,IACRtpB,EAAO8J,QAAQ+iB,MAAMljC,EAAM,GAAKqW,EAAO8J,QAAQ+iB,MAAMljC,GACrDqW,EAAO8J,QAAQ+iB,MAAMljC,EAAM,GAAGxC,aAAa,0BAA2BwC,EAAM,UACrEqW,EAAO8J,QAAQ+iB,MAAMljC,GAC9B,KAGJqW,EAAO8J,QAAQjhB,OAAO+d,OAAO0iB,EAAc31B,GAAI,GAC3C21B,EAAc31B,GAAKpK,IAAaA,GAAe,GACnDA,EAAcyX,KAAKC,IAAI1X,EAAa,QAGlCyW,EAAOM,OAAOwJ,QAAQ+iB,eACjB7sB,EAAO8J,QAAQ+iB,MAAMvD,GAE5Bt3B,OAAO2D,KAAKqK,EAAO8J,QAAQ+iB,OAAO/jC,SAAQa,IACpCA,EAAM2/B,IACRtpB,EAAO8J,QAAQ+iB,MAAMljC,EAAM,GAAKqW,EAAO8J,QAAQ+iB,MAAMljC,GACrDqW,EAAO8J,QAAQ+iB,MAAMljC,EAAM,GAAGxC,aAAa,0BAA2BwC,EAAM,UACrEqW,EAAO8J,QAAQ+iB,MAAMljC,GAC9B,KAGJqW,EAAO8J,QAAQjhB,OAAO+d,OAAO0iB,EAAe,GACxCA,EAAgB//B,IAAaA,GAAe,GAChDA,EAAcyX,KAAKC,IAAI1X,EAAa,GAEtCsf,GAAO,GACP7I,EAAOlW,QAAQP,EAAa,EAC9B,EAqDEigC,gBApDF,WACExpB,EAAO8J,QAAQjhB,OAAS,GACpBmX,EAAOM,OAAOwJ,QAAQ+iB,QACxB7sB,EAAO8J,QAAQ+iB,MAAQ,CAAC,GAE1BhkB,GAAO,GACP7I,EAAOlW,QAAQ,EAAG,EACpB,EA8CE+e,UAEJ,ECtVA,SAAkB9I,GAChB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,EAAE,KACFoe,GACE/G,EACJ,MAAM/a,EAAWsX,IACXxX,EAASyY,IAWf,SAAS+wB,EAAOngC,GACd,IAAK6R,EAAO+J,QAAS,OACrB,MACEL,aAAcC,GACZ3J,EACJ,IAAInY,EAAIsG,EACJtG,EAAEmxB,gBAAenxB,EAAIA,EAAEmxB,eAC3B,MAAMuV,EAAK1mC,EAAE2mC,SAAW3mC,EAAE4mC,SACpBC,EAAa1uB,EAAOM,OAAOquB,SAASD,WACpCE,EAAWF,GAAqB,KAAPH,EACzBM,EAAaH,GAAqB,KAAPH,EAC3BO,EAAqB,KAAPP,EACdQ,EAAsB,KAAPR,EACfS,EAAmB,KAAPT,EACZU,EAAqB,KAAPV,EAEpB,IAAKvuB,EAAO8T,iBAAmB9T,EAAOiJ,gBAAkB8lB,GAAgB/uB,EAAOkJ,cAAgB+lB,GAAeJ,GAC5G,OAAO,EAET,IAAK7uB,EAAO+T,iBAAmB/T,EAAOiJ,gBAAkB6lB,GAAe9uB,EAAOkJ,cAAgB8lB,GAAaJ,GACzG,OAAO,EAET,KAAI/mC,EAAEqnC,UAAYrnC,EAAEsnC,QAAUtnC,EAAEunC,SAAWvnC,EAAEwnC,SAGzCrqC,EAASuW,eAAiBvW,EAASuW,cAAcE,WAA+D,UAAlDzW,EAASuW,cAAcE,SAAS/E,eAA+E,aAAlD1R,EAASuW,cAAcE,SAAS/E,gBAA/J,CAGA,GAAIsJ,EAAOM,OAAOquB,SAASW,iBAAmBV,GAAYC,GAAcC,GAAeC,GAAgBC,GAAaC,GAAc,CAChI,IAAIM,GAAS,EAEb,GAAIvsB,EAAehD,EAAOtW,GAAI,IAAIsW,EAAOM,OAAOqH,4BAA4Bpc,OAAS,GAAgF,IAA3EyX,EAAehD,EAAOtW,GAAI,IAAIsW,EAAOM,OAAOoR,oBAAoBnmB,OACxJ,OAEF,MAAM7B,EAAKsW,EAAOtW,GACZ8lC,EAAc9lC,EAAGqf,YACjB0mB,EAAe/lC,EAAGsf,aAClB0mB,EAAc5qC,EAAOg0B,WACrB6W,EAAe7qC,EAAOs/B,YACtBwL,EAAevtB,EAAc3Y,GAC/BigB,IAAKimB,EAAav8B,MAAQ3J,EAAGgZ,YACjC,MAAMmtB,EAAc,CAAC,CAACD,EAAav8B,KAAMu8B,EAAatpC,KAAM,CAACspC,EAAav8B,KAAOm8B,EAAaI,EAAatpC,KAAM,CAACspC,EAAav8B,KAAMu8B,EAAatpC,IAAMmpC,GAAe,CAACG,EAAav8B,KAAOm8B,EAAaI,EAAatpC,IAAMmpC,IAC5N,IAAK,IAAI97B,EAAI,EAAGA,EAAIk8B,EAAYtkC,OAAQoI,GAAK,EAAG,CAC9C,MAAM2wB,EAAQuL,EAAYl8B,GAC1B,GAAI2wB,EAAM,IAAM,GAAKA,EAAM,IAAMoL,GAAepL,EAAM,IAAM,GAAKA,EAAM,IAAMqL,EAAc,CACzF,GAAiB,IAAbrL,EAAM,IAAyB,IAAbA,EAAM,GAAU,SACtCiL,GAAS,CACX,CACF,CACA,IAAKA,EAAQ,MACf,CACIvvB,EAAOiJ,iBACL2lB,GAAYC,GAAcC,GAAeC,KACvClnC,EAAE+B,eAAgB/B,EAAE+B,iBAAsB/B,EAAE2P,aAAc,KAE3Dq3B,GAAcE,KAAkBplB,IAAQilB,GAAYE,IAAgBnlB,IAAK3J,EAAOgV,cAChF4Z,GAAYE,KAAiBnlB,IAAQklB,GAAcE,IAAiBplB,IAAK3J,EAAOsV,eAEjFsZ,GAAYC,GAAcG,GAAaC,KACrCpnC,EAAE+B,eAAgB/B,EAAE+B,iBAAsB/B,EAAE2P,aAAc,IAE5Dq3B,GAAcI,IAAajvB,EAAOgV,aAClC4Z,GAAYI,IAAWhvB,EAAOsV,aAEpCxO,EAAK,WAAYynB,EArCjB,CAuCF,CACA,SAAS5K,IACH3jB,EAAO2uB,SAAS5kB,UACpB/kB,EAAS2B,iBAAiB,UAAW2nC,GACrCtuB,EAAO2uB,SAAS5kB,SAAU,EAC5B,CACA,SAAS2Z,IACF1jB,EAAO2uB,SAAS5kB,UACrB/kB,EAAS4I,oBAAoB,UAAW0gC,GACxCtuB,EAAO2uB,SAAS5kB,SAAU,EAC5B,CAtFA/J,EAAO2uB,SAAW,CAChB5kB,SAAS,GAEXgc,EAAa,CACX4I,SAAU,CACR5kB,SAAS,EACTulB,gBAAgB,EAChBZ,YAAY,KAgFhBhmC,EAAG,QAAQ,KACLsX,EAAOM,OAAOquB,SAAS5kB,SACzB4Z,GACF,IAEFj7B,EAAG,WAAW,KACRsX,EAAO2uB,SAAS5kB,SAClB2Z,GACF,IAEF1xB,OAAOmX,OAAOnJ,EAAO2uB,SAAU,CAC7BhL,SACAD,WAEJ,EC9GA,SAAoB3jB,GAClB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,EAAE,KACFoe,GACE/G,EACJ,MAAMjb,EAASyY,IAiBf,IAAIuyB,EAhBJ/J,EAAa,CACXgK,WAAY,CACVhmB,SAAS,EACTimB,gBAAgB,EAChBC,QAAQ,EACRC,aAAa,EACbC,YAAa,EACbC,aAAc,YACdC,eAAgB,KAChBC,cAAe,KACfC,kBAAmB,0BAGvBvwB,EAAO+vB,WAAa,CAClBhmB,SAAS,GAGX,IACIymB,EADAC,EAAiB7yB,IAErB,MAAM8yB,EAAoB,GAqE1B,SAASC,IACF3wB,EAAO+J,UACZ/J,EAAO4wB,cAAe,EACxB,CACA,SAASC,IACF7wB,EAAO+J,UACZ/J,EAAO4wB,cAAe,EACxB,CACA,SAASE,EAAcC,GACrB,QAAI/wB,EAAOM,OAAOyvB,WAAWM,gBAAkBU,EAASC,MAAQhxB,EAAOM,OAAOyvB,WAAWM,gBAIrFrwB,EAAOM,OAAOyvB,WAAWO,eAAiB1yB,IAAQ6yB,EAAiBzwB,EAAOM,OAAOyvB,WAAWO,iBAQ5FS,EAASC,OAAS,GAAKpzB,IAAQ6yB,EAAiB,MAgBhDM,EAAS1d,UAAY,EACjBrT,EAAOgQ,QAAShQ,EAAOM,OAAO/Z,MAAUyZ,EAAOyT,YACnDzT,EAAOgV,YACPlO,EAAK,SAAUiqB,EAASE,MAEfjxB,EAAO+P,cAAe/P,EAAOM,OAAO/Z,MAAUyZ,EAAOyT,YAChEzT,EAAOsV,YACPxO,EAAK,SAAUiqB,EAASE,MAG1BR,GAAiB,IAAI3rC,EAAOoY,MAAO4D,UAE5B,GACT,CAcA,SAASwtB,EAAOngC,GACd,IAAItG,EAAIsG,EACJ6vB,GAAsB,EAC1B,IAAKhe,EAAO+J,QAAS,OAGrB,GAAI5b,EAAM/I,OAAO0K,QAAQ,IAAIkQ,EAAOM,OAAOyvB,WAAWQ,qBAAsB,OAC5E,MAAMjwB,EAASN,EAAOM,OAAOyvB,WACzB/vB,EAAOM,OAAO6K,SAChBtjB,EAAE+B,iBAEJ,IAAI4vB,EAAWxZ,EAAOtW,GACwB,cAA1CsW,EAAOM,OAAOyvB,WAAWK,eAC3B5W,EAAWx0B,SAASoB,cAAc4Z,EAAOM,OAAOyvB,WAAWK,eAE7D,MAAMc,EAAyB1X,GAAYA,EAASxxB,SAASH,EAAEzC,QAC/D,IAAK4a,EAAO4wB,eAAiBM,IAA2B5wB,EAAO0vB,eAAgB,OAAO,EAClFnoC,EAAEmxB,gBAAenxB,EAAIA,EAAEmxB,eAC3B,IAAIgY,EAAQ,EACZ,MAAMG,EAAYnxB,EAAO0J,cAAgB,EAAI,EACvC3C,EAxJR,SAAmBlf,GAKjB,IAAIupC,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EAqDT,MAlDI,WAAY1pC,IACdwpC,EAAKxpC,EAAE41B,QAEL,eAAgB51B,IAClBwpC,GAAMxpC,EAAE2pC,WAAa,KAEnB,gBAAiB3pC,IACnBwpC,GAAMxpC,EAAE4pC,YAAc,KAEpB,gBAAiB5pC,IACnBupC,GAAMvpC,EAAE6pC,YAAc,KAIpB,SAAU7pC,GAAKA,EAAEiW,OAASjW,EAAE8pC,kBAC9BP,EAAKC,EACLA,EAAK,GAEPC,EA3BmB,GA2BdF,EACLG,EA5BmB,GA4BdF,EACD,WAAYxpC,IACd0pC,EAAK1pC,EAAE+pC,QAEL,WAAY/pC,IACdypC,EAAKzpC,EAAEgqC,QAELhqC,EAAEqnC,WAAaoC,IAEjBA,EAAKC,EACLA,EAAK,IAEFD,GAAMC,IAAO1pC,EAAEiqC,YACE,IAAhBjqC,EAAEiqC,WAEJR,GA1CgB,GA2ChBC,GA3CgB,KA8ChBD,GA7CgB,IA8ChBC,GA9CgB,MAmDhBD,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEjBC,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEd,CACLQ,MAAOX,EACPY,MAAOX,EACPY,OAAQX,EACRY,OAAQX,EAEZ,CAqFehc,CAAU1tB,GACvB,GAAIyY,EAAO4vB,YACT,GAAIlwB,EAAOiJ,eAAgB,CACzB,KAAIjI,KAAK6C,IAAIkD,EAAKkrB,QAAUjxB,KAAK6C,IAAIkD,EAAKmrB,SAA+C,OAAO,EAA7ClB,GAASjqB,EAAKkrB,OAASd,CAC5E,KAAO,MAAInwB,KAAK6C,IAAIkD,EAAKmrB,QAAUlxB,KAAK6C,IAAIkD,EAAKkrB,SAAmC,OAAO,EAAjCjB,GAASjqB,EAAKmrB,MAAuB,MAE/FlB,EAAQhwB,KAAK6C,IAAIkD,EAAKkrB,QAAUjxB,KAAK6C,IAAIkD,EAAKmrB,SAAWnrB,EAAKkrB,OAASd,GAAapqB,EAAKmrB,OAE3F,GAAc,IAAVlB,EAAa,OAAO,EACpB1wB,EAAO2vB,SAAQe,GAASA,GAG5B,IAAImB,EAAYnyB,EAAOnC,eAAiBmzB,EAAQ1wB,EAAO6vB,YAavD,GAZIgC,GAAanyB,EAAOkP,iBAAgBijB,EAAYnyB,EAAOkP,gBACvDijB,GAAanyB,EAAO8P,iBAAgBqiB,EAAYnyB,EAAO8P,gBAS3DkO,IAAsBhe,EAAOM,OAAO/Z,QAAgB4rC,IAAcnyB,EAAOkP,gBAAkBijB,IAAcnyB,EAAO8P,gBAC5GkO,GAAuBhe,EAAOM,OAAOyc,QAAQl1B,EAAEuG,kBAC9C4R,EAAOM,OAAOyb,UAAa/b,EAAOM,OAAOyb,SAAShS,QAoChD,CAOL,MAAMgnB,EAAW,CACfvqC,KAAMoX,IACNozB,MAAOhwB,KAAK6C,IAAImtB,GAChB3d,UAAWrS,KAAKoxB,KAAKpB,IAEjBqB,EAAoB7B,GAAuBO,EAASvqC,KAAOgqC,EAAoBhqC,KAAO,KAAOuqC,EAASC,OAASR,EAAoBQ,OAASD,EAAS1d,YAAcmd,EAAoBnd,UAC7L,IAAKgf,EAAmB,CACtB7B,OAAsB9+B,EACtB,IAAI4gC,EAAWtyB,EAAOnC,eAAiBmzB,EAAQ1wB,EAAO6vB,YACtD,MAAMjgB,EAAelQ,EAAO+P,YACtBI,EAASnQ,EAAOgQ,MAiBtB,GAhBIsiB,GAAYtyB,EAAOkP,iBAAgBojB,EAAWtyB,EAAOkP,gBACrDojB,GAAYtyB,EAAO8P,iBAAgBwiB,EAAWtyB,EAAO8P,gBACzD9P,EAAOmO,cAAc,GACrBnO,EAAOgU,aAAase,GACpBtyB,EAAO2P,iBACP3P,EAAO8R,oBACP9R,EAAO6Q,wBACFX,GAAgBlQ,EAAO+P,cAAgBI,GAAUnQ,EAAOgQ,QAC3DhQ,EAAO6Q,sBAEL7Q,EAAOM,OAAO/Z,MAChByZ,EAAO8U,QAAQ,CACbzB,UAAW0d,EAAS1d,UAAY,EAAI,OAAS,OAC7C2D,cAAc,IAGdhX,EAAOM,OAAOyb,SAASwW,OAAQ,CAYjCn1B,aAAa0yB,GACbA,OAAUp+B,EACNg/B,EAAkBnlC,QAAU,IAC9BmlC,EAAkBvY,QAGpB,MAAMqa,EAAY9B,EAAkBnlC,OAASmlC,EAAkBA,EAAkBnlC,OAAS,QAAKmG,EACzF+gC,EAAa/B,EAAkB,GAErC,GADAA,EAAkB5uB,KAAKivB,GACnByB,IAAczB,EAASC,MAAQwB,EAAUxB,OAASD,EAAS1d,YAAcmf,EAAUnf,WAErFqd,EAAkB9pB,OAAO,QACpB,GAAI8pB,EAAkBnlC,QAAU,IAAMwlC,EAASvqC,KAAOisC,EAAWjsC,KAAO,KAAOisC,EAAWzB,MAAQD,EAASC,OAAS,GAAKD,EAASC,OAAS,EAAG,CAOnJ,MAAM0B,EAAkB1B,EAAQ,EAAI,GAAM,GAC1CR,EAAsBO,EACtBL,EAAkB9pB,OAAO,GACzBkpB,EAAUnyB,GAAS,MACbqC,EAAOgG,WAAchG,EAAOM,QAChCN,EAAO+V,eAAe/V,EAAOM,OAAOhY,OAAO,OAAMoJ,EAAWghC,EAAgB,GAC3E,EACL,CAEK5C,IAIHA,EAAUnyB,GAAS,MACbqC,EAAOgG,WAAchG,EAAOM,SAEhCkwB,EAAsBO,EACtBL,EAAkB9pB,OAAO,GACzB5G,EAAO+V,eAAe/V,EAAOM,OAAOhY,OAAO,OAAMoJ,EAHzB,IAGoD,GAC3E,KAEP,CAQA,GALK2gC,GAAmBvrB,EAAK,SAAUjf,GAGnCmY,EAAOM,OAAO/X,UAAYyX,EAAOM,OAAOqyB,8BAA8B3yB,EAAOzX,SAASqqC,OAEtFtyB,EAAO0vB,iBAAmBsC,IAAatyB,EAAOkP,gBAAkBojB,IAAatyB,EAAO8P,gBACtF,OAAO,CAEX,CACF,KAtIgE,CAE9D,MAAMihB,EAAW,CACfvqC,KAAMoX,IACNozB,MAAOhwB,KAAK6C,IAAImtB,GAChB3d,UAAWrS,KAAKoxB,KAAKpB,GACrBC,IAAK9iC,GAIHuiC,EAAkBnlC,QAAU,GAC9BmlC,EAAkBvY,QAGpB,MAAMqa,EAAY9B,EAAkBnlC,OAASmlC,EAAkBA,EAAkBnlC,OAAS,QAAKmG,EAmB/F,GAlBAg/B,EAAkB5uB,KAAKivB,GAQnByB,GACEzB,EAAS1d,YAAcmf,EAAUnf,WAAa0d,EAASC,MAAQwB,EAAUxB,OAASD,EAASvqC,KAAOgsC,EAAUhsC,KAAO,MACrHsqC,EAAcC,GAGhBD,EAAcC,GAtFpB,SAAuBA,GACrB,MAAMzwB,EAASN,EAAOM,OAAOyvB,WAC7B,GAAIgB,EAAS1d,UAAY,GACvB,GAAIrT,EAAOgQ,QAAUhQ,EAAOM,OAAO/Z,MAAQ+Z,EAAO0vB,eAEhD,OAAO,OAEJ,GAAIhwB,EAAO+P,cAAgB/P,EAAOM,OAAO/Z,MAAQ+Z,EAAO0vB,eAE7D,OAAO,EAET,OAAO,CACT,CA+EQ6C,CAAc9B,GAChB,OAAO,CAEX,CAoGA,OADIlpC,EAAE+B,eAAgB/B,EAAE+B,iBAAsB/B,EAAE2P,aAAc,GACvD,CACT,CACA,SAASmO,EAAOM,GACd,IAAIuT,EAAWxZ,EAAOtW,GACwB,cAA1CsW,EAAOM,OAAOyvB,WAAWK,eAC3B5W,EAAWx0B,SAASoB,cAAc4Z,EAAOM,OAAOyvB,WAAWK,eAE7D5W,EAASvT,GAAQ,aAAc0qB,GAC/BnX,EAASvT,GAAQ,aAAc4qB,GAC/BrX,EAASvT,GAAQ,QAASqoB,EAC5B,CACA,SAAS3K,IACP,OAAI3jB,EAAOM,OAAO6K,SAChBnL,EAAOO,UAAU3S,oBAAoB,QAAS0gC,IACvC,IAELtuB,EAAO+vB,WAAWhmB,UACtBpE,EAAO,oBACP3F,EAAO+vB,WAAWhmB,SAAU,GACrB,EACT,CACA,SAAS2Z,IACP,OAAI1jB,EAAOM,OAAO6K,SAChBnL,EAAOO,UAAU5Z,iBAAiBwH,MAAOmgC,IAClC,KAEJtuB,EAAO+vB,WAAWhmB,UACvBpE,EAAO,uBACP3F,EAAO+vB,WAAWhmB,SAAU,GACrB,EACT,CACArhB,EAAG,QAAQ,MACJsX,EAAOM,OAAOyvB,WAAWhmB,SAAW/J,EAAOM,OAAO6K,SACrDuY,IAEE1jB,EAAOM,OAAOyvB,WAAWhmB,SAAS4Z,GAAQ,IAEhDj7B,EAAG,WAAW,KACRsX,EAAOM,OAAO6K,SAChBwY,IAEE3jB,EAAO+vB,WAAWhmB,SAAS2Z,GAAS,IAE1C1xB,OAAOmX,OAAOnJ,EAAO+vB,WAAY,CAC/BpM,SACAD,WAEJ,ECrYA,SAAoB3jB,GAClB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,EAAE,KACFoe,GACE/G,EAgBJ,SAAS+yB,EAAMppC,GACb,IAAIqpC,EACJ,OAAIrpC,GAAoB,iBAAPA,GAAmBsW,EAAO0H,YACzCqrB,EAAM/yB,EAAOtW,GAAGtD,cAAcsD,IAAOsW,EAAO6nB,OAAOzhC,cAAcsD,GAC7DqpC,GAAYA,GAEdrpC,IACgB,iBAAPA,IAAiBqpC,EAAM,IAAI/tC,SAASmE,iBAAiBO,KAC5DsW,EAAOM,OAAO8gB,mBAAmC,iBAAP13B,GAAmBqpC,GAAOA,EAAIxnC,OAAS,GAA+C,IAA1CyU,EAAOtW,GAAGP,iBAAiBO,GAAI6B,OACvHwnC,EAAM/yB,EAAOtW,GAAGtD,cAAcsD,GACrBqpC,GAAsB,IAAfA,EAAIxnC,SACpBwnC,EAAMA,EAAI,KAGVrpC,IAAOqpC,EAAYrpC,EAEhBqpC,EACT,CACA,SAASC,EAAStpC,EAAIupC,GACpB,MAAM3yB,EAASN,EAAOM,OAAOlW,YAC7BV,EAAKga,GAAkBha,IACpBZ,SAAQoqC,IACLA,IACFA,EAAM9rC,UAAU6rC,EAAW,MAAQ,aAAa3yB,EAAOjW,cAAc6I,MAAM,MACrD,WAAlBggC,EAAMllC,UAAsBklC,EAAMD,SAAWA,GAC7CjzB,EAAOM,OAAOkN,eAAiBxN,EAAO+J,SACxCmpB,EAAM9rC,UAAU4Y,EAAOuiB,SAAW,MAAQ,UAAUjiB,EAAO/V,WAE/D,GAEJ,CACA,SAASse,IAEP,MAAM,OACJre,EAAM,OACNC,GACEuV,EAAO5V,WACX,GAAI4V,EAAOM,OAAO/Z,KAGhB,OAFAysC,EAASvoC,GAAQ,QACjBuoC,EAASxoC,GAAQ,GAGnBwoC,EAASvoC,EAAQuV,EAAO+P,cAAgB/P,EAAOM,OAAOsI,QACtDoqB,EAASxoC,EAAQwV,EAAOgQ,QAAUhQ,EAAOM,OAAOsI,OAClD,CACA,SAASuqB,EAAYtrC,GACnBA,EAAE+B,mBACEoW,EAAO+P,aAAgB/P,EAAOM,OAAO/Z,MAASyZ,EAAOM,OAAOsI,UAChE5I,EAAOsV,YACPxO,EAAK,kBACP,CACA,SAASssB,EAAYvrC,GACnBA,EAAE+B,mBACEoW,EAAOgQ,OAAUhQ,EAAOM,OAAO/Z,MAASyZ,EAAOM,OAAOsI,UAC1D5I,EAAOgV,YACPlO,EAAK,kBACP,CACA,SAASrf,IACP,MAAM6Y,EAASN,EAAOM,OAAOlW,WAK7B,GAJA4V,EAAOM,OAAOlW,WAAao+B,GAA0BxoB,EAAQA,EAAOijB,eAAe74B,WAAY4V,EAAOM,OAAOlW,WAAY,CACvHI,OAAQ,qBACRC,OAAQ,wBAEJ6V,EAAO9V,SAAU8V,EAAO7V,OAAS,OACvC,IAAID,EAASsoC,EAAMxyB,EAAO9V,QACtBC,EAASqoC,EAAMxyB,EAAO7V,QAC1BuH,OAAOmX,OAAOnJ,EAAO5V,WAAY,CAC/BI,SACAC,WAEFD,EAASkZ,GAAkBlZ,GAC3BC,EAASiZ,GAAkBjZ,GAC3B,MAAM4oC,EAAa,CAAC3pC,EAAIgX,KAClBhX,GACFA,EAAG/C,iBAAiB,QAAiB,SAAR+Z,EAAiB0yB,EAAcD,IAEzDnzB,EAAO+J,SAAWrgB,GACrBA,EAAGtC,UAAUC,OAAOiZ,EAAO/V,UAAU2I,MAAM,KAC7C,EAEF1I,EAAO1B,SAAQY,GAAM2pC,EAAW3pC,EAAI,UACpCe,EAAO3B,SAAQY,GAAM2pC,EAAW3pC,EAAI,SACtC,CACA,SAASq+B,IACP,IAAI,OACFv9B,EAAM,OACNC,GACEuV,EAAO5V,WACXI,EAASkZ,GAAkBlZ,GAC3BC,EAASiZ,GAAkBjZ,GAC3B,MAAM6oC,EAAgB,CAAC5pC,EAAIgX,KACzBhX,EAAGkE,oBAAoB,QAAiB,SAAR8S,EAAiB0yB,EAAcD,GAC/DzpC,EAAGtC,UAAUW,UAAUiY,EAAOM,OAAOlW,WAAWC,cAAc6I,MAAM,KAAK,EAE3E1I,EAAO1B,SAAQY,GAAM4pC,EAAc5pC,EAAI,UACvCe,EAAO3B,SAAQY,GAAM4pC,EAAc5pC,EAAI,SACzC,CA/GAq8B,EAAa,CACX37B,WAAY,CACVI,OAAQ,KACRC,OAAQ,KACR8oC,aAAa,EACblpC,cAAe,yBACfC,YAAa,uBACbC,UAAW,qBACXipC,wBAAyB,gCAG7BxzB,EAAO5V,WAAa,CAClBI,OAAQ,KACRC,OAAQ,MAmGV/B,EAAG,QAAQ,MACgC,IAArCsX,EAAOM,OAAOlW,WAAW2f,QAE3B2Z,KAEAj8B,IACAohB,IACF,IAEFngB,EAAG,+BAA+B,KAChCmgB,GAAQ,IAEVngB,EAAG,WAAW,KACZq/B,GAAS,IAEXr/B,EAAG,kBAAkB,KACnB,IAAI,OACF8B,EAAM,OACNC,GACEuV,EAAO5V,WACXI,EAASkZ,GAAkBlZ,GAC3BC,EAASiZ,GAAkBjZ,GACvBuV,EAAO+J,QACTlB,IAGF,IAAIre,KAAWC,GAAQ+N,QAAO9O,KAAQA,IAAIZ,SAAQY,GAAMA,EAAGtC,UAAUC,IAAI2Y,EAAOM,OAAOlW,WAAWG,YAAW,IAE/G7B,EAAG,SAAS,CAACshC,EAAIniC,KACf,IAAI,OACF2C,EAAM,OACNC,GACEuV,EAAO5V,WACXI,EAASkZ,GAAkBlZ,GAC3BC,EAASiZ,GAAkBjZ,GAC3B,MAAM+uB,EAAW3xB,EAAEzC,OACnB,IAAIquC,EAAiBhpC,EAAO2G,SAASooB,IAAahvB,EAAO4G,SAASooB,GAClE,GAAIxZ,EAAO0H,YAAc+rB,EAAgB,CACvC,MAAM5gB,EAAOhrB,EAAEgrB,MAAQhrB,EAAEsyB,cAAgBtyB,EAAEsyB,eACvCtH,IACF4gB,EAAiB5gB,EAAK6gB,MAAK5gB,GAAUtoB,EAAO4G,SAAS0hB,IAAWroB,EAAO2G,SAAS0hB,KAEpF,CACA,GAAI9S,EAAOM,OAAOlW,WAAWmpC,cAAgBE,EAAgB,CAC3D,GAAIzzB,EAAOtV,YAAcsV,EAAOM,OAAO5V,YAAcsV,EAAOM,OAAO5V,WAAWipC,YAAc3zB,EAAOtV,WAAWhB,KAAO8vB,GAAYxZ,EAAOtV,WAAWhB,GAAG1B,SAASwxB,IAAY,OAC3K,IAAIoa,EACAppC,EAAOe,OACTqoC,EAAWppC,EAAO,GAAGpD,UAAUY,SAASgY,EAAOM,OAAOlW,WAAWE,aACxDG,EAAOc,SAChBqoC,EAAWnpC,EAAO,GAAGrD,UAAUY,SAASgY,EAAOM,OAAOlW,WAAWE,cAGjEwc,GADe,IAAb8sB,EACG,iBAEA,kBAEP,IAAIppC,KAAWC,GAAQ+N,QAAO9O,KAAQA,IAAIZ,SAAQY,GAAMA,EAAGtC,UAAUU,OAAOkY,EAAOM,OAAOlW,WAAWE,cACvG,KAEF,MAKMo5B,EAAU,KACd1jB,EAAOtW,GAAGtC,UAAUC,OAAO2Y,EAAOM,OAAOlW,WAAWopC,wBAAwBtgC,MAAM,MAClF60B,GAAS,EAEX/1B,OAAOmX,OAAOnJ,EAAO5V,WAAY,CAC/Bu5B,OAVa,KACb3jB,EAAOtW,GAAGtC,UAAUW,UAAUiY,EAAOM,OAAOlW,WAAWopC,wBAAwBtgC,MAAM,MACrFzL,IACAohB,GAAQ,EAQR6a,UACA7a,SACAphB,OACAsgC,WAEJ,ECjMA,SAAoBhoB,GAClB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,EAAE,KACFoe,GACE/G,EACJ,MAAM8zB,EAAM,oBAqCZ,IAAIC,EApCJ/N,EAAa,CACXr7B,WAAY,CACVhB,GAAI,KACJqqC,cAAe,OACfJ,WAAW,EACXJ,aAAa,EACbS,aAAc,KACdC,kBAAmB,KACnBC,eAAgB,KAChBC,aAAc,KACdC,qBAAqB,EACrBvpC,KAAM,UAENwpC,gBAAgB,EAChBC,mBAAoB,EACpBC,sBAAuBC,GAAUA,EACjCC,oBAAqBD,GAAUA,EAC/BE,YAAa,GAAGb,WAChBc,kBAAmB,GAAGd,kBACtBlpC,cAAe,GAAGkpC,KAClBe,aAAc,GAAGf,YACjBgB,WAAY,GAAGhB,UACfvpC,YAAa,GAAGupC,WAChBjpC,qBAAsB,GAAGipC,qBACzBiB,yBAA0B,GAAGjB,yBAC7BkB,eAAgB,GAAGlB,cACnBtpC,UAAW,GAAGspC,SACdmB,gBAAiB,GAAGnB,eACpBoB,cAAe,GAAGpB,aAClBqB,wBAAyB,GAAGrB,gBAGhC7zB,EAAOtV,WAAa,CAClBhB,GAAI,KACJyrC,QAAS,IAGX,IAAIC,EAAqB,EACzB,SAASC,IACP,OAAQr1B,EAAOM,OAAO5V,WAAWhB,KAAOsW,EAAOtV,WAAWhB,IAAMf,MAAM2L,QAAQ0L,EAAOtV,WAAWhB,KAAuC,IAAhCsW,EAAOtV,WAAWhB,GAAG6B,MAC9H,CACA,SAAS+pC,EAAeC,EAAUjD,GAChC,MAAM,kBACJqC,GACE30B,EAAOM,OAAO5V,WACb6qC,IACLA,EAAWA,GAAyB,SAAbjD,EAAsB,WAAa,QAAtC,qBAElBiD,EAASnuC,UAAUC,IAAI,GAAGstC,KAAqBrC,MAC/CiD,EAAWA,GAAyB,SAAbjD,EAAsB,WAAa,QAAtC,oBAElBiD,EAASnuC,UAAUC,IAAI,GAAGstC,KAAqBrC,KAAYA,KAGjE,CAWA,SAASkD,EAAc3tC,GACrB,MAAM0tC,EAAW1tC,EAAEzC,OAAO0K,QAAQ44B,GAAkB1oB,EAAOM,OAAO5V,WAAWgqC,cAC7E,IAAKa,EACH,OAEF1tC,EAAE+B,iBACF,MAAMwO,EAAQyK,EAAa0yB,GAAYv1B,EAAOM,OAAO6L,eACrD,GAAInM,EAAOM,OAAO/Z,KAAM,CACtB,GAAIyZ,EAAOxW,YAAc4O,EAAO,OAChC,MAAMq9B,GAnBgB7f,EAmBiB5V,EAAOxW,UAnBb8V,EAmBwBlH,GAjB3DkH,GAF8C/T,EAmBoByU,EAAOnX,OAAO0C,SAhBlD,GAF9BqqB,GAAwBrqB,GAGf,OACE+T,IAAcsW,EAAY,EAC5B,gBADF,GAeiB,SAAlB6f,EACFz1B,EAAOgV,YACoB,aAAlBygB,EACTz1B,EAAOsV,YAEPtV,EAAOyU,YAAYrc,EAEvB,MACE4H,EAAOlW,QAAQsO,GA5BnB,IAA0Bwd,EAAWtW,EAAW/T,CA8BhD,CACA,SAASsd,IAEP,MAAMc,EAAM3J,EAAO2J,IACbrJ,EAASN,EAAOM,OAAO5V,WAC7B,GAAI2qC,IAAwB,OAC5B,IAGIz0B,EACAoR,EAJAtoB,EAAKsW,EAAOtV,WAAWhB,GAC3BA,EAAKga,GAAkBha,GAIvB,MAAMugB,EAAejK,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAAU/J,EAAO8J,QAAQjhB,OAAO0C,OAASyU,EAAOnX,OAAO0C,OAC9GmqC,EAAQ11B,EAAOM,OAAO/Z,KAAOya,KAAKoH,KAAK6B,EAAejK,EAAOM,OAAO6L,gBAAkBnM,EAAOkK,SAAS3e,OAY5G,GAXIyU,EAAOM,OAAO/Z,MAChByrB,EAAgBhS,EAAOiS,mBAAqB,EAC5CrR,EAAUZ,EAAOM,OAAO6L,eAAiB,EAAInL,KAAKiL,MAAMjM,EAAOxW,UAAYwW,EAAOM,OAAO6L,gBAAkBnM,EAAOxW,gBAC7E,IAArBwW,EAAOqN,WACvBzM,EAAUZ,EAAOqN,UACjB2E,EAAgBhS,EAAOkS,oBAEvBF,EAAgBhS,EAAOgS,eAAiB,EACxCpR,EAAUZ,EAAOzW,aAAe,GAGd,YAAhB+W,EAAOzV,MAAsBmV,EAAOtV,WAAWyqC,SAAWn1B,EAAOtV,WAAWyqC,QAAQ5pC,OAAS,EAAG,CAClG,MAAM4pC,EAAUn1B,EAAOtV,WAAWyqC,QAClC,IAAIQ,EACA9f,EACA+f,EAsBJ,GArBIt1B,EAAO+zB,iBACTP,EAAaxwB,EAAiB6xB,EAAQ,GAAIn1B,EAAOiJ,eAAiB,QAAU,UAAU,GACtFvf,EAAGZ,SAAQoqC,IACTA,EAAMjnC,MAAM+T,EAAOiJ,eAAiB,QAAU,UAAe6qB,GAAcxzB,EAAOg0B,mBAAqB,GAA7C,IAAmD,IAE3Gh0B,EAAOg0B,mBAAqB,QAAuB5iC,IAAlBsgB,IACnCojB,GAAsBx0B,GAAWoR,GAAiB,GAC9CojB,EAAqB90B,EAAOg0B,mBAAqB,EACnDc,EAAqB90B,EAAOg0B,mBAAqB,EACxCc,EAAqB,IAC9BA,EAAqB,IAGzBO,EAAa30B,KAAKC,IAAIL,EAAUw0B,EAAoB,GACpDvf,EAAY8f,GAAc30B,KAAKE,IAAIi0B,EAAQ5pC,OAAQ+U,EAAOg0B,oBAAsB,GAChFsB,GAAY/f,EAAY8f,GAAc,GAExCR,EAAQrsC,SAAQysC,IACd,MAAMM,EAAkB,IAAI,CAAC,GAAI,QAAS,aAAc,QAAS,aAAc,SAAS3/B,KAAI40B,GAAU,GAAGxqB,EAAOq0B,oBAAoB7J,OAAW50B,KAAI4/B,GAAkB,iBAANA,GAAkBA,EAAE1kC,SAAS,KAAO0kC,EAAE5iC,MAAM,KAAO4iC,IAAGx+B,OACrNi+B,EAASnuC,UAAUW,UAAU8tC,EAAgB,IAE3CnsC,EAAG6B,OAAS,EACd4pC,EAAQrsC,SAAQitC,IACd,MAAMC,EAAcnzB,EAAakzB,GAC7BC,IAAgBp1B,EAClBm1B,EAAO3uC,UAAUC,OAAOiZ,EAAOq0B,kBAAkBzhC,MAAM,MAC9C8M,EAAO0H,WAChBquB,EAAO5uC,aAAa,OAAQ,UAE1BmZ,EAAO+zB,iBACL2B,GAAeL,GAAcK,GAAengB,GAC9CkgB,EAAO3uC,UAAUC,OAAO,GAAGiZ,EAAOq0B,yBAAyBzhC,MAAM,MAE/D8iC,IAAgBL,GAClBL,EAAeS,EAAQ,QAErBC,IAAgBngB,GAClByf,EAAeS,EAAQ,QAE3B,QAEG,CACL,MAAMA,EAASZ,EAAQv0B,GASvB,GARIm1B,GACFA,EAAO3uC,UAAUC,OAAOiZ,EAAOq0B,kBAAkBzhC,MAAM,MAErD8M,EAAO0H,WACTytB,EAAQrsC,SAAQ,CAACysC,EAAUS,KACzBT,EAASpuC,aAAa,OAAQ6uC,IAAgBp1B,EAAU,gBAAkB,SAAS,IAGnFN,EAAO+zB,eAAgB,CACzB,MAAM4B,EAAuBd,EAAQQ,GAC/BO,EAAsBf,EAAQtf,GACpC,IAAK,IAAIliB,EAAIgiC,EAAYhiC,GAAKkiB,EAAWliB,GAAK,EACxCwhC,EAAQxhC,IACVwhC,EAAQxhC,GAAGvM,UAAUC,OAAO,GAAGiZ,EAAOq0B,yBAAyBzhC,MAAM,MAGzEoiC,EAAeW,EAAsB,QACrCX,EAAeY,EAAqB,OACtC,CACF,CACA,GAAI51B,EAAO+zB,eAAgB,CACzB,MAAM8B,EAAuBn1B,KAAKE,IAAIi0B,EAAQ5pC,OAAQ+U,EAAOg0B,mBAAqB,GAC5E8B,GAAiBtC,EAAaqC,EAAuBrC,GAAc,EAAI8B,EAAW9B,EAClFrG,EAAa9jB,EAAM,QAAU,OACnCwrB,EAAQrsC,SAAQitC,IACdA,EAAO9pC,MAAM+T,EAAOiJ,eAAiBwkB,EAAa,OAAS,GAAG2I,KAAiB,GAEnF,CACF,CACA1sC,EAAGZ,SAAQ,CAACoqC,EAAOmD,KASjB,GARoB,aAAhB/1B,EAAOzV,OACTqoC,EAAM/pC,iBAAiBu/B,GAAkBpoB,EAAOs0B,eAAe9rC,SAAQwtC,IACrEA,EAAWjnC,YAAciR,EAAOi0B,sBAAsB3zB,EAAU,EAAE,IAEpEsyB,EAAM/pC,iBAAiBu/B,GAAkBpoB,EAAOu0B,aAAa/rC,SAAQytC,IACnEA,EAAQlnC,YAAciR,EAAOm0B,oBAAoBiB,EAAM,KAGvC,gBAAhBp1B,EAAOzV,KAAwB,CACjC,IAAI2rC,EAEFA,EADEl2B,EAAO8zB,oBACcp0B,EAAOiJ,eAAiB,WAAa,aAErCjJ,EAAOiJ,eAAiB,aAAe,WAEhE,MAAMwtB,GAAS71B,EAAU,GAAK80B,EAC9B,IAAIgB,EAAS,EACTC,EAAS,EACgB,eAAzBH,EACFE,EAASD,EAETE,EAASF,EAEXvD,EAAM/pC,iBAAiBu/B,GAAkBpoB,EAAO1V,uBAAuB9B,SAAQ8tC,IAC7EA,EAAW3qC,MAAMoS,UAAY,6BAA6Bq4B,aAAkBC,KAC5EC,EAAW3qC,MAAMm2B,mBAAqB,GAAGpiB,EAAOM,OAAOhY,SAAS,GAEpE,CACoB,WAAhBgY,EAAOzV,MAAqByV,EAAO6zB,cACrCjB,EAAMrnC,UAAYyU,EAAO6zB,aAAan0B,EAAQY,EAAU,EAAG80B,GACxC,IAAfW,GAAkBvvB,EAAK,mBAAoBosB,KAE5B,IAAfmD,GAAkBvvB,EAAK,mBAAoBosB,GAC/CpsB,EAAK,mBAAoBosB,IAEvBlzB,EAAOM,OAAOkN,eAAiBxN,EAAO+J,SACxCmpB,EAAM9rC,UAAU4Y,EAAOuiB,SAAW,MAAQ,UAAUjiB,EAAO/V,UAC7D,GAEJ,CACA,SAASssC,IAEP,MAAMv2B,EAASN,EAAOM,OAAO5V,WAC7B,GAAI2qC,IAAwB,OAC5B,MAAMprB,EAAejK,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAAU/J,EAAO8J,QAAQjhB,OAAO0C,OAASyU,EAAOqI,MAAQrI,EAAOM,OAAO+H,KAAKC,KAAO,EAAItI,EAAOnX,OAAO0C,OAASyV,KAAKoH,KAAKpI,EAAOM,OAAO+H,KAAKC,MAAQtI,EAAOnX,OAAO0C,OAC7N,IAAI7B,EAAKsW,EAAOtV,WAAWhB,GAC3BA,EAAKga,GAAkBha,GACvB,IAAIotC,EAAiB,GACrB,GAAoB,YAAhBx2B,EAAOzV,KAAoB,CAC7B,IAAIksC,EAAkB/2B,EAAOM,OAAO/Z,KAAOya,KAAKoH,KAAK6B,EAAejK,EAAOM,OAAO6L,gBAAkBnM,EAAOkK,SAAS3e,OAChHyU,EAAOM,OAAOyb,UAAY/b,EAAOM,OAAOyb,SAAShS,SAAWgtB,EAAkB9sB,IAChF8sB,EAAkB9sB,GAEpB,IAAK,IAAItW,EAAI,EAAGA,EAAIojC,EAAiBpjC,GAAK,EACpC2M,EAAO0zB,aACT8C,GAAkBx2B,EAAO0zB,aAAa9oC,KAAK8U,EAAQrM,EAAG2M,EAAOo0B,aAG7DoC,GAAkB,IAAIx2B,EAAOyzB,iBAAiB/zB,EAAO0H,UAAY,gBAAkB,aAAapH,EAAOo0B,kBAAkBp0B,EAAOyzB,gBAGtI,CACoB,aAAhBzzB,EAAOzV,OAEPisC,EADEx2B,EAAO4zB,eACQ5zB,EAAO4zB,eAAehpC,KAAK8U,EAAQM,EAAOs0B,aAAct0B,EAAOu0B,YAE/D,gBAAgBv0B,EAAOs0B,wCAAkDt0B,EAAOu0B,uBAGjF,gBAAhBv0B,EAAOzV,OAEPisC,EADEx2B,EAAO2zB,kBACQ3zB,EAAO2zB,kBAAkB/oC,KAAK8U,EAAQM,EAAO1V,sBAE7C,gBAAgB0V,EAAO1V,iCAG5CoV,EAAOtV,WAAWyqC,QAAU,GAC5BzrC,EAAGZ,SAAQoqC,IACW,WAAhB5yB,EAAOzV,OACTqoC,EAAMrnC,UAAYirC,GAAkB,IAElB,YAAhBx2B,EAAOzV,MACTmV,EAAOtV,WAAWyqC,QAAQrzB,QAAQoxB,EAAM/pC,iBAAiBu/B,GAAkBpoB,EAAOo0B,cACpF,IAEkB,WAAhBp0B,EAAOzV,MACTic,EAAK,mBAAoBpd,EAAG,GAEhC,CACA,SAASjC,IACPuY,EAAOM,OAAO5V,WAAa89B,GAA0BxoB,EAAQA,EAAOijB,eAAev4B,WAAYsV,EAAOM,OAAO5V,WAAY,CACvHhB,GAAI,sBAEN,MAAM4W,EAASN,EAAOM,OAAO5V,WAC7B,IAAK4V,EAAO5W,GAAI,OAChB,IAAIA,EACqB,iBAAd4W,EAAO5W,IAAmBsW,EAAO0H,YAC1Che,EAAKsW,EAAOtW,GAAGtD,cAAcka,EAAO5W,KAEjCA,GAA2B,iBAAd4W,EAAO5W,KACvBA,EAAK,IAAI1E,SAASmE,iBAAiBmX,EAAO5W,MAEvCA,IACHA,EAAK4W,EAAO5W,IAETA,GAAoB,IAAdA,EAAG6B,SACVyU,EAAOM,OAAO8gB,mBAA0C,iBAAd9gB,EAAO5W,IAAmBf,MAAM2L,QAAQ5K,IAAOA,EAAG6B,OAAS,IACvG7B,EAAK,IAAIsW,EAAOtW,GAAGP,iBAAiBmX,EAAO5W,KAEvCA,EAAG6B,OAAS,IACd7B,EAAKA,EAAG8O,QAAO06B,GACTlwB,EAAekwB,EAAO,WAAW,KAAOlzB,EAAOtW,KAElD,KAGHf,MAAM2L,QAAQ5K,IAAqB,IAAdA,EAAG6B,SAAc7B,EAAKA,EAAG,IAClDsI,OAAOmX,OAAOnJ,EAAOtV,WAAY,CAC/BhB,OAEFA,EAAKga,GAAkBha,GACvBA,EAAGZ,SAAQoqC,IACW,YAAhB5yB,EAAOzV,MAAsByV,EAAOqzB,WACtCT,EAAM9rC,UAAUC,QAAQiZ,EAAOy0B,gBAAkB,IAAI7hC,MAAM,MAE7DggC,EAAM9rC,UAAUC,IAAIiZ,EAAO3V,cAAgB2V,EAAOzV,MAClDqoC,EAAM9rC,UAAUC,IAAI2Y,EAAOiJ,eAAiB3I,EAAO00B,gBAAkB10B,EAAO20B,eACxD,YAAhB30B,EAAOzV,MAAsByV,EAAO+zB,iBACtCnB,EAAM9rC,UAAUC,IAAI,GAAGiZ,EAAO3V,gBAAgB2V,EAAOzV,gBACrDuqC,EAAqB,EACjB90B,EAAOg0B,mBAAqB,IAC9Bh0B,EAAOg0B,mBAAqB,IAGZ,gBAAhBh0B,EAAOzV,MAA0ByV,EAAO8zB,qBAC1ClB,EAAM9rC,UAAUC,IAAIiZ,EAAOw0B,0BAEzBx0B,EAAOqzB,WACTT,EAAMvsC,iBAAiB,QAAS6uC,GAE7Bx1B,EAAO+J,SACVmpB,EAAM9rC,UAAUC,IAAIiZ,EAAO/V,UAC7B,IAEJ,CACA,SAASw9B,IACP,MAAMznB,EAASN,EAAOM,OAAO5V,WAC7B,GAAI2qC,IAAwB,OAC5B,IAAI3rC,EAAKsW,EAAOtV,WAAWhB,GACvBA,IACFA,EAAKga,GAAkBha,GACvBA,EAAGZ,SAAQoqC,IACTA,EAAM9rC,UAAUW,OAAOuY,EAAOhW,aAC9B4oC,EAAM9rC,UAAUW,OAAOuY,EAAO3V,cAAgB2V,EAAOzV,MACrDqoC,EAAM9rC,UAAUW,OAAOiY,EAAOiJ,eAAiB3I,EAAO00B,gBAAkB10B,EAAO20B,eAC3E30B,EAAOqzB,YACTT,EAAM9rC,UAAUW,WAAWuY,EAAOy0B,gBAAkB,IAAI7hC,MAAM,MAC9DggC,EAAMtlC,oBAAoB,QAAS4nC,GACrC,KAGAx1B,EAAOtV,WAAWyqC,SAASn1B,EAAOtV,WAAWyqC,QAAQrsC,SAAQoqC,GAASA,EAAM9rC,UAAUW,UAAUuY,EAAOq0B,kBAAkBzhC,MAAM,OACrI,CACAxK,EAAG,mBAAmB,KACpB,IAAKsX,EAAOtV,aAAesV,EAAOtV,WAAWhB,GAAI,OACjD,MAAM4W,EAASN,EAAOM,OAAO5V,WAC7B,IAAI,GACFhB,GACEsW,EAAOtV,WACXhB,EAAKga,GAAkBha,GACvBA,EAAGZ,SAAQoqC,IACTA,EAAM9rC,UAAUW,OAAOuY,EAAO00B,gBAAiB10B,EAAO20B,eACtD/B,EAAM9rC,UAAUC,IAAI2Y,EAAOiJ,eAAiB3I,EAAO00B,gBAAkB10B,EAAO20B,cAAc,GAC1F,IAEJvsC,EAAG,QAAQ,MACgC,IAArCsX,EAAOM,OAAO5V,WAAWqf,QAE3B2Z,KAEAj8B,IACAovC,IACAhuB,IACF,IAEFngB,EAAG,qBAAqB,UACU,IAArBsX,EAAOqN,WAChBxE,GACF,IAEFngB,EAAG,mBAAmB,KACpBmgB,GAAQ,IAEVngB,EAAG,wBAAwB,KACzBmuC,IACAhuB,GAAQ,IAEVngB,EAAG,WAAW,KACZq/B,GAAS,IAEXr/B,EAAG,kBAAkB,KACnB,IAAI,GACFgB,GACEsW,EAAOtV,WACPhB,IACFA,EAAKga,GAAkBha,GACvBA,EAAGZ,SAAQoqC,GAASA,EAAM9rC,UAAU4Y,EAAO+J,QAAU,SAAW,OAAO/J,EAAOM,OAAO5V,WAAWH,aAClG,IAEF7B,EAAG,eAAe,KAChBmgB,GAAQ,IAEVngB,EAAG,SAAS,CAACshC,EAAIniC,KACf,MAAM2xB,EAAW3xB,EAAEzC,OACbsE,EAAKga,GAAkB1D,EAAOtV,WAAWhB,IAC/C,GAAIsW,EAAOM,OAAO5V,WAAWhB,IAAMsW,EAAOM,OAAO5V,WAAW6oC,aAAe7pC,GAAMA,EAAG6B,OAAS,IAAMiuB,EAASpyB,UAAUY,SAASgY,EAAOM,OAAO5V,WAAWgqC,aAAc,CACpK,GAAI10B,EAAO5V,aAAe4V,EAAO5V,WAAWI,QAAUgvB,IAAaxZ,EAAO5V,WAAWI,QAAUwV,EAAO5V,WAAWK,QAAU+uB,IAAaxZ,EAAO5V,WAAWK,QAAS,OACnK,MAAMmpC,EAAWlqC,EAAG,GAAGtC,UAAUY,SAASgY,EAAOM,OAAO5V,WAAWJ,aAEjEwc,GADe,IAAb8sB,EACG,iBAEA,kBAEPlqC,EAAGZ,SAAQoqC,GAASA,EAAM9rC,UAAUU,OAAOkY,EAAOM,OAAO5V,WAAWJ,cACtE,KAEF,MAaMo5B,EAAU,KACd1jB,EAAOtW,GAAGtC,UAAUC,IAAI2Y,EAAOM,OAAO5V,WAAWwqC,yBACjD,IAAI,GACFxrC,GACEsW,EAAOtV,WACPhB,IACFA,EAAKga,GAAkBha,GACvBA,EAAGZ,SAAQoqC,GAASA,EAAM9rC,UAAUC,IAAI2Y,EAAOM,OAAO5V,WAAWwqC,4BAEnEnN,GAAS,EAEX/1B,OAAOmX,OAAOnJ,EAAOtV,WAAY,CAC/Bi5B,OAzBa,KACb3jB,EAAOtW,GAAGtC,UAAUW,OAAOiY,EAAOM,OAAO5V,WAAWwqC,yBACpD,IAAI,GACFxrC,GACEsW,EAAOtV,WACPhB,IACFA,EAAKga,GAAkBha,GACvBA,EAAGZ,SAAQoqC,GAASA,EAAM9rC,UAAUW,OAAOiY,EAAOM,OAAO5V,WAAWwqC,4BAEtEztC,IACAovC,IACAhuB,GAAQ,EAeR6a,UACAmT,SACAhuB,SACAphB,OACAsgC,WAEJ,ECpcA,SAAmBhoB,GACjB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,EAAE,KACFoe,GACE/G,EACJ,MAAM/a,EAAWsX,IACjB,IAGI06B,EACAC,EACAC,EACAC,EANArd,GAAY,EACZgW,EAAU,KACVsH,EAAc,KAuBlB,SAASpjB,IACP,IAAKhU,EAAOM,OAAO+2B,UAAU3tC,KAAOsW,EAAOq3B,UAAU3tC,GAAI,OACzD,MAAM,UACJ2tC,EACA3tB,aAAcC,GACZ3J,GACE,OACJs3B,EAAM,GACN5tC,GACE2tC,EACE/2B,EAASN,EAAOM,OAAO+2B,UACvBt2B,EAAWf,EAAOM,OAAO/Z,KAAOyZ,EAAOiQ,aAAejQ,EAAOe,SACnE,IAAIw2B,EAAUN,EACVO,GAAUN,EAAYD,GAAYl2B,EAClC4I,GACF6tB,GAAUA,EACNA,EAAS,GACXD,EAAUN,EAAWO,EACrBA,EAAS,IACCA,EAASP,EAAWC,IAC9BK,EAAUL,EAAYM,IAEfA,EAAS,GAClBD,EAAUN,EAAWO,EACrBA,EAAS,GACAA,EAASP,EAAWC,IAC7BK,EAAUL,EAAYM,GAEpBx3B,EAAOiJ,gBACTquB,EAAOrrC,MAAMoS,UAAY,eAAem5B,aACxCF,EAAOrrC,MAAM+Y,MAAQ,GAAGuyB,QAExBD,EAAOrrC,MAAMoS,UAAY,oBAAoBm5B,UAC7CF,EAAOrrC,MAAMiZ,OAAS,GAAGqyB,OAEvBj3B,EAAOm3B,OACTr6B,aAAa0yB,GACbpmC,EAAGuC,MAAMyrC,QAAU,EACnB5H,EAAUjiC,YAAW,KACnBnE,EAAGuC,MAAMyrC,QAAU,EACnBhuC,EAAGuC,MAAMm2B,mBAAqB,OAAO,GACpC,KAEP,CAKA,SAAStZ,IACP,IAAK9I,EAAOM,OAAO+2B,UAAU3tC,KAAOsW,EAAOq3B,UAAU3tC,GAAI,OACzD,MAAM,UACJ2tC,GACEr3B,GACE,OACJs3B,EAAM,GACN5tC,GACE2tC,EACJC,EAAOrrC,MAAM+Y,MAAQ,GACrBsyB,EAAOrrC,MAAMiZ,OAAS,GACtBgyB,EAAYl3B,EAAOiJ,eAAiBvf,EAAG+Z,YAAc/Z,EAAG6kB,aACxD4oB,EAAUn3B,EAAOuD,MAAQvD,EAAO6K,YAAc7K,EAAOM,OAAOgK,oBAAsBtK,EAAOM,OAAO4K,eAAiBlL,EAAOkK,SAAS,GAAK,IAEpI+sB,EADuC,SAArCj3B,EAAOM,OAAO+2B,UAAUJ,SACfC,EAAYC,EAEZzmC,SAASsP,EAAOM,OAAO+2B,UAAUJ,SAAU,IAEpDj3B,EAAOiJ,eACTquB,EAAOrrC,MAAM+Y,MAAQ,GAAGiyB,MAExBK,EAAOrrC,MAAMiZ,OAAS,GAAG+xB,MAGzBvtC,EAAGuC,MAAMoF,QADP8lC,GAAW,EACM,OAEA,GAEjBn3B,EAAOM,OAAO+2B,UAAUI,OAC1B/tC,EAAGuC,MAAMyrC,QAAU,GAEjB13B,EAAOM,OAAOkN,eAAiBxN,EAAO+J,SACxCstB,EAAU3tC,GAAGtC,UAAU4Y,EAAOuiB,SAAW,MAAQ,UAAUviB,EAAOM,OAAO+2B,UAAU9sC,UAEvF,CACA,SAASotC,EAAmB9vC,GAC1B,OAAOmY,EAAOiJ,eAAiBphB,EAAE+vC,QAAU/vC,EAAEgwC,OAC/C,CACA,SAASC,EAAgBjwC,GACvB,MAAM,UACJwvC,EACA3tB,aAAcC,GACZ3J,GACE,GACJtW,GACE2tC,EACJ,IAAIU,EACJA,GAAiBJ,EAAmB9vC,GAAKwa,EAAc3Y,GAAIsW,EAAOiJ,eAAiB,OAAS,QAA2B,OAAjB+tB,EAAwBA,EAAeC,EAAW,KAAOC,EAAYD,GAC3Kc,EAAgB/2B,KAAKC,IAAID,KAAKE,IAAI62B,EAAe,GAAI,GACjDpuB,IACFouB,EAAgB,EAAIA,GAEtB,MAAMzF,EAAWtyB,EAAOkP,gBAAkBlP,EAAO8P,eAAiB9P,EAAOkP,gBAAkB6oB,EAC3F/3B,EAAO2P,eAAe2iB,GACtBtyB,EAAOgU,aAAase,GACpBtyB,EAAO8R,oBACP9R,EAAO6Q,qBACT,CACA,SAASmnB,EAAYnwC,GACnB,MAAMyY,EAASN,EAAOM,OAAO+2B,WACvB,UACJA,EAAS,UACT92B,GACEP,GACE,GACJtW,EAAE,OACF4tC,GACED,EACJvd,GAAY,EACZkd,EAAenvC,EAAEzC,SAAWkyC,EAASK,EAAmB9vC,GAAKA,EAAEzC,OAAOiB,wBAAwB2Z,EAAOiJ,eAAiB,OAAS,OAAS,KACxIphB,EAAE+B,iBACF/B,EAAEuG,kBACFmS,EAAUtU,MAAMm2B,mBAAqB,QACrCkV,EAAOrrC,MAAMm2B,mBAAqB,QAClC0V,EAAgBjwC,GAChBuV,aAAag6B,GACb1tC,EAAGuC,MAAMm2B,mBAAqB,MAC1B9hB,EAAOm3B,OACT/tC,EAAGuC,MAAMyrC,QAAU,GAEjB13B,EAAOM,OAAO6K,UAChBnL,EAAOO,UAAUtU,MAAM,oBAAsB,QAE/C6a,EAAK,qBAAsBjf,EAC7B,CACA,SAASowC,EAAWpwC,GAClB,MAAM,UACJwvC,EAAS,UACT92B,GACEP,GACE,GACJtW,EAAE,OACF4tC,GACED,EACCvd,IACDjyB,EAAE+B,gBAAkB/B,EAAEg1B,WAAYh1B,EAAE+B,iBAAsB/B,EAAE2P,aAAc,EAC9EsgC,EAAgBjwC,GAChB0Y,EAAUtU,MAAMm2B,mBAAqB,MACrC14B,EAAGuC,MAAMm2B,mBAAqB,MAC9BkV,EAAOrrC,MAAMm2B,mBAAqB,MAClCtb,EAAK,oBAAqBjf,GAC5B,CACA,SAASqwC,EAAUrwC,GACjB,MAAMyY,EAASN,EAAOM,OAAO+2B,WACvB,UACJA,EAAS,UACT92B,GACEP,GACE,GACJtW,GACE2tC,EACCvd,IACLA,GAAY,EACR9Z,EAAOM,OAAO6K,UAChBnL,EAAOO,UAAUtU,MAAM,oBAAsB,GAC7CsU,EAAUtU,MAAMm2B,mBAAqB,IAEnC9hB,EAAOm3B,OACTr6B,aAAag6B,GACbA,EAAcz5B,GAAS,KACrBjU,EAAGuC,MAAMyrC,QAAU,EACnBhuC,EAAGuC,MAAMm2B,mBAAqB,OAAO,GACpC,MAELtb,EAAK,mBAAoBjf,GACrByY,EAAO63B,eACTn4B,EAAO+V,iBAEX,CACA,SAASpQ,EAAOM,GACd,MAAM,UACJoxB,EAAS,OACT/2B,GACEN,EACEtW,EAAK2tC,EAAU3tC,GACrB,IAAKA,EAAI,OACT,MAAMtE,EAASsE,EACT0uC,IAAiB93B,EAAO+gB,kBAAmB,CAC/CX,SAAS,EACTH,SAAS,GAEL8X,IAAkB/3B,EAAO+gB,kBAAmB,CAChDX,SAAS,EACTH,SAAS,GAEX,IAAKn7B,EAAQ,OACb,MAAMkzC,EAAyB,OAAXryB,EAAkB,mBAAqB,sBAC3D7gB,EAAOkzC,GAAa,cAAeN,EAAaI,GAChDpzC,EAASszC,GAAa,cAAeL,EAAYG,GACjDpzC,EAASszC,GAAa,YAAaJ,EAAWG,EAChD,CASA,SAAS5wC,IACP,MAAM,UACJ4vC,EACA3tC,GAAI6uC,GACFv4B,EACJA,EAAOM,OAAO+2B,UAAY7O,GAA0BxoB,EAAQA,EAAOijB,eAAeoU,UAAWr3B,EAAOM,OAAO+2B,UAAW,CACpH3tC,GAAI,qBAEN,MAAM4W,EAASN,EAAOM,OAAO+2B,UAC7B,IAAK/2B,EAAO5W,GAAI,OAChB,IAAIA,EAeA4tC,EAXJ,GAHyB,iBAAdh3B,EAAO5W,IAAmBsW,EAAO0H,YAC1Che,EAAKsW,EAAOtW,GAAGtD,cAAcka,EAAO5W,KAEjCA,GAA2B,iBAAd4W,EAAO5W,GAGbA,IACVA,EAAK4W,EAAO5W,SAFZ,GADAA,EAAK1E,EAASmE,iBAAiBmX,EAAO5W,KACjCA,EAAG6B,OAAQ,OAIdyU,EAAOM,OAAO8gB,mBAA0C,iBAAd9gB,EAAO5W,IAAmBA,EAAG6B,OAAS,GAAqD,IAAhDgtC,EAASpvC,iBAAiBmX,EAAO5W,IAAI6B,SAC5H7B,EAAK6uC,EAASnyC,cAAcka,EAAO5W,KAEjCA,EAAG6B,OAAS,IAAG7B,EAAKA,EAAG,IAC3BA,EAAGtC,UAAUC,IAAI2Y,EAAOiJ,eAAiB3I,EAAO00B,gBAAkB10B,EAAO20B,eAErEvrC,IACF4tC,EAAS5tC,EAAGtD,cAAcsiC,GAAkB1oB,EAAOM,OAAO+2B,UAAUmB,YAC/DlB,IACHA,EAAS17B,EAAc,MAAOoE,EAAOM,OAAO+2B,UAAUmB,WACtD9uC,EAAGktB,OAAO0gB,KAGdtlC,OAAOmX,OAAOkuB,EAAW,CACvB3tC,KACA4tC,WAEEh3B,EAAOm4B,WA5CNz4B,EAAOM,OAAO+2B,UAAU3tC,IAAOsW,EAAOq3B,UAAU3tC,IACrDic,EAAO,MA8CHjc,GACFA,EAAGtC,UAAU4Y,EAAO+J,QAAU,SAAW,UAAUtM,EAAgBuC,EAAOM,OAAO+2B,UAAU9sC,WAE/F,CACA,SAASw9B,IACP,MAAMznB,EAASN,EAAOM,OAAO+2B,UACvB3tC,EAAKsW,EAAOq3B,UAAU3tC,GACxBA,GACFA,EAAGtC,UAAUW,UAAU0V,EAAgBuC,EAAOiJ,eAAiB3I,EAAO00B,gBAAkB10B,EAAO20B,gBAnD5Fj1B,EAAOM,OAAO+2B,UAAU3tC,IAAOsW,EAAOq3B,UAAU3tC,IACrDic,EAAO,MAqDT,CApRAogB,EAAa,CACXsR,UAAW,CACT3tC,GAAI,KACJutC,SAAU,OACVQ,MAAM,EACNgB,WAAW,EACXN,eAAe,EACf5tC,UAAW,wBACXiuC,UAAW,wBACXE,uBAAwB,4BACxB1D,gBAAiB,8BACjBC,cAAe,+BAGnBj1B,EAAOq3B,UAAY,CACjB3tC,GAAI,KACJ4tC,OAAQ,MAqQV5uC,EAAG,mBAAmB,KACpB,IAAKsX,EAAOq3B,YAAcr3B,EAAOq3B,UAAU3tC,GAAI,OAC/C,MAAM4W,EAASN,EAAOM,OAAO+2B,UAC7B,IAAI,GACF3tC,GACEsW,EAAOq3B,UACX3tC,EAAKga,GAAkBha,GACvBA,EAAGZ,SAAQoqC,IACTA,EAAM9rC,UAAUW,OAAOuY,EAAO00B,gBAAiB10B,EAAO20B,eACtD/B,EAAM9rC,UAAUC,IAAI2Y,EAAOiJ,eAAiB3I,EAAO00B,gBAAkB10B,EAAO20B,cAAc,GAC1F,IAEJvsC,EAAG,QAAQ,MAC+B,IAApCsX,EAAOM,OAAO+2B,UAAUttB,QAE1B2Z,KAEAj8B,IACAqhB,IACAkL,IACF,IAEFtrB,EAAG,4DAA4D,KAC7DogB,GAAY,IAEdpgB,EAAG,gBAAgB,KACjBsrB,GAAc,IAEhBtrB,EAAG,iBAAiB,CAACshC,EAAIrkC,MAnPzB,SAAuBA,GAChBqa,EAAOM,OAAO+2B,UAAU3tC,IAAOsW,EAAOq3B,UAAU3tC,KACrDsW,EAAOq3B,UAAUC,OAAOrrC,MAAMm2B,mBAAqB,GAAGz8B,MACxD,CAiPEwoB,CAAcxoB,EAAS,IAEzB+C,EAAG,kBAAkB,KACnB,MAAM,GACJgB,GACEsW,EAAOq3B,UACP3tC,GACFA,EAAGtC,UAAU4Y,EAAO+J,QAAU,SAAW,UAAUtM,EAAgBuC,EAAOM,OAAO+2B,UAAU9sC,WAC7F,IAEF7B,EAAG,WAAW,KACZq/B,GAAS,IAEX,MASMrE,EAAU,KACd1jB,EAAOtW,GAAGtC,UAAUC,OAAOoW,EAAgBuC,EAAOM,OAAO+2B,UAAUqB,yBAC/D14B,EAAOq3B,UAAU3tC,IACnBsW,EAAOq3B,UAAU3tC,GAAGtC,UAAUC,OAAOoW,EAAgBuC,EAAOM,OAAO+2B,UAAUqB,yBAE/E3Q,GAAS,EAEX/1B,OAAOmX,OAAOnJ,EAAOq3B,UAAW,CAC9B1T,OAjBa,KACb3jB,EAAOtW,GAAGtC,UAAUW,UAAU0V,EAAgBuC,EAAOM,OAAO+2B,UAAUqB,yBAClE14B,EAAOq3B,UAAU3tC,IACnBsW,EAAOq3B,UAAU3tC,GAAGtC,UAAUW,UAAU0V,EAAgBuC,EAAOM,OAAO+2B,UAAUqB,yBAElFjxC,IACAqhB,IACAkL,GAAc,EAWd0P,UACA5a,aACAkL,eACAvsB,OACAsgC,WAEJ,ECzWA,SAAkBhoB,GAChB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,GACEqX,EACJgmB,EAAa,CACX4S,SAAU,CACR5uB,SAAS,KAGb,MAAM6uB,EAAmB,2IACnBC,EAAe,CAACnvC,EAAIqX,KACxB,MAAM,IACJ4I,GACE3J,EACEmxB,EAAYxnB,GAAO,EAAI,EACvBmvB,EAAIpvC,EAAG2B,aAAa,yBAA2B,IACrD,IAAI0J,EAAIrL,EAAG2B,aAAa,0BACpBy2B,EAAIp4B,EAAG2B,aAAa,0BACxB,MAAMorC,EAAQ/sC,EAAG2B,aAAa,8BACxBqsC,EAAUhuC,EAAG2B,aAAa,gCAC1B0tC,EAASrvC,EAAG2B,aAAa,+BAqB/B,GApBI0J,GAAK+sB,GACP/sB,EAAIA,GAAK,IACT+sB,EAAIA,GAAK,KACA9hB,EAAOiJ,gBAChBlU,EAAI+jC,EACJhX,EAAI,MAEJA,EAAIgX,EACJ/jC,EAAI,KAGJA,EADEA,EAAEd,QAAQ,MAAQ,EACbvD,SAASqE,EAAG,IAAMgM,EAAWowB,EAAhC,IAEGp8B,EAAIgM,EAAWowB,EAAlB,KAGJrP,EADEA,EAAE7tB,QAAQ,MAAQ,EACbvD,SAASoxB,EAAG,IAAM/gB,EAArB,IAEG+gB,EAAI/gB,EAAP,KAEF,MAAO22B,EAA6C,CACtD,MAAMsB,EAAiBtB,GAAWA,EAAU,IAAM,EAAI12B,KAAK6C,IAAI9C,IAC/DrX,EAAGuC,MAAMyrC,QAAUsB,CACrB,CACA,IAAI36B,EAAY,eAAetJ,MAAM+sB,UACjC,MAAO2U,IAETp4B,GAAa,UADQo4B,GAASA,EAAQ,IAAM,EAAIz1B,KAAK6C,IAAI9C,QAGvDg4B,SAAiBA,IAEnB16B,GAAa,WADS06B,EAASh4B,GAAY,SAG7CrX,EAAGuC,MAAMoS,UAAYA,CAAS,EAE1B2V,EAAe,KACnB,MAAM,GACJtqB,EAAE,OACFb,EAAM,SACNkY,EAAQ,SACRmJ,EAAQ,UACRxC,GACE1H,EACEi5B,EAAWt3B,EAAgBjY,EAAIkvC,GACjC54B,EAAO0H,WACTuxB,EAASn3B,QAAQH,EAAgB3B,EAAO6nB,OAAQ+Q,IAElDK,EAASnwC,SAAQoqC,IACf2F,EAAa3F,EAAOnyB,EAAS,IAE/BlY,EAAOC,SAAQ,CAAC2Y,EAASnY,KACvB,IAAI2lB,EAAgBxN,EAAQV,SACxBf,EAAOM,OAAO6L,eAAiB,GAAqC,SAAhCnM,EAAOM,OAAO7X,gBACpDwmB,GAAiBjO,KAAKoH,KAAK9e,EAAa,GAAKyX,GAAYmJ,EAAS3e,OAAS,IAE7E0jB,EAAgBjO,KAAKE,IAAIF,KAAKC,IAAIgO,GAAgB,GAAI,GACtDxN,EAAQtY,iBAAiB,GAAGyvC,oCAAmD9vC,SAAQoqC,IACrF2F,EAAa3F,EAAOjkB,EAAc,GAClC,GACF,EAoBJvmB,EAAG,cAAc,KACVsX,EAAOM,OAAOq4B,SAAS5uB,UAC5B/J,EAAOM,OAAOoN,qBAAsB,EACpC1N,EAAOijB,eAAevV,qBAAsB,EAAI,IAElDhlB,EAAG,QAAQ,KACJsX,EAAOM,OAAOq4B,SAAS5uB,SAC5BiK,GAAc,IAEhBtrB,EAAG,gBAAgB,KACZsX,EAAOM,OAAOq4B,SAAS5uB,SAC5BiK,GAAc,IAEhBtrB,EAAG,iBAAiB,CAACwwC,EAASvzC,KACvBqa,EAAOM,OAAOq4B,SAAS5uB,SAhCR,SAAUpkB,QACb,IAAbA,IACFA,EAAWqa,EAAOM,OAAOhY,OAE3B,MAAM,GACJoB,EAAE,OACFm+B,GACE7nB,EACEi5B,EAAW,IAAIvvC,EAAGP,iBAAiByvC,IACrC54B,EAAO0H,WACTuxB,EAASn3B,QAAQ+lB,EAAO1+B,iBAAiByvC,IAE3CK,EAASnwC,SAAQqwC,IACf,IAAIC,EAAmB1oC,SAASyoC,EAAW9tC,aAAa,iCAAkC,KAAO1F,EAChF,IAAbA,IAAgByzC,EAAmB,GACvCD,EAAWltC,MAAMm2B,mBAAqB,GAAGgX,KAAoB,GAEjE,CAgBEjrB,CAAcxoB,EAAS,GAE3B,ECtHA,SAAcoa,GACZ,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,EAAE,KACFoe,GACE/G,EACJ,MAAMjb,EAASyY,IACfwoB,EAAa,CACXsT,KAAM,CACJtvB,SAAS,EACTuvB,qBAAqB,EACrBC,SAAU,EACVhV,SAAU,EACVz8B,QAAQ,EACR0xC,eAAgB,wBAChBC,iBAAkB,yBAGtBz5B,EAAOq5B,KAAO,CACZtvB,SAAS,GAEX,IAEI2vB,EACAC,EAHAC,EAAe,EACfC,GAAY,EAGhB,MAAMC,EAAU,GACVC,EAAU,CACdC,QAAS,EACTC,QAAS,EACTx4B,aAAS/P,EACTwoC,gBAAYxoC,EACZyoC,iBAAazoC,EACb+V,aAAS/V,EACT0oC,iBAAa1oC,EACb6nC,SAAU,GAENc,EAAQ,CACZvgB,eAAWpoB,EACXqoB,aAASroB,EACTqpB,cAAUrpB,EACVspB,cAAUtpB,EACV4oC,UAAM5oC,EACN6oC,UAAM7oC,EACN8oC,UAAM9oC,EACN+oC,UAAM/oC,EACNsT,WAAOtT,EACPwT,YAAQxT,EACRinB,YAAQjnB,EACRwpB,YAAQxpB,EACRgpC,aAAc,CAAC,EACfC,eAAgB,CAAC,GAEbxU,EAAW,CACfpxB,OAAGrD,EACHowB,OAAGpwB,EACHkpC,mBAAelpC,EACfmpC,mBAAenpC,EACfopC,cAAUppC,GAEZ,IAsJIqpC,EAtJAtE,EAAQ,EAcZ,SAASuE,IACP,GAAIlB,EAAQvuC,OAAS,EAAG,OAAO,EAC/B,MAAM0vC,EAAKnB,EAAQ,GAAGzgB,MAChB6hB,EAAKpB,EAAQ,GAAG7e,MAChBkgB,EAAKrB,EAAQ,GAAGzgB,MAChB+hB,EAAKtB,EAAQ,GAAG7e,MAEtB,OADiBja,KAAKyb,MAAM0e,EAAKF,IAAO,GAAKG,EAAKF,IAAO,EAE3D,CACA,SAASG,IACP,MAAM/6B,EAASN,EAAOM,OAAO+4B,KACvBE,EAAWQ,EAAQK,YAAY/uC,aAAa,qBAAuBiV,EAAOi5B,SAChF,GAAIj5B,EAAOg5B,qBAAuBS,EAAQtyB,SAAWsyB,EAAQtyB,QAAQ6zB,aAAc,CACjF,MAAMC,EAAgBxB,EAAQtyB,QAAQ6zB,aAAevB,EAAQtyB,QAAQhE,YACrE,OAAOzC,KAAKE,IAAIq6B,EAAehC,EACjC,CACA,OAAOA,CACT,CAYA,SAASiC,EAAiB3zC,GACxB,MAAMsuB,EAHCnW,EAAO0H,UAAY,eAAiB,IAAI1H,EAAOM,OAAOqH,aAI7D,QAAI9f,EAAEzC,OAAO0J,QAAQqnB,IACjBnW,EAAOnX,OAAO2P,QAAOiJ,GAAWA,EAAQzZ,SAASH,EAAEzC,UAASmG,OAAS,CAE3E,CASA,SAASkwC,EAAe5zC,GAItB,GAHsB,UAAlBA,EAAE0xB,aACJugB,EAAQlzB,OAAO,EAAGkzB,EAAQvuC,SAEvBiwC,EAAiB3zC,GAAI,OAC1B,MAAMyY,EAASN,EAAOM,OAAO+4B,KAI7B,GAHAK,GAAqB,EACrBC,GAAmB,EACnBG,EAAQh4B,KAAKja,KACTiyC,EAAQvuC,OAAS,GAArB,CAKA,GAFAmuC,GAAqB,EACrBK,EAAQ2B,WAAaV,KAChBjB,EAAQt4B,QAAS,CACpBs4B,EAAQt4B,QAAU5Z,EAAEzC,OAAO0K,QAAQ,IAAIkQ,EAAOM,OAAOqH,4BAChDoyB,EAAQt4B,UAASs4B,EAAQt4B,QAAUzB,EAAOnX,OAAOmX,EAAOzW,cAC7D,IAAIke,EAAUsyB,EAAQt4B,QAAQrb,cAAc,IAAIka,EAAOk5B,kBAUvD,GATI/xB,IACFA,EAAUA,EAAQte,iBAAiB,kDAAkD,IAEvF4wC,EAAQtyB,QAAUA,EAEhBsyB,EAAQK,YADN3yB,EACoBzE,EAAe+2B,EAAQtyB,QAAS,IAAInH,EAAOk5B,kBAAkB,QAE7D9nC,GAEnBqoC,EAAQK,YAEX,YADAL,EAAQtyB,aAAU/V,GAGpBqoC,EAAQR,SAAW8B,GACrB,CACA,GAAItB,EAAQtyB,QAAS,CACnB,MAAOuyB,EAASC,GA3DpB,WACE,GAAIH,EAAQvuC,OAAS,EAAG,MAAO,CAC7BwJ,EAAG,KACH+sB,EAAG,MAEL,MAAMxf,EAAMy3B,EAAQtyB,QAAQphB,wBAC5B,MAAO,EAAEyzC,EAAQ,GAAGzgB,OAASygB,EAAQ,GAAGzgB,MAAQygB,EAAQ,GAAGzgB,OAAS,EAAI/W,EAAIvN,EAAIjQ,EAAO6d,SAAWi3B,GAAeE,EAAQ,GAAG7e,OAAS6e,EAAQ,GAAG7e,MAAQ6e,EAAQ,GAAG7e,OAAS,EAAI3Y,EAAIwf,EAAIh9B,EAAO2d,SAAWm3B,EAC5M,CAoD+B+B,GAC3B5B,EAAQC,QAAUA,EAClBD,EAAQE,QAAUA,EAClBF,EAAQtyB,QAAQxb,MAAMm2B,mBAAqB,KAC7C,CACAyX,GAAY,CA5BZ,CA6BF,CACA,SAAS+B,EAAgB/zC,GACvB,IAAK2zC,EAAiB3zC,GAAI,OAC1B,MAAMyY,EAASN,EAAOM,OAAO+4B,KACvBA,EAAOr5B,EAAOq5B,KACdwC,EAAe/B,EAAQgC,WAAUC,GAAYA,EAAS9iB,YAAcpxB,EAAEoxB,YACxE4iB,GAAgB,IAAG/B,EAAQ+B,GAAgBh0C,GAC3CiyC,EAAQvuC,OAAS,IAGrBouC,GAAmB,EACnBI,EAAQiC,UAAYhB,IACfjB,EAAQtyB,UAGb4xB,EAAK5C,MAAQsD,EAAQiC,UAAYjC,EAAQ2B,WAAa9B,EAClDP,EAAK5C,MAAQsD,EAAQR,WACvBF,EAAK5C,MAAQsD,EAAQR,SAAW,GAAKF,EAAK5C,MAAQsD,EAAQR,SAAW,IAAM,IAEzEF,EAAK5C,MAAQn2B,EAAOikB,WACtB8U,EAAK5C,MAAQn2B,EAAOikB,SAAW,GAAKjkB,EAAOikB,SAAW8U,EAAK5C,MAAQ,IAAM,IAE3EsD,EAAQtyB,QAAQxb,MAAMoS,UAAY,4BAA4Bg7B,EAAK5C,UACrE,CACA,SAASwF,EAAap0C,GACpB,IAAK2zC,EAAiB3zC,GAAI,OAC1B,GAAsB,UAAlBA,EAAE0xB,aAAsC,eAAX1xB,EAAEgD,KAAuB,OAC1D,MAAMyV,EAASN,EAAOM,OAAO+4B,KACvBA,EAAOr5B,EAAOq5B,KACdwC,EAAe/B,EAAQgC,WAAUC,GAAYA,EAAS9iB,YAAcpxB,EAAEoxB,YACxE4iB,GAAgB,GAAG/B,EAAQlzB,OAAOi1B,EAAc,GAC/CnC,GAAuBC,IAG5BD,GAAqB,EACrBC,GAAmB,EACdI,EAAQtyB,UACb4xB,EAAK5C,MAAQz1B,KAAKC,IAAID,KAAKE,IAAIm4B,EAAK5C,MAAOsD,EAAQR,UAAWj5B,EAAOikB,UACrEwV,EAAQtyB,QAAQxb,MAAMm2B,mBAAqB,GAAGpiB,EAAOM,OAAOhY,UAC5DyxC,EAAQtyB,QAAQxb,MAAMoS,UAAY,4BAA4Bg7B,EAAK5C,SACnEmD,EAAeP,EAAK5C,MACpBoD,GAAY,EACRR,EAAK5C,MAAQ,GAAKsD,EAAQt4B,QAC5Bs4B,EAAQt4B,QAAQra,UAAUC,IAAI,GAAGiZ,EAAOm5B,oBAC/BJ,EAAK5C,OAAS,GAAKsD,EAAQt4B,SACpCs4B,EAAQt4B,QAAQra,UAAUW,OAAO,GAAGuY,EAAOm5B,oBAE1B,IAAfJ,EAAK5C,QACPsD,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EAClBF,EAAQt4B,aAAU/P,IAEtB,CAEA,SAASiqB,IACP3b,EAAOgY,gBAAgB4E,iCAAkC,CAC3D,CAmBA,SAASZ,EAAYn0B,GACnB,IAAK2zC,EAAiB3zC,KA5HxB,SAAkCA,GAChC,MAAM+Z,EAAW,IAAI5B,EAAOM,OAAO+4B,KAAKG,iBACxC,QAAI3xC,EAAEzC,OAAO0J,QAAQ8S,IACjB,IAAI5B,EAAO6nB,OAAO1+B,iBAAiByY,IAAWpJ,QAAO0rB,GAAeA,EAAYl8B,SAASH,EAAEzC,UAASmG,OAAS,CAEnH,CAuH+B2wC,CAAyBr0C,GACpD,OAEF,MAAMwxC,EAAOr5B,EAAOq5B,KACpB,IAAKU,EAAQtyB,QACX,OAEF,IAAK4yB,EAAMvgB,YAAcigB,EAAQt4B,QAC/B,OAEG44B,EAAMtgB,UACTsgB,EAAMr1B,MAAQ+0B,EAAQtyB,QAAQhE,aAAes2B,EAAQtyB,QAAQsB,YAC7DsxB,EAAMn1B,OAAS60B,EAAQtyB,QAAQ8G,cAAgBwrB,EAAQtyB,QAAQuB,aAC/DqxB,EAAM1hB,OAAS9a,EAAak8B,EAAQK,YAAa,MAAQ,EACzDC,EAAMnf,OAASrd,EAAak8B,EAAQK,YAAa,MAAQ,EACzDL,EAAQG,WAAaH,EAAQt4B,QAAQgC,YACrCs2B,EAAQI,YAAcJ,EAAQt4B,QAAQ8M,aACtCwrB,EAAQK,YAAYnuC,MAAMm2B,mBAAqB,OAGjD,MAAM+Z,EAAc9B,EAAMr1B,MAAQq0B,EAAK5C,MACjC2F,EAAe/B,EAAMn1B,OAASm0B,EAAK5C,MAWzC,GAVA4D,EAAMC,KAAOt5B,KAAKE,IAAI64B,EAAQG,WAAa,EAAIiC,EAAc,EAAG,GAChE9B,EAAMG,MAAQH,EAAMC,KACpBD,EAAME,KAAOv5B,KAAKE,IAAI64B,EAAQI,YAAc,EAAIiC,EAAe,EAAG,GAClE/B,EAAMI,MAAQJ,EAAME,KACpBF,EAAMM,eAAe5lC,EAAI+kC,EAAQvuC,OAAS,EAAIuuC,EAAQ,GAAGzgB,MAAQxxB,EAAEwxB,MACnEghB,EAAMM,eAAe7Y,EAAIgY,EAAQvuC,OAAS,EAAIuuC,EAAQ,GAAG7e,MAAQpzB,EAAEozB,MAC/Cja,KAAKC,IAAID,KAAK6C,IAAIw2B,EAAMM,eAAe5lC,EAAIslC,EAAMK,aAAa3lC,GAAIiM,KAAK6C,IAAIw2B,EAAMM,eAAe7Y,EAAIuY,EAAMK,aAAa5Y,IACzH,IAChB9hB,EAAO6a,YAAa,IAEjBwf,EAAMtgB,UAAY8f,EAAW,CAChC,GAAI75B,EAAOiJ,iBAAmBjI,KAAKiL,MAAMouB,EAAMC,QAAUt5B,KAAKiL,MAAMouB,EAAM1hB,SAAW0hB,EAAMM,eAAe5lC,EAAIslC,EAAMK,aAAa3lC,GAAKiM,KAAKiL,MAAMouB,EAAMG,QAAUx5B,KAAKiL,MAAMouB,EAAM1hB,SAAW0hB,EAAMM,eAAe5lC,EAAIslC,EAAMK,aAAa3lC,GAGvO,OAFAslC,EAAMvgB,WAAY,OAClB6B,IAGF,IAAK3b,EAAOiJ,iBAAmBjI,KAAKiL,MAAMouB,EAAME,QAAUv5B,KAAKiL,MAAMouB,EAAMnf,SAAWmf,EAAMM,eAAe7Y,EAAIuY,EAAMK,aAAa5Y,GAAK9gB,KAAKiL,MAAMouB,EAAMI,QAAUz5B,KAAKiL,MAAMouB,EAAMnf,SAAWmf,EAAMM,eAAe7Y,EAAIuY,EAAMK,aAAa5Y,GAGxO,OAFAuY,EAAMvgB,WAAY,OAClB6B,GAGJ,CACI9zB,EAAEg1B,YACJh1B,EAAE+B,iBAEJ/B,EAAEuG,kBAjEFgP,aAAa29B,GACb/6B,EAAOgY,gBAAgB4E,iCAAkC,EACzDme,EAAwBltC,YAAW,KAC7BmS,EAAOgG,WACX2V,GAAgB,IA+DlB0e,EAAMtgB,SAAU,EAChB,MAAMsiB,GAAchD,EAAK5C,MAAQmD,IAAiBG,EAAQR,SAAWv5B,EAAOM,OAAO+4B,KAAK9U,WAClF,QACJyV,EAAO,QACPC,GACEF,EACJM,EAAMtf,SAAWsf,EAAMM,eAAe5lC,EAAIslC,EAAMK,aAAa3lC,EAAIslC,EAAM1hB,OAAS0jB,GAAchC,EAAMr1B,MAAkB,EAAVg1B,GAC5GK,EAAMrf,SAAWqf,EAAMM,eAAe7Y,EAAIuY,EAAMK,aAAa5Y,EAAIuY,EAAMnf,OAASmhB,GAAchC,EAAMn1B,OAAmB,EAAV+0B,GACzGI,EAAMtf,SAAWsf,EAAMC,OACzBD,EAAMtf,SAAWsf,EAAMC,KAAO,GAAKD,EAAMC,KAAOD,EAAMtf,SAAW,IAAM,IAErEsf,EAAMtf,SAAWsf,EAAMG,OACzBH,EAAMtf,SAAWsf,EAAMG,KAAO,GAAKH,EAAMtf,SAAWsf,EAAMG,KAAO,IAAM,IAErEH,EAAMrf,SAAWqf,EAAME,OACzBF,EAAMrf,SAAWqf,EAAME,KAAO,GAAKF,EAAME,KAAOF,EAAMrf,SAAW,IAAM,IAErEqf,EAAMrf,SAAWqf,EAAMI,OACzBJ,EAAMrf,SAAWqf,EAAMI,KAAO,GAAKJ,EAAMrf,SAAWqf,EAAMI,KAAO,IAAM,IAIpEtU,EAASyU,gBAAezU,EAASyU,cAAgBP,EAAMM,eAAe5lC,GACtEoxB,EAAS0U,gBAAe1U,EAAS0U,cAAgBR,EAAMM,eAAe7Y,GACtEqE,EAAS2U,WAAU3U,EAAS2U,SAAW59B,KAAKU,OACjDuoB,EAASpxB,GAAKslC,EAAMM,eAAe5lC,EAAIoxB,EAASyU,gBAAkB19B,KAAKU,MAAQuoB,EAAS2U,UAAY,EACpG3U,EAASrE,GAAKuY,EAAMM,eAAe7Y,EAAIqE,EAAS0U,gBAAkB39B,KAAKU,MAAQuoB,EAAS2U,UAAY,EAChG95B,KAAK6C,IAAIw2B,EAAMM,eAAe5lC,EAAIoxB,EAASyU,eAAiB,IAAGzU,EAASpxB,EAAI,GAC5EiM,KAAK6C,IAAIw2B,EAAMM,eAAe7Y,EAAIqE,EAAS0U,eAAiB,IAAG1U,EAASrE,EAAI,GAChFqE,EAASyU,cAAgBP,EAAMM,eAAe5lC,EAC9CoxB,EAAS0U,cAAgBR,EAAMM,eAAe7Y,EAC9CqE,EAAS2U,SAAW59B,KAAKU,MACzBm8B,EAAQK,YAAYnuC,MAAMoS,UAAY,eAAeg8B,EAAMtf,eAAesf,EAAMrf,eAClF,CAoCA,SAASshB,IACP,MAAMjD,EAAOr5B,EAAOq5B,KAChBU,EAAQt4B,SAAWzB,EAAOzW,cAAgByW,EAAOnX,OAAOoL,QAAQ8lC,EAAQt4B,WACtEs4B,EAAQtyB,UACVsyB,EAAQtyB,QAAQxb,MAAMoS,UAAY,+BAEhC07B,EAAQK,cACVL,EAAQK,YAAYnuC,MAAMoS,UAAY,sBAExC07B,EAAQt4B,QAAQra,UAAUW,OAAO,GAAGiY,EAAOM,OAAO+4B,KAAKI,oBACvDJ,EAAK5C,MAAQ,EACbmD,EAAe,EACfG,EAAQt4B,aAAU/P,EAClBqoC,EAAQtyB,aAAU/V,EAClBqoC,EAAQK,iBAAc1oC,EACtBqoC,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EAEtB,CACA,SAASsC,EAAO10C,GACd,MAAMwxC,EAAOr5B,EAAOq5B,KACd/4B,EAASN,EAAOM,OAAO+4B,KAC7B,IAAKU,EAAQt4B,QAAS,CAChB5Z,GAAKA,EAAEzC,SACT20C,EAAQt4B,QAAU5Z,EAAEzC,OAAO0K,QAAQ,IAAIkQ,EAAOM,OAAOqH,6BAElDoyB,EAAQt4B,UACPzB,EAAOM,OAAOwJ,SAAW9J,EAAOM,OAAOwJ,QAAQC,SAAW/J,EAAO8J,QACnEiwB,EAAQt4B,QAAUE,EAAgB3B,EAAOwJ,SAAU,IAAIxJ,EAAOM,OAAOoR,oBAAoB,GAEzFqoB,EAAQt4B,QAAUzB,EAAOnX,OAAOmX,EAAOzW,cAG3C,IAAIke,EAAUsyB,EAAQt4B,QAAQrb,cAAc,IAAIka,EAAOk5B,kBACnD/xB,IACFA,EAAUA,EAAQte,iBAAiB,kDAAkD,IAEvF4wC,EAAQtyB,QAAUA,EAEhBsyB,EAAQK,YADN3yB,EACoBzE,EAAe+2B,EAAQtyB,QAAS,IAAInH,EAAOk5B,kBAAkB,QAE7D9nC,CAE1B,CACA,IAAKqoC,EAAQtyB,UAAYsyB,EAAQK,YAAa,OAM9C,IAAIoC,EACAC,EACAC,EACAC,EACApgB,EACAC,EACAogB,EACAC,EACAC,EACAC,EACAZ,EACAC,EACAY,EACAC,EACAC,EACAC,EACAjD,EACAC,EAtBAn6B,EAAOM,OAAO6K,UAChBnL,EAAOO,UAAUtU,MAAMsV,SAAW,SAClCvB,EAAOO,UAAUtU,MAAMq0B,YAAc,QAEvCyZ,EAAQt4B,QAAQra,UAAUC,IAAI,GAAGiZ,EAAOm5B,yBAmBJ,IAAzBY,EAAMK,aAAa3lC,GAAqBlN,GACjD20C,EAAS30C,EAAEwxB,MACXojB,EAAS50C,EAAEozB,QAEXuhB,EAASnC,EAAMK,aAAa3lC,EAC5B0nC,EAASpC,EAAMK,aAAa5Y,GAE9B,MAAMsb,EAA8B,iBAANv1C,EAAiBA,EAAI,KAC9B,IAAjB+xC,GAAsBwD,IACxBZ,OAAS9qC,EACT+qC,OAAS/qC,EACT2oC,EAAMK,aAAa3lC,OAAIrD,EACvB2oC,EAAMK,aAAa5Y,OAAIpwB,GAEzB,MAAM6nC,EAAW8B,IACjBhC,EAAK5C,MAAQ2G,GAAkB7D,EAC/BK,EAAewD,GAAkB7D,GAC7B1xC,GAAwB,IAAjB+xC,GAAsBwD,GA8B/BR,EAAa,EACbC,EAAa,IA9Bb3C,EAAaH,EAAQt4B,QAAQgC,YAC7B02B,EAAcJ,EAAQt4B,QAAQ8M,aAC9BmuB,EAAUr6B,EAAc03B,EAAQt4B,SAASpO,KAAOvO,EAAO6d,QACvDg6B,EAAUt6B,EAAc03B,EAAQt4B,SAASnb,IAAMxB,EAAO2d,QACtD8Z,EAAQmgB,EAAUxC,EAAa,EAAIsC,EACnChgB,EAAQmgB,EAAUxC,EAAc,EAAIsC,EACpCK,EAAa/C,EAAQtyB,QAAQhE,aAAes2B,EAAQtyB,QAAQsB,YAC5Dg0B,EAAchD,EAAQtyB,QAAQ8G,cAAgBwrB,EAAQtyB,QAAQuB,aAC9DmzB,EAAcW,EAAazD,EAAK5C,MAChC2F,EAAeW,EAAc1D,EAAK5C,MAClCuG,EAAgBh8B,KAAKE,IAAIg5B,EAAa,EAAIiC,EAAc,EAAG,GAC3Dc,EAAgBj8B,KAAKE,IAAIi5B,EAAc,EAAIiC,EAAe,EAAG,GAC7Dc,GAAiBF,EACjBG,GAAiBF,EACjBL,EAAargB,EAAQ8c,EAAK5C,MAC1BoG,EAAargB,EAAQ6c,EAAK5C,MACtBmG,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,GAEXL,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,IAMbC,GAAiC,IAAf/D,EAAK5C,QACzBsD,EAAQC,QAAU,EAClBD,EAAQE,QAAU,GAEpBF,EAAQK,YAAYnuC,MAAMm2B,mBAAqB,QAC/C2X,EAAQK,YAAYnuC,MAAMoS,UAAY,eAAeu+B,QAAiBC,SACtE9C,EAAQtyB,QAAQxb,MAAMm2B,mBAAqB,QAC3C2X,EAAQtyB,QAAQxb,MAAMoS,UAAY,4BAA4Bg7B,EAAK5C,QACrE,CACA,SAAS4G,IACP,MAAMhE,EAAOr5B,EAAOq5B,KACd/4B,EAASN,EAAOM,OAAO+4B,KAC7B,IAAKU,EAAQt4B,QAAS,CAChBzB,EAAOM,OAAOwJ,SAAW9J,EAAOM,OAAOwJ,QAAQC,SAAW/J,EAAO8J,QACnEiwB,EAAQt4B,QAAUE,EAAgB3B,EAAOwJ,SAAU,IAAIxJ,EAAOM,OAAOoR,oBAAoB,GAEzFqoB,EAAQt4B,QAAUzB,EAAOnX,OAAOmX,EAAOzW,aAEzC,IAAIke,EAAUsyB,EAAQt4B,QAAQrb,cAAc,IAAIka,EAAOk5B,kBACnD/xB,IACFA,EAAUA,EAAQte,iBAAiB,kDAAkD,IAEvF4wC,EAAQtyB,QAAUA,EAEhBsyB,EAAQK,YADN3yB,EACoBzE,EAAe+2B,EAAQtyB,QAAS,IAAInH,EAAOk5B,kBAAkB,QAE7D9nC,CAE1B,CACKqoC,EAAQtyB,SAAYsyB,EAAQK,cAC7Bp6B,EAAOM,OAAO6K,UAChBnL,EAAOO,UAAUtU,MAAMsV,SAAW,GAClCvB,EAAOO,UAAUtU,MAAMq0B,YAAc,IAEvC+Y,EAAK5C,MAAQ,EACbmD,EAAe,EACfS,EAAMK,aAAa3lC,OAAIrD,EACvB2oC,EAAMK,aAAa5Y,OAAIpwB,EACvBqoC,EAAQK,YAAYnuC,MAAMm2B,mBAAqB,QAC/C2X,EAAQK,YAAYnuC,MAAMoS,UAAY,qBACtC07B,EAAQtyB,QAAQxb,MAAMm2B,mBAAqB,QAC3C2X,EAAQtyB,QAAQxb,MAAMoS,UAAY,8BAClC07B,EAAQt4B,QAAQra,UAAUW,OAAO,GAAGuY,EAAOm5B,oBAC3CM,EAAQt4B,aAAU/P,EAClBqoC,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EACpB,CAGA,SAASqD,EAAWz1C,GAClB,MAAMwxC,EAAOr5B,EAAOq5B,KAChBA,EAAK5C,OAAwB,IAAf4C,EAAK5C,MAErB4G,IAGAd,EAAO10C,EAEX,CACA,SAAS01C,IASP,MAAO,CACLlF,kBATsBr4B,EAAOM,OAAO+gB,kBAAmB,CACvDX,SAAS,EACTH,SAAS,GAQTid,2BANgCx9B,EAAOM,OAAO+gB,kBAAmB,CACjEX,SAAS,EACTH,SAAS,GAMb,CAGA,SAASoD,IACP,MAAM0V,EAAOr5B,EAAOq5B,KACpB,GAAIA,EAAKtvB,QAAS,OAClBsvB,EAAKtvB,SAAU,EACf,MAAM,gBACJsuB,EAAe,0BACfmF,GACED,IAGJv9B,EAAOO,UAAU5Z,iBAAiB,cAAe80C,EAAgBpD,GACjEr4B,EAAOO,UAAU5Z,iBAAiB,cAAei1C,EAAiB4B,GAClE,CAAC,YAAa,gBAAiB,cAAc10C,SAAQo9B,IACnDlmB,EAAOO,UAAU5Z,iBAAiBu/B,EAAW+V,EAAc5D,EAAgB,IAI7Er4B,EAAOO,UAAU5Z,iBAAiB,cAAeq1B,EAAawhB,EAChE,CACA,SAAS9Z,IACP,MAAM2V,EAAOr5B,EAAOq5B,KACpB,IAAKA,EAAKtvB,QAAS,OACnBsvB,EAAKtvB,SAAU,EACf,MAAM,gBACJsuB,EAAe,0BACfmF,GACED,IAGJv9B,EAAOO,UAAU3S,oBAAoB,cAAe6tC,EAAgBpD,GACpEr4B,EAAOO,UAAU3S,oBAAoB,cAAeguC,EAAiB4B,GACrE,CAAC,YAAa,gBAAiB,cAAc10C,SAAQo9B,IACnDlmB,EAAOO,UAAU3S,oBAAoBs4B,EAAW+V,EAAc5D,EAAgB,IAIhFr4B,EAAOO,UAAU3S,oBAAoB,cAAeouB,EAAawhB,EACnE,CAxgBAxrC,OAAOC,eAAe+N,EAAOq5B,KAAM,QAAS,CAC1ClnC,IAAG,IACMskC,EAET,GAAAh8B,CAAI9H,GACF,GAAI8jC,IAAU9jC,EAAO,CACnB,MAAM8U,EAAUsyB,EAAQtyB,QAClBhG,EAAUs4B,EAAQt4B,QACxBqF,EAAK,aAAcnU,EAAO8U,EAAShG,EACrC,CACAg1B,EAAQ9jC,CACV,IA8fFjK,EAAG,QAAQ,KACLsX,EAAOM,OAAO+4B,KAAKtvB,SACrB4Z,GACF,IAEFj7B,EAAG,WAAW,KACZg7B,GAAS,IAEXh7B,EAAG,cAAc,CAACshC,EAAIniC,KACfmY,EAAOq5B,KAAKtvB,SAjXnB,SAAsBliB,GACpB,MAAM+c,EAAS5E,EAAO4E,OACtB,IAAKm1B,EAAQtyB,QAAS,OACtB,GAAI4yB,EAAMvgB,UAAW,OACjBlV,EAAOE,SAAWjd,EAAEg1B,YAAYh1B,EAAE+B,iBACtCywC,EAAMvgB,WAAY,EAClB,MAAM3rB,EAAQ2rC,EAAQvuC,OAAS,EAAIuuC,EAAQ,GAAKjyC,EAChDwyC,EAAMK,aAAa3lC,EAAI5G,EAAMkrB,MAC7BghB,EAAMK,aAAa5Y,EAAI3zB,EAAM8sB,KAC/B,CAyWElC,CAAalxB,EAAE,IAEjBa,EAAG,YAAY,CAACshC,EAAIniC,KACbmY,EAAOq5B,KAAKtvB,SAvRnB,WACE,MAAMsvB,EAAOr5B,EAAOq5B,KACpB,IAAKU,EAAQtyB,QAAS,OACtB,IAAK4yB,EAAMvgB,YAAcugB,EAAMtgB,QAG7B,OAFAsgB,EAAMvgB,WAAY,OAClBugB,EAAMtgB,SAAU,GAGlBsgB,EAAMvgB,WAAY,EAClBugB,EAAMtgB,SAAU,EAChB,IAAI0jB,EAAoB,IACpBC,EAAoB,IACxB,MAAMC,EAAoBxX,EAASpxB,EAAI0oC,EACjCG,EAAevD,EAAMtf,SAAW4iB,EAChCE,EAAoB1X,EAASrE,EAAI4b,EACjCI,EAAezD,EAAMrf,SAAW6iB,EAGnB,IAAf1X,EAASpxB,IAAS0oC,EAAoBz8B,KAAK6C,KAAK+5B,EAAevD,EAAMtf,UAAYoL,EAASpxB,IAC3E,IAAfoxB,EAASrE,IAAS4b,EAAoB18B,KAAK6C,KAAKi6B,EAAezD,EAAMrf,UAAYmL,EAASrE,IAC9F,MAAMic,EAAmB/8B,KAAKC,IAAIw8B,EAAmBC,GACrDrD,EAAMtf,SAAW6iB,EACjBvD,EAAMrf,SAAW8iB,EAEjB,MAAM3B,EAAc9B,EAAMr1B,MAAQq0B,EAAK5C,MACjC2F,EAAe/B,EAAMn1B,OAASm0B,EAAK5C,MACzC4D,EAAMC,KAAOt5B,KAAKE,IAAI64B,EAAQG,WAAa,EAAIiC,EAAc,EAAG,GAChE9B,EAAMG,MAAQH,EAAMC,KACpBD,EAAME,KAAOv5B,KAAKE,IAAI64B,EAAQI,YAAc,EAAIiC,EAAe,EAAG,GAClE/B,EAAMI,MAAQJ,EAAME,KACpBF,EAAMtf,SAAW/Z,KAAKC,IAAID,KAAKE,IAAIm5B,EAAMtf,SAAUsf,EAAMG,MAAOH,EAAMC,MACtED,EAAMrf,SAAWha,KAAKC,IAAID,KAAKE,IAAIm5B,EAAMrf,SAAUqf,EAAMI,MAAOJ,EAAME,MACtER,EAAQK,YAAYnuC,MAAMm2B,mBAAqB,GAAG2b,MAClDhE,EAAQK,YAAYnuC,MAAMoS,UAAY,eAAeg8B,EAAMtf,eAAesf,EAAMrf,eAClF,CAsPEoD,EAAY,IAEd11B,EAAG,aAAa,CAACshC,EAAIniC,MACdmY,EAAOyT,WAAazT,EAAOM,OAAO+4B,KAAKtvB,SAAW/J,EAAOq5B,KAAKtvB,SAAW/J,EAAOM,OAAO+4B,KAAKvxC,QAC/Fw1C,EAAWz1C,EACb,IAEFa,EAAG,iBAAiB,KACdsX,EAAOq5B,KAAKtvB,SAAW/J,EAAOM,OAAO+4B,KAAKtvB,SAC5CuyB,GACF,IAEF5zC,EAAG,eAAe,KACZsX,EAAOq5B,KAAKtvB,SAAW/J,EAAOM,OAAO+4B,KAAKtvB,SAAW/J,EAAOM,OAAO6K,SACrEmxB,GACF,IAEFtqC,OAAOmX,OAAOnJ,EAAOq5B,KAAM,CACzB1V,SACAD,UACAsa,GAAIzB,EACJ0B,IAAKZ,EACLv1C,OAAQw1C,GAEZ,EC5mBA,SAAoBv9B,GAClB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,GACEqX,EAYJ,SAASm+B,EAAanpC,EAAG+sB,GACvB,MAAMqc,EAAe,WACnB,IAAIC,EACAC,EACAC,EACJ,MAAO,CAACC,EAAO/oB,KAGb,IAFA6oB,GAAY,EACZD,EAAWG,EAAMhzC,OACV6yC,EAAWC,EAAW,GAC3BC,EAAQF,EAAWC,GAAY,EAC3BE,EAAMD,IAAU9oB,EAClB6oB,EAAWC,EAEXF,EAAWE,EAGf,OAAOF,CAAQ,CAEnB,CAjBqB,GAwBrB,IAAII,EACAC,EAYJ,OAnBA9yC,KAAKoJ,EAAIA,EACTpJ,KAAKm2B,EAAIA,EACTn2B,KAAKkqB,UAAY9gB,EAAExJ,OAAS,EAM5BI,KAAK+yC,YAAc,SAAqBvD,GACtC,OAAKA,GAGLsD,EAAKN,EAAaxyC,KAAKoJ,EAAGomC,GAC1BqD,EAAKC,EAAK,GAIFtD,EAAKxvC,KAAKoJ,EAAEypC,KAAQ7yC,KAAKm2B,EAAE2c,GAAM9yC,KAAKm2B,EAAE0c,KAAQ7yC,KAAKoJ,EAAE0pC,GAAM9yC,KAAKoJ,EAAEypC,IAAO7yC,KAAKm2B,EAAE0c,IAR1E,CASlB,EACO7yC,IACT,CA8EA,SAASgzC,IACF3+B,EAAOoY,WAAWC,SACnBrY,EAAOoY,WAAWwmB,SACpB5+B,EAAOoY,WAAWwmB,YAASltC,SACpBsO,EAAOoY,WAAWwmB,OAE7B,CAtIA7Y,EAAa,CACX3N,WAAY,CACVC,aAAS3mB,EACTmtC,SAAS,EACTC,GAAI,WAIR9+B,EAAOoY,WAAa,CAClBC,aAAS3mB,GA8HXhJ,EAAG,cAAc,KACO,oBAAX5D,SAEiC,iBAArCkb,EAAOM,OAAO8X,WAAWC,SAAwBrY,EAAOM,OAAO8X,WAAWC,mBAAmBlZ,cAC9B,iBAArCa,EAAOM,OAAO8X,WAAWC,QAAuB,IAAIrzB,SAASmE,iBAAiB6W,EAAOM,OAAO8X,WAAWC,UAAY,CAACrY,EAAOM,OAAO8X,WAAWC,UAC5JvvB,SAAQi2C,IAEtB,GADK/+B,EAAOoY,WAAWC,UAASrY,EAAOoY,WAAWC,QAAU,IACxD0mB,GAAkBA,EAAe/+B,OACnCA,EAAOoY,WAAWC,QAAQvW,KAAKi9B,EAAe/+B,aACzC,GAAI++B,EAAgB,CACzB,MAAM7Y,EAAY,GAAGlmB,EAAOM,OAAO2gB,mBAC7B+d,EAAqBn3C,IACzBmY,EAAOoY,WAAWC,QAAQvW,KAAKja,EAAE41B,OAAO,IACxCzd,EAAO6I,SACPk2B,EAAenxC,oBAAoBs4B,EAAW8Y,EAAmB,EAEnED,EAAep4C,iBAAiBu/B,EAAW8Y,EAC7C,KAIJh/B,EAAOoY,WAAWC,QAAUrY,EAAOM,OAAO8X,WAAWC,OAAO,IAE9D3vB,EAAG,UAAU,KACXi2C,GAAc,IAEhBj2C,EAAG,UAAU,KACXi2C,GAAc,IAEhBj2C,EAAG,kBAAkB,KACnBi2C,GAAc,IAEhBj2C,EAAG,gBAAgB,CAACshC,EAAI5pB,EAAW2W,KAC5B/W,EAAOoY,WAAWC,UAAWrY,EAAOoY,WAAWC,QAAQrS,WAC5DhG,EAAOoY,WAAWpE,aAAa5T,EAAW2W,EAAa,IAEzDruB,EAAG,iBAAiB,CAACshC,EAAIrkC,EAAUoxB,KAC5B/W,EAAOoY,WAAWC,UAAWrY,EAAOoY,WAAWC,QAAQrS,WAC5DhG,EAAOoY,WAAWjK,cAAcxoB,EAAUoxB,EAAa,IAEzD/kB,OAAOmX,OAAOnJ,EAAOoY,WAAY,CAC/BpE,aA1HF,SAAsBirB,EAAIloB,GACxB,MAAMmoB,EAAal/B,EAAOoY,WAAWC,QACrC,IAAIzI,EACAuvB,EACJ,MAAM/2C,EAAS4X,EAAO5E,YACtB,SAASgkC,EAAuBn5C,GAC9B,GAAIA,EAAE+f,UAAW,OAMjB,MAAM5F,EAAYJ,EAAO0J,cAAgB1J,EAAOI,UAAYJ,EAAOI,UAC/B,UAAhCJ,EAAOM,OAAO8X,WAAW0mB,KAhBjC,SAAgC74C,GAC9B+Z,EAAOoY,WAAWwmB,OAAS5+B,EAAOM,OAAO/Z,KAAO,IAAI23C,EAAal+B,EAAOmK,WAAYlkB,EAAEkkB,YAAc,IAAI+zB,EAAal+B,EAAOkK,SAAUjkB,EAAEikB,SAC1I,CAeMm1B,CAAuBp5C,GAGvBk5C,GAAuBn/B,EAAOoY,WAAWwmB,OAAOF,aAAat+B,IAE1D++B,GAAuD,cAAhCn/B,EAAOM,OAAO8X,WAAW0mB,KACnDlvB,GAAc3pB,EAAE6pB,eAAiB7pB,EAAEipB,iBAAmBlP,EAAO8P,eAAiB9P,EAAOkP,iBACjFjZ,OAAOM,MAAMqZ,IAAgB3Z,OAAOqpC,SAAS1vB,KAC/CA,EAAa,GAEfuvB,GAAuB/+B,EAAYJ,EAAOkP,gBAAkBU,EAAa3pB,EAAEipB,gBAEzElP,EAAOM,OAAO8X,WAAWymB,UAC3BM,EAAsBl5C,EAAE6pB,eAAiBqvB,GAE3Cl5C,EAAE0pB,eAAewvB,GACjBl5C,EAAE+tB,aAAamrB,EAAqBn/B,GACpC/Z,EAAE6rB,oBACF7rB,EAAE4qB,qBACJ,CACA,GAAIloB,MAAM2L,QAAQ4qC,GAChB,IAAK,IAAIvrC,EAAI,EAAGA,EAAIurC,EAAW3zC,OAAQoI,GAAK,EACtCurC,EAAWvrC,KAAOojB,GAAgBmoB,EAAWvrC,aAAcvL,GAC7Dg3C,EAAuBF,EAAWvrC,SAG7BurC,aAAsB92C,GAAU2uB,IAAiBmoB,GAC1DE,EAAuBF,EAE3B,EAgFE/wB,cA/EF,SAAuBxoB,EAAUoxB,GAC/B,MAAM3uB,EAAS4X,EAAO5E,YAChB8jC,EAAal/B,EAAOoY,WAAWC,QACrC,IAAI1kB,EACJ,SAAS4rC,EAAwBt5C,GAC3BA,EAAE+f,YACN/f,EAAEkoB,cAAcxoB,EAAUqa,GACT,IAAbra,IACFM,EAAEguB,kBACEhuB,EAAEqa,OAAOsQ,YACXjT,GAAS,KACP1X,EAAE+nB,kBAAkB,IAGxB5K,EAAqBnd,EAAEsa,WAAW,KAC3B2+B,GACLj5C,EAAEiuB,eAAe,KAGvB,CACA,GAAIvrB,MAAM2L,QAAQ4qC,GAChB,IAAKvrC,EAAI,EAAGA,EAAIurC,EAAW3zC,OAAQoI,GAAK,EAClCurC,EAAWvrC,KAAOojB,GAAgBmoB,EAAWvrC,aAAcvL,GAC7Dm3C,EAAwBL,EAAWvrC,SAG9BurC,aAAsB92C,GAAU2uB,IAAiBmoB,GAC1DK,EAAwBL,EAE5B,GAoDF,ECxLA,SAAcn/B,GACZ,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,GACEqX,EACJgmB,EAAa,CACXyZ,KAAM,CACJz1B,SAAS,EACT01B,kBAAmB,sBACnBC,iBAAkB,iBAClBC,iBAAkB,aAClBC,kBAAmB,0BACnBC,iBAAkB,yBAClBC,wBAAyB,wBACzBC,kBAAmB,+BACnBC,iBAAkB,KAClBC,gCAAiC,KACjCC,cAAe,KACfC,2BAA4B,KAC5BC,UAAW,QACXllC,GAAI,KACJmlC,eAAe,KAGnBrgC,EAAOw/B,KAAO,CACZc,SAAS,GAEX,IACIC,EACAC,EAFAC,EAAa,KAGbC,GAA6B,IAAIxjC,MAAO4D,UAC5C,SAAS6/B,EAAOC,GACd,MAAMC,EAAeJ,EACO,IAAxBI,EAAat1C,SACjBs1C,EAAah1C,UAAY,GACzBg1C,EAAah1C,UAAY+0C,EAC3B,CAQA,SAASE,EAAgBp3C,IACvBA,EAAKga,GAAkBha,IACpBZ,SAAQoqC,IACTA,EAAM/rC,aAAa,WAAY,IAAI,GAEvC,CACA,SAAS45C,EAAmBr3C,IAC1BA,EAAKga,GAAkBha,IACpBZ,SAAQoqC,IACTA,EAAM/rC,aAAa,WAAY,KAAK,GAExC,CACA,SAAS65C,EAAUt3C,EAAIu3C,IACrBv3C,EAAKga,GAAkBha,IACpBZ,SAAQoqC,IACTA,EAAM/rC,aAAa,OAAQ85C,EAAK,GAEpC,CACA,SAASC,EAAqBx3C,EAAIy3C,IAChCz3C,EAAKga,GAAkBha,IACpBZ,SAAQoqC,IACTA,EAAM/rC,aAAa,uBAAwBg6C,EAAY,GAE3D,CAOA,SAASC,EAAW13C,EAAI4f,IACtB5f,EAAKga,GAAkBha,IACpBZ,SAAQoqC,IACTA,EAAM/rC,aAAa,aAAcmiB,EAAM,GAE3C,CAaA,SAAS+3B,EAAU33C,IACjBA,EAAKga,GAAkBha,IACpBZ,SAAQoqC,IACTA,EAAM/rC,aAAa,iBAAiB,EAAK,GAE7C,CACA,SAASm6C,EAAS53C,IAChBA,EAAKga,GAAkBha,IACpBZ,SAAQoqC,IACTA,EAAM/rC,aAAa,iBAAiB,EAAM,GAE9C,CACA,SAASo6C,EAAkB15C,GACzB,GAAkB,KAAdA,EAAE2mC,SAAgC,KAAd3mC,EAAE2mC,QAAgB,OAC1C,MAAMluB,EAASN,EAAOM,OAAOk/B,KACvBhmB,EAAW3xB,EAAEzC,OACnB,IAAI4a,EAAOtV,aAAcsV,EAAOtV,WAAWhB,IAAO8vB,IAAaxZ,EAAOtV,WAAWhB,KAAMsW,EAAOtV,WAAWhB,GAAG1B,SAASH,EAAEzC,SAChHyC,EAAEzC,OAAO0J,QAAQ45B,GAAkB1oB,EAAOM,OAAO5V,WAAWgqC,cADnE,CAGA,GAAI10B,EAAO5V,YAAc4V,EAAO5V,WAAWK,QAAUuV,EAAO5V,WAAWI,OAAQ,CAC7E,MAAM8mB,EAAU5N,GAAkB1D,EAAO5V,WAAWK,QACpCiZ,GAAkB1D,EAAO5V,WAAWI,QACxC4G,SAASooB,KACbxZ,EAAOgQ,QAAUhQ,EAAOM,OAAO/Z,MACnCyZ,EAAOgV,YAELhV,EAAOgQ,MACT2wB,EAAOrgC,EAAOu/B,kBAEdc,EAAOrgC,EAAOq/B,mBAGdruB,EAAQlgB,SAASooB,KACbxZ,EAAO+P,cAAgB/P,EAAOM,OAAO/Z,MACzCyZ,EAAOsV,YAELtV,EAAO+P,YACT4wB,EAAOrgC,EAAOs/B,mBAEde,EAAOrgC,EAAOo/B,kBAGpB,CACI1/B,EAAOtV,YAAc8uB,EAAS1qB,QAAQ45B,GAAkB1oB,EAAOM,OAAO5V,WAAWgqC,eACnFlb,EAAS5qB,OA1BX,CA4BF,CA0BA,SAAS4yC,IACP,OAAOxhC,EAAOtV,YAAcsV,EAAOtV,WAAWyqC,SAAWn1B,EAAOtV,WAAWyqC,QAAQ5pC,MACrF,CACA,SAASk2C,IACP,OAAOD,KAAmBxhC,EAAOM,OAAO5V,WAAWipC,SACrD,CAmBA,MAAM+N,EAAY,CAACh4C,EAAIi4C,EAAWf,KAChCE,EAAgBp3C,GACG,WAAfA,EAAGsE,UACLgzC,EAAUt3C,EAAI,UACdA,EAAG/C,iBAAiB,UAAW46C,IAEjCH,EAAW13C,EAAIk3C,GA9HjB,SAAuBl3C,EAAIk4C,IACzBl4C,EAAKga,GAAkBha,IACpBZ,SAAQoqC,IACTA,EAAM/rC,aAAa,gBAAiBy6C,EAAS,GAEjD,CA0HEC,CAAcn4C,EAAIi4C,EAAU,EAExBG,EAAoBj6C,IACpB24C,GAAsBA,IAAuB34C,EAAEzC,SAAWo7C,EAAmBx4C,SAASH,EAAEzC,UAC1Fm7C,GAAsB,GAExBvgC,EAAOw/B,KAAKc,SAAU,CAAI,EAEtByB,EAAkB,KACtBxB,GAAsB,EACtB75C,uBAAsB,KACpBA,uBAAsB,KACfsZ,EAAOgG,YACVhG,EAAOw/B,KAAKc,SAAU,EACxB,GACA,GACF,EAEE0B,EAAqBn6C,IACzB64C,GAA6B,IAAIxjC,MAAO4D,SAAS,EAE7CmhC,EAAcp6C,IAClB,GAAImY,EAAOw/B,KAAKc,UAAYtgC,EAAOM,OAAOk/B,KAAKa,cAAe,OAC9D,IAAI,IAAInjC,MAAO4D,UAAY4/B,EAA6B,IAAK,OAC7D,MAAMj/B,EAAU5Z,EAAEzC,OAAO0K,QAAQ,IAAIkQ,EAAOM,OAAOqH,4BACnD,IAAKlG,IAAYzB,EAAOnX,OAAOuI,SAASqQ,GAAU,OAClD++B,EAAqB/+B,EACrB,MAAMygC,EAAWliC,EAAOnX,OAAOoL,QAAQwN,KAAazB,EAAOzW,YACrDgmB,EAAYvP,EAAOM,OAAOoN,qBAAuB1N,EAAOsO,eAAiBtO,EAAOsO,cAAcld,SAASqQ,GACzGygC,GAAY3yB,GACZ1nB,EAAEs6C,oBAAsBt6C,EAAEs6C,mBAAmBC,mBAC7CpiC,EAAOiJ,eACTjJ,EAAOtW,GAAGgZ,WAAa,EAEvB1C,EAAOtW,GAAGxE,UAAY,EAExBwB,uBAAsB,KAChB65C,IACAvgC,EAAOM,OAAO/Z,KAChByZ,EAAOyU,YAAY/jB,SAAS+Q,EAAQpW,aAAa,4BAA6B,GAE9E2U,EAAOlW,QAAQkW,EAAOnX,OAAOoL,QAAQwN,GAAU,GAEjD8+B,GAAsB,EAAK,IAC3B,EAEEj1B,EAAa,KACjB,MAAMhL,EAASN,EAAOM,OAAOk/B,KACzBl/B,EAAO6/B,4BACTe,EAAqBlhC,EAAOnX,OAAQyX,EAAO6/B,4BAEzC7/B,EAAO8/B,WACTY,EAAUhhC,EAAOnX,OAAQyX,EAAO8/B,WAElC,MAAMn2B,EAAejK,EAAOnX,OAAO0C,OAC/B+U,EAAOy/B,mBACT//B,EAAOnX,OAAOC,SAAQ,CAAC2Y,EAASrJ,KAC9B,MAAM9O,EAAa0W,EAAOM,OAAO/Z,KAAOmK,SAAS+Q,EAAQpW,aAAa,2BAA4B,IAAM+M,EAExGgpC,EAAW3/B,EADcnB,EAAOy/B,kBAAkBnqC,QAAQ,gBAAiBtM,EAAa,GAAGsM,QAAQ,uBAAwBqU,GACtF,GAEzC,EAyFFvhB,EAAG,cAAc,KACf+3C,EAAa7kC,EAAc,OAAQoE,EAAOM,OAAOk/B,KAAKC,mBACtDgB,EAAWt5C,aAAa,YAAa,aACrCs5C,EAAWt5C,aAAa,cAAe,OAAO,IAEhDuB,EAAG,aAAa,KACTsX,EAAOM,OAAOk/B,KAAKz1B,SA7Fb,MACX,MAAMzJ,EAASN,EAAOM,OAAOk/B,KAC7Bx/B,EAAOtW,GAAGktB,OAAO6pB,GAGjB,MAAMvc,EAAclkB,EAAOtW,GACvB4W,EAAO2/B,iCACTiB,EAAqBhd,EAAa5jB,EAAO2/B,iCAEvC3/B,EAAO0/B,kBACToB,EAAWld,EAAa5jB,EAAO0/B,kBAE7B1/B,EAAO4/B,eACTc,EAAU9c,EAAa5jB,EAAO4/B,eAIhC,MAAM3/B,EAAYP,EAAOO,UACnBohC,EAAYrhC,EAAOpF,IAAMqF,EAAUlV,aAAa,OAAS,kBA/OxCkY,EA+O0E,QA9OpF,IAATA,IACFA,EAAO,IAGF,IAAI8+B,OAAO9+B,GAAM3N,QAAQ,MADb,IAAMoL,KAAKshC,MAAM,GAAKthC,KAAKuhC,UAAUttC,SAAS,QAJnE,IAAyBsO,EAgPvB,MAAMi/B,EAAOxiC,EAAOM,OAAO/X,UAAYyX,EAAOM,OAAO/X,SAASwhB,QAAU,MAAQ,SArMlF,IAAqB7O,IAsMAymC,EArMdj+B,GAqMGnD,GApMLzX,SAAQoqC,IACTA,EAAM/rC,aAAa,KAAM+T,EAAG,IAGhC,SAAmBxR,EAAI84C,IACrB94C,EAAKga,GAAkBha,IACpBZ,SAAQoqC,IACTA,EAAM/rC,aAAa,YAAaq7C,EAAK,GAEzC,CA4LEC,CAAUliC,EAAWiiC,GAGrBl3B,IAGA,IAAI,OACF9gB,EAAM,OACNC,GACEuV,EAAO5V,WAAa4V,EAAO5V,WAAa,CAAC,EAC7CI,EAASkZ,GAAkBlZ,GAC3BC,EAASiZ,GAAkBjZ,GACvBD,GACFA,EAAO1B,SAAQY,GAAMg4C,EAAUh4C,EAAIi4C,EAAWrhC,EAAOq/B,oBAEnDl1C,GACFA,EAAO3B,SAAQY,GAAMg4C,EAAUh4C,EAAIi4C,EAAWrhC,EAAOo/B,oBAInD+B,KACmB/9B,GAAkB1D,EAAOtV,WAAWhB,IAC5CZ,SAAQY,IACnBA,EAAG/C,iBAAiB,UAAW46C,EAAkB,IAKpCjlC,IACR3V,iBAAiB,mBAAoBq7C,GAC9ChiC,EAAOtW,GAAG/C,iBAAiB,QAASs7C,GAAa,GACjDjiC,EAAOtW,GAAG/C,iBAAiB,QAASs7C,GAAa,GACjDjiC,EAAOtW,GAAG/C,iBAAiB,cAAem7C,GAAmB,GAC7D9hC,EAAOtW,GAAG/C,iBAAiB,YAAao7C,GAAiB,EAAK,EAwC9Dt6C,EAAM,IAERiB,EAAG,kEAAkE,KAC9DsX,EAAOM,OAAOk/B,KAAKz1B,SACxBuB,GAAY,IAEd5iB,EAAG,yCAAyC,KACrCsX,EAAOM,OAAOk/B,KAAKz1B,SA5N1B,WACE,GAAI/J,EAAOM,OAAO/Z,MAAQyZ,EAAOM,OAAOsI,SAAW5I,EAAO5V,WAAY,OACtE,MAAM,OACJI,EAAM,OACNC,GACEuV,EAAO5V,WACPK,IACEuV,EAAO+P,aACTsxB,EAAU52C,GACVs2C,EAAmBt2C,KAEnB62C,EAAS72C,GACTq2C,EAAgBr2C,KAGhBD,IACEwV,EAAOgQ,OACTqxB,EAAU72C,GACVu2C,EAAmBv2C,KAEnB82C,EAAS92C,GACTs2C,EAAgBt2C,IAGtB,CAqMEk4C,EAAkB,IAEpBh6C,EAAG,oBAAoB,KAChBsX,EAAOM,OAAOk/B,KAAKz1B,SAjM1B,WACE,MAAMzJ,EAASN,EAAOM,OAAOk/B,KACxBgC,KACLxhC,EAAOtV,WAAWyqC,QAAQrsC,SAAQysC,IAC5Bv1B,EAAOM,OAAO5V,WAAWipC,YAC3BmN,EAAgBvL,GACXv1B,EAAOM,OAAO5V,WAAWspC,eAC5BgN,EAAUzL,EAAU,UACpB6L,EAAW7L,EAAUj1B,EAAOw/B,wBAAwBlqC,QAAQ,gBAAiBiN,EAAa0yB,GAAY,MAGtGA,EAASzmC,QAAQ45B,GAAkB1oB,EAAOM,OAAO5V,WAAWiqC,oBAC9DY,EAASpuC,aAAa,eAAgB,QAEtCouC,EAASxtB,gBAAgB,eAC3B,GAEJ,CAiLE46B,EAAkB,IAEpBj6C,EAAG,WAAW,KACPsX,EAAOM,OAAOk/B,KAAKz1B,SArD1B,WACM02B,GAAYA,EAAW14C,SAC3B,IAAI,OACFyC,EAAM,OACNC,GACEuV,EAAO5V,WAAa4V,EAAO5V,WAAa,CAAC,EAC7CI,EAASkZ,GAAkBlZ,GAC3BC,EAASiZ,GAAkBjZ,GACvBD,GACFA,EAAO1B,SAAQY,GAAMA,EAAGkE,oBAAoB,UAAW2zC,KAErD92C,GACFA,EAAO3B,SAAQY,GAAMA,EAAGkE,oBAAoB,UAAW2zC,KAIrDE,KACmB/9B,GAAkB1D,EAAOtV,WAAWhB,IAC5CZ,SAAQY,IACnBA,EAAGkE,oBAAoB,UAAW2zC,EAAkB,IAGvCjlC,IACR1O,oBAAoB,mBAAoBo0C,GAE7ChiC,EAAOtW,IAA2B,iBAAdsW,EAAOtW,KAC7BsW,EAAOtW,GAAGkE,oBAAoB,QAASq0C,GAAa,GACpDjiC,EAAOtW,GAAGkE,oBAAoB,cAAek0C,GAAmB,GAChE9hC,EAAOtW,GAAGkE,oBAAoB,YAAam0C,GAAiB,GAEhE,CAwBEha,EAAS,GAEb,ECrXA,SAAiBhoB,GACf,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,GACEqX,EACJgmB,EAAa,CACXrrB,QAAS,CACPqP,SAAS,EACT64B,KAAM,GACNjoC,cAAc,EACdhR,IAAK,SACLk5C,WAAW,KAGf,IAAInwB,GAAc,EACdowB,EAAQ,CAAC,EACb,MAAMC,EAAUhoC,GACPA,EAAK9F,WAAWW,QAAQ,OAAQ,KAAKA,QAAQ,WAAY,IAAIA,QAAQ,OAAQ,KAAKA,QAAQ,MAAO,IAAIA,QAAQ,MAAO,IAEvHotC,EAAgBC,IACpB,MAAMn+C,EAASyY,IACf,IAAInN,EAEFA,EADE6yC,EACS,IAAI/pC,IAAI+pC,GAERn+C,EAAOsL,SAEpB,MAAM8yC,EAAY9yC,EAASgM,SAASnR,MAAM,GAAGiI,MAAM,KAAKsF,QAAO2qC,GAAiB,KAATA,IACjEzN,EAAQwN,EAAU33C,OAGxB,MAAO,CACL5B,IAHUu5C,EAAUxN,EAAQ,GAI5B/iC,MAHYuwC,EAAUxN,EAAQ,GAI/B,EAEG0N,EAAa,CAACz5C,EAAKyO,KACvB,MAAMtT,EAASyY,IACf,IAAKmV,IAAgB1S,EAAOM,OAAO5F,QAAQqP,QAAS,OACpD,IAAI3Z,EAEFA,EADE4P,EAAOM,OAAO5H,IACL,IAAIQ,IAAI8G,EAAOM,OAAO5H,KAEtB5T,EAAOsL,SAEpB,MAAMrH,EAAQiX,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAAU/J,EAAOwJ,SAASpjB,cAAc,6BAA6BgS,OAAa4H,EAAOnX,OAAOuP,GACtJ,IAAIzF,EAAQowC,EAAQh6C,EAAMsC,aAAa,iBACvC,GAAI2U,EAAOM,OAAO5F,QAAQkoC,KAAKr3C,OAAS,EAAG,CACzC,IAAIq3C,EAAO5iC,EAAOM,OAAO5F,QAAQkoC,KACH,MAA1BA,EAAKA,EAAKr3C,OAAS,KAAYq3C,EAAOA,EAAK33C,MAAM,EAAG23C,EAAKr3C,OAAS,IACtEoH,EAAQ,GAAGiwC,KAAQj5C,EAAM,GAAGA,KAAS,KAAKgJ,GAC5C,MAAYvC,EAASgM,SAAShL,SAASzH,KACrCgJ,EAAQ,GAAGhJ,EAAM,GAAGA,KAAS,KAAKgJ,KAEhCqN,EAAOM,OAAO5F,QAAQmoC,YACxBlwC,GAASvC,EAASyJ,QAEpB,MAAMwpC,EAAev+C,EAAO4V,QAAQ4oC,MAChCD,GAAgBA,EAAa1wC,QAAUA,IAGvCqN,EAAOM,OAAO5F,QAAQC,aACxB7V,EAAO4V,QAAQC,aAAa,CAC1BhI,SACC,KAAMA,GAET7N,EAAO4V,QAAQiC,UAAU,CACvBhK,SACC,KAAMA,GACX,EAEI4wC,EAAgB,CAACj7C,EAAOqK,EAAOygB,KACnC,GAAIzgB,EACF,IAAK,IAAIgB,EAAI,EAAGpI,EAASyU,EAAOnX,OAAO0C,OAAQoI,EAAIpI,EAAQoI,GAAK,EAAG,CACjE,MAAM5K,EAAQiX,EAAOnX,OAAO8K,GAE5B,GADqBovC,EAAQh6C,EAAMsC,aAAa,mBAC3BsH,EAAO,CAC1B,MAAMyF,EAAQ4H,EAAOqW,cAActtB,GACnCiX,EAAOlW,QAAQsO,EAAO9P,EAAO8qB,EAC/B,CACF,MAEApT,EAAOlW,QAAQ,EAAGxB,EAAO8qB,EAC3B,EAEIowB,EAAqB,KACzBV,EAAQE,EAAchjC,EAAOM,OAAO5H,KACpC6qC,EAAcvjC,EAAOM,OAAOhY,MAAOw6C,EAAMnwC,OAAO,EAAM,EA6BxDjK,EAAG,QAAQ,KACLsX,EAAOM,OAAO5F,QAAQqP,SA5Bf,MACX,MAAMjlB,EAASyY,IACf,GAAKyC,EAAOM,OAAO5F,QAAnB,CACA,IAAK5V,EAAO4V,UAAY5V,EAAO4V,QAAQiC,UAGrC,OAFAqD,EAAOM,OAAO5F,QAAQqP,SAAU,OAChC/J,EAAOM,OAAOmjC,eAAe15B,SAAU,GAGzC2I,GAAc,EACdowB,EAAQE,EAAchjC,EAAOM,OAAO5H,KAC/BoqC,EAAMn5C,KAAQm5C,EAAMnwC,OAMzB4wC,EAAc,EAAGT,EAAMnwC,MAAOqN,EAAOM,OAAOqS,oBACvC3S,EAAOM,OAAO5F,QAAQC,cACzB7V,EAAO6B,iBAAiB,WAAY68C,IAP/BxjC,EAAOM,OAAO5F,QAAQC,cACzB7V,EAAO6B,iBAAiB,WAAY68C,EAVN,CAiBlC,EAUE/7C,EACF,IAEFiB,EAAG,WAAW,KACRsX,EAAOM,OAAO5F,QAAQqP,SAZZ,MACd,MAAMjlB,EAASyY,IACVyC,EAAOM,OAAO5F,QAAQC,cACzB7V,EAAO8I,oBAAoB,WAAY41C,EACzC,EASEzb,EACF,IAEFr/B,EAAG,4CAA4C,KACzCgqB,GACF0wB,EAAWpjC,EAAOM,OAAO5F,QAAQ/Q,IAAKqW,EAAOzW,YAC/C,IAEFb,EAAG,eAAe,KACZgqB,GAAe1S,EAAOM,OAAO6K,SAC/Bi4B,EAAWpjC,EAAOM,OAAO5F,QAAQ/Q,IAAKqW,EAAOzW,YAC/C,GAEJ,ECxIA,SAAwBwW,GACtB,IAAI,OACFC,EAAM,aACN+lB,EAAY,KACZjf,EAAI,GACJpe,GACEqX,EACA2S,GAAc,EAClB,MAAM1tB,EAAWsX,IACXxX,EAASyY,IACfwoB,EAAa,CACX0d,eAAgB,CACd15B,SAAS,EACTpP,cAAc,EACd+oC,YAAY,EACZ,aAAArtB,CAAc2T,EAAI37B,GAChB,GAAI2R,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAAS,CACnD,MAAM45B,EAAgB3jC,EAAOnX,OAAO2P,QAAOiJ,GAAWA,EAAQpW,aAAa,eAAiBgD,IAAM,GAClG,OAAKs1C,EACSjzC,SAASizC,EAAct4C,aAAa,2BAA4B,IADnD,CAG7B,CACA,OAAO2U,EAAOqW,cAAc1U,EAAgB3B,EAAOwJ,SAAU,IAAIxJ,EAAOM,OAAOqH,yBAAyBtZ,gCAAmCA,OAAU,GACvJ,KAGJ,MAAMu1C,EAAe,KACnB98B,EAAK,cACL,MAAM+8B,EAAU7+C,EAASoL,SAAS/B,KAAKuH,QAAQ,IAAK,IAC9CkuC,EAAgB9jC,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAAU/J,EAAOwJ,SAASpjB,cAAc,6BAA6B4Z,EAAOzW,iBAAmByW,EAAOnX,OAAOmX,EAAOzW,aAElL,GAAIs6C,KADoBC,EAAgBA,EAAcz4C,aAAa,aAAe,IACjD,CAC/B,MAAMqpB,EAAW1U,EAAOM,OAAOmjC,eAAeptB,cAAcrW,EAAQ6jC,GACpE,QAAwB,IAAbnvB,GAA4Bze,OAAOM,MAAMme,GAAW,OAC/D1U,EAAOlW,QAAQ4qB,EACjB,GAEIqvB,EAAU,KACd,IAAKrxB,IAAgB1S,EAAOM,OAAOmjC,eAAe15B,QAAS,OAC3D,MAAM+5B,EAAgB9jC,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAAU/J,EAAOwJ,SAASpjB,cAAc,6BAA6B4Z,EAAOzW,iBAAmByW,EAAOnX,OAAOmX,EAAOzW,aAC5Ky6C,EAAkBF,EAAgBA,EAAcz4C,aAAa,cAAgBy4C,EAAcz4C,aAAa,gBAAkB,GAC5H2U,EAAOM,OAAOmjC,eAAe9oC,cAAgB7V,EAAO4V,SAAW5V,EAAO4V,QAAQC,cAChF7V,EAAO4V,QAAQC,aAAa,KAAM,KAAM,IAAIqpC,KAAqB,IACjEl9B,EAAK,aAEL9hB,EAASoL,SAAS/B,KAAO21C,GAAmB,GAC5Cl9B,EAAK,WACP,EAoBFpe,EAAG,QAAQ,KACLsX,EAAOM,OAAOmjC,eAAe15B,SAnBtB,MACX,IAAK/J,EAAOM,OAAOmjC,eAAe15B,SAAW/J,EAAOM,OAAO5F,SAAWsF,EAAOM,OAAO5F,QAAQqP,QAAS,OACrG2I,GAAc,EACd,MAAMrkB,EAAOrJ,EAASoL,SAAS/B,KAAKuH,QAAQ,IAAK,IACjD,GAAIvH,EAAM,CACR,MAAM/F,EAAQ,EACR8P,EAAQ4H,EAAOM,OAAOmjC,eAAeptB,cAAcrW,EAAQ3R,GACjE2R,EAAOlW,QAAQsO,GAAS,EAAG9P,EAAO0X,EAAOM,OAAOqS,oBAAoB,EACtE,CACI3S,EAAOM,OAAOmjC,eAAeC,YAC/B5+C,EAAO6B,iBAAiB,aAAci9C,EACxC,EASEn8C,EACF,IAEFiB,EAAG,WAAW,KACRsX,EAAOM,OAAOmjC,eAAe15B,SAV7B/J,EAAOM,OAAOmjC,eAAeC,YAC/B5+C,EAAO8I,oBAAoB,aAAcg2C,EAW3C,IAEFl7C,EAAG,4CAA4C,KACzCgqB,GACFqxB,GACF,IAEFr7C,EAAG,eAAe,KACZgqB,GAAe1S,EAAOM,OAAO6K,SAC/B44B,GACF,GAEJ,ECtFA,SAAkBhkC,GAChB,IAuBI+vB,EACAmU,GAxBA,OACFjkC,EAAM,aACN+lB,EAAY,GACZr9B,EAAE,KACFoe,EAAI,OACJxG,GACEP,EACJC,EAAOzX,SAAW,CAChBi3B,SAAS,EACTC,QAAQ,EACRykB,SAAU,GAEZne,EAAa,CACXx9B,SAAU,CACRwhB,SAAS,EACTvhB,MAAO,IACP27C,mBAAmB,EACnBC,sBAAsB,EACtBC,iBAAiB,EACjBC,kBAAkB,EAClBC,mBAAmB,KAKvB,IAEIC,EAEAC,EACA3qB,EACA4qB,EACAC,EACAC,EACAC,EACAC,EAVAC,EAAqBzkC,GAAUA,EAAO/X,SAAW+X,EAAO/X,SAASC,MAAQ,IACzEw8C,EAAuB1kC,GAAUA,EAAO/X,SAAW+X,EAAO/X,SAASC,MAAQ,IAE3Ey8C,GAAoB,IAAI/nC,MAAO4D,UAQnC,SAASw7B,EAAgBz0C,GAClBmY,IAAUA,EAAOgG,WAAchG,EAAOO,WACvC1Y,EAAEzC,SAAW4a,EAAOO,YACxBP,EAAOO,UAAU3S,oBAAoB,gBAAiB0uC,GAClDwI,GAAwBj9C,EAAE41B,QAAU51B,EAAE41B,OAAOC,mBAGjDiC,IACF,CACA,MAAMulB,EAAe,KACnB,GAAIllC,EAAOgG,YAAchG,EAAOzX,SAASi3B,QAAS,OAC9Cxf,EAAOzX,SAASk3B,OAClBglB,GAAY,EACHA,IACTO,EAAuBR,EACvBC,GAAY,GAEd,MAAMP,EAAWlkC,EAAOzX,SAASk3B,OAAS+kB,EAAmBS,EAAoBD,GAAuB,IAAI9nC,MAAO4D,UACnHd,EAAOzX,SAAS27C,SAAWA,EAC3Bp9B,EAAK,mBAAoBo9B,EAAUA,EAAWa,GAC9Cd,EAAMv9C,uBAAsB,KAC1Bw+C,GAAc,GACd,EAaEC,EAAMC,IACV,GAAIplC,EAAOgG,YAAchG,EAAOzX,SAASi3B,QAAS,OAClDliB,qBAAqB2mC,GACrBiB,IACA,IAAI18C,OAA8B,IAAf48C,EAA6BplC,EAAOM,OAAO/X,SAASC,MAAQ48C,EAC/EL,EAAqB/kC,EAAOM,OAAO/X,SAASC,MAC5Cw8C,EAAuBhlC,EAAOM,OAAO/X,SAASC,MAC9C,MAAM68C,EAlBc,MACpB,IAAIvB,EAMJ,GAJEA,EADE9jC,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAC1B/J,EAAOnX,OAAO2P,QAAOiJ,GAAWA,EAAQra,UAAUY,SAAS,yBAAwB,GAEnFgY,EAAOnX,OAAOmX,EAAOzW,aAElCu6C,EAEL,OAD0BpzC,SAASozC,EAAcz4C,aAAa,wBAAyB,GAC/D,EASEi6C,IACrBrvC,OAAOM,MAAM8uC,IAAsBA,EAAoB,QAA2B,IAAfD,IACtE58C,EAAQ68C,EACRN,EAAqBM,EACrBL,EAAuBK,GAEzBb,EAAmBh8C,EACnB,MAAMF,EAAQ0X,EAAOM,OAAOhY,MACtBi9C,EAAU,KACTvlC,IAAUA,EAAOgG,YAClBhG,EAAOM,OAAO/X,SAAS+7C,kBACpBtkC,EAAO+P,aAAe/P,EAAOM,OAAO/Z,MAAQyZ,EAAOM,OAAOsI,QAC7D5I,EAAOsV,UAAUhtB,GAAO,GAAM,GAC9Bwe,EAAK,aACK9G,EAAOM,OAAO/X,SAAS87C,kBACjCrkC,EAAOlW,QAAQkW,EAAOnX,OAAO0C,OAAS,EAAGjD,GAAO,GAAM,GACtDwe,EAAK,cAGF9G,EAAOgQ,OAAShQ,EAAOM,OAAO/Z,MAAQyZ,EAAOM,OAAOsI,QACvD5I,EAAOgV,UAAU1sB,GAAO,GAAM,GAC9Bwe,EAAK,aACK9G,EAAOM,OAAO/X,SAAS87C,kBACjCrkC,EAAOlW,QAAQ,EAAGxB,GAAO,GAAM,GAC/Bwe,EAAK,aAGL9G,EAAOM,OAAO6K,UAChB85B,GAAoB,IAAI/nC,MAAO4D,UAC/Bpa,uBAAsB,KACpBy+C,GAAK,KAET,EAcF,OAZI38C,EAAQ,GACV4U,aAAa0yB,GACbA,EAAUjiC,YAAW,KACnB03C,GAAS,GACR/8C,IAEH9B,uBAAsB,KACpB6+C,GAAS,IAKN/8C,CAAK,EAER/C,EAAQ,KACZw/C,GAAoB,IAAI/nC,MAAO4D,UAC/Bd,EAAOzX,SAASi3B,SAAU,EAC1B2lB,IACAr+B,EAAK,gBAAgB,EAEjB8rB,EAAO,KACX5yB,EAAOzX,SAASi3B,SAAU,EAC1BpiB,aAAa0yB,GACbxyB,qBAAqB2mC,GACrBn9B,EAAK,eAAe,EAEhB5d,EAAQ,CAACqqB,EAAUiyB,KACvB,GAAIxlC,EAAOgG,YAAchG,EAAOzX,SAASi3B,QAAS,OAClDpiB,aAAa0yB,GACRvc,IACHsxB,GAAsB,GAExB,MAAMU,EAAU,KACdz+B,EAAK,iBACD9G,EAAOM,OAAO/X,SAAS47C,kBACzBnkC,EAAOO,UAAU5Z,iBAAiB,gBAAiB21C,GAEnD3c,GACF,EAGF,GADA3f,EAAOzX,SAASk3B,QAAS,EACrB+lB,EAMF,OALIZ,IACFJ,EAAmBxkC,EAAOM,OAAO/X,SAASC,OAE5Co8C,GAAe,OACfW,IAGF,MAAM/8C,EAAQg8C,GAAoBxkC,EAAOM,OAAO/X,SAASC,MACzDg8C,EAAmBh8C,IAAS,IAAI0U,MAAO4D,UAAYmkC,GAC/CjlC,EAAOgQ,OAASw0B,EAAmB,IAAMxkC,EAAOM,OAAO/Z,OACvDi+C,EAAmB,IAAGA,EAAmB,GAC7Ce,IAAS,EAEL5lB,EAAS,KACT3f,EAAOgQ,OAASw0B,EAAmB,IAAMxkC,EAAOM,OAAO/Z,MAAQyZ,EAAOgG,YAAchG,EAAOzX,SAASi3B,UACxGylB,GAAoB,IAAI/nC,MAAO4D,UAC3B+jC,GACFA,GAAsB,EACtBM,EAAIX,IAEJW,IAEFnlC,EAAOzX,SAASk3B,QAAS,EACzB3Y,EAAK,kBAAiB,EAElBk7B,EAAqB,KACzB,GAAIhiC,EAAOgG,YAAchG,EAAOzX,SAASi3B,QAAS,OAClD,MAAMx6B,EAAWsX,IACgB,WAA7BtX,EAASygD,kBACXZ,GAAsB,EACtB37C,GAAM,IAEyB,YAA7BlE,EAASygD,iBACX9lB,GACF,EAEI+lB,EAAiB79C,IACC,UAAlBA,EAAE0xB,cACNsrB,GAAsB,EACtBC,GAAuB,EACnB9kC,EAAOyT,WAAazT,EAAOzX,SAASk3B,QACxCv2B,GAAM,GAAK,EAEPy8C,EAAiB99C,IACC,UAAlBA,EAAE0xB,cACNurB,GAAuB,EACnB9kC,EAAOzX,SAASk3B,QAClBE,IACF,EAsBFj3B,EAAG,QAAQ,KACLsX,EAAOM,OAAO/X,SAASwhB,UApBvB/J,EAAOM,OAAO/X,SAASg8C,oBACzBvkC,EAAOtW,GAAG/C,iBAAiB,eAAgB++C,GAC3C1lC,EAAOtW,GAAG/C,iBAAiB,eAAgBg/C,IAU5BrpC,IACR3V,iBAAiB,mBAAoBq7C,GAU5Cv8C,IACF,IAEFiD,EAAG,WAAW,KApBRsX,EAAOtW,IAA2B,iBAAdsW,EAAOtW,KAC7BsW,EAAOtW,GAAGkE,oBAAoB,eAAgB83C,GAC9C1lC,EAAOtW,GAAGkE,oBAAoB,eAAgB+3C,IAQ/BrpC,IACR1O,oBAAoB,mBAAoBo0C,GAY7ChiC,EAAOzX,SAASi3B,SAClBoT,GACF,IAEFlqC,EAAG,0BAA0B,MACvBg8C,GAAiBG,IACnBllB,GACF,IAEFj3B,EAAG,8BAA8B,KAC1BsX,EAAOM,OAAO/X,SAAS67C,qBAG1BxR,IAFA1pC,GAAM,GAAM,EAGd,IAEFR,EAAG,yBAAyB,CAACshC,EAAI1hC,EAAOirB,MAClCvT,EAAOgG,WAAchG,EAAOzX,SAASi3B,UACrCjM,IAAavT,EAAOM,OAAO/X,SAAS67C,qBACtCl7C,GAAM,GAAM,GAEZ0pC,IACF,IAEFlqC,EAAG,mBAAmB,MAChBsX,EAAOgG,WAAchG,EAAOzX,SAASi3B,UACrCxf,EAAOM,OAAO/X,SAAS67C,qBACzBxR,KAGF9Y,GAAY,EACZ4qB,GAAgB,EAChBG,GAAsB,EACtBF,EAAoB92C,YAAW,KAC7Bg3C,GAAsB,EACtBH,GAAgB,EAChBx7C,GAAM,EAAK,GACV,MAAI,IAETR,EAAG,YAAY,KACb,IAAIsX,EAAOgG,WAAchG,EAAOzX,SAASi3B,SAAY1F,EAArD,CAGA,GAFA1c,aAAaunC,GACbvnC,aAAa0yB,GACT9vB,EAAOM,OAAO/X,SAAS67C,qBAGzB,OAFAM,GAAgB,OAChB5qB,GAAY,GAGV4qB,GAAiB1kC,EAAOM,OAAO6K,SAASwU,IAC5C+kB,GAAgB,EAChB5qB,GAAY,CAV0D,CAUrD,IAEnBpxB,EAAG,eAAe,MACZsX,EAAOgG,WAAchG,EAAOzX,SAASi3B,UACzColB,GAAe,EAAI,IAErB5yC,OAAOmX,OAAOnJ,EAAOzX,SAAU,CAC7B9C,QACAmtC,OACA1pC,QACAy2B,UAEJ,EC1SA,SAAe5f,GACb,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,GACEqX,EACJgmB,EAAa,CACX6f,OAAQ,CACN5lC,OAAQ,KACR6lC,sBAAsB,EACtBC,iBAAkB,EAClBC,sBAAuB,4BACvBC,qBAAsB,mBAG1B,IAAItzB,GAAc,EACduzB,GAAgB,EAIpB,SAASC,IACP,MAAMC,EAAenmC,EAAO4lC,OAAO5lC,OACnC,IAAKmmC,GAAgBA,EAAangC,UAAW,OAC7C,MAAMiN,EAAekzB,EAAalzB,aAC5BD,EAAemzB,EAAanzB,aAClC,GAAIA,GAAgBA,EAAa5rB,UAAUY,SAASgY,EAAOM,OAAOslC,OAAOG,uBAAwB,OACjG,GAAI,MAAO9yB,EAAuD,OAClE,IAAIiD,EAEFA,EADEiwB,EAAa7lC,OAAO/Z,KACPmK,SAASy1C,EAAanzB,aAAa3nB,aAAa,2BAA4B,IAE5E4nB,EAEbjT,EAAOM,OAAO/Z,KAChByZ,EAAOyU,YAAYyB,GAEnBlW,EAAOlW,QAAQosB,EAEnB,CACA,SAASzuB,IACP,MACEm+C,OAAQQ,GACNpmC,EAAOM,OACX,GAAIoS,EAAa,OAAO,EACxBA,GAAc,EACd,MAAM2zB,EAAcrmC,EAAO5E,YAC3B,GAAIgrC,EAAapmC,kBAAkBqmC,EACjCrmC,EAAO4lC,OAAO5lC,OAASomC,EAAapmC,OACpChO,OAAOmX,OAAOnJ,EAAO4lC,OAAO5lC,OAAOijB,eAAgB,CACjDvV,qBAAqB,EACrBwF,qBAAqB,IAEvBlhB,OAAOmX,OAAOnJ,EAAO4lC,OAAO5lC,OAAOM,OAAQ,CACzCoN,qBAAqB,EACrBwF,qBAAqB,IAEvBlT,EAAO4lC,OAAO5lC,OAAO6I,cAChB,GAAI,EAASu9B,EAAapmC,QAAS,CACxC,MAAMsmC,EAAqBt0C,OAAOmX,OAAO,CAAC,EAAGi9B,EAAapmC,QAC1DhO,OAAOmX,OAAOm9B,EAAoB,CAChC54B,qBAAqB,EACrBwF,qBAAqB,IAEvBlT,EAAO4lC,OAAO5lC,OAAS,IAAIqmC,EAAYC,GACvCL,GAAgB,CAClB,CAGA,OAFAjmC,EAAO4lC,OAAO5lC,OAAOtW,GAAGtC,UAAUC,IAAI2Y,EAAOM,OAAOslC,OAAOI,sBAC3DhmC,EAAO4lC,OAAO5lC,OAAOtX,GAAG,MAAOw9C,IACxB,CACT,CACA,SAASr9B,EAAO2K,GACd,MAAM2yB,EAAenmC,EAAO4lC,OAAO5lC,OACnC,IAAKmmC,GAAgBA,EAAangC,UAAW,OAC7C,MAAMvd,EAAsD,SAAtC09C,EAAa7lC,OAAO7X,cAA2B09C,EAAah+B,uBAAyBg+B,EAAa7lC,OAAO7X,cAG/H,IAAI89C,EAAmB,EACvB,MAAMC,EAAmBxmC,EAAOM,OAAOslC,OAAOG,sBAS9C,GARI/lC,EAAOM,OAAO7X,cAAgB,IAAMuX,EAAOM,OAAO4K,iBACpDq7B,EAAmBvmC,EAAOM,OAAO7X,eAE9BuX,EAAOM,OAAOslC,OAAOC,uBACxBU,EAAmB,GAErBA,EAAmBvlC,KAAKiL,MAAMs6B,GAC9BJ,EAAat9C,OAAOC,SAAQ2Y,GAAWA,EAAQra,UAAUW,OAAOy+C,KAC5DL,EAAa7lC,OAAO/Z,MAAQ4/C,EAAa7lC,OAAOwJ,SAAWq8B,EAAa7lC,OAAOwJ,QAAQC,QACzF,IAAK,IAAIpW,EAAI,EAAGA,EAAI4yC,EAAkB5yC,GAAK,EACzCgO,EAAgBwkC,EAAa38B,SAAU,6BAA6BxJ,EAAOxW,UAAYmK,OAAO7K,SAAQ2Y,IACpGA,EAAQra,UAAUC,IAAIm/C,EAAiB,SAI3C,IAAK,IAAI7yC,EAAI,EAAGA,EAAI4yC,EAAkB5yC,GAAK,EACrCwyC,EAAat9C,OAAOmX,EAAOxW,UAAYmK,IACzCwyC,EAAat9C,OAAOmX,EAAOxW,UAAYmK,GAAGvM,UAAUC,IAAIm/C,GAI9D,MAAMV,EAAmB9lC,EAAOM,OAAOslC,OAAOE,iBACxCW,EAAYX,IAAqBK,EAAa7lC,OAAO/Z,KAC3D,GAAIyZ,EAAOxW,YAAc28C,EAAa38C,WAAai9C,EAAW,CAC5D,MAAMC,EAAqBP,EAAa58C,YACxC,IAAIo9C,EACAtzB,EACJ,GAAI8yB,EAAa7lC,OAAO/Z,KAAM,CAC5B,MAAMqgD,EAAiBT,EAAat9C,OAAO2P,QAAOiJ,GAAWA,EAAQpW,aAAa,6BAA+B,GAAG2U,EAAOxW,cAAa,GACxIm9C,EAAiBR,EAAat9C,OAAOoL,QAAQ2yC,GAC7CvzB,EAAYrT,EAAOzW,YAAcyW,EAAOgS,cAAgB,OAAS,MACnE,MACE20B,EAAiB3mC,EAAOxW,UACxB6pB,EAAYszB,EAAiB3mC,EAAOgS,cAAgB,OAAS,OAE3Dy0B,IACFE,GAAgC,SAAdtzB,EAAuByyB,GAAoB,EAAIA,GAE/DK,EAAap3B,sBAAwBo3B,EAAap3B,qBAAqB9a,QAAQ0yC,GAAkB,IAC/FR,EAAa7lC,OAAO4K,eAEpBy7B,EADEA,EAAiBD,EACFC,EAAiB3lC,KAAKiL,MAAMxjB,EAAgB,GAAK,EAEjDk+C,EAAiB3lC,KAAKiL,MAAMxjB,EAAgB,GAAK,EAE3Dk+C,EAAiBD,GAAsBP,EAAa7lC,OAAO6L,eACtEg6B,EAAar8C,QAAQ68C,EAAgBnzB,EAAU,OAAI9hB,GAEvD,CACF,CA9GAsO,EAAO4lC,OAAS,CACd5lC,OAAQ,MA8GVtX,EAAG,cAAc,KACf,MAAM,OACJk9C,GACE5lC,EAAOM,OACX,GAAKslC,GAAWA,EAAO5lC,OACvB,GAA6B,iBAAlB4lC,EAAO5lC,QAAuB4lC,EAAO5lC,kBAAkBb,YAAa,CAC7E,MAAMna,EAAWsX,IACXuqC,EAA0B,KAC9B,MAAMC,EAAyC,iBAAlBlB,EAAO5lC,OAAsBhb,EAASoB,cAAcw/C,EAAO5lC,QAAU4lC,EAAO5lC,OACzG,GAAI8mC,GAAiBA,EAAc9mC,OACjC4lC,EAAO5lC,OAAS8mC,EAAc9mC,OAC9BvY,IACAohB,GAAO,QACF,GAAIi+B,EAAe,CACxB,MAAM5gB,EAAY,GAAGlmB,EAAOM,OAAO2gB,mBAC7B8lB,EAAiBl/C,IACrB+9C,EAAO5lC,OAASnY,EAAE41B,OAAO,GACzBqpB,EAAcl5C,oBAAoBs4B,EAAW6gB,GAC7Ct/C,IACAohB,GAAO,GACP+8B,EAAO5lC,OAAO6I,SACd7I,EAAO6I,QAAQ,EAEjBi+B,EAAcngD,iBAAiBu/B,EAAW6gB,EAC5C,CACA,OAAOD,CAAa,EAEhBE,EAAyB,KACzBhnC,EAAOgG,WACW6gC,KAEpBngD,sBAAsBsgD,EACxB,EAEFtgD,sBAAsBsgD,EACxB,MACEv/C,IACAohB,GAAO,EACT,IAEFngB,EAAG,4CAA4C,KAC7CmgB,GAAQ,IAEVngB,EAAG,iBAAiB,CAACshC,EAAIrkC,KACvB,MAAMwgD,EAAenmC,EAAO4lC,OAAO5lC,OAC9BmmC,IAAgBA,EAAangC,WAClCmgC,EAAah4B,cAAcxoB,EAAS,IAEtC+C,EAAG,iBAAiB,KAClB,MAAMy9C,EAAenmC,EAAO4lC,OAAO5lC,OAC9BmmC,IAAgBA,EAAangC,WAC9BigC,GACFE,EAAape,SACf,IAEF/1B,OAAOmX,OAAOnJ,EAAO4lC,OAAQ,CAC3Bn+C,OACAohB,UAEJ,EC5LA,SAAkB9I,GAChB,IAAI,OACFC,EAAM,aACN+lB,EAAY,KACZjf,EAAI,KACJpf,GACEqY,EACJgmB,EAAa,CACXhK,SAAU,CACRhS,SAAS,EACTk9B,UAAU,EACVC,cAAe,EACfC,gBAAgB,EAChBC,oBAAqB,EACrBC,sBAAuB,EACvB9U,QAAQ,EACR+U,gBAAiB,OAiNrBt1C,OAAOmX,OAAOnJ,EAAQ,CACpB+b,SAAU,CACRhD,aAhNJ,WACE,GAAI/Y,EAAOM,OAAO6K,QAAS,OAC3B,MAAM/K,EAAYJ,EAAOnC,eACzBmC,EAAOgU,aAAa5T,GACpBJ,EAAOmO,cAAc,GACrBnO,EAAOgY,gBAAgBsO,WAAW/6B,OAAS,EAC3CyU,EAAO+b,SAASqC,WAAW,CACzBO,WAAY3e,EAAO2J,IAAM3J,EAAOI,WAAaJ,EAAOI,WAExD,EAwMI4b,YAvMJ,WACE,GAAIhc,EAAOM,OAAO6K,QAAS,OAC3B,MACE6M,gBAAiBjR,EAAI,QACrBuS,GACEtZ,EAE2B,IAA3B+G,EAAKuf,WAAW/6B,QAClBwb,EAAKuf,WAAWxkB,KAAK,CACnBwwB,SAAUhZ,EAAQtZ,EAAOiJ,eAAiB,SAAW,UACrDziB,KAAMugB,EAAKuU,iBAGfvU,EAAKuf,WAAWxkB,KAAK,CACnBwwB,SAAUhZ,EAAQtZ,EAAOiJ,eAAiB,WAAa,YACvDziB,KAAMoX,KAEV,EAuLIwgB,WAtLJ,SAAoBoN,GAClB,IAAI,WACF7M,GACE6M,EACJ,GAAIxrB,EAAOM,OAAO6K,QAAS,OAC3B,MAAM,OACJ7K,EAAM,UACNC,EACAmJ,aAAcC,EAAG,SACjBO,EACA8N,gBAAiBjR,GACf/G,EAGEwe,EADe5gB,IACWmJ,EAAKuU,eACrC,GAAIqD,GAAc3e,EAAOkP,eACvBlP,EAAOlW,QAAQkW,EAAOzW,kBAGxB,GAAIo1B,GAAc3e,EAAO8P,eACnB9P,EAAOnX,OAAO0C,OAAS2e,EAAS3e,OAClCyU,EAAOlW,QAAQogB,EAAS3e,OAAS,GAEjCyU,EAAOlW,QAAQkW,EAAOnX,OAAO0C,OAAS,OAJ1C,CAQA,GAAI+U,EAAOyb,SAASkrB,SAAU,CAC5B,GAAIlgC,EAAKuf,WAAW/6B,OAAS,EAAG,CAC9B,MAAMg8C,EAAgBxgC,EAAKuf,WAAWkhB,MAChCC,EAAgB1gC,EAAKuf,WAAWkhB,MAChCrhD,EAAWohD,EAAcjV,SAAWmV,EAAcnV,SAClD9rC,EAAO+gD,EAAc/gD,KAAOihD,EAAcjhD,KAChDwZ,EAAOmmB,SAAWhgC,EAAWK,EAC7BwZ,EAAOmmB,UAAY,EACfnlB,KAAK6C,IAAI7D,EAAOmmB,UAAY7lB,EAAOyb,SAASurB,kBAC9CtnC,EAAOmmB,SAAW,IAIhB3/B,EAAO,KAAOoX,IAAQ2pC,EAAc/gD,KAAO,OAC7CwZ,EAAOmmB,SAAW,EAEtB,MACEnmB,EAAOmmB,SAAW,EAEpBnmB,EAAOmmB,UAAY7lB,EAAOyb,SAASsrB,sBACnCtgC,EAAKuf,WAAW/6B,OAAS,EACzB,IAAIwyC,EAAmB,IAAOz9B,EAAOyb,SAASmrB,cAC9C,MAAMQ,EAAmB1nC,EAAOmmB,SAAW4X,EAC3C,IAAI4J,EAAc3nC,EAAOI,UAAYsnC,EACjC/9B,IAAKg+B,GAAeA,GACxB,IACIC,EADAC,GAAW,EAEf,MAAMC,EAA2C,GAA5B9mC,KAAK6C,IAAI7D,EAAOmmB,UAAiB7lB,EAAOyb,SAASqrB,oBACtE,IAAIW,EACJ,GAAIJ,EAAc3nC,EAAO8P,eACnBxP,EAAOyb,SAASorB,gBACdQ,EAAc3nC,EAAO8P,gBAAkBg4B,IACzCH,EAAc3nC,EAAO8P,eAAiBg4B,GAExCF,EAAsB5nC,EAAO8P,eAC7B+3B,GAAW,EACX9gC,EAAK6W,qBAAsB,GAE3B+pB,EAAc3nC,EAAO8P,eAEnBxP,EAAO/Z,MAAQ+Z,EAAO4K,iBAAgB68B,GAAe,QACpD,GAAIJ,EAAc3nC,EAAOkP,eAC1B5O,EAAOyb,SAASorB,gBACdQ,EAAc3nC,EAAOkP,eAAiB44B,IACxCH,EAAc3nC,EAAOkP,eAAiB44B,GAExCF,EAAsB5nC,EAAOkP,eAC7B24B,GAAW,EACX9gC,EAAK6W,qBAAsB,GAE3B+pB,EAAc3nC,EAAOkP,eAEnB5O,EAAO/Z,MAAQ+Z,EAAO4K,iBAAgB68B,GAAe,QACpD,GAAIznC,EAAOyb,SAASwW,OAAQ,CACjC,IAAIthB,EACJ,IAAK,IAAI+2B,EAAI,EAAGA,EAAI99B,EAAS3e,OAAQy8C,GAAK,EACxC,GAAI99B,EAAS89B,IAAML,EAAa,CAC9B12B,EAAY+2B,EACZ,KACF,CAGAL,EADE3mC,KAAK6C,IAAIqG,EAAS+G,GAAa02B,GAAe3mC,KAAK6C,IAAIqG,EAAS+G,EAAY,GAAK02B,IAA0C,SAA1B3nC,EAAOub,eAC5FrR,EAAS+G,GAET/G,EAAS+G,EAAY,GAErC02B,GAAeA,CACjB,CAOA,GANII,GACFrgD,EAAK,iBAAiB,KACpBsY,EAAO8U,SAAS,IAII,IAApB9U,EAAOmmB,UAMT,GAJE4X,EADEp0B,EACiB3I,KAAK6C,MAAM8jC,EAAc3nC,EAAOI,WAAaJ,EAAOmmB,UAEpDnlB,KAAK6C,KAAK8jC,EAAc3nC,EAAOI,WAAaJ,EAAOmmB,UAEpE7lB,EAAOyb,SAASwW,OAAQ,CAQ1B,MAAM0V,EAAejnC,KAAK6C,KAAK8F,GAAOg+B,EAAcA,GAAe3nC,EAAOI,WACpE8nC,EAAmBloC,EAAOoK,gBAAgBpK,EAAOzW,aAErDw0C,EADEkK,EAAeC,EACE5nC,EAAOhY,MACjB2/C,EAAe,EAAIC,EACM,IAAf5nC,EAAOhY,MAEQ,IAAfgY,EAAOhY,KAE9B,OACK,GAAIgY,EAAOyb,SAASwW,OAEzB,YADAvyB,EAAO+V,iBAGLzV,EAAOyb,SAASorB,gBAAkBU,GACpC7nC,EAAO2P,eAAei4B,GACtB5nC,EAAOmO,cAAc4vB,GACrB/9B,EAAOgU,aAAa2zB,GACpB3nC,EAAOiU,iBAAgB,EAAMjU,EAAOub,gBACpCvb,EAAOyT,WAAY,EACnBrQ,EAAqB7C,GAAW,KACzBP,IAAUA,EAAOgG,WAAce,EAAK6W,sBACzC9W,EAAK,kBACL9G,EAAOmO,cAAc7N,EAAOhY,OAC5BuF,YAAW,KACTmS,EAAOgU,aAAa4zB,GACpBxkC,EAAqB7C,GAAW,KACzBP,IAAUA,EAAOgG,WACtBhG,EAAOkU,eAAe,GACtB,GACD,GAAE,KAEElU,EAAOmmB,UAChBrf,EAAK,8BACL9G,EAAO2P,eAAeg4B,GACtB3nC,EAAOmO,cAAc4vB,GACrB/9B,EAAOgU,aAAa2zB,GACpB3nC,EAAOiU,iBAAgB,EAAMjU,EAAOub,gBAC/Bvb,EAAOyT,YACVzT,EAAOyT,WAAY,EACnBrQ,EAAqB7C,GAAW,KACzBP,IAAUA,EAAOgG,WACtBhG,EAAOkU,eAAe,MAI1BlU,EAAO2P,eAAeg4B,GAExB3nC,EAAO8R,oBACP9R,EAAO6Q,qBACT,KAAO,IAAIvQ,EAAOyb,SAASwW,OAEzB,YADAvyB,EAAO+V,iBAEEzV,EAAOyb,UAChBjV,EAAK,6BACP,GACKxG,EAAOyb,SAASkrB,UAAYzoB,GAAYle,EAAO2e,gBAClDnY,EAAK,0BACL9G,EAAO2P,iBACP3P,EAAO8R,oBACP9R,EAAO6Q,sBArJT,CAuJF,IAQF,EC1OA,SAAc9Q,GACZ,IAWIooC,EACAC,EACAC,EACAnlB,GAdA,OACFljB,EAAM,aACN+lB,EAAY,GACZr9B,GACEqX,EACJgmB,EAAa,CACX1d,KAAM,CACJC,KAAM,EACN4O,KAAM,YAOV,MAAMoxB,EAAkB,KACtB,IAAIv9C,EAAeiV,EAAOM,OAAOvV,aAMjC,MAL4B,iBAAjBA,GAA6BA,EAAakJ,QAAQ,MAAQ,EACnElJ,EAAe6T,WAAW7T,EAAa6K,QAAQ,IAAK,KAAO,IAAMoK,EAAOuD,KACvC,iBAAjBxY,IAChBA,EAAe6T,WAAW7T,IAErBA,CAAY,EAyHrBrC,EAAG,QAtBY,KACbw6B,EAAcljB,EAAOM,OAAO+H,MAAQrI,EAAOM,OAAO+H,KAAKC,KAAO,CAAC,IAsBjE5f,EAAG,UApBc,KACf,MAAM,OACJ4X,EAAM,GACN5W,GACEsW,EACEmjB,EAAa7iB,EAAO+H,MAAQ/H,EAAO+H,KAAKC,KAAO,EACjD4a,IAAgBC,GAClBz5B,EAAGtC,UAAUW,OAAO,GAAGuY,EAAOuN,6BAA8B,GAAGvN,EAAOuN,qCACtEw6B,EAAiB,EACjBroC,EAAOujB,yBACGL,GAAeC,IACzBz5B,EAAGtC,UAAUC,IAAI,GAAGiZ,EAAOuN,8BACF,WAArBvN,EAAO+H,KAAK6O,MACdxtB,EAAGtC,UAAUC,IAAI,GAAGiZ,EAAOuN,qCAE7B7N,EAAOujB,wBAETL,EAAcC,CAAU,IAI1BnjB,EAAOqI,KAAO,CACZiD,WA1HiBziB,IACjB,MAAM,cACJJ,GACEuX,EAAOM,QACL,KACJgI,EAAI,KACJ4O,GACElX,EAAOM,OAAO+H,KACZ4B,EAAejK,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAAU/J,EAAO8J,QAAQjhB,OAAO0C,OAAS1C,EAAO0C,OAC7G88C,EAAiBrnC,KAAKiL,MAAMhC,EAAe3B,GAEzC6/B,EADEnnC,KAAKiL,MAAMhC,EAAe3B,KAAU2B,EAAe3B,EAC5B2B,EAEAjJ,KAAKoH,KAAK6B,EAAe3B,GAAQA,EAEtC,SAAlB7f,GAAqC,QAATyuB,IAC9BixB,EAAyBnnC,KAAKC,IAAIknC,EAAwB1/C,EAAgB6f,IAE5E8/B,EAAeD,EAAyB7/B,CAAI,EAyG5CiD,YAvGkB,KACdvL,EAAOnX,QACTmX,EAAOnX,OAAOC,SAAQC,IAChBA,EAAMw/C,qBACRx/C,EAAMkD,MAAMiZ,OAAS,GACrBnc,EAAMkD,MAAM+T,EAAOuJ,kBAAkB,eAAiB,GACxD,GAEJ,EAgGAkC,YA9FkB,CAAC9X,EAAG5K,EAAOF,KAC7B,MAAM,eACJsjB,GACEnM,EAAOM,OACLvV,EAAeu9C,KACf,KACJhgC,EAAI,KACJ4O,GACElX,EAAOM,OAAO+H,KACZ4B,EAAejK,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAAU/J,EAAO8J,QAAQjhB,OAAO0C,OAAS1C,EAAO0C,OAE7G,IAAIi9C,EACA9/B,EACA+/B,EACJ,GAAa,QAATvxB,GAAkB/K,EAAiB,EAAG,CACxC,MAAMu8B,EAAa1nC,KAAKiL,MAAMtY,GAAKwY,EAAiB7D,IAC9CqgC,EAAoBh1C,EAAI2U,EAAO6D,EAAiBu8B,EAChDE,EAAgC,IAAfF,EAAmBv8B,EAAiBnL,KAAKE,IAAIF,KAAKoH,MAAM6B,EAAey+B,EAAapgC,EAAO6D,GAAkB7D,GAAO6D,GAC3Is8B,EAAMznC,KAAKiL,MAAM08B,EAAoBC,GACrClgC,EAASigC,EAAoBF,EAAMG,EAAiBF,EAAav8B,EACjEq8B,EAAqB9/B,EAAS+/B,EAAMN,EAAyB7/B,EAC7Dvf,EAAMkD,MAAM48C,MAAQL,CACtB,KAAoB,WAATtxB,GACTxO,EAAS1H,KAAKiL,MAAMtY,EAAI2U,GACxBmgC,EAAM90C,EAAI+U,EAASJ,GACfI,EAAS2/B,GAAkB3/B,IAAW2/B,GAAkBI,IAAQngC,EAAO,KACzEmgC,GAAO,EACHA,GAAOngC,IACTmgC,EAAM,EACN//B,GAAU,MAId+/B,EAAMznC,KAAKiL,MAAMtY,EAAIy0C,GACrB1/B,EAAS/U,EAAI80C,EAAML,GAErBr/C,EAAM0/C,IAAMA,EACZ1/C,EAAM2f,OAASA,EACf3f,EAAMkD,MAAMiZ,OAAS,iBAAiBoD,EAAO,GAAKvd,UAAqBud,KACvEvf,EAAMkD,MAAM+T,EAAOuJ,kBAAkB,eAAyB,IAARk/B,EAAY19C,GAAgB,GAAGA,MAAmB,GACxGhC,EAAMw/C,oBAAqB,CAAI,EAuD/Bj8B,kBArDwB,CAACjB,EAAWnB,KACpC,MAAM,eACJgB,EAAc,aACdW,GACE7L,EAAOM,OACLvV,EAAeu9C,KACf,KACJhgC,GACEtI,EAAOM,OAAO+H,KAMlB,GALArI,EAAO6K,aAAeQ,EAAYtgB,GAAgBo9C,EAClDnoC,EAAO6K,YAAc7J,KAAKoH,KAAKpI,EAAO6K,YAAcvC,GAAQvd,EACvDiV,EAAOM,OAAO6K,UACjBnL,EAAOO,UAAUtU,MAAM+T,EAAOuJ,kBAAkB,UAAY,GAAGvJ,EAAO6K,YAAc9f,OAElFmgB,EAAgB,CAClB,MAAMqB,EAAgB,GACtB,IAAK,IAAI5Y,EAAI,EAAGA,EAAIuW,EAAS3e,OAAQoI,GAAK,EAAG,CAC3C,IAAI6Y,EAAiBtC,EAASvW,GAC1BkY,IAAcW,EAAiBxL,KAAKiL,MAAMO,IAC1CtC,EAASvW,GAAKqM,EAAO6K,YAAcX,EAAS,IAAIqC,EAAczK,KAAK0K,EACzE,CACAtC,EAAStD,OAAO,EAAGsD,EAAS3e,QAC5B2e,EAASpI,QAAQyK,EACnB,GAgCJ,ErByBA,SAAsBxM,GACpB,IAAI,OACFC,GACED,EACJ/N,OAAOmX,OAAOnJ,EAAQ,CACpB2oB,YAAaA,GAAYhG,KAAK3iB,GAC9B+oB,aAAcA,GAAapG,KAAK3iB,GAChCipB,SAAUA,GAAStG,KAAK3iB,GACxBqpB,YAAaA,GAAY1G,KAAK3iB,GAC9BwpB,gBAAiBA,GAAgB7G,KAAK3iB,IAE1C,EsBvLA,SAAoBD,GAClB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,GACEqX,EACJgmB,EAAa,CACX+iB,WAAY,CACVC,WAAW,KAoCftf,GAAW,CACTphC,OAAQ,OACR2X,SACAtX,KACAsrB,aArCmB,KACnB,MAAM,OACJnrB,GACEmX,EACWA,EAAOM,OAAOwoC,WAC7B,IAAK,IAAIn1C,EAAI,EAAGA,EAAI9K,EAAO0C,OAAQoI,GAAK,EAAG,CACzC,MAAM8N,EAAUzB,EAAOnX,OAAO8K,GAE9B,IAAIq1C,GADWvnC,EAAQkN,kBAElB3O,EAAOM,OAAO4gB,mBAAkB8nB,GAAMhpC,EAAOI,WAClD,IAAI6oC,EAAK,EACJjpC,EAAOiJ,iBACVggC,EAAKD,EACLA,EAAK,GAEP,MAAME,EAAelpC,EAAOM,OAAOwoC,WAAWC,UAAY/nC,KAAKC,IAAI,EAAID,KAAK6C,IAAIpC,EAAQV,UAAW,GAAK,EAAIC,KAAKE,IAAIF,KAAKC,IAAIQ,EAAQV,UAAW,GAAI,GAC/IyY,EAAW2Q,GAAa7pB,EAAQmB,GACtC+X,EAASvtB,MAAMyrC,QAAUwR,EACzB1vB,EAASvtB,MAAMoS,UAAY,eAAe2qC,QAASC,WACrD,GAmBA96B,cAjBoBxoB,IACpB,MAAM6kC,EAAoBxqB,EAAOnX,OAAOqN,KAAIuL,GAAWD,EAAoBC,KAC3E+oB,EAAkB1hC,SAAQY,IACxBA,EAAGuC,MAAMm2B,mBAAqB,GAAGz8B,KAAY,IAE/C4kC,GAA2B,CACzBvqB,SACAra,WACA6kC,oBACAC,WAAW,GACX,EAQFf,gBAAiB,KAAM,CACrBjhC,cAAe,EACf0jB,eAAgB,EAChBuB,qBAAqB,EACrB3iB,aAAc,EACdm2B,kBAAmBlhB,EAAOM,OAAO6K,WAGvC,EC5DA,SAAoBpL,GAClB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,GACEqX,EACJgmB,EAAa,CACXojB,WAAY,CACVlf,cAAc,EACdmf,QAAQ,EACRC,aAAc,GACdC,YAAa,OAGjB,MAAMC,EAAqB,CAAC9nC,EAASV,EAAUkI,KAC7C,IAAIugC,EAAevgC,EAAexH,EAAQrb,cAAc,6BAA+Bqb,EAAQrb,cAAc,4BACzGqjD,EAAcxgC,EAAexH,EAAQrb,cAAc,8BAAgCqb,EAAQrb,cAAc,+BACxGojD,IACHA,EAAe5tC,EAAc,OAAO,iDAAgDqN,EAAe,OAAS,QAAQ/V,MAAM,MAC1HuO,EAAQmV,OAAO4yB,IAEZC,IACHA,EAAc7tC,EAAc,OAAO,iDAAgDqN,EAAe,QAAU,WAAW/V,MAAM,MAC7HuO,EAAQmV,OAAO6yB,IAEbD,IAAcA,EAAav9C,MAAMyrC,QAAU12B,KAAKC,KAAKF,EAAU,IAC/D0oC,IAAaA,EAAYx9C,MAAMyrC,QAAU12B,KAAKC,IAAIF,EAAU,GAAE,EA2HpE0oB,GAAW,CACTphC,OAAQ,OACR2X,SACAtX,KACAsrB,aArHmB,KACnB,MAAM,GACJtqB,EAAE,UACF6W,EAAS,OACT1X,EACAmc,MAAOwqB,EACPtqB,OAAQuqB,EACR/lB,aAAcC,EACdpG,KAAMkG,EAAU,QAChB3F,GACE9D,EACExN,EAAImR,GAAa3D,GACjBM,EAASN,EAAOM,OAAO6oC,WACvBlgC,EAAejJ,EAAOiJ,eACtBY,EAAY7J,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAC1D,IACI2/B,EADAC,EAAgB,EAEhBrpC,EAAO8oC,SACLngC,GACFygC,EAAe1pC,EAAOO,UAAUna,cAAc,uBACzCsjD,IACHA,EAAe9tC,EAAc,MAAO,sBACpCoE,EAAOO,UAAUqW,OAAO8yB,IAE1BA,EAAaz9C,MAAMiZ,OAAS,GAAGsqB,QAE/Bka,EAAehgD,EAAGtD,cAAc,uBAC3BsjD,IACHA,EAAe9tC,EAAc,MAAO,sBACpClS,EAAGktB,OAAO8yB,MAIhB,IAAK,IAAI/1C,EAAI,EAAGA,EAAI9K,EAAO0C,OAAQoI,GAAK,EAAG,CACzC,MAAM8N,EAAU5Y,EAAO8K,GACvB,IAAIrK,EAAaqK,EACbkW,IACFvgB,EAAaoH,SAAS+Q,EAAQpW,aAAa,2BAA4B,KAEzE,IAAIu+C,EAA0B,GAAbtgD,EACbg5C,EAAQthC,KAAKiL,MAAM29B,EAAa,KAChCjgC,IACFigC,GAAcA,EACdtH,EAAQthC,KAAKiL,OAAO29B,EAAa,MAEnC,MAAM7oC,EAAWC,KAAKC,IAAID,KAAKE,IAAIO,EAAQV,SAAU,IAAK,GAC1D,IAAIioC,EAAK,EACLC,EAAK,EACLY,EAAK,EACLvgD,EAAa,GAAM,GACrB0/C,EAAc,GAAR1G,EAAY74B,EAClBogC,EAAK,IACKvgD,EAAa,GAAK,GAAM,GAClC0/C,EAAK,EACLa,EAAc,GAARvH,EAAY74B,IACRngB,EAAa,GAAK,GAAM,GAClC0/C,EAAKv/B,EAAqB,EAAR64B,EAAY74B,EAC9BogC,EAAKpgC,IACKngB,EAAa,GAAK,GAAM,IAClC0/C,GAAMv/B,EACNogC,EAAK,EAAIpgC,EAA0B,EAAbA,EAAiB64B,GAErC34B,IACFq/B,GAAMA,GAEH//B,IACHggC,EAAKD,EACLA,EAAK,GAEP,MAAM3qC,EAAY,WAAW7L,EAAEyW,EAAe,GAAK2gC,kBAA2Bp3C,EAAEyW,EAAe2gC,EAAa,sBAAsBZ,QAASC,QAASY,OAChJ9oC,GAAY,GAAKA,GAAY,IAC/B4oC,EAA6B,GAAbrgD,EAA6B,GAAXyX,EAC9B4I,IAAKggC,EAA8B,IAAbrgD,EAA6B,GAAXyX,IAE9CU,EAAQxV,MAAMoS,UAAYA,EACtBiC,EAAO2pB,cACTsf,EAAmB9nC,EAASV,EAAUkI,EAE1C,CAGA,GAFA1I,EAAUtU,MAAM69C,gBAAkB,YAAYrgC,EAAa,MAC3DlJ,EAAUtU,MAAM,4BAA8B,YAAYwd,EAAa,MACnEnJ,EAAO8oC,OACT,GAAIngC,EACFygC,EAAaz9C,MAAMoS,UAAY,oBAAoBmxB,EAAc,EAAIlvB,EAAO+oC,oBAAoB7Z,EAAc,8CAA8ClvB,EAAOgpC,mBAC9J,CACL,MAAMS,EAAc/oC,KAAK6C,IAAI8lC,GAA4D,GAA3C3oC,KAAKiL,MAAMjL,KAAK6C,IAAI8lC,GAAiB,IAC7E/5B,EAAa,KAAO5O,KAAKgpC,IAAkB,EAAdD,EAAkB/oC,KAAKK,GAAK,KAAO,EAAIL,KAAKI,IAAkB,EAAd2oC,EAAkB/oC,KAAKK,GAAK,KAAO,GAChH4oC,EAAS3pC,EAAOgpC,YAChBY,EAAS5pC,EAAOgpC,YAAc15B,EAC9BhqB,EAAS0a,EAAO+oC,aACtBK,EAAaz9C,MAAMoS,UAAY,WAAW4rC,SAAcC,uBAA4Bza,EAAe,EAAI7pC,SAAc6pC,EAAe,EAAIya,yBAC1I,CAEF,MAAMC,GAAWrmC,EAAQua,UAAYva,EAAQwa,YAAcxa,EAAQuhB,oBAAsB5b,EAAa,EAAI,EAC1GlJ,EAAUtU,MAAMoS,UAAY,qBAAqB8rC,gBAAsB33C,EAAEwN,EAAOiJ,eAAiB,EAAI0gC,kBAA8Bn3C,EAAEwN,EAAOiJ,gBAAkB0gC,EAAgB,SAC9KppC,EAAUtU,MAAMC,YAAY,4BAA6B,GAAGi+C,MAAY,EAuBxEh8B,cArBoBxoB,IACpB,MAAM,GACJ+D,EAAE,OACFb,GACEmX,EAOJ,GANAnX,EAAOC,SAAQ2Y,IACbA,EAAQxV,MAAMm2B,mBAAqB,GAAGz8B,MACtC8b,EAAQtY,iBAAiB,gHAAgHL,SAAQoqC,IAC/IA,EAAMjnC,MAAMm2B,mBAAqB,GAAGz8B,KAAY,GAChD,IAEAqa,EAAOM,OAAO6oC,WAAWC,SAAWppC,EAAOiJ,eAAgB,CAC7D,MAAMihB,EAAWxgC,EAAGtD,cAAc,uBAC9B8jC,IAAUA,EAASj+B,MAAMm2B,mBAAqB,GAAGz8B,MACvD,GAQAikC,gBA/HsB,KAEtB,MAAM3gB,EAAejJ,EAAOiJ,eAC5BjJ,EAAOnX,OAAOC,SAAQ2Y,IACpB,MAAMV,EAAWC,KAAKC,IAAID,KAAKE,IAAIO,EAAQV,SAAU,IAAK,GAC1DwoC,EAAmB9nC,EAASV,EAAUkI,EAAa,GACnD,EA0HF4gB,gBAAiB,IAAM7pB,EAAOM,OAAO6oC,WACrCxf,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBjhC,cAAe,EACf0jB,eAAgB,EAChBuB,qBAAqB,EACrBuQ,gBAAiB,EACjBlzB,aAAc,EACdmgB,gBAAgB,EAChBgW,kBAAkB,KAGxB,ECrKA,SAAoBnhB,GAClB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,GACEqX,EACJgmB,EAAa,CACXqkB,WAAY,CACVngB,cAAc,EACdogB,eAAe,KAGnB,MAAMd,EAAqB,CAAC9nC,EAASV,KACnC,IAAIyoC,EAAexpC,EAAOiJ,eAAiBxH,EAAQrb,cAAc,6BAA+Bqb,EAAQrb,cAAc,4BAClHqjD,EAAczpC,EAAOiJ,eAAiBxH,EAAQrb,cAAc,8BAAgCqb,EAAQrb,cAAc,+BACjHojD,IACHA,EAAe3e,GAAa,OAAQppB,EAASzB,EAAOiJ,eAAiB,OAAS,QAE3EwgC,IACHA,EAAc5e,GAAa,OAAQppB,EAASzB,EAAOiJ,eAAiB,QAAU,WAE5EugC,IAAcA,EAAav9C,MAAMyrC,QAAU12B,KAAKC,KAAKF,EAAU,IAC/D0oC,IAAaA,EAAYx9C,MAAMyrC,QAAU12B,KAAKC,IAAIF,EAAU,GAAE,EA+DpE0oB,GAAW,CACTphC,OAAQ,OACR2X,SACAtX,KACAsrB,aAtDmB,KACnB,MAAM,OACJnrB,EACA6gB,aAAcC,GACZ3J,EACEM,EAASN,EAAOM,OAAO8pC,WACvBE,EAAY3mC,GAAa3D,GAC/B,IAAK,IAAIrM,EAAI,EAAGA,EAAI9K,EAAO0C,OAAQoI,GAAK,EAAG,CACzC,MAAM8N,EAAU5Y,EAAO8K,GACvB,IAAIoN,EAAWU,EAAQV,SACnBf,EAAOM,OAAO8pC,WAAWC,gBAC3BtpC,EAAWC,KAAKC,IAAID,KAAKE,IAAIO,EAAQV,SAAU,IAAK,IAEtD,MAAMnb,EAAS6b,EAAQkN,kBAEvB,IAAI47B,GADY,IAAMxpC,EAElBypC,EAAU,EACVxB,EAAKhpC,EAAOM,OAAO6K,SAAWvlB,EAASoa,EAAOI,WAAaxa,EAC3DqjD,EAAK,EACJjpC,EAAOiJ,eAKDU,IACT4gC,GAAWA,IALXtB,EAAKD,EACLA,EAAK,EACLwB,GAAWD,EACXA,EAAU,GAIZ9oC,EAAQxV,MAAMw+C,QAAUzpC,KAAK6C,IAAI7C,KAAKshC,MAAMvhC,IAAalY,EAAO0C,OAC5D+U,EAAO2pB,cACTsf,EAAmB9nC,EAASV,GAE9B,MAAM1C,EAAY,eAAe2qC,QAASC,qBAAsBqB,EAAUE,kBAAwBF,EAAUC,SAC3FpgB,GAAa7pB,EAAQmB,GAC7BxV,MAAMoS,UAAYA,CAC7B,GAqBA8P,cAnBoBxoB,IACpB,MAAM6kC,EAAoBxqB,EAAOnX,OAAOqN,KAAIuL,GAAWD,EAAoBC,KAC3E+oB,EAAkB1hC,SAAQY,IACxBA,EAAGuC,MAAMm2B,mBAAqB,GAAGz8B,MACjC+D,EAAGP,iBAAiB,gHAAgHL,SAAQohC,IAC1IA,EAASj+B,MAAMm2B,mBAAqB,GAAGz8B,KAAY,GACnD,IAEJ4kC,GAA2B,CACzBvqB,SACAra,WACA6kC,qBACA,EAQFZ,gBAnEsB,KAEtB5pB,EAAOM,OAAO8pC,WACdpqC,EAAOnX,OAAOC,SAAQ2Y,IACpB,IAAIV,EAAWU,EAAQV,SACnBf,EAAOM,OAAO8pC,WAAWC,gBAC3BtpC,EAAWC,KAAKC,IAAID,KAAKE,IAAIO,EAAQV,SAAU,IAAK,IAEtDwoC,EAAmB9nC,EAASV,EAAS,GACrC,EA2DF8oB,gBAAiB,IAAM7pB,EAAOM,OAAO8pC,WACrCzgB,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBjhC,cAAe,EACf0jB,eAAgB,EAChBuB,qBAAqB,EACrB3iB,aAAc,EACdm2B,kBAAmBlhB,EAAOM,OAAO6K,WAGvC,ECvGA,SAAyBpL,GACvB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,GACEqX,EACJgmB,EAAa,CACX2kB,gBAAiB,CACf3R,OAAQ,GACR4R,QAAS,EACTC,MAAO,IACPnU,MAAO,EACPoU,SAAU,EACV5gB,cAAc,KAwElBR,GAAW,CACTphC,OAAQ,YACR2X,SACAtX,KACAsrB,aAzEmB,KACnB,MACEhP,MAAOwqB,EACPtqB,OAAQuqB,EAAY,OACpB5mC,EAAM,gBACNuhB,GACEpK,EACEM,EAASN,EAAOM,OAAOoqC,gBACvBzhC,EAAejJ,EAAOiJ,eACtB5K,EAAY2B,EAAOI,UACnB0qC,EAAS7hC,EAA4BumB,EAAc,EAA1BnxB,EAA2CoxB,EAAe,EAA3BpxB,EACxD06B,EAAS9vB,EAAe3I,EAAOy4B,QAAUz4B,EAAOy4B,OAChD34B,EAAYE,EAAOsqC,MACnBp4C,EAAImR,GAAa3D,GAEvB,IAAK,IAAIrM,EAAI,EAAGpI,EAAS1C,EAAO0C,OAAQoI,EAAIpI,EAAQoI,GAAK,EAAG,CAC1D,MAAM8N,EAAU5Y,EAAO8K,GACjB0X,EAAYjB,EAAgBzW,GAE5Bo3C,GAAgBD,EADFrpC,EAAQkN,kBACiBtD,EAAY,GAAKA,EACxD2/B,EAA8C,mBAApB1qC,EAAOuqC,SAA0BvqC,EAAOuqC,SAASE,GAAgBA,EAAezqC,EAAOuqC,SACvH,IAAIN,EAAUthC,EAAe8vB,EAASiS,EAAmB,EACrDR,EAAUvhC,EAAe,EAAI8vB,EAASiS,EAEtCC,GAAc7qC,EAAYY,KAAK6C,IAAImnC,GACnCL,EAAUrqC,EAAOqqC,QAEE,iBAAZA,IAAkD,IAA1BA,EAAQ12C,QAAQ,OACjD02C,EAAU/rC,WAAW0B,EAAOqqC,SAAW,IAAMt/B,GAE/C,IAAIwxB,EAAa5zB,EAAe,EAAI0hC,EAAUK,EAC1CpO,EAAa3zB,EAAe0hC,EAAUK,EAAmB,EACzDvU,EAAQ,GAAK,EAAIn2B,EAAOm2B,OAASz1B,KAAK6C,IAAImnC,GAG1ChqC,KAAK6C,IAAI+4B,GAAc,OAAOA,EAAa,GAC3C57B,KAAK6C,IAAIg5B,GAAc,OAAOA,EAAa,GAC3C77B,KAAK6C,IAAIonC,GAAc,OAAOA,EAAa,GAC3CjqC,KAAK6C,IAAI0mC,GAAW,OAAOA,EAAU,GACrCvpC,KAAK6C,IAAI2mC,GAAW,OAAOA,EAAU,GACrCxpC,KAAK6C,IAAI4yB,GAAS,OAAOA,EAAQ,GACrC,MAAMyU,EAAiB,eAAetO,OAAgBC,OAAgBoO,iBAA0Bz4C,EAAEg4C,kBAAwBh4C,EAAE+3C,gBAAsB9T,KAIlJ,GAHiBtM,GAAa7pB,EAAQmB,GAC7BxV,MAAMoS,UAAY6sC,EAC3BzpC,EAAQxV,MAAMw+C,OAAmD,EAAzCzpC,KAAK6C,IAAI7C,KAAKshC,MAAM0I,IACxC1qC,EAAO2pB,aAAc,CAEvB,IAAIkhB,EAAiBliC,EAAexH,EAAQrb,cAAc,6BAA+Bqb,EAAQrb,cAAc,4BAC3GglD,EAAgBniC,EAAexH,EAAQrb,cAAc,8BAAgCqb,EAAQrb,cAAc,+BAC1G+kD,IACHA,EAAiBtgB,GAAa,YAAappB,EAASwH,EAAe,OAAS,QAEzEmiC,IACHA,EAAgBvgB,GAAa,YAAappB,EAASwH,EAAe,QAAU,WAE1EkiC,IAAgBA,EAAel/C,MAAMyrC,QAAUsT,EAAmB,EAAIA,EAAmB,GACzFI,IAAeA,EAAcn/C,MAAMyrC,SAAWsT,EAAmB,GAAKA,EAAmB,EAC/F,CACF,GAgBA78B,cAdoBxoB,IACMqa,EAAOnX,OAAOqN,KAAIuL,GAAWD,EAAoBC,KACzD3Y,SAAQY,IACxBA,EAAGuC,MAAMm2B,mBAAqB,GAAGz8B,MACjC+D,EAAGP,iBAAiB,gHAAgHL,SAAQohC,IAC1IA,EAASj+B,MAAMm2B,mBAAqB,GAAGz8B,KAAY,GACnD,GACF,EAQFgkC,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBhc,qBAAqB,KAG3B,EC/FA,SAAwB3N,GACtB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,GACEqX,EACJgmB,EAAa,CACXslB,eAAgB,CACdC,cAAe,EACfC,mBAAmB,EACnBC,mBAAoB,EACpB7hB,aAAa,EACbnY,KAAM,CACJpR,UAAW,CAAC,EAAG,EAAG,GAClB24B,OAAQ,CAAC,EAAG,EAAG,GACfrB,QAAS,EACTjB,MAAO,GAETrlB,KAAM,CACJhR,UAAW,CAAC,EAAG,EAAG,GAClB24B,OAAQ,CAAC,EAAG,EAAG,GACfrB,QAAS,EACTjB,MAAO,MAIb,MAAMgV,EAAoB94C,GACH,iBAAVA,EAA2BA,EAC/B,GAAGA,MAiGZ82B,GAAW,CACTphC,OAAQ,WACR2X,SACAtX,KACAsrB,aAnGmB,KACnB,MAAM,OACJnrB,EAAM,UACN0X,EAAS,gBACT6J,GACEpK,EACEM,EAASN,EAAOM,OAAO+qC,gBAE3BG,mBAAoB57B,GAClBtP,EACEorC,EAAmB1rC,EAAOM,OAAO4K,eACjCo/B,EAAY3mC,GAAa3D,GAC/B,GAAI0rC,EAAkB,CACpB,MAAMC,EAASvhC,EAAgB,GAAK,EAAIpK,EAAOM,OAAOgK,oBAAsB,EAC5E/J,EAAUtU,MAAMoS,UAAY,yBAAyBstC,OACvD,CACA,IAAK,IAAIh4C,EAAI,EAAGA,EAAI9K,EAAO0C,OAAQoI,GAAK,EAAG,CACzC,MAAM8N,EAAU5Y,EAAO8K,GACjBsb,EAAgBxN,EAAQV,SACxBA,EAAWC,KAAKE,IAAIF,KAAKC,IAAIQ,EAAQV,UAAWT,EAAOgrC,eAAgBhrC,EAAOgrC,eACpF,IAAI57B,EAAmB3O,EAClB2qC,IACHh8B,EAAmB1O,KAAKE,IAAIF,KAAKC,IAAIQ,EAAQiO,kBAAmBpP,EAAOgrC,eAAgBhrC,EAAOgrC,gBAEhG,MAAM1lD,EAAS6b,EAAQkN,kBACjB5oB,EAAI,CAACia,EAAOM,OAAO6K,SAAWvlB,EAASoa,EAAOI,WAAaxa,EAAQ,EAAG,GACtE4M,EAAI,CAAC,EAAG,EAAG,GACjB,IAAIo5C,GAAS,EACR5rC,EAAOiJ,iBACVljB,EAAE,GAAKA,EAAE,GACTA,EAAE,GAAK,GAET,IAAIghB,EAAO,CACT3G,UAAW,CAAC,EAAG,EAAG,GAClB24B,OAAQ,CAAC,EAAG,EAAG,GACftC,MAAO,EACPiB,QAAS,GAEP32B,EAAW,GACbgG,EAAOzG,EAAO8Q,KACdw6B,GAAS,GACA7qC,EAAW,IACpBgG,EAAOzG,EAAOkR,KACdo6B,GAAS,GAGX7lD,EAAE+C,SAAQ,CAAC6J,EAAOyF,KAChBrS,EAAEqS,GAAS,QAAQzF,UAAc84C,EAAkB1kC,EAAK3G,UAAUhI,SAAa4I,KAAK6C,IAAI9C,EAAW6O,MAAe,IAGpHpd,EAAE1J,SAAQ,CAAC6J,EAAOyF,KAChB,IAAIod,EAAMzO,EAAKgyB,OAAO3gC,GAAS4I,KAAK6C,IAAI9C,EAAW6O,GACnDpd,EAAE4F,GAASod,CAAG,IAEhB/T,EAAQxV,MAAMw+C,QAAUzpC,KAAK6C,IAAI7C,KAAKshC,MAAMrzB,IAAkBpmB,EAAO0C,OACrE,MAAMsgD,EAAkB9lD,EAAEqN,KAAK,MACzB04C,EAAe,WAAWxB,EAAU93C,EAAE,mBAAmB83C,EAAU93C,EAAE,mBAAmB83C,EAAU93C,EAAE,UACpGu5C,EAAcr8B,EAAmB,EAAI,SAAS,GAAK,EAAI3I,EAAK0vB,OAAS/mB,EAAmBE,KAAgB,SAAS,GAAK,EAAI7I,EAAK0vB,OAAS/mB,EAAmBE,KAC3Jo8B,EAAgBt8B,EAAmB,EAAI,GAAK,EAAI3I,EAAK2wB,SAAWhoB,EAAmBE,EAAa,GAAK,EAAI7I,EAAK2wB,SAAWhoB,EAAmBE,EAC5IvR,EAAY,eAAewtC,MAAoBC,KAAgBC,IAGrE,GAAIH,GAAU7kC,EAAKqiC,SAAWwC,EAAQ,CACpC,IAAI1hB,EAAWzoB,EAAQrb,cAAc,wBAIrC,IAHK8jC,GAAYnjB,EAAKqiC,SACpBlf,EAAWW,GAAa,WAAYppB,IAElCyoB,EAAU,CACZ,MAAM+hB,EAAgB3rC,EAAOirC,kBAAoBxqC,GAAY,EAAIT,EAAOgrC,eAAiBvqC,EACzFmpB,EAASj+B,MAAMyrC,QAAU12B,KAAKE,IAAIF,KAAKC,IAAID,KAAK6C,IAAIooC,GAAgB,GAAI,EAC1E,CACF,CACA,MAAMzyB,EAAW2Q,GAAa7pB,EAAQmB,GACtC+X,EAASvtB,MAAMoS,UAAYA,EAC3Bmb,EAASvtB,MAAMyrC,QAAUsU,EACrBjlC,EAAK5K,SACPqd,EAASvtB,MAAM69C,gBAAkB/iC,EAAK5K,OAE1C,GAsBAgS,cApBoBxoB,IACpB,MAAM6kC,EAAoBxqB,EAAOnX,OAAOqN,KAAIuL,GAAWD,EAAoBC,KAC3E+oB,EAAkB1hC,SAAQY,IACxBA,EAAGuC,MAAMm2B,mBAAqB,GAAGz8B,MACjC+D,EAAGP,iBAAiB,wBAAwBL,SAAQohC,IAClDA,EAASj+B,MAAMm2B,mBAAqB,GAAGz8B,KAAY,GACnD,IAEJ4kC,GAA2B,CACzBvqB,SACAra,WACA6kC,oBACAC,WAAW,GACX,EAQFd,YAAa,IAAM3pB,EAAOM,OAAO+qC,eAAe1hB,YAChDD,gBAAiB,KAAM,CACrBhc,qBAAqB,EACrBwT,kBAAmBlhB,EAAOM,OAAO6K,WAGvC,ECzIA,SAAqBpL,GACnB,IAAI,OACFC,EAAM,aACN+lB,EAAY,GACZr9B,GACEqX,EACJgmB,EAAa,CACXmmB,YAAa,CACXjiB,cAAc,EACd8O,QAAQ,EACRoT,eAAgB,EAChBC,eAAgB,KA6FpB3iB,GAAW,CACTphC,OAAQ,QACR2X,SACAtX,KACAsrB,aA9FmB,KACnB,MAAM,OACJnrB,EAAM,YACNU,EACAmgB,aAAcC,GACZ3J,EACEM,EAASN,EAAOM,OAAO4rC,aACvB,eACJj0B,EAAc,UACd6B,GACE9Z,EAAOgY,gBACLE,EAAmBvO,GAAO3J,EAAOI,UAAYJ,EAAOI,UAC1D,IAAK,IAAIzM,EAAI,EAAGA,EAAI9K,EAAO0C,OAAQoI,GAAK,EAAG,CACzC,MAAM8N,EAAU5Y,EAAO8K,GACjBsb,EAAgBxN,EAAQV,SACxBA,EAAWC,KAAKE,IAAIF,KAAKC,IAAIgO,GAAgB,GAAI,GACvD,IAAIrpB,EAAS6b,EAAQkN,kBACjB3O,EAAOM,OAAO4K,iBAAmBlL,EAAOM,OAAO6K,UACjDnL,EAAOO,UAAUtU,MAAMoS,UAAY,cAAc2B,EAAOkP,qBAEtDlP,EAAOM,OAAO4K,gBAAkBlL,EAAOM,OAAO6K,UAChDvlB,GAAUiD,EAAO,GAAG8lB,mBAEtB,IAAI09B,EAAKrsC,EAAOM,OAAO6K,SAAWvlB,EAASoa,EAAOI,WAAaxa,EAC3D0mD,EAAK,EACT,MAAMC,GAAM,IAAMvrC,KAAK6C,IAAI9C,GAC3B,IAAI01B,EAAQ,EACRsC,GAAUz4B,EAAO6rC,eAAiBprC,EAClCyrC,EAAQlsC,EAAO8rC,eAAsC,IAArBprC,KAAK6C,IAAI9C,GAC7C,MAAMzX,EAAa0W,EAAO8J,SAAW9J,EAAOM,OAAOwJ,QAAQC,QAAU/J,EAAO8J,QAAQlhB,KAAO+K,EAAIA,EACzF84C,GAAiBnjD,IAAeC,GAAeD,IAAeC,EAAc,IAAMwX,EAAW,GAAKA,EAAW,IAAM+Y,GAAa9Z,EAAOM,OAAO6K,UAAY+M,EAAmBD,EAC7Ky0B,GAAiBpjD,IAAeC,GAAeD,IAAeC,EAAc,IAAMwX,EAAW,GAAKA,GAAY,IAAM+Y,GAAa9Z,EAAOM,OAAO6K,UAAY+M,EAAmBD,EACpL,GAAIw0B,GAAiBC,EAAe,CAClC,MAAMC,GAAe,EAAI3rC,KAAK6C,KAAK7C,KAAK6C,IAAI9C,GAAY,IAAO,MAAS,GACxEg4B,IAAW,GAAKh4B,EAAW4rC,EAC3BlW,IAAU,GAAMkW,EAChBH,GAAS,GAAKG,EACdL,GAAS,GAAKK,EAAc3rC,KAAK6C,IAAI9C,GAAhC,GACP,CAUA,GAPEsrC,EAFEtrC,EAAW,EAER,QAAQsrC,OAAQ1iC,EAAM,IAAM,QAAQ6iC,EAAQxrC,KAAK6C,IAAI9C,QACjDA,EAAW,EAEf,QAAQsrC,OAAQ1iC,EAAM,IAAM,SAAS6iC,EAAQxrC,KAAK6C,IAAI9C,QAEtD,GAAGsrC,OAELrsC,EAAOiJ,eAAgB,CAC1B,MAAM2jC,EAAQN,EACdA,EAAKD,EACLA,EAAKO,CACP,CACA,MAAMb,EAAchrC,EAAW,EAAI,IAAG,GAAK,EAAI01B,GAAS11B,GAAa,IAAG,GAAK,EAAI01B,GAAS11B,GAGpF1C,EAAY,yBACFguC,MAAOC,MAAOC,yBAClBjsC,EAAOy4B,OAASpvB,GAAOovB,EAASA,EAAS,wBAC3CgT,aAIV,GAAIzrC,EAAO2pB,aAAc,CAEvB,IAAIC,EAAWzoB,EAAQrb,cAAc,wBAChC8jC,IACHA,EAAWW,GAAa,QAASppB,IAE/ByoB,IAAUA,EAASj+B,MAAMyrC,QAAU12B,KAAKE,IAAIF,KAAKC,KAAKD,KAAK6C,IAAI9C,GAAY,IAAO,GAAK,GAAI,GACjG,CACAU,EAAQxV,MAAMw+C,QAAUzpC,KAAK6C,IAAI7C,KAAKshC,MAAMrzB,IAAkBpmB,EAAO0C,OACpD4+B,GAAa7pB,EAAQmB,GAC7BxV,MAAMoS,UAAYA,CAC7B,GAqBA8P,cAnBoBxoB,IACpB,MAAM6kC,EAAoBxqB,EAAOnX,OAAOqN,KAAIuL,GAAWD,EAAoBC,KAC3E+oB,EAAkB1hC,SAAQY,IACxBA,EAAGuC,MAAMm2B,mBAAqB,GAAGz8B,MACjC+D,EAAGP,iBAAiB,wBAAwBL,SAAQohC,IAClDA,EAASj+B,MAAMm2B,mBAAqB,GAAGz8B,KAAY,GACnD,IAEJ4kC,GAA2B,CACzBvqB,SACAra,WACA6kC,qBACA,EAQFb,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBhc,qBAAqB,EACrBwT,kBAAmBlhB,EAAOM,OAAO6K,WAGvC,GClHA,SAAS0hC,GAAgBC,GACvB,IAAMjkD,EAASikD,EAAe3jD,iBAAiB,mBAEzC6W,EAAS,IAAI5X,GAAO0kD,EAAgB,CACxCrkD,cAAe,IACf+kB,eAAe,EACfE,qBAAqB,EACrB3iB,aAAc,GACdL,WAAY,CACVhB,GAAI,qBACJiqC,WAAW,GAEbvpC,WAAY,CACVI,OAAQ,+BACRC,OAAQ,gCAEVK,YAAa,CACX,IAAK,CACHrC,cAAe,MAGnB+2C,KAAM,CACJI,kBAAmB,yBACnBD,iBAAkB,yBAClBD,iBAAkB,uBAClBG,iBAAkB,0BAClBC,wBAAyB,2BAE3BnR,SAAU,CACR5kB,SAAS,EACTulB,gBAAgB,KAIpBzmC,EAAOC,SAAQ,SAACC,EAAOqP,GACrBrP,EAAMpC,iBAAiB,SAAS,WAC9BqZ,EAAOlW,QAAQsO,EACjB,GACF,GACF,CC9CA,SAAS20C,GAA2BC,GAClCloD,OAAOmoD,UAAUnrC,KAAK,CACpB3T,MAAO,eACP++C,YAAaF,IAGfA,EAAM95C,MAAM,KAAKpK,SAAQ,SAAC+B,GACxB/F,OAAOmoD,UAAUnrC,KAAK,CACpB3T,MAAO,eACPg/C,WAAYtiD,GAEhB,GACF,CCPA,SAASuiD,GAAeC,GACE,oBAAXvoD,SAEXA,OAAOmoD,UAAYnoD,OAAOmoD,WAAa,GAEvCnoD,OAAOmoD,UAAUnrC,KAAK,CAClB3T,MAAOk/C,IAEf,CzByBAjlD,GAAOkgC,IAAI1C,IuBrCK5gC,SAASmE,iBAAiB,qBAElCL,SAAQ,SAACgkD,GACfD,GAAgBC,EAClB,G","sources":["webpack://Entry/./assets/js/main.js","webpack://Entry/./components/cookie-bar/js/cookie-bar-interaction.js","webpack://Entry/./components/video-widget/video-widget.js","webpack://Entry/webpack/bootstrap","webpack://Entry/webpack/runtime/define property getters","webpack://Entry/webpack/runtime/hasOwnProperty shorthand","webpack://Entry/webpack/runtime/make namespace object","webpack://Entry/../node_modules/decode-uri-component/index.js","webpack://Entry/../node_modules/split-on-first/index.js","webpack://Entry/../node_modules/filter-obj/index.js","webpack://Entry/../node_modules/query-string/base.js","webpack://Entry/../node_modules/query-string/index.js","webpack://Entry/./components/video/modalVideo.js","webpack://Entry/./components/manifesto/js/manifesto.js","webpack://Entry/../node_modules/swiper/shared/ssr-window.esm.mjs","webpack://Entry/../node_modules/swiper/shared/utils.mjs","webpack://Entry/../node_modules/swiper/shared/swiper-core.mjs","webpack://Entry/../node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://Entry/../node_modules/swiper/shared/classes-to-selector.mjs","webpack://Entry/../node_modules/swiper/modules/manipulation.mjs","webpack://Entry/../node_modules/swiper/shared/effect-init.mjs","webpack://Entry/../node_modules/swiper/shared/effect-target.mjs","webpack://Entry/../node_modules/swiper/shared/effect-virtual-transition-end.mjs","webpack://Entry/../node_modules/swiper/shared/create-shadow.mjs","webpack://Entry/../node_modules/swiper/swiper-bundle.mjs","webpack://Entry/../node_modules/swiper/modules/virtual.mjs","webpack://Entry/../node_modules/swiper/modules/keyboard.mjs","webpack://Entry/../node_modules/swiper/modules/mousewheel.mjs","webpack://Entry/../node_modules/swiper/modules/navigation.mjs","webpack://Entry/../node_modules/swiper/modules/pagination.mjs","webpack://Entry/../node_modules/swiper/modules/scrollbar.mjs","webpack://Entry/../node_modules/swiper/modules/parallax.mjs","webpack://Entry/../node_modules/swiper/modules/zoom.mjs","webpack://Entry/../node_modules/swiper/modules/controller.mjs","webpack://Entry/../node_modules/swiper/modules/a11y.mjs","webpack://Entry/../node_modules/swiper/modules/history.mjs","webpack://Entry/../node_modules/swiper/modules/hash-navigation.mjs","webpack://Entry/../node_modules/swiper/modules/autoplay.mjs","webpack://Entry/../node_modules/swiper/modules/thumbs.mjs","webpack://Entry/../node_modules/swiper/modules/free-mode.mjs","webpack://Entry/../node_modules/swiper/modules/grid.mjs","webpack://Entry/../node_modules/swiper/modules/effect-fade.mjs","webpack://Entry/../node_modules/swiper/modules/effect-cube.mjs","webpack://Entry/../node_modules/swiper/modules/effect-flip.mjs","webpack://Entry/../node_modules/swiper/modules/effect-coverflow.mjs","webpack://Entry/../node_modules/swiper/modules/effect-creative.mjs","webpack://Entry/../node_modules/swiper/modules/effect-cards.mjs","webpack://Entry/./components/upcoming-events/js/upcoming-events-swiper.js","webpack://Entry/./components/cookie-bar/js/cookie-handler.js","webpack://Entry/./assets/js/utils/gtm.ts"],"sourcesContent":["document.addEventListener('DOMContentLoaded', function () {\n const body = document.body;\n const scrollUp = 'direction-up';\n const scrollDown = 'direction-down';\n const header = document.getElementById('header');\n const navbar = document.getElementById('navbar');\n\n if (header) {\n var headerTransparent = document.getElementById('headerTrans');\n if (headerTransparent) {\n header.setAttribute('data-transparent', 'true');\n navbar.classList.add('navbar-transparent');\n header.classList.add('header-visible');\n } else {\n header.classList.add('header-visible');\n }\n }\n\n var scrollTopId = document.getElementById('scrollTop');\n var lastScrollTop = 0;\n\n AOS.init({\n once: true,\n });\n\n // sidemenu\n const sidemenu = document.getElementById('sidemenu-toggler');\n const productInquiry = document.getElementById('modalProductInquiry');\n\n if (sidemenu) {\n sidemenu.addEventListener('click', function (e) {\n body.classList.toggle('sidemenu-open');\n });\n }\n\n if (productInquiry) {\n productInquiry.addEventListener('show.bs.modal', function (e) {\n body.classList.add('product-inquiry-open');\n });\n\n productInquiry.addEventListener('hidden.bs.modal', function (e) {\n body.classList.remove('product-inquiry-open');\n });\n\n window.addEventListener('click', function (e) {\n if (!document.querySelector('.sidemenu-header').contains(e.target)) {\n body.classList.remove('sidemenu-open');\n }\n });\n }\n\n // end of sidemenu\n\n if (navbar) {\n var st = getScrollYPosition();\n if (st > 0) {\n navbar.classList.remove('navbar-transparent');\n }\n }\n\n var coverSliderId = document.querySelector('#sliderCover');\n if (coverSliderId) {\n var coverSliderNav = coverSliderId.querySelector('.slider-nav');\n var coverSlider = new Swiper(coverSliderId, {\n effect: 'fade',\n speed: 500,\n autoplay: {\n delay: 5000,\n },\n slidesPerView: 1,\n });\n\n coverSlider.on('slideChange', function () {\n Array.from(coverSlider.slides).forEach(function (slide) {\n if (slide.classList.contains('has-video')) {\n var video = slide.getElementsByTagName('video');\n video[0].classList.add('pause');\n video[0].pause();\n }\n });\n var navElements = coverSliderNav.querySelectorAll('.slider-nav-item');\n navElements.forEach(function (navElement) {\n navElement.classList.remove('active');\n if (navElement.dataset.slideIndex == coverSlider.activeIndex) {\n navElement.classList.add('active');\n }\n });\n });\n\n coverSlider.on('slideChangeTransitionStart', function () {\n if (coverSlider.slides[coverSlider.realIndex].classList.contains('has-video')) {\n var video = coverSlider.slides[coverSlider.realIndex].getElementsByTagName('video');\n video[0].play();\n }\n });\n\n coverSliderNav.querySelectorAll('li > a').forEach(function (el, key) {\n el.addEventListener('click', function (e) {\n e.preventDefault();\n coverSliderId.setAttribute('data-slider-autoplay', 'false');\n el.parentNode.classList.add('active');\n coverSlider.slideTo(el.parentNode.dataset.slideIndex);\n\n coverSliderNav.querySelectorAll('li').forEach(function (ell, els) {\n if (key !== els) {\n ell.classList.remove('active');\n }\n });\n });\n });\n }\n\n var sliderPeopleID = document.getElementById('sliderPeople');\n var sliderPeople = new Swiper(sliderPeopleID, {\n speed: 500,\n slidesPerView: 4,\n simulateTouch: false,\n navigation: {\n disabledClass: 'slider-control-disabled',\n hiddenClass: 'slider-control-hidden',\n lockClass: 'slider-control-lock',\n nextEl: '.slider-control-next',\n prevEl: '.slider-control-prev',\n },\n pagination: {\n modifierClass: 'slider-pagination-',\n progressbarFillClass: 'slider-pagination-progressbar-fill',\n el: '.slider-pagination-progressbar',\n type: 'progressbar',\n },\n breakpoints: {\n 320: {\n slidesPerView: 1,\n spaceBetween: 20,\n },\n 576: {\n slidesPerView: 2,\n spaceBetween: 20,\n },\n 992: {\n slidesPerView: 3,\n spaceBetween: 20,\n },\n 1200: {\n slidesPerView: 4,\n spaceBetween: 20,\n },\n },\n });\n\n var sliderStandardID = document.getElementById('sliderStandard');\n if (sliderStandardID) {\n var sliderStandard = new Swiper(sliderStandardID, {\n speed: 500,\n slidesPerView: 4,\n simulateTouch: false,\n navigation: {\n disabledClass: 'slider-control-disabled',\n hiddenClass: 'slider-control-hidden',\n lockClass: 'slider-control-lock',\n nextEl: sliderStandardID.querySelector('.slider-control-next'),\n prevEl: sliderStandardID.querySelector('.slider-control-prev'),\n },\n pagination: {\n progressbarFillClass: 'slider-pagination-progressbar-fill',\n el: sliderStandardID.querySelector('.slider-pagination-progressbar'),\n type: 'progressbar',\n },\n breakpoints: {\n 320: {\n slidesPerView: 1,\n spaceBetween: 20,\n },\n 576: {\n slidesPerView: 2,\n spaceBetween: 20,\n },\n 992: {\n slidesPerView: 3,\n spaceBetween: 20,\n },\n 1200: {\n slidesPerView: 4,\n spaceBetween: 20,\n },\n },\n });\n }\n\n var sliderConsumablesID = document.getElementById('sliderConsumables');\n if (sliderConsumablesID) {\n var sliderConsumables = new Swiper(sliderConsumablesID, {\n speed: 500,\n slidesPerView: 4,\n simulateTouch: false,\n navigation: {\n nextEl: sliderConsumablesID.querySelector('.slider-control-next'),\n prevEl: sliderConsumablesID.querySelector('.slider-control-prev'),\n },\n pagination: {\n progressbarFillClass: 'slider-pagination-progressbar-fill',\n disabledClass: 'slider-control-disabled',\n hiddenClass: 'slider-control-hidden',\n lockClass: 'slider-control-lock',\n el: sliderConsumablesID.querySelector('.slider-pagination-progressbar'),\n type: 'progressbar',\n },\n breakpoints: {\n 320: {\n slidesPerView: 1,\n spaceBetween: 20,\n },\n 576: {\n slidesPerView: 2,\n spaceBetween: 20,\n },\n 992: {\n slidesPerView: 3,\n spaceBetween: 20,\n },\n 1200: {\n slidesPerView: 4,\n spaceBetween: 20,\n },\n },\n });\n }\n\n // testimonial tabs\n var testimonialsTabList = [].slice.call(\n document.querySelectorAll('.nav-testimonial-tabs [data-bs-toggle=\"tab\"]')\n );\n testimonialsTabList.forEach(function (testimonialTab) {\n testimonialTab.addEventListener('shown.bs.tab', function (e) {\n if (e.target) {\n var tabPaneID = e.target.getAttribute('href');\n var tabPane = document.querySelector(tabPaneID);\n var tabVideo = tabPane.getElementsByTagName('video');\n if (tabVideo.length > 0) {\n tabVideo[0].play();\n }\n } else if (e.relatedTarget) {\n var tabPaneID = e.relatedTarget.getAttribute('href');\n var tabPane = document.querySelector(tabPaneID);\n var tabVideo = tabPane.getElementsByTagName('video');\n if (tabVideo.length > 0) {\n tabVideo[0].pause();\n }\n }\n });\n });\n\n // testimonials\n var sliderTestimonialSelector = document.querySelector('.slider-testimonial');\n if (sliderTestimonialSelector) {\n var sliderTestimonial = new Swiper(sliderTestimonialSelector, {\n navigation: {\n disabledClass: 'slider-control-disabled',\n hiddenClass: 'slider-control-hidden',\n lockClass: 'slider-control-lock',\n nextEl: sliderTestimonialSelector.querySelector('.slider-control-next'),\n prevEl: sliderTestimonialSelector.querySelector('.slider-control-prev'),\n },\n on: {\n init: function () {\n var pagerCurent = this.el.querySelector('.slider-pager-numbers > .slider-pager-current'),\n pagerTotal = this.el.querySelector('.slider-pager-numbers > .slider-pager-total');\n pagerCurent.innerHTML = '0' + (this.activeIndex + 1);\n pagerTotal.innerHTML = '0' + this.slides.length;\n },\n slideChange: function () {\n var sliderItems = [].slice.call(\n document.querySelectorAll('.slider-testimonial .slider-list .slider-item')\n );\n if (sliderItems) {\n sliderItems.forEach(function (item) {\n item.style.setProperty('opacity', '0');\n });\n sliderItems[this.realIndex].style.setProperty('opacity', '1');\n }\n var currentSlide = '0' + (this.realIndex + 1);\n this.el.querySelector('.slider-pager-numbers > .slider-pager-current').innerHTML =\n currentSlide;\n },\n },\n effect: 'fade',\n speed: 500,\n slidesPerView: 1,\n });\n }\n // Featured Slider\n var sliderFeatureID = document.querySelector('#featureSlider');\n if (sliderFeatureID) {\n var sliderFeatureNav = sliderFeatureID.querySelector('.slider-nav');\n var sliderFeature = new Swiper(sliderFeatureID, {\n effect: 'fade',\n speed: 500,\n autoplay: {\n delay: 5000,\n },\n slidesPerView: 1,\n });\n\n sliderFeature.on('slideChangeTransitionStart', function () {\n if (sliderFeature.slides[sliderFeature.realIndex].classList.contains('has-video')) {\n var video = sliderFeature.slides[sliderFeature.realIndex].getElementsByTagName('video');\n video[0].play();\n }\n });\n\n sliderFeature.on('slideChange', function () {\n Array.from(sliderFeature.slides).forEach(function (slide) {\n if (slide.classList.contains('has-video')) {\n var video = slide.getElementsByTagName('video');\n video[0].classList.add('pause');\n video[0].pause();\n }\n });\n\n var navElements = sliderFeatureID.querySelectorAll('.slider-nav-item');\n navElements.forEach(function (navElement) {\n navElement.classList.remove('active');\n if (navElement.dataset.slideIndex == sliderFeature.activeIndex) {\n navElement.classList.add('active');\n }\n });\n });\n\n sliderFeatureNav.querySelectorAll('li > a').forEach(function (el, key) {\n el.addEventListener('click', function (e) {\n e.preventDefault();\n sliderFeatureID.setAttribute('data-slider-autoplay', 'false');\n el.parentNode.classList.add('active');\n sliderFeature.slideTo(el.parentNode.dataset.slideIndex);\n\n sliderFeatureNav.querySelectorAll('li').forEach(function (ell, els) {\n if (key !== els) {\n ell.classList.remove('active');\n }\n });\n });\n });\n }\n\n // Solution Slider\n let sliderSolutionID = document.getElementById('sliderSolution');\n if (sliderSolutionID) {\n let sliderSolutionOptions = {\n speed: 1000,\n simulateTouch: false,\n navigation: {\n disabledClass: 'slider-control-disabled',\n hiddenClass: 'slider-control-hidden',\n lockClass: 'slider-control-lock',\n nextEl: sliderSolutionID.querySelector('.slider-solutions .slider-control-next'),\n prevEl: sliderSolutionID.querySelector('.slider-solutions .slider-control-prev'),\n },\n on: {\n init: function () {\n var pagerCurent = this.el.querySelector('.slider-pager-current'),\n pagerTotal = this.el.querySelector('.slider-pager-total');\n pagerCurent.innerHTML = '0' + (this.activeIndex + 1);\n pagerTotal.innerHTML = '0' + this.slides.length;\n },\n slideChange: function () {\n var currentSlide = '0' + (this.realIndex + 1);\n this.el.querySelector('.slider-pager-current').innerHTML = currentSlide;\n },\n },\n };\n let sliderSolution = new Swiper(sliderSolutionID, sliderSolutionOptions);\n\n sliderSolution.on('slideChangeTransitionStart', function () {\n if (this.slides[this.realIndex].classList.contains('has-video')) {\n var video = this.slides[this.realIndex].getElementsByTagName('video');\n video[0].play();\n }\n });\n\n sliderSolution.on('slideChange', function () {\n Array.from(this.slides).forEach(function (slide) {\n if (slide.classList.contains('has-video')) {\n var video = slide.getElementsByTagName('video');\n video[0].classList.add('pause');\n video[0].pause();\n }\n });\n });\n }\n\n // History Slider\n let sliderHistoryID = document.getElementById('sliderHistory');\n if (sliderHistoryID) {\n let sliderHistoryOptions = {\n speed: 1000,\n simulateTouch: false,\n watchSlidesVisibility: true,\n navigation: {\n disabledClass: 'slider-control-disabled',\n hiddenClass: 'slider-control-hidden',\n lockClass: 'slider-control-lock',\n nextEl: '.slider-history .slider-control-next',\n prevEl: '.slider-history .slider-control-prev',\n },\n pagination: {\n progressbarFillClass: 'slider-pagination-progressbar-fill',\n el: '.slider-pagination-progressbar',\n type: 'progressbar',\n },\n breakpoints: {\n 320: {\n slidesPerView: 1,\n spaceBetween: 20,\n },\n 576: {\n slidesPerView: 2,\n spaceBetween: 20,\n },\n 992: {\n slidesPerView: 3,\n spaceBetween: 20,\n },\n 1200: {\n slidesPerView: 4,\n spaceBetween: 20,\n },\n },\n };\n let sliderHistory = new Swiper(sliderHistoryID, sliderHistoryOptions);\n }\n\n //menu toggler\n let menuToggler = document.querySelector('.navbar-menu-toggler');\n if (menuToggler) {\n menuToggler.addEventListener('click', function (e) {\n menuToggler.classList.toggle('active');\n body.classList.toggle('page-menu');\n\n menuToggler.setAttribute(\n 'aria-expanded',\n menuToggler.getAttribute('aria-expanded') === 'false' ? 'true' : 'false'\n );\n });\n }\n // menu\n var menuPrimary = document.getElementById('menuPrimary');\n if (menuPrimary) {\n var menuPrimaryParentItems = menuPrimary.querySelectorAll(\n '.menu-link[aria-haspopup] > .menu-icon'\n );\n menuPrimaryParentItems.forEach(function (menuSubToggler, key) {\n menuSubToggler.addEventListener('click', function (e) {\n e.preventDefault();\n menuSubToggler.parentNode.setAttribute(\n 'aria-expanded',\n menuSubToggler.parentNode.getAttribute('aria-expanded') === 'false' ? 'true' : 'false'\n );\n });\n });\n }\n\n // reset password\n var forgotPassword = document.querySelector('#forgot-password');\n if (forgotPassword) {\n forgotPassword.onclick = function (e) {\n e.preventDefault();\n var linkResetpassword = document.querySelector('#account-nav-tabs .nav-item-password a');\n var tabResetPassword = new bootstrap.Tab(linkResetpassword);\n tabResetPassword.show();\n };\n }\n // account\n let modalAccount = document.getElementById('modalAccount');\n\n if (modalAccount) {\n modalAccount.addEventListener('hidden.bs.modal', function (e) {\n var linkSignin = document.querySelector('#account-nav-tabs .nav-item-signin a');\n var tabSignin = new bootstrap.Tab(linkSignin);\n tabSignin.show();\n });\n }\n //search\n const searchToggler = document.querySelector('.navbar-search-toggler');\n const searchInputId = document.getElementById('mainSearchInput');\n const searchPane = document.getElementById('search');\n\n if (searchToggler) {\n const searchTogglerIcon = searchToggler.querySelector('.sa-icon');\n\n const searchBackdropListener = (e) => {\n if (\n !searchPane.querySelector('.search-dialog').contains(e.target) &&\n !navbar.contains(e.target) &&\n searchPane.getAttribute('aria-expanded') === 'true'\n ) {\n body.classList.toggle('page-search');\n searchPane.setAttribute('aria-expanded', 'false');\n searchToggler.classList.remove('active');\n searchToggler.setAttribute('aria-expanded', 'false');\n searchTogglerIcon.classList.remove('sa-icon-close');\n searchTogglerIcon.classList.add('sa-icon-search');\n document.removeEventListener('click', searchBackdropListener);\n }\n };\n\n searchToggler.addEventListener('click', function (e) {\n e.preventDefault();\n body.classList.toggle('page-search');\n searchPane.setAttribute(\n 'aria-expanded',\n searchPane.getAttribute('aria-expanded') === 'false' ? 'true' : 'false'\n );\n document.addEventListener('click', searchBackdropListener);\n\n if (body.classList.contains('page-search')) {\n searchTogglerIcon.classList.remove('sa-icon-search');\n searchTogglerIcon.classList.add('sa-icon-close');\n searchToggler.classList.add('active');\n searchToggler.setAttribute('aria-expanded', 'true');\n setTimeout(function () {\n setFocus(searchInputId);\n }, 400);\n } else {\n searchTogglerIcon.classList.remove('sa-icon-close');\n searchTogglerIcon.classList.add('sa-icon-search');\n searchToggler.classList.remove('active');\n searchToggler.setAttribute('aria-expanded', 'false');\n }\n });\n }\n\n document.addEventListener('keydown', function (event) {\n if (event.key === 'Escape') {\n if (body.classList.contains('page-search')) {\n body.classList.remove('page-search');\n searchTogglerIcon.classList.add('sa-icon-search');\n searchTogglerIcon.classList.remove('sa-icon-close');\n searchToggler.classList.remove('active');\n searchToggler.setAttribute('aria-expanded', 'false');\n } else if (body.classList.contains('page-filter')) {\n body.classList.remove('page-filter');\n } else if (body.classList.contains('sideover-open')) {\n body.classList.remove('sideover-open');\n }\n }\n });\n\n //scroll to top\n if (scrollTopId) {\n scrollTopId.addEventListener('click', function (e) {\n e.stopPropagation();\n e.preventDefault();\n scroll(e.target.hash, {\n duration: 400,\n });\n });\n }\n\n // toggle password\n document.querySelectorAll('[data-toggle=\"password\"]').forEach(function (el) {\n el.addEventListener('click', function (e) {\n e.preventDefault();\n const target = el.dataset.target;\n document.querySelector(target).focus();\n const icon = el.querySelector('.sa-icon');\n\n if (document.querySelector(target).getAttribute('type') == 'password') {\n document.querySelector(target).setAttribute('type', 'text');\n icon.classList.remove('sa-icon-eye');\n icon.classList.add('sa-icon-eye-off');\n } else {\n document.querySelector(target).setAttribute('type', 'password');\n icon.classList.remove('sa-icon-eye-off');\n icon.classList.add('sa-icon-eye');\n }\n });\n });\n\n var docsFilterCountNum = 0;\n //documents filter\n var filterTogglerId = document.getElementById('docFilterToggler');\n var filterCloseId = document.getElementById('docFilterClose');\n var filterBackdrop = document.querySelector('.filter-backdrop');\n\n const docsFilterApply = document.getElementById('docs-filter-apply');\n\n if (filterTogglerId && filterCloseId && filterBackdrop) {\n filterTogglerId.addEventListener('click', function (e) {\n body.classList.toggle('page-filter');\n });\n filterBackdrop.addEventListener('click', function (e) {\n body.classList.remove('page-filter');\n //Uncomment if closing filter menu needs to submit form\n //docsFilterApply.click();\n });\n filterCloseId.addEventListener('click', function (e) {\n if (docsFilterCountNum > 0) {\n docsFilterApply.click();\n }\n body.classList.remove('page-filter');\n });\n }\n\n const docsFilterList = document.getElementById('filter-documents');\n //const docsFilterResult = document.querySelector('.js-docs-filter-result');\n\n if (docsFilterList) {\n docsFilterList.addEventListener('click', function (event) {\n if (!event.target.matches('.form-check-input')) return;\n docsFilterCountNum = docsFilterList.querySelectorAll('.form-check-input:checked').length;\n docsFilterCountUpdate(docsFilterCountNum);\n });\n }\n\n let docsFilterResetBtns = document.querySelectorAll('.js-docs-filter-reset');\n if (docsFilterResetBtns) {\n docsFilterResetBtns.forEach((btn) => {\n if (btn.classList.contains('dont-reload')) {\n btn.addEventListener('click', (e) => {\n docsFilterReset();\n });\n } else {\n btn.addEventListener('click', (e) => {\n docsFilterReset();\n docsFilterApply.click();\n });\n }\n });\n }\n\n let docsFilterCounts = document.querySelectorAll('.js-docs-filter-count');\n function docsFilterCountUpdate(count) {\n if (docsFilterCounts) {\n docsFilterCounts.forEach((el) => {\n el.textContent = `(${count})`;\n });\n }\n }\n function docsFilterReset() {\n docsFilterList.querySelectorAll('.form-check-input').forEach((checkbox) => {\n checkbox.checked = false;\n docsFilterCountNum = 0;\n docsFilterCountUpdate(docsFilterCountNum);\n //docsFilterResult.textContent = `0`\n });\n }\n\n //sideover people\n var sideoverPeopleId = document.getElementById('sideoverPeople');\n\n document.querySelectorAll('[data-toggle=\"sideover\"]').forEach(function (el) {\n el.addEventListener('click', function (e) {\n e.preventDefault();\n var triggerEl = document.querySelector(\n '#tabPeople > [href=\"' + el.getAttribute('href') + '\"]'\n );\n if (triggerEl && sideoverPeopleId) {\n triggerEl.click();\n body.classList.toggle('sideover-open');\n sideoverPeopleId.setAttribute('aria-expanded', 'true');\n sideoverPeopleId.addEventListener('click', sideoverBackdrop, false);\n }\n });\n });\n\n var sideoverClose = document.querySelector('[data-dismiss=\"sideover\"]');\n if (sideoverClose) {\n sideoverClose.addEventListener('click', function (e) {\n var active = document.querySelector('.sideover[aria-expanded=\"true\"]');\n if (active) {\n body.classList.remove('sideover-open');\n active.setAttribute('aria-expanded', 'false');\n }\n });\n }\n var sideoverBackdrop = function (e) {\n if (!e.target.closest('.sideover-dialog')) {\n body.classList.remove('sideover-open');\n e.target.setAttribute('aria-expanded', 'false');\n e.target.removeEventListener('click', sideoverBackdrop, false);\n }\n };\n\n let featureTabsLink = document.querySelectorAll('.feature-tabs .nav-link');\n\n if (featureTabsLink) {\n featureTabsLink.forEach(function (tab) {\n tab.addEventListener('show.bs.tab', function (e) {\n var featureTabs = tab.closest('.feature-tabs');\n\n if (e.target.classList.contains('has-video')) {\n var targetTabCover = featureTabs.querySelector(\n '.tab-cover-bg[data-tabpanel=\"' + e.target.getAttribute('href') + '\"]'\n );\n var targetTabVideo = targetTabCover.getElementsByTagName('video');\n targetTabVideo[0].play();\n }\n if (e.relatedTarget.classList.contains('has-video')) {\n var targetTabCover = featureTabs.querySelector(\n '.tab-cover-bg[data-tabpanel=\"' + e.relatedTarget.getAttribute('href') + '\"]'\n );\n var targetTabVideo = targetTabCover.getElementsByTagName('video');\n targetTabVideo[0].pause();\n }\n });\n });\n }\n\n //scroll event\n if (navbar) {\n window.addEventListener(\n 'scroll',\n () => {\n var st = getScrollYPosition();\n if (st > lastScrollTop) {\n // downscroll code\n body.classList.remove(scrollUp);\n body.classList.add(scrollDown);\n if (lastScrollTop == 0 && st > 75) {\n body.classList.remove(scrollDown);\n }\n } else {\n // upscroll code\n body.classList.remove(scrollDown);\n body.classList.add(scrollUp);\n\n if (lastScrollTop < 75 && headerTransparent) {\n navbar.classList.add('navbar-transparent');\n } else {\n navbar.classList.remove('navbar-transparent');\n }\n }\n if (st == 0) {\n body.classList.remove(scrollDown);\n body.classList.remove(scrollUp);\n }\n\n if (st > scrollTopId.dataset.showOffset) {\n scrollTopId.classList.add('active');\n } else {\n scrollTopId.classList.remove('active');\n }\n\n lastScrollTop = st <= 0 ? 0 : st;\n },\n false\n );\n }\n\n //load event\n window.addEventListener('load', function (e) {\n const body = document.body;\n body.classList.remove('page-preload');\n body.classList.add('page-loaded');\n\n if (window.location.hash) {\n var hash = window.location.hash.substring(1);\n\n if (hash == 'documentSection') {\n scroll('[data-anchor=\"#' + hash + '\"]', {\n duration: 200,\n });\n $('#documentsCollapse').collapse('show');\n } else {\n scroll('[data-anchor=\"#' + hash + '\"]', {\n duration: 200,\n });\n }\n }\n document.querySelectorAll('.anchor').forEach(function (el) {\n el.addEventListener('click', function (e) {\n e.stopPropagation();\n e.preventDefault();\n var offset;\n if (!el.hasAttribute('data-anchor-offset')) {\n offset = -80;\n } else {\n offset = el.dataset.anchorOffset;\n }\n\n scroll('[data-anchor=\"' + e.target.hash + '\"]', {\n duration: 200,\n offset: parseInt(offset),\n });\n });\n });\n });\n});\n\nfunction setFocus(element) {\n if (element) {\n if (!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)) {\n element.tabIndex = -1;\n }\n\n element.focus();\n }\n}\n\nfunction getScrollYPosition() {\n var top = window.pageYOffset || document.documentElement.scrollTop;\n return top;\n}\n\nfunction scroll(target, options) {\n var start = window.pageYOffset,\n opt = {\n duration: options.duration,\n offset: options.offset || 0,\n callback: options.callback,\n easing: options.easing || easeInOutQuad,\n },\n distance =\n typeof target === 'string'\n ? opt.offset + (document.querySelector(target)?.getBoundingClientRect().top || 0)\n : target,\n duration = typeof opt.duration === 'function' ? opt.duration(distance) : opt.duration,\n timeStart,\n timeElapsed;\n\n requestAnimationFrame(function (time) {\n timeStart = time;\n loop(time);\n });\n\n function loop(time) {\n timeElapsed = time - timeStart;\n\n window.scrollTo(0, opt.easing(timeElapsed, start, distance, duration));\n\n if (timeElapsed < duration) requestAnimationFrame(loop);\n else end();\n }\n\n function end() {\n window.scrollTo(0, start + distance);\n\n if (typeof opt.callback === 'function') opt.callback();\n }\n\n // Robert Penner's easeInOutQuad - http://robertpenner.com/easing/\n function easeInOutQuad(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return (c / 2) * t * t + b;\n t--;\n return (-c / 2) * (t * (t - 2) - 1) + b;\n }\n}\n","const cookieBar = document.querySelector('.js-cookie-bar');\nconst changePreferencesToggles = document.querySelectorAll('.js-change-preferences');\n\nfunction togglePreferences() {\n document.body.classList.add('disable-scroll-mobile');\n cookieBar.classList.add('show-preferences');\n}\n\nif (cookieBar && changePreferencesToggles.length > 0) {\n changePreferencesToggles.forEach((toggle) => toggle.addEventListener('click', togglePreferences));\n}","document.addEventListener('DOMContentLoaded', () => {\n const videoWidgets = document.querySelectorAll('.js-video-widget');\n\n videoWidgets.forEach((videoWidget) => {\n const playBtn = videoWidget.querySelector('.btn-play');\n const iframe = videoWidget.querySelector('iframe');\n const placeholder = videoWidget.querySelector('.video-widget__placeholder');\n\n if (playBtn) {\n playBtn.addEventListener('click', () => {\n var iframeSrc = iframe.src;\n\n if (iframeSrc.includes('?')) {\n iframeSrc += '&autoplay=1';\n } else {\n iframeSrc += '?autoplay=1';\n }\n\n iframe.src = iframeSrc;\n placeholder.style.display = 'none';\n playBtn.style.display = 'none';\n });\n }\n });\n});\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","import decodeComponent from 'decode-uri-component';\nimport splitOnFirst from 'split-on-first';\nimport {includeKeys} from 'filter-obj';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSeparator, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: value.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tvalue[key2] = parseValue(value2, options);\n\t\t\t}\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n","import queryString from 'query-string';\n\nwindow.addEventListener('DOMContentLoaded', () => {\n // Modal Video\n const modalVideo = document.getElementById('modalVideo');\n const modalVideoIframe = document.getElementById('modalVideoIframe');\n\n // Get video url from button on modal show\n if (modalVideo) {\n modalVideo.addEventListener('show.bs.modal', (e) => {\n const videoBtn = e.relatedTarget;\n const videoUrl = queryString.stringifyUrl({\n url: videoBtn.getAttribute('href'),\n query: { autoplay: 1, ref: 0 },\n });\n\n // Update the modal iframe.\n modalVideoIframe.setAttribute('src', videoUrl);\n // additional parm if needed\n // \"?autoplay=1&showinfo=0&modestbranding=1&rel=0&mute=1\"\n });\n\n // Before hide modal stop playing video\n modalVideo.addEventListener('hide.bs.modal', () =>\n modalVideoIframe.setAttribute('src', 'about:blank')\n );\n }\n});\n","const manifestos = document.querySelectorAll('.js-manifesto');\nconst urlParams = new URLSearchParams(window.location.search);\n\nmanifestos.forEach((manifesto, index) => {\n // Manifesto index is +1 to make it start with 1 instead of 0\n const manifestoIndex = index + 1;\n\n intializeManifesto(manifesto, manifestoIndex);\n});\n\nfunction intializeManifesto(manifesto, manifestoIndex) {\n let activeTabIndex = parseInt(urlParams.get(`manifesto-${manifestoIndex}-tab`));\n if (activeTabIndex) {\n // Active tab index is -1 because the index is upped by one to make it start with 1 instead of 0\n activeTabIndex - 1;\n }\n\n if (activeTabIndex >= 0 && (typeof requestWasPost === 'undefined' || !requestWasPost)) {\n manifesto.scrollIntoView();\n }\n\n const menuLinks = manifesto.querySelectorAll('.js-manifesto-menu-link');\n\n menuLinks.forEach((menuLink, index) => {\n const itemId = menuLink.href.split('#')[1];\n\n // Tab index is +1 to make it start with 1 instead of 0\n var tabIndex = index + 1;\n\n if ((tabIndex == 1 && !activeTabIndex) || tabIndex == activeTabIndex) {\n menuLink.classList.add('manifesto__menu--active');\n manifesto.querySelector(`#${itemId}`).classList.add('manifesto__content--visual');\n manifesto.querySelector(`#${itemId}-img`).classList.add('manifesto-images--visual');\n }\n\n menuLink.addEventListener('click', (e) => {\n e.preventDefault();\n\n var url = new URL(window.location);\n\n url.searchParams.set(`manifesto-${manifestoIndex}-tab`, tabIndex);\n window.history.replaceState({}, '', url);\n\n menuLinks.forEach((menuLink) => {\n menuLink.classList.remove('manifesto__menu--active');\n });\n\n menuLink.classList.add('manifesto__menu--active');\n\n manifesto\n .querySelector('.manifesto__content--visual')\n .classList.remove('manifesto__content--visual');\n manifesto.querySelector(`#${itemId}`).classList.add('manifesto__content--visual');\n\n manifesto\n .querySelector('.manifesto-images--visual')\n .classList.remove('manifesto-images--visual');\n manifesto.querySelector(`#${itemId}-img`).classList.add('manifesto-images--visual');\n });\n\n const blocks = manifesto\n .querySelector(`#${itemId}`)\n .querySelectorAll('.js-manifesto-content-block');\n const photos = manifesto\n .querySelector(`#${itemId}-img`)\n .querySelectorAll('.manifesto-images__image');\n\n blocks.forEach((block, index) => {\n const text = block.querySelector('.manifesto-cards__card-text');\n const title = block.querySelector('.manifesto-cards__card-title');\n if (index == 0) {\n text.classList.add('manifesto-cards__card-text--active');\n }\n\n block.addEventListener('click', () => {\n blocks.forEach((block) => {\n block\n .querySelector('.manifesto-cards__card-text')\n .classList.remove('manifesto-cards__card-text--active');\n block\n .querySelector('.manifesto-cards__card-title')\n .classList.remove('manifesto-cards__card-title--active');\n });\n photos.forEach((photo) => {\n photo.classList.remove('manifesto-images__image--active');\n });\n\n text.classList.add('manifesto-cards__card-text--active');\n title.classList.add('manifesto-cards__card-title--active');\n manifesto\n .querySelector(`#${block.id}-img`)\n .classList.add('manifesto-images__image--active');\n });\n });\n });\n}\n\nexport { intializeManifesto };\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const children = [...element.children];\n if (element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOf(el, parent) {\n const isChild = parent.contains(el);\n if (!isChild && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n return children.includes(el);\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","/**\n * Swiper 11.1.15\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: November 18, 2024\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force, beforeInit) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop,\n initialSlide\n } = swiper.params;\n if (beforeInit && !isLoop && initialSlide > 0) {\n return;\n }\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update(false, true);\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n let allowTouchMoveTimeout;\n function allowTouchMove() {\n swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n }\n function preventTouchMove() {\n clearTimeout(allowTouchMoveTimeout);\n swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n allowTouchMoveTimeout = setTimeout(() => {\n if (swiper.destroyed) return;\n allowTouchMove();\n });\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n return;\n }\n const zoom = swiper.zoom;\n if (!gesture.imageEl) {\n return;\n }\n if (!image.isTouched || !gesture.slideEl) {\n return;\n }\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n preventTouchMove();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];\n controlElements.forEach(controlElement => {\n if (!swiper.controller.control) swiper.controller.control = [];\n if (controlElement && controlElement.swiper) {\n swiper.controller.control.push(controlElement.swiper);\n } else if (controlElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onControllerSwiper = e => {\n swiper.controller.control.push(e.detail[0]);\n swiper.update();\n controlElement.removeEventListener(eventName, onControllerSwiper);\n };\n controlElement.addEventListener(eventName, onControllerSwiper);\n }\n });\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n containerRole: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n scrollOnFocus: true\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n if (swiper.params.loop) {\n swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);\n } else {\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n }\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n if (params.containerRole) {\n addElRole(containerEl, params.containerRole);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener(eventName, onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slides => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const r = getRotateFix(swiper);\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n const rotateFix = getRotateFix(swiper);\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n const r = getRotateFix(swiper);\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n const rotateFix = getRotateFix(swiper);\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","import { Swiper } from 'swiper/bundle';\n\nconst swipers = document.querySelectorAll('.js-events-swiper');\n\nswipers.forEach((swiperInstance) => {\n intializeSwiper(swiperInstance);\n});\n\nfunction intializeSwiper(swiperInstance) {\n const slides = swiperInstance.querySelectorAll('.js-event-slide');\n\n const swiper = new Swiper(swiperInstance, {\n slidesPerView: '1',\n watchOverflow: true,\n watchSlidesProgress: true,\n spaceBetween: 24,\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n navigation: {\n nextEl: '.swiper-button-next > button',\n prevEl: '.swiper-button-prev > button',\n },\n breakpoints: {\n 992: {\n slidesPerView: '2',\n },\n },\n a11y: {\n firstSlideMessage: 'Dit is de eerste slide',\n nextSlideMessage: 'Naar de volgende slide',\n prevSlideMessage: 'Naar de vorige slide',\n lastSlideMessage: 'Dit is de laatste slide',\n paginationBulletMessage: 'Ga naar slide {{index}}',\n },\n keyboard: {\n enabled: true,\n onlyInViewport: true,\n },\n });\n\n slides.forEach((slide, index) => {\n slide.addEventListener('focus', function () {\n swiper.slideTo(index);\n });\n });\n}\n\nexport { intializeSwiper };\n","// Add cookie information to google tag manager\nfunction pushCookieTypesToDataLayer(types) {\n window.dataLayer.push({\n event: 'enableCookie',\n cookieTypes: types,\n });\n\n types.split(',').forEach((type) => {\n window.dataLayer.push({\n event: 'enableCookie',\n cookieType: type,\n });\n });\n}\n\nexport { pushCookieTypesToDataLayer };\n","declare global {\r\n interface Window {\r\n dataLayer?: any[];\r\n }\r\n}\r\n\r\nfunction handleGtmEvent(gtmEventName: string) {\r\n if (typeof window === 'undefined') return;\r\n\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n window.dataLayer.push({\r\n event: gtmEventName,\r\n });\r\n}\r\n\r\nexport { handleGtmEvent };\r\n"],"names":["getScrollYPosition","window","pageYOffset","document","documentElement","scrollTop","scroll","target","options","_document$querySelect","timeStart","timeElapsed","start","opt","duration","offset","callback","easing","t","b","c","d","distance","querySelector","getBoundingClientRect","top","loop","time","scrollTo","requestAnimationFrame","addEventListener","body","scrollUp","scrollDown","header","getElementById","navbar","headerTransparent","setAttribute","classList","add","scrollTopId","lastScrollTop","AOS","init","once","sidemenu","productInquiry","e","toggle","remove","contains","coverSliderId","coverSliderNav","coverSlider","Swiper","effect","speed","autoplay","delay","slidesPerView","on","Array","from","slides","forEach","slide","video","getElementsByTagName","pause","querySelectorAll","navElement","dataset","slideIndex","activeIndex","realIndex","play","el","key","preventDefault","parentNode","slideTo","ell","els","sliderPeopleID","sliderStandardID","simulateTouch","navigation","disabledClass","hiddenClass","lockClass","nextEl","prevEl","pagination","modifierClass","progressbarFillClass","type","breakpoints","spaceBetween","sliderConsumablesID","slice","call","testimonialTab","tabPaneID","getAttribute","tabVideo","length","relatedTarget","sliderTestimonialSelector","pagerCurent","this","pagerTotal","innerHTML","slideChange","sliderItems","item","style","setProperty","currentSlide","sliderFeatureID","sliderFeatureNav","sliderFeature","sliderSolutionID","sliderSolutionOptions","sliderSolution","sliderHistoryID","watchSlidesVisibility","menuToggler","menuPrimary","menuSubToggler","forgotPassword","onclick","linkResetpassword","bootstrap","Tab","show","modalAccount","linkSignin","searchToggler","searchInputId","searchPane","searchTogglerIcon","searchBackdropListener","removeEventListener","setTimeout","element","test","tagName","tabIndex","focus","event","stopPropagation","hash","icon","docsFilterCountNum","filterTogglerId","filterCloseId","filterBackdrop","docsFilterApply","click","docsFilterList","matches","docsFilterCountUpdate","docsFilterResetBtns","btn","docsFilterReset","docsFilterCounts","count","textContent","concat","checkbox","checked","sideoverPeopleId","triggerEl","sideoverBackdrop","sideoverClose","active","closest","featureTabsLink","tab","featureTabs","st","showOffset","location","substring","$","collapse","hasAttribute","anchorOffset","parseInt","cookieBar","changePreferencesToggles","togglePreferences","videoWidget","playBtn","iframe","placeholder","iframeSrc","src","includes","display","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","value","token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","left","right","decode","input","tokens","match","i","splitOnFirst","string","separator","TypeError","separatorIndex","indexOf","includeKeys","object","predicate","result","isArray","descriptor","getOwnPropertyDescriptor","Reflect","ownKeys","isNullOrUndefined","strictUriEncode","encodeURIComponent","replaceAll","x","charCodeAt","toString","toUpperCase","encodeFragmentIdentifier","validateArrayFormatSeparator","encode","strict","encodedURI","replaceMap","exec","entries","keys","replace","customDecodeURIComponent","keysSorter","sort","a","Number","map","removeHash","hashStart","parseValue","parseNumbers","isNaN","trim","parseBooleans","toLowerCase","extract","queryStart","parse","query","arrayFormat","arrayFormatSeparator","formatter","accumulator","isEncodedArray","newValue","arrayValue","flat","parserForArrayFormat","returnValue","create","parameter","parameter_","key2","value2","reduce","Boolean","stringify","shouldFilter","skipNull","skipEmptyString","index","keyValueSeparator","encoderForArrayFormat","objectCopy","filter","parseUrl","url","url_","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryString","getHash","urlObjectForFragmentEncode","URL","pick","exclude","modalVideo","modalVideoIframe","videoBtn","videoUrl","ref","manifestos","urlParams","URLSearchParams","search","intializeManifesto","manifesto","manifestoIndex","activeTabIndex","requestWasPost","scrollIntoView","menuLinks","menuLink","itemId","href","searchParams","set","history","replaceState","blocks","photos","block","text","title","photo","id","isObject","constructor","extend","ssrDocument","activeElement","blur","nodeName","createEvent","initEvent","createElement","children","childNodes","createElementNS","importNode","host","hostname","origin","pathname","protocol","getDocument","doc","ssrWindow","navigator","userAgent","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","clearTimeout","matchMedia","cancelAnimationFrame","getWindow","win","classesToTokens","classes","nextTick","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","parseFloat","m42","to","arguments","noExtend","nextSource","node","HTMLElement","nodeType","keysArray","nextIndex","len","nextKey","desc","__swiper__","setCSSProperty","varName","varValue","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","startTime","params","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","selector","HTMLSlotElement","push","assignedElements","showWarning","console","warn","err","tag","elementOffset","box","clientTop","clientLeft","scrollY","scrollLeft","scrollX","elementStyle","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","fireCallBack","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","support","deviceCached","getSupport","smoothScroll","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","ipad","ipod","iphone","windows","macos","os","calcDevice","eventsEmitter","events","handler","priority","self","eventsListeners","destroyed","method","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","condition","className","toggleSlideClasses","processLazyPreloader","imageEl","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerViewDynamic","ceil","grid","rows","activeColumn","preloadColumns","_","column","slideIndexLastInView","rewind","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","direction","step","internal","initial","animating","preventInteractionOnTransition","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","transitionEnd","isH","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","behavior","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byController","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","currentTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","onTouchStart","originalEvent","pointerId","targetTouches","touchId","identifier","pageX","touches","pointerType","targetEl","touchEventsTarget","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","isSafari","isWebView","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","onResize","setBreakpoint","isVirtualLoop","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","virtualTranslate","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","y","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","prefix","resultClasses","prepareClasses","removeClasses","extendedDefaults","swipers","newParams","needPerspectiveFix","String","major","minor","num","isSafariBrowser","calcBrowser","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","deleteProps","extendDefaults","newDefaults","installModule","use","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","force","beforeInit","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","disabled","subEl","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","navigationDisabledClass","targetIsButton","find","clickable","isHidden","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","currentClass","totalClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","moveDirection","total","firstIndex","midIndex","classesToRemove","s","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","containerRole","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","reset","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","intializeSwiper","swiperInstance","pushCookieTypesToDataLayer","types","dataLayer","cookieTypes","cookieType","handleGtmEvent","gtmEventName"],"sourceRoot":""}