{"version":3,"file":"main.js","mappings":";4rBAAO,IAAMA,EAAS,WACpB,SAAAA,iGAAcC,CAAA,KAAAD,GACZE,KAAKC,YAAc,EACnBD,KAAKE,aAAeC,OAAOC,WAC3BJ,KAAKK,sBAAwBL,KAAKK,sBAAsBC,KAAKN,MAC7DA,KAAKO,qBAAuBP,KAAKO,qBAAqBD,KAAKN,MAC3DA,KAAKQ,OACP,SA0KC,SA1KAV,IAAA,EAAAW,IAAA,QAAAC,MAED,WACEV,KAAKW,aACLC,SAASC,iBAAiB,QAASb,KAAKK,uBACxCF,OAAOU,iBAAiB,SAAUb,KAAKO,qBACzC,GAAC,CAAAE,IAAA,wBAAAC,MAED,SAAsBI,GACpB,IAAMC,EAASD,EAAIC,OACnB,GAAKA,EAAOC,QAAQ,6BAApB,CAIAF,EAAIG,iBACJ,IAAMC,EAASH,EAAOC,QAAQ,6BAE9B,IACEE,EAAOC,QAAQC,SACdjB,OAAOkB,WAAWH,EAAOC,QAAQC,SAASE,QAF7C,CAOA,IAAMC,EAAUR,EAAOC,QAAQ,8BAC3BO,EAAQC,UAAUC,SAAS,aAC7BzB,KAAK0B,eAAeH,GAGtBvB,KAAK2B,cAAcJ,EAPnB,CAVA,CAkBF,GAAC,CAAAd,IAAA,uBAAAC,MAED,WACMV,KAAKE,eAAiBC,OAAOC,aAGjCJ,KAAKE,aAAeC,OAAOC,WAC3BJ,KAAK4B,yBACP,GAAC,CAAAnB,IAAA,oBAAAC,MAED,SAAkBQ,GAAQ,IAAAW,EAAA,KACPX,EAAOY,iBAAiB,8BAChCC,SAAQ,SAACR,GACMA,EAAQP,QAAQ,+BAChBE,GACpBW,EAAKH,eAAeH,EAExB,GACF,GAAC,CAAAd,IAAA,yBAAAC,MAED,WAAuC,IAAhBa,EAAOS,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAC/B,GAAIT,EAAS,CACX,IAAMY,EAAUZ,EAAQa,cAAc,8BAMtC,OALAD,EAAQE,MAAMC,WAAa,OAC3BH,EAAQE,MAAME,UAAY,GAAHC,OAAML,EAAQM,aAAY,WACjDC,YAAW,WACTP,EAAQE,MAAMC,WAAa,IAC7B,GAEF,CAEsB1B,SAASkB,iBAC7B,8CAGYC,SAAQ,SAACY,GACrB,IAAMzB,EAASyB,EAAa3B,QAAQ,6BAC9BmB,EAAUQ,aAAY,EAAZA,EAAcP,cAAc,+BAE1ClB,EAAOC,QAAQC,SACdjB,OAAOkB,WAAWH,EAAOC,QAAQC,SAASE,QAKzCa,IACFA,EAAQE,MAAME,UAAY,MAJ1BJ,EAAQE,MAAME,UAAY,MAM9B,IAEqB3B,SAASkB,iBAC5B,wCAEWC,SAAQ,SAACa,GACpB,IAAMT,EAAUS,EAAYR,cAAc,8BACpClB,EAAS0B,EAAY5B,QAAQ,8BAEjCE,EAAOC,QAAQC,SACdjB,OAAOkB,WAAWH,EAAOC,QAAQC,SAASE,SAK7Ca,EAAQE,MAAMC,WAAa,OAC3BH,EAAQE,MAAME,UAAY,GAAHC,OAAML,EAAQM,aAAY,MACjDC,YAAW,WACTP,EAAQE,MAAMC,WAAa,IAC7B,KAPEH,EAAQE,MAAME,UAAY,MAQ9B,GACF,GAAC,CAAA9B,IAAA,aAAAC,MAED,WAA8C,IAAAmC,EAAA,KAAnC3B,EAAMc,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAAMM,EAAUN,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,IAE9Bd,EACaA,EAAOY,iBACpB,wCAGalB,SAASkB,iBACtB,yCAGSC,SAAQ,SAACa,GACAA,EAAYR,cAC9B,8BAKFS,EAAKlB,cAAciB,EAAaN,EAClC,IACAtC,KAAK4B,wBACP,GAAC,CAAAnB,IAAA,gBAAAC,MAED,SAAca,GAA4B,IAAnBe,IAAUN,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACzBc,EAAgBvB,EAAQP,QAAQ,6BAChC+B,EAAiBxB,EAAQa,cAAc,8BAC7CpC,KAAKC,aAAe8C,EAAeN,aAE/BK,EAAcE,aAAa,gBAC7BhD,KAAKiD,kBAAkBH,GAGzBvB,EAAQC,UAAU0B,IAAI,aAClBZ,EACFS,EAAeV,MAAME,UAAY,GAAHC,OAAMxC,KAAKC,YAAW,OAEpD8C,EAAeV,MAAMC,WAAa,OAClCS,EAAeV,MAAME,UAAY,GAAHC,OAAMxC,KAAKC,YAAW,MACpDyC,YAAW,WACTK,EAAeV,MAAMC,WAAa,IACpC,KAGEQ,EAAc9B,QAAQ,8BACxBhB,KAAK2B,cACHmB,EAAc9B,QAAQ,8BACtBsB,GAKJtC,KAAKC,YAAc,CACrB,GAAC,CAAAQ,IAAA,iBAAAC,MAED,SAAea,GAA4B,IAAnBe,IAAUN,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAC1Be,EAAiBxB,EAAQa,cAAc,8BACxCW,IAGLxB,EAAQC,UAAU2B,OAAO,aACrBb,EACFS,EAAeV,MAAME,UAAY,KAEjCQ,EAAeV,MAAMC,WAAa,OAClCS,EAAeV,MAAME,UAAY,IACjCG,YAAW,WACTK,EAAeV,MAAMC,WAAa,IACpC,KAEJ,2EAACxC,CAAA,CAjLmB,gxBCAf,ICEHsD,EDFSC,EAAI,WACf,SAAAA,iGAActD,CAAA,KAAAsD,GACZrD,KAAKE,aAAeC,OAAOC,WAC3BJ,KAAKK,sBAAwBL,KAAKK,sBAAsBC,KAAKN,MAC7DA,KAAKQ,OACP,SAqNC,SArNA6C,IAAA,EAAA5C,IAAA,QAAAC,MAED,WACEV,KAAKsD,eACL1C,SAASC,iBAAiB,QAASb,KAAKK,sBAC1C,GAAC,CAAAI,IAAA,kBAAAC,MAED,WAAkB,IAAAmB,EAAA,KAChB,OAAO,IAAI0B,gBAAe,SAACC,GAAY,IACZC,EADYC,65BAAAC,CACnBH,GAAO,IAAzB,IAAAE,EAAAE,MAAAH,EAAAC,EAAAG,KAAAC,MAAcL,EAAA/C,MACFK,OAAOS,UAAUC,SAAS,cAClCI,EAAKkC,kBAER,OAAAC,GAAAN,EAAAO,EAAAD,EAAA,SAAAN,EAAAQ,GAAA,CACH,GACF,GAAC,CAAAzD,IAAA,wBAAAC,MAED,SAAsBI,GACpB,IAAMC,EAASD,EAAIC,OACnB,GAAKA,EAAOC,QAAQ,yBAApB,CAGAF,EAAIG,iBACJ,IAAMkD,EAAUpD,EAAOC,QAAQ,yBAC/BhB,KAAKoE,QAAQD,EAHb,CAIF,GAAC,CAAA1D,IAAA,eAAAC,MAED,WAAe,IAAAmC,EAAA,KACPO,EAAOxC,SAASkB,iBAAiB,wBACjCuC,EAAczD,SAASkB,iBAAiB,kCAC9CsB,EAAKrB,SAAQ,SAACuC,GACZzB,EAAK0B,SAASD,EAChB,IACAD,EAAYtC,SAAQ,SAACuC,GACnBA,EAAI9C,UAAU2B,OAAO,WACvB,GACF,GAAC,CAAA1C,IAAA,0BAAAC,MAED,SAAwB8D,EAAoBC,GAC1CA,EAAY1C,SAAQ,SAACuC,GACnBA,EAAI9C,UAAU2B,OAAO,YACvB,IAEAqB,EAAmBzC,SAAQ,SAACR,EAASmD,GACnCnD,EAAQC,UAAU2B,OAAO,aACzB5B,EAAQoD,aAAa,aAAcD,EACrC,GACF,GAAC,CAAAjE,IAAA,oBAAAC,MAED,SAAkB4D,EAAKM,EAAYH,EAAaI,EAAmBL,EAAoBM,GACrF,IAAMC,EAAc/E,KAAKgF,mBAAmBR,GACtCS,EAA6B,QAAfL,EAAuB5E,KAAKkF,iBAAiBT,GAAeA,EAAYM,GAAaI,aACzGnF,KAAKoF,wBAAwBZ,EAAoBC,GACjDH,EAAI9C,UAAU0B,IAAI,iBAClBsB,EAAmBO,GAAavD,UAAU0B,IAAI,aAC9CuB,EAAYM,GAAavD,UAAU0B,IAAI,aACpB,UAAf0B,IACFC,EAAkBxC,MAAMgD,OAAS,GAAH7C,OAAMyC,EAAW,OAEjDvC,YAAW,WACLoC,GACFR,EAAI9C,UAAU2B,OAAO,gBAEzB,GAAG2B,EACL,GAAC,CAAArE,IAAA,qBAAAC,MAED,SAAmB8D,GACjB,IAAIO,EAAc,EACdO,GAAO,EAOX,OANAd,EAAmBzC,SAAQ,SAACoC,EAASO,GAC/BP,EAAQ3C,UAAUC,SAAS,cAAgB6D,IAC7CP,EAAcL,EACdY,GAAO,EAEX,IACOP,CACT,GAAC,CAAAtE,IAAA,mBAAAC,MAED,SAAiB+D,GACf,IAAIY,EAAS,GAKb,OAJAZ,EAAY1C,SAAQ,SAACR,GACnB8D,EAAOE,KAAKhE,EAAQ4D,aACtB,IACAE,EAAOG,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAIC,CAAC,IACpBL,EAAOA,EAAOpD,OAAS,EAChC,GAAC,CAAAxB,IAAA,mBAAAC,MAED,SAAiBiF,EAAUzE,GACzB,IAAM0E,EAAQ,GAQd,OAPAD,EAAS5D,SAAQ,SAACR,GACMA,EAAQP,QAAQ,0BAChBE,GACpB0E,EAAML,KAAKhE,EAEf,IAEOqE,CACT,GAAC,CAAAnF,IAAA,oBAAAC,MAED,SAAkBiF,EAAUzE,GAC1B,IAAI2E,EAQJ,OAPAF,EAAS5D,SAAQ,SAACR,GACMA,EAAQP,QAAQ,0BAChBE,IACpB2E,EAAetE,EAEnB,IAEOsE,CACT,GAAC,CAAApF,IAAA,mBAAAC,MAED,WAAmB,IAAAoF,EAAA,KACMlF,SAASkB,iBAAiB,mCAClCC,SAAQ,SAACR,GACtB,IAAIe,GAAa,EACFf,EAAQP,QAAQ,wBACpBA,QAAQ,2BACjBsB,GAAa,GAEfwD,EAAKC,qBAAqBxE,EAASe,EACrC,GACF,GAAC,CAAA7B,IAAA,uBAAAC,MAED,SAAqBa,EAASe,GAC5B,IAAMQ,EAAgBvB,EAAQP,QAAQ,wBAChC4D,EAAa9B,EAAc3B,QAAQkE,OACnCtC,EAAiB/C,KAAKgG,kBAAkBlD,EAAchB,iBAAiB,yBAA0BgB,GACjG2B,EAAczE,KAAKiG,iBAAiBnD,EAAchB,iBAAiB,yBAA0BgB,GAE9FR,GACHQ,EAActB,UAAU0B,IAAI,iBAI5BH,EAAeV,MAAMgD,OADJ,QAAfT,EAC4B,GAAHpC,OAAMxC,KAAKkF,iBAAiBT,GAAY,MAC3C,UAAfG,EACqB,KAEA,GAAHpC,OAAMxC,KAAKgG,kBAAkBlD,EAAchB,iBAAiB,mCAAoCgB,GAAeqC,aAAY,MAGxJzC,YAAW,kBAAMI,EAActB,UAAU2B,OAAO,gBAAgB,GAClE,GAAC,CAAA1C,IAAA,WAAAC,MAED,SAAS4D,GAAK,IAAA4B,EAAA,KACNtB,EAAaN,EAAInD,QAAQkE,OACzBP,EAAYR,EAAInD,QAAQgF,MAAQ7B,EAAInD,QAAQgF,MAAQ,EACpDtB,EAAoBP,EAAIlC,cAAc,yBACtCoC,EAAqBxE,KAAKiG,iBAAiB3B,EAAIxC,iBAAiB,yBAA0BwC,GAC1FG,EAAczE,KAAKiG,iBAAiB3B,EAAIxC,iBAAiB,yBAA0BwC,GACzFtE,KAAKoG,kBAAkB9B,EAAKM,EAAYH,EAAaI,EAAmBL,EAAoBM,GACzE,UAAfF,GACFH,EAAY1C,SAAQ,SAACR,GACnB2E,EAAKG,kBAAkBC,QAAQ/E,EACjC,IAEFmB,YAAW,WACT4B,EAAI9C,UAAU2B,OAAO,uBACvB,GACF,GAAC,CAAA1C,IAAA,SAAAC,MAED,WACEV,KAAKsD,cACP,GAAC,CAAA7C,IAAA,UAAAC,MAED,SAAQyD,GACN,IAAMoC,EAAepC,EAAQhD,QAAQuD,MAC/B5B,EAAgBqB,EAAQnD,QAAQ,wBAEtC,IAAImD,EAAQ3C,UAAUC,SAAS,eAAgBqB,EAActB,UAAUC,SAAS,aAAhF,CAIA,IAAMqD,EAAYhC,EAAc3B,QAAQgF,MAAQrD,EAAc3B,QAAQgF,MAAQ,EACxEvB,EAAa9B,EAAc3B,QAAQkE,OACnCtC,EAAiBD,EAAcV,cAAc,yBAC7CqC,EAAczE,KAAKiG,iBAAiBnD,EAAchB,iBAAiB,yBAA0BgB,GAE7F0D,EAAgBxG,KAAKgG,kBAAkBlD,EAAchB,iBAAiB,mCAAoCgB,GAC1G2D,EAAgBzG,KAAKgG,kBAAkBlD,EAAchB,iBAAiB,mCAAoCgB,GAC1G4D,EAAgB3D,EAAeoC,aAC/BwB,EAAYlC,EAAY8B,GAAcpB,aAE5CrC,EAActB,UAAU0B,IAAI,aAC5BtC,SAAS6F,cAAcG,OAEnBJ,GACFA,EAAchF,UAAU2B,OAAO,aAG7BsD,GACFA,EAAcjF,UAAU2B,OAAO,aAG7BuD,EAAgBC,EAClBjE,YAAW,WACU,QAAfkC,GAAuC,UAAfA,IAC1B7B,EAAeV,MAAMgD,OAASsB,EAAY,MAE5CxC,EAAQ3C,UAAU0B,IAAI,aACtBuB,EAAY8B,GAAc/E,UAAU0B,IAAI,aACxCJ,EAActB,UAAU2B,OAAO,YACjC,GAAG2B,IAEgB,QAAfF,GAAuC,UAAfA,IAC1B7B,EAAeV,MAAMgD,OAASsB,EAAY,MAE5CjE,YAAW,WACTyB,EAAQ3C,UAAU0B,IAAI,aACtBuB,EAAY8B,GAAc/E,UAAU0B,IAAI,aACxCJ,EAActB,UAAU2B,OAAO,YACjC,GAAG2B,GAxCL,CA0CF,2EAACzB,CAAA,CA1Nc,GEAJwD,EAAa,WACxB,MAAO,CACL,iBACA,mBACA,iBACA,OACA,SACA,QACAC,SAASC,UAAUC,WAEjBD,UAAUE,UAAUH,SAAS,QAAU,eAAgBlG,QAC7D,qqBCTO,IAAMsG,EAAU,WACrB,SAAAA,iGAAcnH,CAAA,KAAAmH,GACZlH,KAAKmH,YAAcN,EACnB7G,KAAKoH,WAAa,cAClBpH,KAAKqH,WAAa,KAClBrH,KAAKsH,oBAAsB1G,SAASkB,iBAAiB,mBACvD,SAoCC,SApCAoF,KAAA,EAAAzG,IAAA,qBAAAC,MAED,WACE,OAAOP,OAAOC,WAAaQ,SAAS2G,gBAAgBC,WACtD,GAAC,CAAA/G,IAAA,oBAAAC,MAED,WACE,OACE+G,KAAKC,aACJ9G,SAAS2G,iBAAmB3G,SAAS2G,gBAAgBI,WACrD/G,SAASgH,MAAQhH,SAASgH,KAAKC,SAEpC,GAAC,CAAApH,IAAA,mBAAAC,MAED,WAAmB,IAAAmB,EAAA,KACjB7B,KAAKqH,WAAazG,SAASgH,KAAKzG,QAAQ2G,OAASlH,SAASgH,KAAKzG,QAAQ2G,OAASlH,SAASgH,KAAKzG,QAAQ2G,OAAS9H,KAAK+H,oBAChH/H,KAAKgI,uBACPpH,SAASgH,KAAKvF,MAAM4F,aAAe,GAAHzF,OAAMxC,KAAKgI,qBAAoB,MAC/DhI,KAAKsH,oBAAoBvF,SAAQ,SAACmG,GAChCA,EAAM7F,MAAM4F,aAAe,GAAHzF,OAAMX,EAAKmG,qBAAoB,KACzD,KAEFpH,SAASgH,KAAKvF,MAAM8F,IAAM,IAAH3F,OAAOxC,KAAKqH,WAAU,MAC7CzG,SAASgH,KAAKpG,UAAU0B,IAAIlD,KAAKoH,WACnC,GAAC,CAAA3G,IAAA,kBAAAC,MAED,WACEE,SAASgH,KAAKpG,UAAU2B,OAAOnD,KAAKoH,YACpCjH,OAAOiI,SAAS,GAAIxH,SAASgH,KAAKzG,QAAQ2G,QAC1ClH,SAASgH,KAAKvF,MAAM4F,aAAe,KACnCrH,SAASgH,KAAKvF,MAAM8F,IAAM,KAC1BnI,KAAKsH,oBAAoBvF,SAAQ,SAACmG,GAChCA,EAAM7F,MAAM4F,aAAe,IAC7B,IACArH,SAASgH,KAAKS,gBAAgB,eAC9BrI,KAAKqH,WAAa,IACpB,0EAACH,CAAA,CA1CoB,sqBA6CvB/G,OAAOmI,WAAa,IAAIpB,EC/CxB,IAAMqB,EAAY,CAChB,UACA,aACA,gEACA,4CACA,8CACA,4CACA,SACA,SACA,QACA,oBACA,mCAGWC,EAAS,WACpB,SAAAA,iGAAczI,CAAA,KAAAyI,GACZxI,KAAKyI,gBAAkB,KACvBzI,KAAK0I,mBAAqB,KAC1B1I,KAAK2I,YAAc,KACnB3I,KAAK4I,WAAaL,EAElBvI,KAAK6I,wBAA0B7I,KAAK6I,wBAAwBvI,KAAKN,KACnE,SA0DC,SA1DAwI,IAAA,EAAA/H,IAAA,0BAAAC,MAED,SAAwBI,GACtB,IAAM2F,EAAgB7F,SAAS6F,cAC/B,GAAgB,QAAZ3F,EAAIL,IAAe,CACrB,IAAKT,KAAK0I,mBAAmBzG,OAG3B,OAFAnB,EAAIG,sBACJwF,EAAcG,OAGhB,GAAuC,IAAnC5G,KAAK0I,mBAAmBzG,OAG1B,OAFAnB,EAAIG,sBACJjB,KAAK0I,mBAAmB,GAAGI,QAG7B,GAAI9I,KAAK0I,mBAAmBzG,OAAS,IAAMwE,EAAczF,QAAQhB,KAAKyI,iBAGpE,OAFA3H,EAAIG,sBACJjB,KAAK0I,mBAAmB,GAAGI,OAG/B,CACgB,QAAZhI,EAAIL,KAAkBK,EAAIiI,UAAYtC,IAAkBzG,KAAK0I,mBAAmB1I,KAAK0I,mBAAmBzG,OAAS,KACnHnB,EAAIG,iBACJjB,KAAK0I,mBAAmB,GAAGI,SAEb,QAAZhI,EAAIL,KAAiBK,EAAIiI,UAAYtC,IAAkBzG,KAAK0I,mBAAmB,KACjF5H,EAAIG,iBACJjB,KAAK0I,mBAAmB1I,KAAK0I,mBAAmBzG,OAAS,GAAG6G,QAEhE,GAAC,CAAArI,IAAA,OAAAC,MAED,SAAKsI,GAAmC,IAAnBC,IAAUjH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAC7BhC,KAAKkJ,SACLlJ,KAAKyI,gBAAkBO,EACvB,IAAMG,EAAgBvI,SAASwB,cAAcpC,KAAKyI,iBAClD,GAAKU,EAAL,CAGAnJ,KAAK0I,mBAAqBS,EAAcrH,iBAAiB9B,KAAK4I,YAC9D5I,KAAK2I,YAAc/H,SAAS6F,cAC5B,IAAM2C,EAAeD,EAAc/G,cAAc,iBAAmBpC,KAAK0I,mBAAmB,GACxF1I,KAAK2I,aACP3I,KAAK2I,YAAY/B,OAEfwC,GAAgBH,GAClBG,EAAaN,QAEflI,SAASC,iBAAiB,UAAWb,KAAK6I,wBAV1C,CAWF,GAAC,CAAApI,IAAA,SAAAC,MAED,WAA2B,IAApB2I,IAAWrH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACZhC,KAAK2I,aAAeU,GACtBrJ,KAAK2I,YAAYG,QAEnB9I,KAAKyI,gBAAkB,KACvBzI,KAAK0I,mBAAqB,KAC1B1I,KAAK2I,YAAc,KACnB/H,SAAS0I,oBAAoB,UAAWtJ,KAAK6I,wBAC/C,2EAACL,CAAA,CAlEmB,sqBAqEtBrI,OAAOoJ,UAAY,IAAIf,EChFhB,ICDHgB,EDCSC,EAAM,WACjB,SAAAA,IAA2B,IAAfC,EAAQ1H,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,+FAACjC,CAAA,KAAA0J,GACvBzJ,KAAK2J,YAAc,IAAIzC,EACvBlH,KAAK4J,WAAa,IAAIpB,EAEtBxI,KAAK6J,mBAAqBjJ,SAASkB,iBAAiB,qBACpD9B,KAAK8J,oBAAsB,GAC3B9J,KAAK+J,oBAAsB,KAC3B/J,KAAKgK,WAAa,KAClBhK,KAAKiK,kBAAmB,EACxBjK,KAAKkK,YAAc,UAEnBlK,KAAKmK,UAAYT,EACjB1J,KAAKoK,gBAAkBpK,KAAKmK,UAAUnK,KAAKkK,aAAajJ,eACxDjB,KAAKqK,UAAYrK,KAAKmK,UAAUnK,KAAKkK,aAAaI,SAClDtK,KAAKuK,WAAavK,KAAKmK,UAAUnK,KAAKkK,aAAaM,UACnDxK,KAAKyK,YAAczK,KAAKmK,UAAUnK,KAAKkK,aAAajB,WACpDjJ,KAAK0K,WAAa1K,KAAKmK,UAAUnK,KAAKkK,aAAaS,UACnD3K,KAAK4K,cAAgB5K,KAAKmK,UAAUnK,KAAKkK,aAAaW,aACtD7K,KAAK8K,gBAAkB9K,KAAKmK,UAAUnK,KAAKkK,aAAaa,eACxD/K,KAAKgL,cAAgBhL,KAAKmK,UAAUnK,KAAKkK,aAAae,aACtDjL,KAAKkL,eAAiBlL,KAAKmK,UAAUnK,KAAKkK,aAAaiB,cAEvDnL,KAAK6I,wBAA0B7I,KAAK6I,wBAAwBvI,KAAKN,MACjEA,KAAKK,sBAAwBL,KAAKK,sBAAsBC,KAAKN,MAC7DA,KAAKoL,mBAAqBpL,KAAKoL,mBAAmB9K,KAAKN,MAEvDA,KAAKQ,OACP,SAqNC,SArNAiJ,IAAA,EAAAhJ,IAAA,QAAAC,MAED,WACMV,KAAK6J,mBAAmB5H,QAC1BrB,SAASC,iBAAiB,QAASb,KAAKK,sBAE5C,GAAC,CAAAI,IAAA,eAAAC,MAED,WAA4C,IAA/B2K,EAAUrJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGhC,KAAKkK,YACxBlK,KAAKmK,UAAUkB,KAIpBrL,KAAKoK,gBACkD,kBAA9CpK,KAAKmK,UAAUkB,GAAYpK,eAC9BjB,KAAKmK,UAAUkB,GAAYpK,eAC3BjB,KAAKmK,UAAUnK,KAAKkK,aAAajJ,eACvCjB,KAAKqK,UAC4C,kBAAxCrK,KAAKmK,UAAUkB,GAAYf,SAC9BtK,KAAKmK,UAAUkB,GAAYf,SAC3BtK,KAAKmK,UAAUnK,KAAKkK,aAAaI,SACvCtK,KAAKuK,WAC6C,kBAAzCvK,KAAKmK,UAAUkB,GAAYb,UAC9BxK,KAAKmK,UAAUkB,GAAYb,UAC3BxK,KAAKmK,UAAUnK,KAAKkK,aAAaM,UACvCxK,KAAKyK,YAC8C,kBAA1CzK,KAAKmK,UAAUkB,GAAYpC,WAC9BjJ,KAAKmK,UAAUkB,GAAYpC,WAC3BjJ,KAAKmK,UAAUnK,KAAKkK,aAAajB,WACvCjJ,KAAK0K,WAC6C,kBAAzC1K,KAAKmK,UAAUkB,GAAYb,UAC9BxK,KAAKmK,UAAUkB,GAAYV,UAC3B3K,KAAKmK,UAAUnK,KAAKkK,aAAaS,UACvC3K,KAAK8K,gBACkD,kBAA9C9K,KAAKmK,UAAUkB,GAAYN,eAC9B/K,KAAKmK,UAAUkB,GAAYN,eAC3B/K,KAAKmK,UAAUnK,KAAKkK,aAAaa,eACvC/K,KAAK4K,cACgD,iBAA5C5K,KAAKmK,UAAUkB,GAAYR,aAC9B7K,KAAKmK,UAAUkB,GAAYR,aAC3B7K,KAAKmK,UAAUnK,KAAKkK,aAAaW,aACvC7K,KAAKgL,cAAgBhL,KAAKmK,UAAUkB,GAAYJ,cAAgBjL,KAAKmK,UAAUnK,KAAKkK,aAAae,aACjGjL,KAAKkL,eAAiBlL,KAAKmK,UAAUkB,GAAYF,eAAiBnL,KAAKmK,UAAUnK,KAAKkK,aAAaiB,cACrG,GAAC,CAAA1K,IAAA,wBAAAC,MAED,SAAsBI,GACpB,IAAMC,EAASD,EAAIC,OAEdA,EAAOC,QAAQ,uBAIpBF,EAAIG,iBAEJjB,KAAKgK,WAAajJ,EAAOC,QAAQ,qBAAqBG,QAAQmK,UAEzDtL,KAAKgK,YAIVhK,KAAKuL,OACP,GAAC,CAAA9K,IAAA,0BAAAC,MAED,SAAwBI,IACO,WAAZA,EAAIL,KAAgC,QAAZK,EAAIL,OAG3CK,EAAIG,iBACJjB,KAAKwL,MAAM5K,SAASwB,cAAc,oBAAoBjB,QAAQsK,OAElE,GAAC,CAAAhL,IAAA,qBAAAC,MAED,SAAmBI,GACjB,IAAMC,EAASD,EAAIC,OAEdA,EAAOC,QAAQ,wBAIhBD,EAAOC,QAAQ,6BACjBhB,KAAK0L,QAEL1L,KAAKwL,MAAMzK,EAAOC,QAAQ,gBAAgBG,QAAQsK,OAClDzL,KAAK8J,oBAAsB,IAE/B,GAAC,CAAArJ,IAAA,gBAAAC,MAED,SAAc+K,GACZA,EAAM5K,iBAAiB,QAASb,KAAKoL,oBACrCxK,SAASC,iBAAiB,UAAWb,KAAK6I,wBAC5C,GAAC,CAAApI,IAAA,mBAAAC,MAED,SAAiB+K,GACfA,EAAMnC,oBAAoB,QAAStJ,KAAKoL,oBACxCxK,SAAS0I,oBAAoB,UAAWtJ,KAAK6I,wBAC/C,GAAC,CAAApI,IAAA,mBAAAC,MAED,SAAiB+K,GACXzL,KAAKqK,YACPoB,EAAM3J,iBAAiB,gBAAgBC,SAAQ,SAAC4J,GAAE,OAAKA,EAAGC,OAAO,IACjEH,EAAM3J,iBAAiB,iBAAiBC,SAAQ,SAAC4J,GAC/CA,EAAGvJ,cAAc,UAAUyJ,cAAcC,YAAY,yDAA0D,IACjH,IAEJ,GAAC,CAAArL,IAAA,YAAAC,MAED,SAAU+K,GACRA,EAAM3J,iBAAiB,iBAAiBC,SAAQ,SAAC4J,GAC9BA,EAAG3K,QAAQ,qBAE1B2K,EAAGvJ,cAAc,UAAUyJ,cAAcC,YAAY,mDAAoD,IAE7G,GACF,GAAC,CAAArL,IAAA,OAAAC,MAED,WAAkC,IAAAmB,EAAA,KAA7BkK,EAAS/J,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGhC,KAAKgK,WACdyB,EAAQ7K,SAASwB,cAAc,gBAADI,OAAiBuJ,EAAS,OAEzDN,IAASA,EAAMjK,UAAUC,SAAS,eAIvCb,SAAS0I,oBAAoB,QAAStJ,KAAKK,uBAE3CL,KAAK+J,oBAAsBnJ,SAASwB,cAAc,oBAE9CpC,KAAK+J,sBACP/J,KAAKiK,kBAAmB,EACxBjK,KAAKwL,MAAMxL,KAAK+J,oBAAoB5I,QAAQsK,QAG9CzL,KAAKgM,aAAaD,GAClBN,EAAMjK,UAAU0B,IAAI,aAEhB6I,IAAc/L,KAAK8J,oBAAoB9J,KAAK8J,oBAAoB7H,OAAS,IAC3EjC,KAAK8J,oBAAoBvE,KAAKwG,GAG3B/L,KAAK+J,qBACR/J,KAAK2J,YAAYsC,mBAGfjM,KAAKgL,eACPhL,KAAKgL,gBAGHhL,KAAKuK,YACPvK,KAAK4J,WAAWsC,KAAK,mBAAoBlM,KAAKyK,aAG5CzK,KAAK8K,iBACPW,EAAMrD,SAAS,EAAG,GAGpB1F,YAAW,WACTb,EAAKsK,cAAcV,GACnB5J,EAAKuK,UAAUX,GACf7K,SAASC,iBAAiB,QAASgB,EAAKxB,sBAC1C,GAAGL,KAAK4K,eACV,GAAC,CAAAnK,IAAA,OAAAC,MAED,WACE,GAAKV,KAAK8J,oBAAoB7H,OAA9B,CAIA,IAAMoK,EAAcrM,KAAK8J,oBAAoB9J,KAAK8J,oBAAoB7H,OAAS,GACzEqK,EAAYtM,KAAK8J,oBAAoB9J,KAAK8J,oBAAoB7H,OAAS,GAErC,IAApCjC,KAAK8J,oBAAoB7H,SAC3BjC,KAAK8J,oBAAsB,IAGzBwC,IACFtM,KAAK8J,oBAAoByC,MACzBvM,KAAKuL,KAAKe,IAGZtM,KAAKwL,MAAMa,EAdX,CAeF,GAAC,CAAA5L,IAAA,QAAAC,MAED,WAAmC,IAAAmC,EAAA,KAA7BkJ,EAAS/J,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGhC,KAAKgK,WACfyB,EAAQ7K,SAASwB,cAAc,gBAADI,OAAiBuJ,EAAS,OAC9DnL,SAAS0I,oBAAoB,QAAStJ,KAAKK,uBAEtCoL,GAAUA,EAAMjK,UAAUC,SAAS,eAIpCzB,KAAKuK,YACPvK,KAAK4J,WAAWV,OAAOlJ,KAAK0K,YAG9Be,EAAMjK,UAAU2B,OAAO,aACvBnD,KAAKwM,iBAAiBf,GACtBzL,KAAKyM,iBAAiBhB,GAElBzL,KAAKkL,gBACPlL,KAAKkL,iBAGHlL,KAAKiK,kBACPvH,YAAW,WACTG,EAAK8G,YAAY+C,iBACnB,GAAG1M,KAAK4K,eAGVlI,YAAW,WACT9B,SAASC,iBAAiB,QAASgC,EAAKxC,sBAC1C,GAAGL,KAAK4K,eAER5K,KAAKgM,aAAa,WAClBhM,KAAKiK,kBAAmB,EAC1B,2EAACR,CAAA,CAjPgB,GCCbC,EAAW,CACf,QAAW,CACTzI,gBAAgB,EAChBqJ,UAAU,EACVE,WAAW,EACXvB,YAAY,EACZ0B,WAAW,EACXI,gBAAgB,EAChBF,aAAc,IACdI,cAAc,EACdE,eAAe,GAEjB,aAAc,CACZlC,YAAY,ovBCjBhB,ICKa0D,EAAsB,SAACC,GAClC,OAAQA,GACN,IAAK,QACH,MAAO,SACT,IAAK,OACH,MAAO,yBACT,IAAK,UACH,MAAO,uBACT,IAAK,oBACH,MAAO,yBACT,IAAK,WACH,MAAO,mBACT,IAAK,QACH,MAAO,eACT,QACE,OApBqB,SAACA,GAE1BC,QAAQC,MAAM,kDAADtK,OAAmDoK,EAAU,sEAC5E,CAiBaG,CAAmBH,GAEhC,EAEaI,EAA4B,SAACC,GACxC,OAAQA,GACN,IAAK,QACH,MAAO,SACT,IAAK,OACH,MAAO,4BACT,IAAK,UACH,MAAO,yBACT,IAAK,oBACH,MAAO,2BACT,IAAK,WACH,MAAO,iBACT,IAAK,QACH,MAAO,eACT,QACE,OAAO,EAEb,EAEaC,EAAe,WAAH,MAAS,4JAA4J,EC3CjLC,EAAgB,SAACC,EAAMH,EAAQI,GAC1C,IAAKJ,EAIH,OAFAJ,QAAQC,MAAM,sFACdM,EAAK1M,MAAQ,IAIf,IAAK2M,EAIH,OAFAR,QAAQC,MAAM,sGACdM,EAAK1M,MAAQ,IAIf,IAAM4M,EAAML,EAAOM,QAAQF,EAAO,IAC9BG,EAAMJ,EAAK1M,MAAM6M,QAAQF,EAAO,IAChCI,EAAI,EAEJH,EAAIrL,QAAUuL,EAAIvL,SACpBuL,EAAMF,GAGRF,EAAK1M,MAAQuM,EAAOM,QAAQ,MAAM,SAAC9H,GACjC,MAAI,QAAQiI,KAAKjI,IAAMgI,EAAID,EAAIvL,OACtBuL,EAAIG,OAAOF,KACTA,GAAKD,EAAIvL,OACX,GAEAwD,CAEX,GACF,qqBChCO,IAAMmI,EAAO,WAClB,SAAAA,iGAAc7N,CAAA,KAAA6N,GACZ5N,KAAK6N,eAAiB,gCACxB,SAiBC,SAjBAD,KAAA,EAAAnN,IAAA,mBAAAC,MAED,SAAiBoN,EAASC,GAExB,MAAO,8BAAPvL,OAD2B,UAAVuL,EAAoB,WAAa,aACL,MAAAvL,OAAKsL,EAAO,UAC3D,GAAC,CAAArN,IAAA,gBAAAC,MAED,SAAcQ,GACZ,IAAM8M,EAAgB9M,EAAOkB,cAAc,kBACvC4L,GACFA,EAAc7K,QAElB,GAAC,CAAA1C,IAAA,gBAAAC,MAED,SAAcQ,EAAQ4M,EAASC,GAC7B/N,KAAKiO,cAAc/M,GACnBA,EAAOgN,mBAAmB,YAAalO,KAAKmO,iBAAiBL,EAASC,GACxE,0EAACH,CAAA,CApBiB,sqBCIb,IAAMQ,EAAS,WACpB,SAAAA,iGAAcrO,CAAA,KAAAqO,GACZpO,KAAKqO,qBAAuB1B,EAC5B3M,KAAKsO,2BAA6BtB,EAClChN,KAAKuO,cAAgBrB,EACrBlN,KAAKwO,eAAiBrB,EACtBnN,KAAKyO,SAAW,IAAIb,EACpB5N,KAAK0O,kBAAmB,EACxB1O,KAAK2O,aAAc,EACnB3O,KAAK4O,cAAe,CACtB,SAwUC,SAxUAR,IAAA,EAAA3N,IAAA,gBAAAC,MAED,SAAc0M,GAAM,IAAAvL,EAAA,KAClB7B,KAAK2O,aAAc,EACnB3O,KAAK0O,kBAAmB,EACxB,IAAMxN,EAASkM,EAAKpM,QAAQ,wBACPE,EAAOY,iBAAiB,QAAS,SAAU,YACnDC,SAAQ,SAACR,GACyB,SAAzCA,EAAQsN,aAAa,kBACvBhN,EAAK8M,aAAc,EACfpN,EAAQb,QACVmB,EAAK6M,kBAAmB,GAG9B,IACA1O,KAAK8O,oBAAoB5N,EAC3B,GAAC,CAAAT,IAAA,iBAAAC,MAED,SAAeqO,EAAS7N,EAAQ8N,IACzB9N,EAAO8B,aAAa,kBAAqBgM,EAAMtO,SAG/CqO,EAYC7N,EAAO8B,aAAa,wBACtBhD,KAAKyO,SAASQ,cAAc/N,EAAQA,EAAOC,QAAQ+N,eAAgB,SAEnElP,KAAKyO,SAASR,cAAc/M,IAd9BA,EAAOM,UAAU0B,IAAI,cACjBhC,EAAO8B,aAAa,uBAAyBgM,EAAMtO,MACrDV,KAAKyO,SAASQ,cAAc/N,EAAQA,EAAOC,QAAQgO,YAAa,WACvDjO,EAAO8B,aAAa,uBAAyBgM,EAAMtO,MAC5DV,KAAKyO,SAASQ,cAAc/N,EAAQA,EAAOC,QAAQiO,aAAc,YACvDlO,EAAO8B,aAAa,uBAAyB9B,EAAO8B,aAAa,sBAAwBgM,EAAMtO,MACzGV,KAAKyO,SAASQ,cAAc/N,EAAQA,EAAOC,QAAQgO,YAAa,WAEhEnP,KAAKyO,SAASR,cAAc/M,IASlC,GAAC,CAAAT,IAAA,qBAAAC,MAED,SAAmBQ,EAAQ8N,IACpB9N,EAAO8B,aAAa,kBAAqBgM,EAAMtO,SAGpDQ,EAAOM,UAAU0B,IAAI,YACrBhC,EAAOM,UAAU2B,OAAO,cACxB6L,EAAMrK,aAAa,eAAgB,SACnC3E,KAAKyO,SAASR,cAAc/M,GAC9B,GAAC,CAAAT,IAAA,uBAAAC,MAED,SAAqBQ,EAAQ8N,IACtB9N,EAAO8B,aAAa,kBAAqBgM,EAAMtO,SAGpDQ,EAAOM,UAAU2B,OAAO,YACxB6L,EAAMrK,aAAa,eAAgB,QACrC,GAAC,CAAAlE,IAAA,oBAAAC,MAED,SAAkB0M,EAAMR,GACtBQ,EAAK1M,MAAQ0M,EAAK1M,MAAM6M,QAAQvN,KAAKqO,qBAAqBzB,GAAa,GACzE,GAAC,CAAAnM,IAAA,oBAAAC,MAED,SAAkB0M,EAAMH,EAAQL,GAC9B5M,KAAKwO,eAAepB,EAAMH,EAAQL,EACpC,GAAC,CAAAnM,IAAA,qBAAAC,MAED,SAAmBQ,EAAQ8N,GACzB,IAAI1J,GAAO,EAOX,OANI0J,EAAMtO,MAAMuB,UAAY+M,EAAMH,aAAa,cAAgB,GAC7D7O,KAAKqP,mBAAmBnO,EAAQ8N,IAEhChP,KAAKsP,qBAAqBpO,EAAQ8N,GAClC1J,GAAO,GAEFA,CACT,GAAC,CAAA7E,IAAA,uBAAAC,MAED,SAAqBQ,EAAQ8N,GAC3B,IAAI1J,GAAO,EAOX,OANI0J,EAAMtO,MAAMuB,SAAW+M,EAAMhO,QAAQ,iBAAiBG,QAAQ8L,OAAOhL,OACvEjC,KAAKqP,mBAAmBnO,EAAQ8N,IAEhChP,KAAKsP,qBAAqBpO,EAAQ8N,GAClC1J,GAAO,GAEFA,CACT,GAAC,CAAA7E,IAAA,sBAAAC,MAED,SAAoBQ,EAAQ8N,GAC1B,IAAI1J,GAAO,EAOX,OANI,IAAIiK,OAAOvP,KAAKuO,gBAAiB,IAAIb,KAAKsB,EAAMtO,OAClDV,KAAKqP,mBAAmBnO,EAAQ8N,IAEhChP,KAAKsP,qBAAqBpO,EAAQ8N,GAClC1J,GAAO,GAEFA,CACT,GAAC,CAAA7E,IAAA,sBAAAC,MAED,SAAoBQ,EAAQ8N,GAC1B,IAAI1J,GAAO,EAOX,OANI0J,EAAMtO,MAAMuB,SAAWf,EAAOC,QAAQqO,YACxCxP,KAAKqP,mBAAmBnO,EAAQ8N,IAEhChP,KAAKsP,qBAAqBpO,EAAQ8N,GAClC1J,GAAO,GAEFA,CACT,GAAC,CAAA7E,IAAA,oBAAAC,MAED,SAAkBQ,EAAQ8N,GACxB,IAAI1J,GAAO,EAOX,OANI0J,EAAMS,QACRzP,KAAKqP,mBAAmBnO,EAAQ8N,IAEhChP,KAAKsP,qBAAqBpO,EAAQ8N,GAClC1J,GAAO,GAEFA,CACT,GAAC,CAAA7E,IAAA,sBAAAC,MAED,SAAoBgP,GAClB,IAAIpK,GAAO,EAMX,OALAoK,EAAQ3N,SAAQ,SAAC4N,GACXA,EAAOjP,OAASiP,EAAOC,WACzBtK,GAAO,EAEX,IACOA,CACT,GAAC,CAAA7E,IAAA,kBAAAC,MAED,SAAgBQ,EAAQ8N,GACtB,IAAI1J,GAAO,EAQX,OAPI0J,EAAMtO,MACRV,KAAKqP,mBAAmBnO,EAAQ8N,IAEhChP,KAAKsP,qBAAqBpO,EAAQ8N,GAClC1J,GAAO,GAGFA,CACT,GAAC,CAAA7E,IAAA,yBAAAC,MAED,SAAuBmP,GACrB,IAAIvK,GAAO,EAMX,OALAuK,EAAO9N,SAAQ,SAACiN,GACVA,EAAMS,UACRnK,GAAO,EAEX,IACOA,CACT,GAAC,CAAA7E,IAAA,mBAAAC,MAED,SAAiBmP,GACfA,EAAO9N,SAAQ,SAACiN,GACTA,EAAMS,SAITT,EAAMrK,aAAa,iBAAiB,GACpCqK,EAAMrK,aAAa,gBAAgB,KAJnCqK,EAAM3G,gBAAgB,iBACtB2G,EAAM3G,gBAAgB,gBAK1B,GACF,GAAC,CAAA5H,IAAA,gBAAAC,MAED,SAAcmP,GACZA,EAAO9N,SAAQ,SAACiN,GACdA,EAAMrK,aAAa,iBAAiB,GACpCqK,EAAMrK,aAAa,gBAAgB,EACrC,GACF,GAAC,CAAAlE,IAAA,uBAAAC,MAED,SAAqBQ,GACnB,IAAM4O,EAAe5O,EAAOY,iBAAiB,SACzCwD,GAAO,EAWX,OAVItF,KAAK+P,uBAAuBD,IAC9B9P,KAAKgQ,iBAAiBF,GACtB5O,EAAOM,UAAU2B,OAAO,cACxBjC,EAAOM,UAAU0B,IAAI,YACrBlD,KAAKyO,SAASR,cAAc/M,KAE5BlB,KAAKiQ,cAAcH,GACnB5O,EAAOM,UAAU2B,OAAO,YACxBmC,GAAO,GAEFA,CACT,GAAC,CAAA7E,IAAA,gBAAAC,MAED,SAAcQ,EAAQ8N,GACpB,IAAI1J,GAAO,EACL4K,GAAWhP,EAAOC,QAAQgP,UAAWnB,EAAMoB,MAAM,IAAKpB,EAAMoB,MAAM,GAAGC,MAAQnP,EAAOC,QAAQgP,QAOlG,OANInB,EAAMtO,OAASwP,EACjBlQ,KAAKqP,mBAAmBnO,EAAQ8N,IAEhChP,KAAKsP,qBAAqBpO,EAAQ8N,GAClC1J,GAAO,GAEFA,CACT,GAAC,CAAA7E,IAAA,gBAAAC,MAED,SAAcQ,EAAQ8N,GACpB,IAAI1J,GAAO,EAIX,OAHIpE,EAAOM,UAAUC,SAAS,eAAkBuN,EAAMoB,MAAM,KAC1D9K,GAAO,GAEFA,CACT,GAAC,CAAA7E,IAAA,iBAAAC,MAED,SAAe4P,EAAMpP,EAAQ8N,GAC3B,OAAQsB,GACN,IAAK,OACH,OAAOtQ,KAAKuQ,mBAAmBrP,EAAQ8N,GACzC,IAAK,SACH,OAAOhP,KAAKwQ,qBAAqBtP,EAAQ8N,GAC3C,IAAK,QACH,OAAOhP,KAAKyQ,oBAAoBvP,EAAQ8N,GAC1C,IAAK,QACH,OAAOhP,KAAK0Q,oBAAoBxP,EAAQ8N,GAC1C,IAAK,WACH,OAAOhP,KAAK2Q,kBAAkBzP,EAAQ8N,GACxC,IAAK,SACH,OAAOhP,KAAK4Q,gBAAgB1P,EAAQ8N,GACtC,IAAK,eACH,OAAOhP,KAAK6Q,qBAAqB3P,EAAQ8N,GAC3C,IAAK,OACH,OAAOhP,KAAK8Q,cAAc5P,EAAQ8N,GACpC,IAAK,gBACH,OAAOhP,KAAK+Q,cAAc7P,EAAQ8N,GACpC,QACE,OAAO,EAEb,GAAC,CAAAvO,IAAA,sBAAAC,MAED,SAAoBsQ,GACbhR,KAAK4O,eAIL5O,KAAK0O,kBAAqB1O,KAAK2O,aAKhC3O,KAAK0O,kBAAqB1O,KAAK2O,YAK/B3O,KAAK2O,aACP3O,KAAKyO,SAASR,cAAc+C,GAL5BhR,KAAKyO,SAASQ,cAAc+B,EAAYA,EAAW7P,QAAQiO,cAAgB4B,EAAW7P,QAAQgO,YAAa,WAL3GnP,KAAKyO,SAASQ,cAAc+B,EAAYA,EAAW7P,QAAQgO,YAAa,WAa5E,GAAC,CAAA1O,IAAA,kBAAAC,MAED,SAAgBsQ,EAAYV,GAC1B,MACO,SADCA,GAEGtQ,KAAKiR,oBAAoBD,EAItC,GAAC,CAAAvQ,IAAA,sBAAAC,MAED,SAAoBwQ,GAAmC,IAAtBC,EAAYnP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACrCd,EAASgQ,EAAYlQ,QAAQ,wBACnC,GAAKE,EAAL,CAIKA,EAAO8B,aAAa,mBACD9B,EAAOkB,cAAc,UAAYlB,EAAOkB,cAAc,WAAalB,EAAOkB,cAAc,aAE3F1B,QACjBQ,EAAOM,UAAU2B,OAAO,YACxBjC,EAAOM,UAAU2B,OAAO,eAI5B,IAAMiO,EAAkBlQ,EAAO8B,aAAa,0BAExC9B,EAAO8B,aAAa,oBACtBhD,KAAKqR,kBAAkBH,EAAahQ,EAAOC,QAAQyL,YAGjB,WAAhC1L,EAAOC,QAAQmQ,cACjBtR,KAAKuR,kBAAkBL,EAAahQ,EAAOC,QAAQ8L,OAAQjN,KAAKsO,2BAA2BpN,EAAOC,QAAQqQ,mBAG5G,IAAMC,EAAUzR,KAAK0R,eAAexQ,EAAOC,QAAQmQ,aAAcpQ,EAAQgQ,IAErEE,GAAmBD,IACrBnR,KAAK2R,eAAeF,EAASvQ,EAAQgQ,EAxBvC,CA0BF,GAAC,CAAAzQ,IAAA,gBAAAC,MAED,SAAckR,GAAO,IAAA/O,EAAA,KACf4O,GAAU,EAQd,OAPAG,EAAM7P,SAAQ,SAACqL,GACb,IAAM8D,EAAc9D,EAAKhL,cAAc,UAAYgL,EAAKhL,cAAc,WAAagL,EAAKhL,cAAc,YACtGS,EAAKgP,oBAAoBX,GAAa,GAClC9D,EAAK5L,UAAUC,SAAS,gBAC1BgQ,GAAU,EAEd,IACOA,CACT,GAAC,CAAAhR,IAAA,eAAAC,MAED,SAAaoR,GACQ,WAAfA,EAAMxB,OACRtQ,KAAK4O,cAAe,GAEtB,IAAMmD,EAAgBD,EAAM/Q,OAAOe,iBAAiB,wBAC9CkQ,EAAShS,KAAKiS,cAAcF,GAElC,OADA/R,KAAKkS,cAAcJ,EAAM/Q,QAClBiR,CACT,GAAC,CAAAvR,IAAA,SAAAC,MAED,WACEV,KAAK4O,cAAe,CACtB,GAAC,CAAAnO,IAAA,sBAAAC,MAED,SAAoBa,GAClB,IAAMyP,EAAazP,EAAQP,QAAQ,wBAC/BgQ,EAAW7P,QAAQgR,gBACrBnS,KAAKoS,gBAAgBpB,EAAYA,EAAW7P,QAAQgR,eAExD,2EAAC/D,CAAA,CAlVmB,GCkDTiE,EAAY,CACvBC,KAAM,CAEJC,OAAO,EAEPC,aAAc,IACdC,gBArDwB,SAACX,GAC3BA,EAAM7Q,iBACN,IACIyR,EADEC,EAAWC,OAAOC,YAAY,IAAIC,SAAShB,EAAM/Q,SAGvDgS,MAVqB,wDAUC,CACpBC,OAAQ,OACRC,QAAS,CAAE,eAAgB,kCAC3BrL,KAAMsL,KAAKC,UAAUR,KAEpBS,MAAK,SAACC,GAEL,OADAX,EAASW,EAASX,OACXW,EAASC,MAClB,IACCF,MAAK,SAACpB,GACS,KAAVU,GACF9R,SAASwB,cAAc,4BAA4BmR,KAAOvB,EAAOtR,MAAMoN,QACvElN,SAASwB,cAAc,qBAAqBoR,YAAcb,EAASc,MACnEjK,EAAO+B,KAtBM,iBAuBM,KAAVmH,GACT9R,SAASwB,cAAc,0BAA0BmR,KAAOvB,EAAOtR,MAAMgT,iBACrE9S,SAASwB,cAAc,uBAAuBoR,YAAcxB,EAAOtR,MAAMoN,QACzEtE,EAAO+B,KAzBI,uBA2BX/B,EAAO+B,KA1BM,wBA6Bf,IACEoI,GAAG,SAAU,YAAa,cAC5B,CAAE,MAAO1P,GAAI,CAEb2P,GAAGC,KAAK,QACRD,GAAGE,YAAYC,MAAM,QACrBC,EAAE,aAAaxG,IAAI,IAAIuB,QAAQ,UAC/BiF,EAAE,sBAAsBxG,IAAI,IAAIuB,QAAQ,SAC1C,IACCkF,OAAM,SAAUnH,GACfD,QAAQqH,IAAIpH,GACZtD,EAAOgC,MAAM,aACf,GACJ,EAcI2I,cAZsB,SAACrC,GACzBA,EAAM7Q,gBAER,ICpDMmT,EAAkB,KAIlBC,EAAoB,SAACpQ,GACzB,IAAMgJ,EAAS,GAAHzK,OAAM4R,GAAe5R,OAJhB,oBAKX8K,EAAML,EAAOM,QAAQ,MAAO,IAC9BE,EAAI,EACJD,EAAMvJ,EAAElD,OAAOL,MAAM6M,QAAQ,MAAO,IACpCD,EAAIrL,QAAUuL,EAAIvL,SACpBuL,EAAMF,GAERrJ,EAAElD,OAAOL,MAAQuM,EAAOM,QAAQ,MAAM,SAAC9H,GACrC,MAAI,QAAQiI,KAAKjI,IAAMgI,EAAID,EAAIvL,OACtBuL,EAAIG,OAAOF,KACTA,GAAKD,EAAIvL,OACX,GAEAwD,CAEX,GACF,EAEM6O,EAAoB,SAAHC,GAAiB,IAAZxT,EAAMwT,EAANxT,OACrBA,EAAOL,QACVK,EAAOL,MAAQ0T,GAEjBrT,EAAOF,iBAAiB,QAASwT,GACjCtT,EAAOF,iBAAiB,OAAQ2T,GAChCzT,EAAOF,iBAAiB,UAAW4T,GACnC1T,EAAOF,iBAAiB,QAAS6T,GACjC3T,EAAOF,iBAAiB,QAAS8T,EACnC,EAEMA,EAAoB,SAAC1Q,GACrBA,EAAElD,OAAO6T,eAAiB,IAC5B3Q,EAAEhD,iBACFgD,EAAElD,OAAO8T,kBAAkB,EAAG,GAElC,EAEMH,EAAoB,SAACzQ,GACzBA,EAAElD,OAAO8T,kBAAkB,EAAG,GACzB5Q,EAAElD,OAAO6T,gBACZlS,YAAW,WACLuB,EAAElD,OAAOL,MAAMoU,WAAW,QAG1B7Q,EAAElD,OAAOL,MAAMoU,WAAW,MAC5B7Q,EAAElD,OAAOL,MAAQ,MAAH8B,OAASyB,EAAElD,OAAOL,MAAMqU,MAAM,IAG9C9Q,EAAElD,OAAOL,MAAQ,GACnB,GAEJ,EAEM+T,EAAsB,SAACxQ,GACvBA,EAAElD,OAAO6T,eAAiB,IAAoB,KAAd3Q,EAAE+Q,SAAgC,KAAd/Q,EAAE+Q,WACxD/Q,EAAEhD,iBACFgD,EAAElD,OAAO8T,kBAAkB,EAAG,GAElC,EAEML,EAAmB,SAAnBA,EAAgBS,GAAiB,IAAZlU,EAAMkU,EAANlU,OACzB,GAAIA,EAAOL,QAAU0T,EAAiB,CACpC,IAAMlT,EAASH,EAAOC,QAAQ,gCAE9B,GADAD,EAAOL,MAAQ,IACVQ,EAAO8B,aAAa,iBAAkB,CACzC9B,EAAOM,UAAU2B,OAAO,YACxBjC,EAAOM,UAAU2B,OAAO,cACxB,IAAM6K,EAAgB9M,EAAOkB,cAAc,kBACvC4L,GACFA,EAAc7K,QAElB,CACAjC,EAAOM,UAAU2B,OAAO,aACxBpC,EAAOuI,oBAAoB,QAAS+K,GACpCtT,EAAOuI,oBAAoB,OAAQkL,GACnCzT,EAAOuI,oBAAoB,UAAWmL,GACtC1T,EAAOuI,oBAAoB,QAASoL,GACpC3T,EAAOuI,oBAAoB,QAASqL,EACtC,CACF,EAEaO,EAAiB,SAAChU,GAC7B,IAAM8N,EAAQ9N,EAAOkB,cAAc,SACnClB,EAAOC,QAAQqO,YArFG4E,GAsFlBpF,EAAMnO,iBAAiB,QAASyT,EAClC,qqBCrFO,ICAHa,EDASC,EAAI,WACf,SAAAA,iGAAcrV,CAAA,KAAAqV,GACZpV,KAAKqV,WAAa,IAAIjH,EACtBpO,KAAKsV,gBAAkBJ,EACvBlV,KAAKuV,WAAalD,EAClBrS,KAAK2O,aAAc,CACrB,SAyJC,SAzJAyG,IAAA,EAAA3U,IAAA,eAAAC,MAED,SAAa8U,GACX,IAAMC,EAAeD,EAAOpT,cAAc,UACpC2C,EAAc0Q,EAAa/F,QAAQgG,cACnCC,EAAiBF,EAAa/F,QAAQ3K,GACtC6Q,EAAaJ,EAAOpT,cAAc,wBAClCyT,EAAcL,EAAO1T,iBAAiB,wBAC5C8T,EAAWpC,YAAcmC,EAAenC,YACxCqC,EAAY9T,SAAQ,SAACqL,EAAM1I,GACrBA,IAAUK,EAAc,EAI5BqI,EAAKzI,aAAa,gBAAiB,SAHjCyI,EAAKzI,aAAa,gBAAiB,OAIvC,IACK8Q,EAAa/U,QAChB8U,EAAOhU,UAAU2B,OAAO,aACxBqS,EAAOhU,UAAU2B,OAAO,YAE5B,GAAC,CAAA1C,IAAA,gBAAAC,MAED,SAAcyU,GAAM,IAAAtT,EAAA,KACFsT,EAAKrT,iBAAiB,iBAC9BC,SAAQ,SAACyT,GACf3T,EAAKiU,aAAaN,EACpB,GACF,GAAC,CAAA/U,IAAA,QAAAC,MAED,SAAMyU,GAAM,IAAAtS,EAAA,KACV7C,KAAKqV,WAAWU,SAChB,IAAM7U,EAASiU,EAAKnU,QAAQ,wBAC5BmU,EAAK5C,QACL4C,EAAKrT,iBAAiB,eAAeC,SAAQ,SAACqL,GAAI,OAAKA,EAAK5L,UAAU2B,OAAO,aAAa,IAC1FgS,EAAKrT,iBAAiB,aAAaC,SAAQ,SAACqL,GAAI,OAAKA,EAAK5L,UAAU2B,OAAO,WAAW,IACtFgS,EAAKrT,iBAAiB,kBAAkBC,SAAQ,SAACqL,GAAI,OAAKA,EAAKjK,QAAQ,IACvEjC,EAAOY,iBAAiB,kBAAkBC,SAAQ,SAACqL,GAAI,OAAKA,EAAKjK,QAAQ,IACzET,YAAW,WACTG,EAAKmT,cAAcb,EACrB,GACF,GAAC,CAAA1U,IAAA,iBAAAC,MAED,SAAeQ,GACblB,KAAKsV,gBAAgBpU,EACvB,GAAC,CAAAT,IAAA,eAAAC,MAED,SAAaoR,GACX,OAAO9R,KAAKqV,WAAWY,aAAanE,EACtC,GAAC,CAAArR,IAAA,sBAAAC,MAED,SAAoB0M,GAClB,OAAOpN,KAAKqV,WAAWxD,oBAAoBzE,EAC7C,GAAC,CAAA3M,IAAA,eAAAC,MAED,SAAa0M,GACX,OAAOpN,KAAKqV,WAAWnD,cAAc9E,EACvC,GAAC,CAAA3M,IAAA,gBAAAC,MAED,SAAcoR,GAAwB,IAAAhM,EAAA,KAAjBoQ,EAAQlU,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAG9B,GAFAhC,KAAK2O,YAAc3O,KAAKiW,aAAanE,GAEjC9R,KAAK2O,aAAeuH,EAOtB,OANAlW,KAAKuV,WAAWW,GAAUzD,gBAAgBX,QACtC9R,KAAKuV,WAAWW,GAAU3D,OAC5B7P,YAAW,WACToD,EAAKyM,MAAMT,EAAM/Q,OACnB,GAAGf,KAAKuV,WAAWW,GAAU1D,aAAexS,KAAKuV,WAAWW,GAAU1D,aAAe,MAIpFxS,KAAK2O,cAAeuH,GACvBlW,KAAKuV,WAAWW,GAAU/B,cAAcrC,EAG5C,GAAC,CAAArR,IAAA,eAAAC,MAED,SAAa0M,GACXpN,KAAK6R,oBAAoBzE,GACzBpN,KAAKmW,aAAa/I,EACpB,GAAC,CAAA3M,IAAA,gBAAAC,MAED,SAAcQ,GAAQ,IAAAgF,EAAA,KACdiP,EAAOjU,EAAOkB,cAAc,QAClC,GAAK+S,EAAL,CAIqBA,EAAKrT,iBAAiB,gCAC9BC,SAAQ,SAACqL,GAAI,OAAKlH,EAAKoP,gBAAgBlI,EAAK,IAEzD,IAAM8I,EAAWhV,EAAOC,QAAQ+U,SAChCf,EAAKiB,YAAa,EAElBjB,EAAKtU,iBAAiB,UAAU,SAACiR,GAC/B5L,EAAKmQ,cAAcvE,EAAOoE,EAC5B,IAEAf,EAAKtU,iBAAiB,SAAS,SAACiR,GAC9B5L,EAAKoQ,aAAaxE,EAAM/Q,QACxBmF,EAAKqQ,uBAAuBpB,EAC9B,IAEAA,EAAKtU,iBAAiB,SAAS,SAACiR,GAC9B5L,EAAKqM,MAAMT,EAAM/Q,OACnB,IAEAf,KAAKwW,cAAcrB,GAAM,WACvBvB,GAAGE,YAAYC,MAAM,qBACrB,IACEJ,GAAG,SAAU,YAAa,YAC5B,CAAE,MAAO1P,GAAI,CACf,GA1BA,CA2BF,GAEA,CAAAxD,IAAA,yBAAAC,MACA,SAAuByU,GACrB,IAAMsB,EAAStB,EAAKrT,iBAAiB,2BAC/B4U,EAAYvB,EAAK/S,cAAc,yBACjCsQ,GAAS,EAEb+D,EAAO1U,SAAQ,SAAA4U,GACRA,EAAM7T,cAActB,UAAUC,SAAS,cAC1CiR,GAAS,EAEb,IAGEgE,EAAUE,SADE,GAAVlE,CAKN,GAEA,CAAAjS,IAAA,gBAAAC,MACA,SAAcyU,EAAMe,GAClB,IAAMW,EAAW1B,EAAKrT,iBAAiB,2BACnCgV,GAAU,EACdD,EAAS9U,SAAQ,SAACoC,GAChB6P,EAAE7P,GAAS4S,IAAI,QAAQ,SAAC9S,GACjB6S,IACHZ,EAASjS,GACT6S,GAAU,EAEd,GACF,GACF,GAAC,CAAArW,IAAA,OAAAC,MAED,WAAO,IAAAsW,EAAA,KACLhX,KAAKoS,gBAAkBxR,SAASkB,iBAAiB,wBAC5C9B,KAAKoS,gBAAgBnQ,QAG1BjC,KAAKoS,gBAAgBrQ,SAAQ,SAACb,GAAM,OAAK8V,EAAKC,cAAc/V,EAAO,GACrE,2EAACkU,CAAA,CA/Jc,GCEX8B,EAAW,SAACC,GAChBhC,EAAO,IAAIC,EAEXjV,OAAOgV,KAAOA,EACdA,EAAKiC,OCTa,CAChB,CACEC,GAAI,qBACJC,YAAa,sBAEf,CACED,GAAI,YACJC,YAAa,uBAIPvV,SAAQ,SAACqL,GACjB,IAEEkK,EAFEC,EAAWvD,EAAE5G,EAAKiK,IAKtBC,EAAclK,EAAKkK,YAEnBC,EAASC,QAAQ,CACfF,YAAaA,EACbG,wBAAoC,aAAXrK,EAAKiK,GAAoB,KAAO,GACzDK,SAAU,CACRC,UAAW,WACT,MARI,mBASN,GAEFC,aAAc,SAAUC,GACtB,OAAOA,CACT,IAGFN,EAAS/J,IAAI,MAAMuB,QAAQ,SAC7B,ITlCe,SAACoI,GAChB,IAiBQW,EACAtC,EAlBFL,EAAOvU,SAASwB,cAAc,cAC9B2V,EAAiB5C,EAAK/S,cAAc,sBACpC4V,EAAiB7C,EAAK/S,cAAc,aACpC6V,EAAW9C,EAAK/S,cAAc,mBAC9B8V,EAAa/C,EAAK/S,cAAc,qBAChC+V,EAAgBF,EAAS7V,cAAc,yBACvCsU,EAAYvB,EAAK/S,cAAc,yBACjCgW,EAAWjB,EAEXkB,EAAiB,GACjBC,EAAwB,GAqH5B,SAASC,EAAiBC,GACxB,IAAIC,EAAoBC,gBAAgBN,GACpCO,EAAkB,GAClBC,EAAmB,GAEvBH,EAAkB1W,SAAQ,SAAC8W,GACzB,IAAIC,EAAeC,EAEnB,GAAwC,GAApCF,EAAKG,4BACPF,GAAgB,EAChBC,EAAW,wCAAHvW,OAA2CqW,EAAKI,uBAAsB,sDAAAzW,OAAqDqW,EAAKK,wBAAuB,+EAC1J,CACL,IAAIxG,GAAS,EAEbmG,EAAKM,mBAAmBpX,SAAQ,SAACuO,GAC3BA,EAAK8I,YAAcZ,GAAwB,IAAZA,IACjC9F,GAAS,EAEb,IAEIA,GACFoG,GAAgB,EAChBC,EAAW,wCAAHvW,OAA2CqW,EAAKI,uBAAsB,sDAAAzW,OAAqDqW,EAAKK,wBAAuB,yEAE/JJ,GAAgB,EAChBC,EAAW,wCAAHvW,OAA2CqW,EAAKI,uBAAsB,sDAAAzW,OAAqDqW,EAAKK,wBAAuB,2EAEnK,CAEA,IAAIG,EAAO,CAAC,EACZA,EAAKC,KAAOP,EACZM,EAAK3G,OAASoG,EACdO,EAAKhC,GAAKwB,EAAKU,kBACfF,EAAKG,KAAOX,EAAKY,6BAEbX,EACFH,EAAgBpT,KAAK8T,GAErBT,EAAiBrT,KAAK8T,EAE1B,IAEAV,EAAgBnT,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAE6T,KAAO5T,EAAE4T,KAAO,GAAK,CAAC,IACxDV,EAAiBpT,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAE6T,KAAO5T,EAAE4T,KAAO,GAAK,CAAC,IAEzDI,EAAI3B,EAAe4B,UAAUC,KAAI,SAACxM,GAChCA,EAAKjK,QACP,IAEAwV,EAAgB5W,SAAQ,SAAC8W,GACvB,IAAIlJ,EAAS,IAAIkK,OACf,kDAAoDhB,EAAKS,KACzDT,EAAKxB,IACL,GACA,GAGF1H,EAAOhL,aAAa,OAAQkU,EAAKW,MACjCzB,EAAe+B,OAAOnK,EACxB,IAEAiJ,EAAiB7W,SAAQ,SAAC8W,GACxB,IAAIlJ,EAAS,IAAIkK,OACf,kDAAoDhB,EAAKS,KACzDT,EAAKxB,IACL,GACA,GAGF1H,EAAOhL,aAAa,WAAY,YAChCoT,EAAe+B,OAAOnK,EACxB,IAEAqE,EAAE,sBAAsBxG,IAAI,MAAMuB,QAAQ,SAC5C,CAGA,SAASgL,EAAmBxY,GAC1B,IAAIL,EAASK,EAAQyY,WACfhM,EAAgB9M,EAAOkB,cAAc,kBAE3ClB,EAAOM,UAAU2B,OAAO,cACxBjC,EAAOM,UAAU0B,IAAI,YACjB8K,GACFA,EAAc7K,QAElB,CAGA,SAAS8W,EAAgB1Y,GACvB,IAAI2Y,EAAiB3Y,EAAQyY,WACvBG,EAAwBD,EAAe9X,cAAc,kBAI3D,GAFA8X,EAAe1Y,UAAU0B,IAAI,cAC7BgX,EAAe1Y,UAAU2B,OAAO,aAC3BgX,EAAuB,CAC1B,IAAIC,EAAOxZ,SAASyZ,cAAc,QAClCD,EAAK5Y,UAAU0B,IAAI,gBAAiB,cACpCkX,EAAK5G,YAAc,gCACnB0G,EAAeI,YAAYF,EAC7B,CACF,CAGA,SAASG,EAAiB7H,GACV,YAAVA,GACFuF,EAASzW,UAAU0B,IAAI,YACvB+U,EAASzW,UAAU2B,OAAO,YAC1BgV,EAAc1I,SAAU,EACxByI,EAAW3E,KAAO,KAElB0E,EAASzW,UAAU2B,OAAO,YAC1BgV,EAAc1I,SAAU,EAE5B,CAGA,SAAS+K,EAAc7D,EAAO2C,GAG5B,IAFgB3C,EAAMqD,WAAW5X,cAAc,sBAE/C,CAEA,IAAIqY,EAAM7Z,SAASyZ,cAAc,OACjCI,EAAI9V,aAAa,mBAAoB,IACrC8V,EAAIjZ,UAAU0B,IAAI,iBAClBuX,EAAIC,UAAY,+DAAHlY,OAEF8W,EAAI,gCAGf3C,EAAMqD,WAAWM,YAAYG,GAE7B/X,YAAW,WACT+X,EAAItX,QACN,GAAG,IAdgB,CAerB,CAGA,SAASoT,IACP,IAAME,EAAStB,EAAKrT,iBAAiB,2BACjC4Q,GAAS,EAEb+D,EAAO1U,SAAQ,SAAA4U,GACRA,EAAM7T,cAActB,UAAUC,SAAS,cAC1CiR,GAAS,EAEb,IAEc,GAAVA,GAA2C,GAAzByF,EAAc1I,QAClCiH,EAAUE,UAAW,EAErBF,EAAUE,UAAW,CAEzB,CA3QA2B,EAAiB,IAITT,EAAQlX,SAASkB,iBAAiB,gBAClC0T,EAASxB,EAAE,aAEjB8D,EAAM/V,SAAQ,SAAA4Y,GACZA,EAAI9Z,iBAAiB,SAAS,WAC5B,GAA6B,IAAzByX,EAA6B,CAC/B,IAAI5X,EAAQia,EAAI9L,aAAa,cAC7B2G,EAAOhI,IAAI9M,GAAOqO,QAAQ,SAC5B,CACF,GACF,IAIF,WACE,IAAMyG,EAASxB,EAAE,sBAEjBpT,SAASC,iBAAiB,SAAS,SAACoD,GAClC,GAAsB,IAAlBoU,EAAsB,CACxB,IAAItX,EAASkD,EAAElD,OAEf,GAAIA,EAAO8N,aAAa,aAAc,CACpC,IAAInO,EAAQK,EAAO8N,aAAa,aAChC2G,EAAOhI,IAAI9M,GAAOqO,QAAQ,SAC5B,CACF,CACF,GACD,CAbD,GAgBAoJ,EAAc6B,WAAWnZ,iBAAiB,SAAS,WAC7CoX,EAASzW,UAAUC,SAAS,aAC9B+Y,EAAcrC,EAAe,oCAEjC,IAGAJ,EAAeiC,WAAWnZ,iBAAiB,SAAS,WAC9CkX,EAAenB,UACjB4D,EAAczC,EAAgB,wBAElC,IAGAC,EAAe4C,SAAW,SAAC3W,GACI,IAAzBqU,IAEFC,EADAF,EAAiBpU,EAAElD,OAAOL,OAE1BuZ,EAAgBlC,GAChBwC,EAAiB,aAGnBR,EAAmB/B,GACnBzB,GACF,EAGAwB,EAAe6C,SAAW,SAAC3W,GAyB3B,IAA6BoT,EAxBL,IAAlBgB,IACFC,EAAwBrU,EAAElD,OAAOL,MAuBR2W,EAtBLiB,EAuBEI,gBAAgBN,GAEtBrW,SAAQ,SAAC8W,GACrBA,EAAKM,mBAAmBlX,OAAS,GAC/B4W,EAAKU,mBAAqBlC,IAC5BqC,EAAI1B,EAAe2B,UAAUC,KAAI,SAACxM,GAChCA,EAAKjK,QACP,IAEA0V,EAAKM,mBAAmBpX,SAAQ,SAACuO,GAC/B,IAAIX,EAAS,IAAIkK,OACfvJ,EAAKuK,SACLvK,EAAK8I,YACL,GACA,GAGFpB,EAAe8B,OAAOnK,EACxB,IAGN,IAEAqE,EAAE,aAAaxG,IAAI,MAAMuB,QAAQ,UA7C/BkL,EAAgBjC,IAGlB0B,EAAI3B,GAAgBhW,SAAQ,SAAC8W,GAC3B,GAAI5U,EAAElD,OAAOL,OAASmY,EAAKnY,MAAO,CAChC,IAAI8Y,EAAOX,EAAKhK,aAAa,QAK3BqJ,EAAW3E,KAHD,QAARiG,GAAmBA,EAGHA,EAFA,sBAItB,CACF,IAEAe,EAAiB,UACjBR,EAAmBhC,GACnBxB,GACF,CAyLF,CQ9QEuE,CAAS3D,EACX,EEDA,SAAS4D,EAASC,GACd,OAAgB,OAARA,GACW,iBAARA,GACP,gBAAiBA,GACjBA,EAAIC,cAAgBrI,MAC5B,CACA,SAASsI,EAAOna,EAAS,CAAC,EAAGoa,EAAM,CAAC,GAChCvI,OAAOwI,KAAKD,GAAKpZ,SAAStB,SACK,IAAhBM,EAAON,GACdM,EAAON,GAAO0a,EAAI1a,GACbsa,EAASI,EAAI1a,KAClBsa,EAASha,EAAON,KAChBmS,OAAOwI,KAAKD,EAAI1a,IAAMwB,OAAS,GAC/BiZ,EAAOna,EAAON,GAAM0a,EAAI1a,GAC5B,GAER,CAEA,MAAM4a,EAAc,CAChBzT,KAAM,CAAC,EACP/G,gBAAAA,GAAqB,EACrByI,mBAAAA,GAAwB,EACxB7C,cAAe,CACXG,IAAAA,GAAS,EACT0U,SAAU,IAEdlZ,aAAAA,GACI,OAAO,IACX,EACAN,gBAAAA,GACI,MAAO,EACX,EACAyZ,cAAAA,GACI,OAAO,IACX,EACAC,WAAAA,GACI,MAAO,CACHC,SAAAA,GAAc,EAEtB,EACApB,aAAAA,GACI,MAAO,CACHV,SAAU,GACV+B,WAAY,GACZrZ,MAAO,CAAC,EACRsC,YAAAA,GAAiB,EACjBgX,oBAAAA,GACI,MAAO,EACX,EAER,EACAC,eAAAA,GACI,MAAO,CAAC,CACZ,EACAC,UAAAA,GACI,OAAO,IACX,EACAC,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACV1I,KAAM,GACN2I,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGhB,SAASC,IACL,MAAMC,EAA0B,oBAAb3b,SAA2BA,SAAW,CAAC,EAE1D,OADAsa,EAAOqB,EAAKlB,GACLkB,CACX,CAEA,MAAMC,EAAY,CACd5b,SAAUya,EACVtU,UAAW,CACPE,UAAW,IAEf6U,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACV1I,KAAM,GACN2I,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEZI,QAAS,CACLC,YAAAA,GAAiB,EACjBC,SAAAA,GAAc,EACdC,EAAAA,GAAO,EACPlR,IAAAA,GAAS,GAEbmR,YAAa,WACT,OAAO7c,IACX,EACAa,gBAAAA,GAAqB,EACrByI,mBAAAA,GAAwB,EACxBwT,gBAAAA,GACI,MAAO,CACHC,gBAAAA,GACI,MAAO,EACX,EAER,EACAC,KAAAA,GAAU,EACVC,IAAAA,GAAS,EACTC,OAAQ,CAAC,EACTxa,UAAAA,GAAe,EACfya,YAAAA,GAAiB,EACjB9b,UAAAA,GACI,MAAO,CAAC,CACZ,EACA+b,qBAAAA,CAAsBlH,GAClB,MAA0B,oBAAfxT,YACPwT,IACO,MAEJxT,WAAWwT,EAAU,EAChC,EACAmH,oBAAAA,CAAqBhG,GACS,oBAAf3U,YAGXya,aAAa9F,EACjB,GAEJ,SAASiG,IACL,MAAMC,EAAwB,oBAAXpd,OAAyBA,OAAS,CAAC,EAEtD,OADA+a,EAAOqC,EAAKf,GACLe,CACX,CCrHA,MAAMC,WAAaC,MACjBxC,WAAAA,CAAYrJ,GACW,iBAAVA,EACT8L,MAAM9L,IAEN8L,SAAU9L,GAAS,IAnBzB,SAAsBoJ,GACpB,MAAM2C,EAAQ3C,EAAI4C,UAClBhL,OAAOiL,eAAe7C,EAAK,YAAa,CACtC8C,GAAAA,GACE,OAAOH,CACT,EAEAI,GAAAA,CAAIrd,GACFid,EAAMC,UAAYld,CACpB,GAGJ,CAQMsd,CAAahe,MAEjB,EAIF,SAASie,GAAUC,EAAM,IACvB,MAAMC,EAAM,GAQZ,OAPAD,EAAInc,SAAQ4J,IACN8R,MAAMW,QAAQzS,GAChBwS,EAAI5Y,QAAQ0Y,GAAUtS,IAEtBwS,EAAI5Y,KAAKoG,EACX,IAEKwS,CACT,CACA,SAASE,GAAYH,EAAKhI,GACxB,OAAOuH,MAAMa,UAAUC,OAAOC,KAAKN,EAAKhI,EAC1C,CA+BA,SAASlC,GAAEuD,EAAUkH,GACnB,MAAMte,EAASmd,IACT1c,EAAW0b,IACjB,IAAI4B,EAAM,GAEV,IAAKO,GAAWlH,aAAoBiG,GAClC,OAAOjG,EAGT,IAAKA,EACH,OAAO,IAAIiG,GAAKU,GAGlB,GAAwB,iBAAb3G,EAAuB,CAChC,MAAMmH,EAAOnH,EAASoH,OAEtB,GAAID,EAAKE,QAAQ,MAAQ,GAAKF,EAAKE,QAAQ,MAAQ,EAAG,CACpD,IAAIC,EAAW,MACa,IAAxBH,EAAKE,QAAQ,SAAcC,EAAW,MACd,IAAxBH,EAAKE,QAAQ,SAAcC,EAAW,SACd,IAAxBH,EAAKE,QAAQ,QAAwC,IAAxBF,EAAKE,QAAQ,SAAcC,EAAW,MACxC,IAA3BH,EAAKE,QAAQ,YAAiBC,EAAW,SACb,IAA5BH,EAAKE,QAAQ,aAAkBC,EAAW,UAC9C,MAAMC,EAAale,EAASyZ,cAAcwE,GAC1CC,EAAWpE,UAAYgE,EAEvB,IAAK,IAAIjR,EAAI,EAAGA,EAAIqR,EAAWpD,WAAWzZ,OAAQwL,GAAK,EACrDyQ,EAAI3Y,KAAKuZ,EAAWpD,WAAWjO,GAEnC,MACEyQ,EA7CN,SAAa3G,EAAUkH,GACrB,GAAwB,iBAAblH,EACT,MAAO,CAACA,GAGV,MAAM9R,EAAI,GACJ0Y,EAAMM,EAAQ3c,iBAAiByV,GAErC,IAAK,IAAI9J,EAAI,EAAGA,EAAI0Q,EAAIlc,OAAQwL,GAAK,EACnChI,EAAEF,KAAK4Y,EAAI1Q,IAGb,OAAOhI,CACT,CAgCYsZ,CAAIxH,EAASoH,OAAQF,GAAW7d,EAG1C,MAAO,GAAI2W,EAASyH,UAAYzH,IAAapX,GAAUoX,IAAa3W,EAClEsd,EAAI3Y,KAAKgS,QACJ,GAAIkG,MAAMW,QAAQ7G,GAAW,CAClC,GAAIA,aAAoBiG,GAAM,OAAOjG,EACrC2G,EAAM3G,CACR,CAEA,OAAO,IAAIiG,GAtEb,SAAqBU,GACnB,MAAMe,EAAc,GAEpB,IAAK,IAAIxR,EAAI,EAAGA,EAAIyQ,EAAIjc,OAAQwL,GAAK,GACE,IAAjCwR,EAAYL,QAAQV,EAAIzQ,KAAYwR,EAAY1Z,KAAK2Y,EAAIzQ,IAG/D,OAAOwR,CACT,CA8DkBC,CAAYhB,GAC9B,CAEAlK,GAAEmL,GAAK3B,GAAKc,UA4yCZ,MAAMc,GAAY,gBAAgBC,MAAM,KAExC,SAASC,GAASC,GAiBhB,OAhBA,YAAyBC,GACvB,QAAuB,IAAZA,EAAK,GAAoB,CAClC,IAAK,IAAI/R,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EAChC2R,GAAUR,QAAQW,GAAQ,IACxBA,KAAQvf,KAAKyN,GAAIzN,KAAKyN,GAAG8R,KAC3BvL,GAAEhU,KAAKyN,IAAIsB,QAAQwQ,IAKzB,OAAOvf,IACT,CAEA,OAAOA,KAAKyf,GAAGF,KAASC,EAC1B,CAGF,CAEcF,GAAS,SACVA,GAAS,QACRA,GAAS,SACPA,GAAS,WACRA,GAAS,YACZA,GAAS,SACPA,GAAS,WACRA,GAAS,YACXA,GAAS,UACTA,GAAS,UACNA,GAAS,aACTA,GAAS,aACXA,GAAS,WACNA,GAAS,cACTA,GAAS,cACXA,GAAS,YACRA,GAAS,aACRA,GAAS,cACXA,GAAS,YACRA,GAAS,aACZA,GAAS,UACTA,GAAS,UCr9CxB,MAAMI,GAAU,CACdC,SDiIF,YAAqBC,GACnB,MAAMC,EAAa5B,GAAU2B,EAAQhG,KAAIkG,GAAKA,EAAET,MAAM,QAItD,OAHArf,KAAK+B,SAAQ4J,IACXA,EAAGnK,UAAU0B,OAAO2c,EAAW,IAE1B7f,IACT,ECtIE+f,YDwIF,YAAwBH,GACtB,MAAMC,EAAa5B,GAAU2B,EAAQhG,KAAIkG,GAAKA,EAAET,MAAM,QAItD,OAHArf,KAAK+B,SAAQ4J,IACXA,EAAGnK,UAAU2B,UAAU0c,EAAW,IAE7B7f,IACT,EC7IEggB,SDwJF,YAAqBJ,GACnB,MAAMC,EAAa5B,GAAU2B,EAAQhG,KAAIkG,GAAKA,EAAET,MAAM,QACtD,OAAOhB,GAAYre,MAAM2L,GAChBkU,EAAWtB,QAAO0B,GAAatU,EAAGnK,UAAUC,SAASwe,KAAYhe,OAAS,IAChFA,OAAS,CACd,EC5JEie,YD8IF,YAAwBN,GACtB,MAAMC,EAAa5B,GAAU2B,EAAQhG,KAAIkG,GAAKA,EAAET,MAAM,QACtDrf,KAAK+B,SAAQ4J,IACXkU,EAAW9d,SAAQke,IACjBtU,EAAGnK,UAAU2e,OAAOF,EAAU,GAC9B,GAEN,ECpJEG,KD6JF,SAAcC,EAAO3f,GACnB,GAAyB,IAArBsB,UAAUC,QAAiC,iBAAVoe,EAEnC,OAAIrgB,KAAK,GAAWA,KAAK,GAAG6O,aAAawR,QACzC,EAIF,IAAK,IAAI5S,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EACpC,GAAyB,IAArBzL,UAAUC,OAEZjC,KAAKyN,GAAG9I,aAAa0b,EAAO3f,QAG5B,IAAK,MAAM4f,KAAYD,EACrBrgB,KAAKyN,GAAG6S,GAAYD,EAAMC,GAC1BtgB,KAAKyN,GAAG9I,aAAa2b,EAAUD,EAAMC,IAK3C,OAAOtgB,IACT,EClLEugB,WDoLF,SAAoBH,GAClB,IAAK,IAAI3S,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EACpCzN,KAAKyN,GAAGpF,gBAAgB+X,GAG1B,OAAOpgB,IACT,ECzLEwgB,UD6TF,SAAmBA,GACjB,IAAK,IAAI/S,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EACpCzN,KAAKyN,GAAGpL,MAAMme,UAAYA,EAG5B,OAAOxgB,IACT,EClUEsC,WDoUF,SAAoBme,GAClB,IAAK,IAAIhT,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EACpCzN,KAAKyN,GAAGpL,MAAMqe,mBAAyC,iBAAbD,EAAyB,GAAEA,MAAeA,EAGtF,OAAOzgB,IACT,ECzUEyf,GD2UF,YAAeD,GACb,IAAKmB,EAAWC,EAAgBC,EAAUC,GAAWtB,EASrD,SAASuB,EAAgB9c,GACvB,MAAMlD,EAASkD,EAAElD,OACjB,IAAKA,EAAQ,OACb,MAAMigB,EAAY/c,EAAElD,OAAOkgB,eAAiB,GAM5C,GAJID,EAAUpC,QAAQ3a,GAAK,GACzB+c,EAAUE,QAAQjd,GAGhB+P,GAAEjT,GAAQogB,GAAGP,GAAiBC,EAASO,MAAMrgB,EAAQigB,OAAgB,CACvE,MAAMK,EAAUrN,GAAEjT,GAAQsgB,UAE1B,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAQpf,OAAQqf,GAAK,EACnCtN,GAAEqN,EAAQC,IAAIH,GAAGP,IAAiBC,EAASO,MAAMC,EAAQC,GAAIN,EAErE,CACF,CAEA,SAASO,EAAYtd,GACnB,MAAM+c,EAAY/c,GAAKA,EAAElD,QAASkD,EAAElD,OAAOkgB,eAAsB,GAE7DD,EAAUpC,QAAQ3a,GAAK,GACzB+c,EAAUE,QAAQjd,GAGpB4c,EAASO,MAAMphB,KAAMghB,EACvB,CAjCuB,mBAAZxB,EAAK,MACbmB,EAAWE,EAAUC,GAAWtB,EACjCoB,OAAiB1e,GAGd4e,IAASA,GAAU,GA8BxB,MAAMU,EAASb,EAAUtB,MAAM,KAC/B,IAAIoC,EAEJ,IAAK,IAAIhU,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EAAG,CACvC,MAAM9B,EAAK3L,KAAKyN,GAEhB,GAAKmT,EAaH,IAAKa,EAAI,EAAGA,EAAID,EAAOvf,OAAQwf,GAAK,EAAG,CACrC,MAAM3P,EAAQ0P,EAAOC,GAChB9V,EAAG+V,oBAAmB/V,EAAG+V,kBAAoB,CAAC,GAC9C/V,EAAG+V,kBAAkB5P,KAAQnG,EAAG+V,kBAAkB5P,GAAS,IAChEnG,EAAG+V,kBAAkB5P,GAAOvM,KAAK,CAC/Bsb,WACAc,cAAeZ,IAEjBpV,EAAG9K,iBAAiBiR,EAAOiP,EAAiBD,EAC9C,MArBA,IAAKW,EAAI,EAAGA,EAAID,EAAOvf,OAAQwf,GAAK,EAAG,CACrC,MAAM3P,EAAQ0P,EAAOC,GAChB9V,EAAGiW,gBAAejW,EAAGiW,cAAgB,CAAC,GACtCjW,EAAGiW,cAAc9P,KAAQnG,EAAGiW,cAAc9P,GAAS,IACxDnG,EAAGiW,cAAc9P,GAAOvM,KAAK,CAC3Bsb,WACAc,cAAeJ,IAEjB5V,EAAG9K,iBAAiBiR,EAAOyP,EAAaT,EAC1C,CAcJ,CAEA,OAAO9gB,IACT,ECjZE6hB,IDmZF,YAAgBrC,GACd,IAAKmB,EAAWC,EAAgBC,EAAUC,GAAWtB,EAE9B,mBAAZA,EAAK,MACbmB,EAAWE,EAAUC,GAAWtB,EACjCoB,OAAiB1e,GAGd4e,IAASA,GAAU,GACxB,MAAMU,EAASb,EAAUtB,MAAM,KAE/B,IAAK,IAAI5R,EAAI,EAAGA,EAAI+T,EAAOvf,OAAQwL,GAAK,EAAG,CACzC,MAAMqE,EAAQ0P,EAAO/T,GAErB,IAAK,IAAIgU,EAAI,EAAGA,EAAIzhB,KAAKiC,OAAQwf,GAAK,EAAG,CACvC,MAAM9V,EAAK3L,KAAKyhB,GAChB,IAAIK,EAQJ,IANKlB,GAAkBjV,EAAGiW,cACxBE,EAAWnW,EAAGiW,cAAc9P,GACnB8O,GAAkBjV,EAAG+V,oBAC9BI,EAAWnW,EAAG+V,kBAAkB5P,IAG9BgQ,GAAYA,EAAS7f,OACvB,IAAK,IAAIqf,EAAIQ,EAAS7f,OAAS,EAAGqf,GAAK,EAAGA,GAAK,EAAG,CAChD,MAAMS,EAAUD,EAASR,GAErBT,GAAYkB,EAAQlB,WAAaA,GAG1BA,GAAYkB,EAAQlB,UAAYkB,EAAQlB,SAASmB,WAAaD,EAAQlB,SAASmB,YAAcnB,GAFtGlV,EAAGrC,oBAAoBwI,EAAOiQ,EAAQJ,cAAeb,GACrDgB,EAASG,OAAOX,EAAG,IAITT,IACVlV,EAAGrC,oBAAoBwI,EAAOiQ,EAAQJ,cAAeb,GACrDgB,EAASG,OAAOX,EAAG,GAEvB,CAEJ,CACF,CAEA,OAAOthB,IACT,EC9bE+O,QDsdF,YAAoByQ,GAClB,MAAMrf,EAASmd,IACTkE,EAAShC,EAAK,GAAGH,MAAM,KACvB2B,EAAYxB,EAAK,GAEvB,IAAK,IAAI/R,EAAI,EAAGA,EAAI+T,EAAOvf,OAAQwL,GAAK,EAAG,CACzC,MAAMqE,EAAQ0P,EAAO/T,GAErB,IAAK,IAAIgU,EAAI,EAAGA,EAAIzhB,KAAKiC,OAAQwf,GAAK,EAAG,CACvC,MAAM9V,EAAK3L,KAAKyhB,GAEhB,GAAIthB,EAAO0c,YAAa,CACtB,MAAM/b,EAAM,IAAIX,EAAO0c,YAAY/K,EAAO,CACxCoQ,OAAQlB,EACRmB,SAAS,EACTC,YAAY,IAEdzW,EAAGsV,cAAgBzB,EAAKjB,QAAO,CAAC8D,EAAMC,IAAcA,EAAY,IAChE3W,EAAG4W,cAAczhB,GACjB6K,EAAGsV,cAAgB,UACZtV,EAAGsV,aACZ,CACF,CACF,CAEA,OAAOjhB,IACT,EC/eEwiB,cDigBF,SAAuBtM,GACrB,MAAMuM,EAAMziB,KAYZ,OAJIkW,GACFuM,EAAIhD,GAAG,iBAPT,SAASiD,EAAaze,GAChBA,EAAElD,SAAWf,OACjBkW,EAASsI,KAAKxe,KAAMiE,GACpBwe,EAAIZ,IAAI,gBAAiBa,GAC3B,IAMO1iB,IACT,EC9gBE2iB,WD8iBF,SAAoBC,GAClB,GAAI5iB,KAAKiC,OAAS,EAAG,CACnB,GAAI2gB,EAAgB,CAClB,MAAMC,EAAS7iB,KAAK6iB,SACpB,OAAO7iB,KAAK,GAAG8iB,YAAcC,WAAWF,EAAO9F,iBAAiB,iBAAmBgG,WAAWF,EAAO9F,iBAAiB,eACxH,CAEA,OAAO/c,KAAK,GAAG8iB,WACjB,CAEA,OAAO,IACT,ECxjBEE,YDwkBF,SAAqBJ,GACnB,GAAI5iB,KAAKiC,OAAS,EAAG,CACnB,GAAI2gB,EAAgB,CAClB,MAAMC,EAAS7iB,KAAK6iB,SACpB,OAAO7iB,KAAK,GAAGmF,aAAe4d,WAAWF,EAAO9F,iBAAiB,eAAiBgG,WAAWF,EAAO9F,iBAAiB,iBACvH,CAEA,OAAO/c,KAAK,GAAGmF,YACjB,CAEA,OAAO,IACT,ECllBE0d,ODmoBF,WACE,MAAM1iB,EAASmd,IACf,OAAItd,KAAK,GAAWG,EAAO2c,iBAAiB9c,KAAK,GAAI,MAC9C,CAAC,CACV,ECtoBEijB,ODmlBF,WACE,GAAIjjB,KAAKiC,OAAS,EAAG,CACnB,MAAM9B,EAASmd,IACT1c,EAAW0b,IACX3Q,EAAK3L,KAAK,GACVkjB,EAAMvX,EAAGwX,wBACTvb,EAAOhH,EAASgH,KAChBwb,EAAYzX,EAAGyX,WAAaxb,EAAKwb,WAAa,EAC9CC,EAAa1X,EAAG0X,YAAczb,EAAKyb,YAAc,EACjDxb,EAAY8D,IAAOxL,EAASA,EAAOmjB,QAAU3X,EAAG9D,UAChD0b,EAAa5X,IAAOxL,EAASA,EAAOqjB,QAAU7X,EAAG4X,WACvD,MAAO,CACLpb,IAAK+a,EAAI/a,IAAMN,EAAYub,EAC3BK,KAAMP,EAAIO,KAAOF,EAAaF,EAElC,CAEA,OAAO,IACT,ECpmBEK,IDuoBF,SAAaC,EAAOjjB,GAClB,MAAMP,EAASmd,IACf,IAAI7P,EAEJ,GAAyB,IAArBzL,UAAUC,OAAc,CAC1B,GAAqB,iBAAV0hB,EAGJ,CAEL,IAAKlW,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EAChC,IAAK,MAAMmW,KAAQD,EACjB3jB,KAAKyN,GAAGpL,MAAMuhB,GAAQD,EAAMC,GAIhC,OAAO5jB,IACT,CAVE,GAAIA,KAAK,GAAI,OAAOG,EAAO2c,iBAAiB9c,KAAK,GAAI,MAAM+c,iBAAiB4G,EAWhF,CAEA,GAAyB,IAArB3hB,UAAUC,QAAiC,iBAAV0hB,EAAoB,CAEvD,IAAKlW,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EAChCzN,KAAKyN,GAAGpL,MAAMshB,GAASjjB,EAGzB,OAAOV,IACT,CAEA,OAAOA,IACT,ECpqBE6jB,KDsqBF,SAAc3N,GACZ,OAAKA,GACLlW,KAAK+B,SAAQ,CAAC4J,EAAIjH,KAChBwR,EAASkL,MAAMzV,EAAI,CAACA,EAAIjH,GAAO,IAE1B1E,MAJeA,IAKxB,EC3qBE0e,KDkrBF,SAAcA,GACZ,QAAoB,IAATA,EACT,OAAO1e,KAAK,GAAKA,KAAK,GAAG0a,UAAY,KAGvC,IAAK,IAAIjN,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EACpCzN,KAAKyN,GAAGiN,UAAYgE,EAGtB,OAAO1e,IACT,EC3rBEsZ,KD6rBF,SAAcA,GACZ,QAAoB,IAATA,EACT,OAAOtZ,KAAK,GAAKA,KAAK,GAAGwT,YAAYmL,OAAS,KAGhD,IAAK,IAAIlR,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EACpCzN,KAAKyN,GAAG+F,YAAc8F,EAGxB,OAAOtZ,IACT,ECtsBEmhB,GDwsBF,SAAY5J,GACV,MAAMpX,EAASmd,IACT1c,EAAW0b,IACX3Q,EAAK3L,KAAK,GAChB,IAAI8jB,EACArW,EACJ,IAAK9B,QAA0B,IAAb4L,EAA0B,OAAO,EAEnD,GAAwB,iBAAbA,EAAuB,CAChC,GAAI5L,EAAGrK,QAAS,OAAOqK,EAAGrK,QAAQiW,GAClC,GAAI5L,EAAGoY,sBAAuB,OAAOpY,EAAGoY,sBAAsBxM,GAC9D,GAAI5L,EAAGqY,kBAAmB,OAAOrY,EAAGqY,kBAAkBzM,GAGtD,IAFAuM,EAAc9P,GAAEuD,GAEX9J,EAAI,EAAGA,EAAIqW,EAAY7hB,OAAQwL,GAAK,EACvC,GAAIqW,EAAYrW,KAAO9B,EAAI,OAAO,EAGpC,OAAO,CACT,CAEA,GAAI4L,IAAa3W,EACf,OAAO+K,IAAO/K,EAGhB,GAAI2W,IAAapX,EACf,OAAOwL,IAAOxL,EAGhB,GAAIoX,EAASyH,UAAYzH,aAAoBiG,GAAM,CAGjD,IAFAsG,EAAcvM,EAASyH,SAAW,CAACzH,GAAYA,EAE1C9J,EAAI,EAAGA,EAAIqW,EAAY7hB,OAAQwL,GAAK,EACvC,GAAIqW,EAAYrW,KAAO9B,EAAI,OAAO,EAGpC,OAAO,CACT,CAEA,OAAO,CACT,EC/uBEjH,MDivBF,WACE,IACI+I,EADAwW,EAAQjkB,KAAK,GAGjB,GAAIikB,EAAO,CAGT,IAFAxW,EAAI,EAEuC,QAAnCwW,EAAQA,EAAMC,kBACG,IAAnBD,EAAMjF,WAAgBvR,GAAK,GAGjC,OAAOA,CACT,CAGF,EC/vBE0W,GDiwBF,SAAYzf,GACV,QAAqB,IAAVA,EAAuB,OAAO1E,KACzC,MAAMiC,EAASjC,KAAKiC,OAEpB,GAAIyC,EAAQzC,EAAS,EACnB,OAAO+R,GAAE,IAGX,GAAItP,EAAQ,EAAG,CACb,MAAM0f,EAAcniB,EAASyC,EAC7B,OAA4BsP,GAAxBoQ,EAAc,EAAY,GACrB,CAACpkB,KAAKokB,IACjB,CAEA,OAAOpQ,GAAE,CAAChU,KAAK0E,IACjB,EC/wBEoV,ODixBF,YAAmBuK,GACjB,IAAIC,EACJ,MAAM1jB,EAAW0b,IAEjB,IAAK,IAAIgF,EAAI,EAAGA,EAAI+C,EAAIpiB,OAAQqf,GAAK,EAAG,CACtCgD,EAAWD,EAAI/C,GAEf,IAAK,IAAI7T,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EACpC,GAAwB,iBAAb6W,EAAuB,CAChC,MAAMC,EAAU3jB,EAASyZ,cAAc,OAGvC,IAFAkK,EAAQ7J,UAAY4J,EAEbC,EAAQC,YACbxkB,KAAKyN,GAAG6M,YAAYiK,EAAQC,WAEhC,MAAO,GAAIF,aAAoB9G,GAC7B,IAAK,IAAIiE,EAAI,EAAGA,EAAI6C,EAASriB,OAAQwf,GAAK,EACxCzhB,KAAKyN,GAAG6M,YAAYgK,EAAS7C,SAG/BzhB,KAAKyN,GAAG6M,YAAYgK,EAG1B,CAEA,OAAOtkB,IACT,EC1yBEykB,QDizBF,SAAiBH,GACf,MAAM1jB,EAAW0b,IACjB,IAAI7O,EACAgU,EAEJ,IAAKhU,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EAChC,GAAwB,iBAAb6W,EAAuB,CAChC,MAAMC,EAAU3jB,EAASyZ,cAAc,OAGvC,IAFAkK,EAAQ7J,UAAY4J,EAEf7C,EAAI8C,EAAQ7I,WAAWzZ,OAAS,EAAGwf,GAAK,EAAGA,GAAK,EACnDzhB,KAAKyN,GAAGiX,aAAaH,EAAQ7I,WAAW+F,GAAIzhB,KAAKyN,GAAGiO,WAAW,GAEnE,MAAO,GAAI4I,aAAoB9G,GAC7B,IAAKiE,EAAI,EAAGA,EAAI6C,EAASriB,OAAQwf,GAAK,EACpCzhB,KAAKyN,GAAGiX,aAAaJ,EAAS7C,GAAIzhB,KAAKyN,GAAGiO,WAAW,SAGvD1b,KAAKyN,GAAGiX,aAAaJ,EAAUtkB,KAAKyN,GAAGiO,WAAW,IAItD,OAAO1b,IACT,ECv0BE2kB,KD02BF,SAAcpN,GACZ,OAAIvX,KAAKiC,OAAS,EACZsV,EACEvX,KAAK,GAAG4kB,oBAAsB5Q,GAAEhU,KAAK,GAAG4kB,oBAAoBzD,GAAG5J,GAC1DvD,GAAE,CAAChU,KAAK,GAAG4kB,qBAGb5Q,GAAE,IAGPhU,KAAK,GAAG4kB,mBAA2B5Q,GAAE,CAAChU,KAAK,GAAG4kB,qBAC3C5Q,GAAE,IAGJA,GAAE,GACX,ECx3BE6Q,QD03BF,SAAiBtN,GACf,MAAMuN,EAAU,GAChB,IAAInZ,EAAK3L,KAAK,GACd,IAAK2L,EAAI,OAAOqI,GAAE,IAElB,KAAOrI,EAAGiZ,oBAAoB,CAC5B,MAAMD,EAAOhZ,EAAGiZ,mBAEZrN,EACEvD,GAAE2Q,GAAMxD,GAAG5J,IAAWuN,EAAQvf,KAAKof,GAClCG,EAAQvf,KAAKof,GAEpBhZ,EAAKgZ,CACP,CAEA,OAAO3Q,GAAE8Q,EACX,ECz4BEC,KD24BF,SAAcxN,GACZ,GAAIvX,KAAKiC,OAAS,EAAG,CACnB,MAAM0J,EAAK3L,KAAK,GAEhB,OAAIuX,EACE5L,EAAGqZ,wBAA0BhR,GAAErI,EAAGqZ,wBAAwB7D,GAAG5J,GACxDvD,GAAE,CAACrI,EAAGqZ,yBAGRhR,GAAE,IAGPrI,EAAGqZ,uBAA+BhR,GAAE,CAACrI,EAAGqZ,yBACrChR,GAAE,GACX,CAEA,OAAOA,GAAE,GACX,EC35BEiR,QD65BF,SAAiB1N,GACf,MAAM2N,EAAU,GAChB,IAAIvZ,EAAK3L,KAAK,GACd,IAAK2L,EAAI,OAAOqI,GAAE,IAElB,KAAOrI,EAAGqZ,wBAAwB,CAChC,MAAMD,EAAOpZ,EAAGqZ,uBAEZzN,EACEvD,GAAE+Q,GAAM5D,GAAG5J,IAAW2N,EAAQ3f,KAAKwf,GAClCG,EAAQ3f,KAAKwf,GAEpBpZ,EAAKoZ,CACP,CAEA,OAAO/Q,GAAEkR,EACX,EC56BEhkB,ODk7BF,SAAgBqW,GACd,MAAM8J,EAAU,GAEhB,IAAK,IAAI5T,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EACT,OAAvBzN,KAAKyN,GAAGuM,aACNzC,EACEvD,GAAEhU,KAAKyN,GAAGuM,YAAYmH,GAAG5J,IAAW8J,EAAQ9b,KAAKvF,KAAKyN,GAAGuM,YAE7DqH,EAAQ9b,KAAKvF,KAAKyN,GAAGuM,aAK3B,OAAOhG,GAAEqN,EACX,EC/7BEA,QDi8BF,SAAiB9J,GACf,MAAM8J,EAAU,GAEhB,IAAK,IAAI5T,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EAAG,CACvC,IAAIvM,EAASlB,KAAKyN,GAAGuM,WAErB,KAAO9Y,GACDqW,EACEvD,GAAE9S,GAAQigB,GAAG5J,IAAW8J,EAAQ9b,KAAKrE,GAEzCmgB,EAAQ9b,KAAKrE,GAGfA,EAASA,EAAO8Y,UAEpB,CAEA,OAAOhG,GAAEqN,EACX,ECl9BErgB,QDo9BF,SAAiBuW,GACf,IAAIvW,EAAUhB,KAEd,YAAwB,IAAbuX,EACFvD,GAAE,KAGNhT,EAAQmgB,GAAG5J,KACdvW,EAAUA,EAAQqgB,QAAQ9J,GAAU4M,GAAG,IAGlCnjB,EACT,EC/9BEmkB,KDi+BF,SAAc5N,GACZ,MAAM6N,EAAgB,GAEtB,IAAK,IAAI3X,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EAAG,CACvC,MAAM4X,EAAQrlB,KAAKyN,GAAG3L,iBAAiByV,GAEvC,IAAK,IAAIkK,EAAI,EAAGA,EAAI4D,EAAMpjB,OAAQwf,GAAK,EACrC2D,EAAc7f,KAAK8f,EAAM5D,GAE7B,CAEA,OAAOzN,GAAEoR,EACX,EC5+BEzL,SD8+BF,SAAkBpC,GAChB,MAAMoC,EAAW,GAEjB,IAAK,IAAIlM,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EAAG,CACvC,MAAMiO,EAAa1b,KAAKyN,GAAGkM,SAE3B,IAAK,IAAI8H,EAAI,EAAGA,EAAI/F,EAAWzZ,OAAQwf,GAAK,EACrClK,IAAYvD,GAAE0H,EAAW+F,IAAIN,GAAG5J,IACnCoC,EAASpU,KAAKmW,EAAW+F,GAG/B,CAEA,OAAOzN,GAAE2F,EACX,EC3/BE4E,OD6pBF,SAAgBrI,GAEd,OAAOlC,GADQqK,GAAYre,KAAMkW,GAEnC,EC/pBE/S,OD4/BF,WACE,IAAK,IAAIsK,EAAI,EAAGA,EAAIzN,KAAKiC,OAAQwL,GAAK,EAChCzN,KAAKyN,GAAGuM,YAAYha,KAAKyN,GAAGuM,WAAWsL,YAAYtlB,KAAKyN,IAG9D,OAAOzN,IACT,GChgCA4S,OAAOwI,KAAKsE,IAAS3d,SAAQwjB,IAC3B3S,OAAOiL,eAAe7J,GAAEmL,GAAIoG,EAAY,CACtC7kB,MAAOgf,GAAQ6F,GACfC,UAAU,GACV,IAEJ,UC5BA,SAASC,GAASvP,EAAU/P,EAAQ,GAClC,OAAOzD,WAAWwT,EAAU/P,EAC9B,CAEA,SAASuf,KACP,OAAOzI,KAAKyI,KACd,CA4DA,SAAS3K,GAAS4K,GAChB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAE1K,aAAkE,WAAnDrI,OAAO0L,UAAUsH,SAASpH,KAAKmH,GAAG5Q,MAAM,GAAI,EAC7G,CAWA,SAASmG,MAAUsE,GACjB,MAAMqG,EAAKjT,OAAO4M,EAAK,IACjBsG,EAAW,CAAC,YAAa,cAAe,aAE9C,IAAK,IAAIrY,EAAI,EAAGA,EAAI+R,EAAKvd,OAAQwL,GAAK,EAAG,CACvC,MAAMsY,EAAavG,EAAK/R,GAExB,GAAIsY,UAhBQC,EAgBmDD,IAd3C,oBAAX5lB,aAAwD,IAAvBA,OAAO8lB,YAC1CD,aAAgBC,YAGlBD,IAA2B,IAAlBA,EAAKhH,UAAoC,KAAlBgH,EAAKhH,YAUkC,CAC1E,MAAMkH,EAAYtT,OAAOwI,KAAKxI,OAAOmT,IAAaxH,QAAO9d,GAAOqlB,EAASlH,QAAQne,GAAO,IAExF,IAAK,IAAI0lB,EAAY,EAAGC,EAAMF,EAAUjkB,OAAQkkB,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUH,EAAUC,GACpBG,EAAO1T,OAAO2T,yBAAyBR,EAAYM,QAE5CnkB,IAATokB,GAAsBA,EAAKE,aACzBzL,GAAS8K,EAAGQ,KAAatL,GAASgL,EAAWM,IAC3CN,EAAWM,GAASI,WACtBZ,EAAGQ,GAAWN,EAAWM,GAEzBnL,GAAO2K,EAAGQ,GAAUN,EAAWM,KAEvBtL,GAAS8K,EAAGQ,KAAatL,GAASgL,EAAWM,KACvDR,EAAGQ,GAAW,CAAC,EAEXN,EAAWM,GAASI,WACtBZ,EAAGQ,GAAWN,EAAWM,GAEzBnL,GAAO2K,EAAGQ,GAAUN,EAAWM,KAGjCR,EAAGQ,GAAWN,EAAWM,GAG/B,CACF,CACF,CA5CF,IAAgBL,EA8Cd,OAAOH,CACT,CAEA,SAASa,GAAe/a,EAAIgb,EAASC,GACnCjb,EAAGtJ,MAAMwkB,YAAYF,EAASC,EAChC,CAEA,SAASE,IAAqB,OAC5BC,EAAM,eACNC,EAAc,KACdC,IAEA,MAAM9mB,EAASmd,IACT4J,GAAiBH,EAAOI,UAC9B,IACIC,EADAC,EAAY,KAEhB,MAAM5G,EAAWsG,EAAOO,OAAOC,MAC/BR,EAAOS,UAAUnlB,MAAMolB,eAAiB,OACxCtnB,EAAOkd,qBAAqB0J,EAAOW,gBACnC,MAAMC,EAAMX,EAAiBE,EAAgB,OAAS,OAEhDU,EAAeA,CAACC,EAAS9mB,IACd,SAAR4mB,GAAkBE,GAAW9mB,GAAkB,SAAR4mB,GAAkBE,GAAW9mB,EAGvE+mB,EAAUA,KACdV,GAAO,IAAInK,MAAO8K,UAEA,OAAdV,IACFA,EAAYD,GAGd,MAAMY,EAAWC,KAAKC,IAAID,KAAKE,KAAKf,EAAOC,GAAa5G,EAAU,GAAI,GAChE2H,EAAe,GAAMH,KAAKI,IAAIL,EAAWC,KAAKK,IAAM,EAC1D,IAAIC,EAAkBrB,EAAgBkB,GAAgBpB,EAAiBE,GAUvE,GARIU,EAAaW,EAAiBvB,KAChCuB,EAAkBvB,GAGpBD,EAAOS,UAAUpf,SAAS,CACxB,CAAC6e,GAAOsB,IAGNX,EAAaW,EAAiBvB,GAUhC,OATAD,EAAOS,UAAUnlB,MAAMmmB,SAAW,SAClCzB,EAAOS,UAAUnlB,MAAMolB,eAAiB,GACxC/kB,YAAW,KACTqkB,EAAOS,UAAUnlB,MAAMmmB,SAAW,GAClCzB,EAAOS,UAAUpf,SAAS,CACxB,CAAC6e,GAAOsB,GACR,SAEJpoB,EAAOkd,qBAAqB0J,EAAOW,gBAIrCX,EAAOW,eAAiBvnB,EAAOid,sBAAsB0K,EAAQ,EAG/DA,GACF,CCjMA,IAAIW,GCCAC,GCDAC,GF+BJ,SAASC,KAKP,OAJKH,KACHA,GA/BJ,WACE,MAAMtoB,EAASmd,IACT1c,EAAW0b,IACjB,MAAO,CACLuM,aAAcjoB,EAAS2G,iBAAmB,mBAAoB3G,EAAS2G,gBAAgBlF,MACvFymB,SAAU,iBAAkB3oB,GAAUA,EAAO4oB,eAAiBnoB,aAAoBT,EAAO4oB,eACzFC,gBAAiB,WACf,IAAIC,GAAkB,EAEtB,IACE,MAAMC,EAAOtW,OAAOiL,eAAe,CAAC,EAAG,UAAW,CAEhDC,GAAAA,GACEmL,GAAkB,CACpB,IAGF9oB,EAAOU,iBAAiB,sBAAuB,KAAMqoB,EACvD,CAAE,MAAOjlB,GAAI,CAGb,OAAOglB,CACT,CAhBiB,GAiBjBE,SACS,mBAAoBhpB,EAGjC,CAIcipB,IAGLX,EACT,CGrCA,QACEhJ,EAAAA,CAAG+B,EAAQO,EAASsH,GAClB,MAAM5hB,EAAOzH,KACb,GAAuB,mBAAZ+hB,EAAwB,OAAOta,EAC1C,MAAMuL,EAASqW,EAAW,UAAY,OAKtC,OAJA7H,EAAOnC,MAAM,KAAKtd,SAAQ+P,IACnBrK,EAAK6hB,gBAAgBxX,KAAQrK,EAAK6hB,gBAAgBxX,GAAS,IAChErK,EAAK6hB,gBAAgBxX,GAAOkB,GAAQ+O,EAAQ,IAEvCta,CACT,EAEA8hB,IAAAA,CAAK/H,EAAQO,EAASsH,GACpB,MAAM5hB,EAAOzH,KACb,GAAuB,mBAAZ+hB,EAAwB,OAAOta,EAE1C,SAAS+hB,KAAehK,GACtB/X,EAAKoa,IAAIL,EAAQgI,GAEbA,EAAYC,uBACPD,EAAYC,eAGrB1H,EAAQX,MAAM3Z,EAAM+X,EACtB,CAGA,OADAgK,EAAYC,eAAiB1H,EACtBta,EAAKgY,GAAG+B,EAAQgI,EAAaH,EACtC,EAEAK,KAAAA,CAAM3H,EAASsH,GACb,MAAM5hB,EAAOzH,KACb,GAAuB,mBAAZ+hB,EAAwB,OAAOta,EAC1C,MAAMuL,EAASqW,EAAW,UAAY,OAMtC,OAJI5hB,EAAKkiB,mBAAmB/K,QAAQmD,GAAW,GAC7Cta,EAAKkiB,mBAAmB3W,GAAQ+O,GAG3Bta,CACT,EAEAmiB,MAAAA,CAAO7H,GACL,MAAMta,EAAOzH,KACb,IAAKyH,EAAKkiB,mBAAoB,OAAOliB,EACrC,MAAM/C,EAAQ+C,EAAKkiB,mBAAmB/K,QAAQmD,GAM9C,OAJIrd,GAAS,GACX+C,EAAKkiB,mBAAmB1H,OAAOvd,EAAO,GAGjC+C,CACT,EAEAoa,GAAAA,CAAIL,EAAQO,GACV,MAAMta,EAAOzH,KACb,OAAKyH,EAAK6hB,iBACV9H,EAAOnC,MAAM,KAAKtd,SAAQ+P,SACD,IAAZiQ,EACTta,EAAK6hB,gBAAgBxX,GAAS,GACrBrK,EAAK6hB,gBAAgBxX,IAC9BrK,EAAK6hB,gBAAgBxX,GAAO/P,SAAQ,CAAC8nB,EAAcnlB,MAC7CmlB,IAAiB9H,GAAW8H,EAAaJ,gBAAkBI,EAAaJ,iBAAmB1H,IAC7Fta,EAAK6hB,gBAAgBxX,GAAOmQ,OAAOvd,EAAO,EAC5C,GAEJ,IAEK+C,GAZ2BA,CAapC,EAEAqiB,IAAAA,IAAQtK,GACN,MAAM/X,EAAOzH,KACb,IAAKyH,EAAK6hB,gBAAiB,OAAO7hB,EAClC,IAAI+Z,EACAa,EACA5D,EA2BJ,MAzBuB,iBAAZe,EAAK,IAAmB/B,MAAMW,QAAQoB,EAAK,KACpDgC,EAAShC,EAAK,GACd6C,EAAO7C,EAAKzK,MAAM,EAAGyK,EAAKvd,QAC1Bwc,EAAUhX,IAEV+Z,EAAShC,EAAK,GAAGgC,OACjBa,EAAO7C,EAAK,GAAG6C,KACf5D,EAAUe,EAAK,GAAGf,SAAWhX,GAG/B4a,EAAKnB,QAAQzC,IACOhB,MAAMW,QAAQoD,GAAUA,EAASA,EAAOnC,MAAM,MACtDtd,SAAQ+P,IACdrK,EAAKkiB,oBAAsBliB,EAAKkiB,mBAAmB1nB,QACrDwF,EAAKkiB,mBAAmB5nB,SAAQ8nB,IAC9BA,EAAazI,MAAM3C,EAAS,CAAC3M,KAAUuQ,GAAM,IAI7C5a,EAAK6hB,iBAAmB7hB,EAAK6hB,gBAAgBxX,IAC/CrK,EAAK6hB,gBAAgBxX,GAAO/P,SAAQ8nB,IAClCA,EAAazI,MAAM3C,EAAS4D,EAAK,GAErC,IAEK5a,CACT,GChGF,IACEsiB,WCVa,WACb,MAAMhD,EAAS/mB,KACf,IAAIgqB,EACA3kB,EACJ,MAAM4kB,EAAMlD,EAAOkD,IAGjBD,OADiC,IAAxBjD,EAAOO,OAAO0C,OAAiD,OAAxBjD,EAAOO,OAAO0C,MACtDjD,EAAOO,OAAO0C,MAEdC,EAAI,GAAGziB,YAIfnC,OADkC,IAAzB0hB,EAAOO,OAAOjiB,QAAmD,OAAzB0hB,EAAOO,OAAOjiB,OACtD0hB,EAAOO,OAAOjiB,OAEd4kB,EAAI,GAAGC,aAGJ,IAAVF,GAAejD,EAAOoD,gBAA6B,IAAX9kB,GAAgB0hB,EAAOqD,eAKnEJ,EAAQA,EAAQK,SAASJ,EAAIvG,IAAI,iBAAmB,EAAG,IAAM2G,SAASJ,EAAIvG,IAAI,kBAAoB,EAAG,IACrGre,EAASA,EAASglB,SAASJ,EAAIvG,IAAI,gBAAkB,EAAG,IAAM2G,SAASJ,EAAIvG,IAAI,mBAAqB,EAAG,IACnG4G,OAAOC,MAAMP,KAAQA,EAAQ,GAC7BM,OAAOC,MAAMllB,KAASA,EAAS,GACnCuN,OAAO4X,OAAOzD,EAAQ,CACpBiD,QACA3kB,SACAgL,KAAM0W,EAAOoD,eAAiBH,EAAQ3kB,IAE1C,EDrBEolB,aEVa,WACb,MAAM1D,EAAS/mB,KAEf,SAAS0qB,EAAkBC,GACzB,OAAI5D,EAAOoD,eACFQ,EAIF,CACL,MAAS,SACT,aAAc,cACd,iBAAkB,eAClB,cAAe,aACf,eAAgB,gBAChB,eAAgB,cAChB,gBAAiB,iBACjB,YAAe,gBACfA,EACJ,CAEA,SAASC,EAA0B5E,EAAM6E,GACvC,OAAO9H,WAAWiD,EAAKjJ,iBAAiB2N,EAAkBG,KAAW,EACvE,CAEA,MAAMvD,EAASP,EAAOO,QAChB,WACJwD,EACAza,KAAM0a,EACNC,aAAcC,EAAG,SACjBC,GACEnE,EACEoE,EAAYpE,EAAOqE,SAAW9D,EAAO8D,QAAQC,QAC7CC,EAAuBH,EAAYpE,EAAOqE,QAAQG,OAAOtpB,OAAS8kB,EAAOwE,OAAOtpB,OAChFspB,EAAST,EAAWnR,SAAU,IAAGoN,EAAOO,OAAOkE,cAC/CC,EAAeN,EAAYpE,EAAOqE,QAAQG,OAAOtpB,OAASspB,EAAOtpB,OACvE,IAAIypB,EAAW,GACf,MAAMC,EAAa,GACbC,EAAkB,GACxB,IAAIC,EAAevE,EAAOwE,mBAEE,mBAAjBD,IACTA,EAAevE,EAAOwE,mBAAmBtN,KAAKuI,IAGhD,IAAIgF,EAAczE,EAAO0E,kBAEE,mBAAhBD,IACTA,EAAczE,EAAO0E,kBAAkBxN,KAAKuI,IAG9C,MAAMkF,EAAyBlF,EAAO2E,SAASzpB,OACzCiqB,EAA2BnF,EAAO4E,WAAW1pB,OACnD,IAAIkqB,EAAe7E,EAAO6E,aACtBC,GAAiBP,EACjBQ,EAAgB,EAChB3nB,EAAQ,EAEZ,QAA0B,IAAfqmB,EACT,OAG0B,iBAAjBoB,GAA6BA,EAAavN,QAAQ,MAAQ,IACnEuN,EAAepJ,WAAWoJ,EAAa5e,QAAQ,IAAK,KAAO,IAAMwd,GAGnEhE,EAAOuF,aAAeH,EAElBlB,EAAKM,EAAO7H,IAAI,CAClB6I,WAAY,GACZC,aAAc,GACdC,UAAW,KACLlB,EAAO7H,IAAI,CACjBgJ,YAAa,GACbF,aAAc,GACdC,UAAW,KAGTnF,EAAOqF,gBAAkBrF,EAAOsF,UAClClG,GAAeK,EAAOS,UAAW,kCAAmC,IACpEd,GAAeK,EAAOS,UAAW,iCAAkC,KAGrE,MAAMqF,EAAcvF,EAAOwF,MAAQxF,EAAOwF,KAAKC,KAAO,GAAKhG,EAAO+F,KAOlE,IAAIE,EALAH,GACF9F,EAAO+F,KAAKG,WAAWxB,GAKzB,MAAMyB,EAAgD,SAAzB5F,EAAO6F,eAA4B7F,EAAO8F,aAAexa,OAAOwI,KAAKkM,EAAO8F,aAAa7O,QAAO9d,QACnE,IAA1C6mB,EAAO8F,YAAY3sB,GAAK0sB,gBACrClrB,OAAS,EAEZ,IAAK,IAAIwL,EAAI,EAAGA,EAAIge,EAAche,GAAK,EAAG,CACxCuf,EAAY,EACZ,MAAMK,EAAQ9B,EAAOpH,GAAG1W,GAMxB,GAJIof,GACF9F,EAAO+F,KAAKQ,YAAY7f,EAAG4f,EAAO5B,EAAcf,GAGrB,SAAzB2C,EAAM3J,IAAI,WAAd,CAEA,GAA6B,SAAzB4D,EAAO6F,cAA0B,CAC/BD,IACF3B,EAAO9d,GAAGpL,MAAMqoB,EAAkB,UAAa,IAGjD,MAAM6C,EAAczQ,iBAAiBuQ,EAAM,IACrCG,EAAmBH,EAAM,GAAGhrB,MAAMme,UAClCiN,EAAyBJ,EAAM,GAAGhrB,MAAMqrB,gBAU9C,GARIF,IACFH,EAAM,GAAGhrB,MAAMme,UAAY,QAGzBiN,IACFJ,EAAM,GAAGhrB,MAAMqrB,gBAAkB,QAG/BpG,EAAOqG,aACTX,EAAYjG,EAAOoD,eAAiBkD,EAAM1K,YAAW,GAAQ0K,EAAMrK,aAAY,OAC1E,CAEL,MAAMgH,EAAQY,EAA0B2C,EAAa,SAC/CK,EAAchD,EAA0B2C,EAAa,gBACrDtlB,EAAe2iB,EAA0B2C,EAAa,iBACtDhB,EAAa3B,EAA0B2C,EAAa,eACpDb,EAAc9B,EAA0B2C,EAAa,gBACrDM,EAAYN,EAAYxQ,iBAAiB,cAE/C,GAAI8Q,GAA2B,eAAdA,EACfb,EAAYhD,EAAQuC,EAAaG,MAC5B,CACL,MAAM,YACJllB,EAAW,YACXsb,GACEuK,EAAM,GACVL,EAAYhD,EAAQ4D,EAAc3lB,EAAeskB,EAAaG,GAAe5J,EAActb,EAC7F,CACF,CAEIgmB,IACFH,EAAM,GAAGhrB,MAAMme,UAAYgN,GAGzBC,IACFJ,EAAM,GAAGhrB,MAAMqrB,gBAAkBD,GAG/BnG,EAAOqG,eAAcX,EAAY/E,KAAK6F,MAAMd,GAClD,MACEA,GAAajC,GAAczD,EAAO6F,cAAgB,GAAKhB,GAAgB7E,EAAO6F,cAC1E7F,EAAOqG,eAAcX,EAAY/E,KAAK6F,MAAMd,IAE5CzB,EAAO9d,KACT8d,EAAO9d,GAAGpL,MAAMqoB,EAAkB,UAAa,GAAEsC,OAIjDzB,EAAO9d,KACT8d,EAAO9d,GAAGsgB,gBAAkBf,GAG9BpB,EAAgBrmB,KAAKynB,GAEjB1F,EAAOqF,gBACTP,EAAgBA,EAAgBY,EAAY,EAAIX,EAAgB,EAAIF,EAC9C,IAAlBE,GAA6B,IAAN5e,IAAS2e,EAAgBA,EAAgBrB,EAAa,EAAIoB,GAC3E,IAAN1e,IAAS2e,EAAgBA,EAAgBrB,EAAa,EAAIoB,GAC1DlE,KAAK+F,IAAI5B,GAAiB,OAAUA,EAAgB,GACpD9E,EAAOqG,eAAcvB,EAAgBnE,KAAK6F,MAAM1B,IAChD1nB,EAAQ4iB,EAAO2G,gBAAmB,GAAGvC,EAASnmB,KAAK6mB,GACvDT,EAAWpmB,KAAK6mB,KAEZ9E,EAAOqG,eAAcvB,EAAgBnE,KAAK6F,MAAM1B,KAC/C1nB,EAAQujB,KAAKE,IAAIpB,EAAOO,OAAO4G,mBAAoBxpB,IAAUqiB,EAAOO,OAAO2G,gBAAmB,GAAGvC,EAASnmB,KAAK6mB,GACpHT,EAAWpmB,KAAK6mB,GAChBA,EAAgBA,EAAgBY,EAAYb,GAG9CpF,EAAOuF,aAAeU,EAAYb,EAClCE,EAAgBW,EAChBtoB,GAAS,CAlFoC,CAmF/C,CAqBA,GAnBAqiB,EAAOuF,YAAcrE,KAAKC,IAAInB,EAAOuF,YAAavB,GAAcgB,EAE5Dd,GAAOC,IAA+B,UAAlB5D,EAAO6G,QAAwC,cAAlB7G,EAAO6G,SAC1DrD,EAAWpH,IAAI,CACbsG,MAAQ,GAAEjD,EAAOuF,YAAchF,EAAO6E,mBAItC7E,EAAO8G,gBACTtD,EAAWpH,IAAI,CACb,CAACgH,EAAkB,UAAY,GAAE3D,EAAOuF,YAAchF,EAAO6E,mBAI7DU,GACF9F,EAAO+F,KAAKuB,kBAAkBrB,EAAWtB,EAAUhB,IAIhDpD,EAAOqF,eAAgB,CAC1B,MAAM2B,EAAgB,GAEtB,IAAK,IAAI7gB,EAAI,EAAGA,EAAIie,EAASzpB,OAAQwL,GAAK,EAAG,CAC3C,IAAI8gB,EAAiB7C,EAASje,GAC1B6Z,EAAOqG,eAAcY,EAAiBtG,KAAK6F,MAAMS,IAEjD7C,EAASje,IAAMsZ,EAAOuF,YAAcvB,GACtCuD,EAAc/oB,KAAKgpB,EAEvB,CAEA7C,EAAW4C,EAEPrG,KAAK6F,MAAM/G,EAAOuF,YAAcvB,GAAc9C,KAAK6F,MAAMpC,EAASA,EAASzpB,OAAS,IAAM,GAC5FypB,EAASnmB,KAAKwhB,EAAOuF,YAAcvB,EAEvC,CAIA,GAFwB,IAApBW,EAASzpB,SAAcypB,EAAW,CAAC,IAEX,IAAxBpE,EAAO6E,aAAoB,CAC7B,MAAM1rB,EAAMsmB,EAAOoD,gBAAkBc,EAAM,aAAeP,EAAkB,eAC5Ea,EAAOhN,QAAO,CAACiQ,EAAGC,KACXnH,EAAOsF,SAER6B,IAAelD,EAAOtpB,OAAS,IAKlCyhB,IAAI,CACL,CAACjjB,GAAO,GAAE0rB,OAEd,CAEA,GAAI7E,EAAOqF,gBAAkBrF,EAAOoH,qBAAsB,CACxD,IAAIC,EAAgB,EACpB/C,EAAgB7pB,SAAQ6sB,IACtBD,GAAiBC,GAAkBtH,EAAO6E,aAAe7E,EAAO6E,aAAe,EAAE,IAEnFwC,GAAiBrH,EAAO6E,aACxB,MAAM0C,EAAUF,EAAgB5D,EAChCW,EAAWA,EAAS9R,KAAIkV,GAClBA,EAAO,GAAWjD,EAClBiD,EAAOD,EAAgBA,EAAU9C,EAC9B+C,GAEX,CAEA,GAAIxH,EAAOyH,yBAA0B,CACnC,IAAIJ,EAAgB,EAMpB,GALA/C,EAAgB7pB,SAAQ6sB,IACtBD,GAAiBC,GAAkBtH,EAAO6E,aAAe7E,EAAO6E,aAAe,EAAE,IAEnFwC,GAAiBrH,EAAO6E,aAEpBwC,EAAgB5D,EAAY,CAC9B,MAAMiE,GAAmBjE,EAAa4D,GAAiB,EACvDjD,EAAS3pB,SAAQ,CAAC+sB,EAAMG,KACtBvD,EAASuD,GAAaH,EAAOE,CAAe,IAE9CrD,EAAW5pB,SAAQ,CAAC+sB,EAAMG,KACxBtD,EAAWsD,GAAaH,EAAOE,CAAe,GAElD,CACF,CASA,GAPApc,OAAO4X,OAAOzD,EAAQ,CACpBwE,SACAG,WACAC,aACAC,oBAGEtE,EAAOqF,gBAAkBrF,EAAOsF,UAAYtF,EAAOoH,qBAAsB,CAC3EhI,GAAeK,EAAOS,UAAW,mCAAuCkE,EAAS,GAAZ,MACrEhF,GAAeK,EAAOS,UAAW,iCAAqCT,EAAO1W,KAAO,EAAIub,EAAgBA,EAAgB3pB,OAAS,GAAK,EAAlE,MACpE,MAAMitB,GAAiBnI,EAAO2E,SAAS,GACjCyD,GAAmBpI,EAAO4E,WAAW,GAC3C5E,EAAO2E,SAAW3E,EAAO2E,SAAS9R,KAAIwV,GAAKA,EAAIF,IAC/CnI,EAAO4E,WAAa5E,EAAO4E,WAAW/R,KAAIwV,GAAKA,EAAID,GACrD,CAEI1D,IAAiBH,GACnBvE,EAAO+C,KAAK,sBAGV4B,EAASzpB,SAAWgqB,IAClBlF,EAAOO,OAAO+H,eAAetI,EAAOuI,gBACxCvI,EAAO+C,KAAK,yBAGV6B,EAAW1pB,SAAWiqB,GACxBnF,EAAO+C,KAAK,0BAGVxC,EAAOiI,qBACTxI,EAAOyI,oBAEX,EFxSEC,iBGZa,SAA0BlI,GACvC,MAAMR,EAAS/mB,KACT0vB,EAAe,GACfvE,EAAYpE,EAAOqE,SAAWrE,EAAOO,OAAO8D,QAAQC,QAC1D,IACI5d,EADA9G,EAAY,EAGK,iBAAV4gB,EACTR,EAAO4I,cAAcpI,IACF,IAAVA,GACTR,EAAO4I,cAAc5I,EAAOO,OAAOC,OAGrC,MAAMqI,EAAkBlrB,GAClBymB,EACKpE,EAAOwE,OAAOhN,QAAO5S,GAAM0e,SAAS1e,EAAGkD,aAAa,2BAA4B,MAAQnK,IAAO,GAGjGqiB,EAAOwE,OAAOpH,GAAGzf,GAAO,GAIjC,GAAoC,SAAhCqiB,EAAOO,OAAO6F,eAA4BpG,EAAOO,OAAO6F,cAAgB,EAC1E,GAAIpG,EAAOO,OAAOqF,eAChB5F,EAAO8I,cAAchM,MAAKwJ,IACxBqC,EAAanqB,KAAK8nB,EAAM,SAG1B,IAAK5f,EAAI,EAAGA,EAAIwa,KAAK6H,KAAK/I,EAAOO,OAAO6F,eAAgB1f,GAAK,EAAG,CAC9D,MAAM/I,EAAQqiB,EAAOhiB,YAAc0I,EACnC,GAAI/I,EAAQqiB,EAAOwE,OAAOtpB,SAAWkpB,EAAW,MAChDuE,EAAanqB,KAAKqqB,EAAgBlrB,GACpC,MAGFgrB,EAAanqB,KAAKqqB,EAAgB7I,EAAOhiB,cAI3C,IAAK0I,EAAI,EAAGA,EAAIiiB,EAAaztB,OAAQwL,GAAK,EACxC,QAA+B,IAApBiiB,EAAajiB,GAAoB,CAC1C,MAAMpI,EAASqqB,EAAajiB,GAAGtI,aAC/BwB,EAAYtB,EAASsB,EAAYtB,EAASsB,CAC5C,EAIEA,GAA2B,IAAdA,IAAiBogB,EAAO+D,WAAWpH,IAAI,SAAW,GAAE/c,MACvE,EHnCE6oB,mBIba,WACb,MAAMzI,EAAS/mB,KACTurB,EAASxE,EAAOwE,OAEtB,IAAK,IAAI9d,EAAI,EAAGA,EAAI8d,EAAOtpB,OAAQwL,GAAK,EACtC8d,EAAO9d,GAAGsiB,kBAAoBhJ,EAAOoD,eAAiBoB,EAAO9d,GAAGuiB,WAAazE,EAAO9d,GAAGwiB,SAE3F,EJOEC,qBKba,SAA8B/I,EAAYnnB,MAAQA,KAAKmnB,WAAa,GACjF,MAAMJ,EAAS/mB,KACTsnB,EAASP,EAAOO,QAChB,OACJiE,EACAP,aAAcC,EAAG,SACjBS,GACE3E,EACJ,GAAsB,IAAlBwE,EAAOtpB,OAAc,YACkB,IAAhCspB,EAAO,GAAGwE,mBAAmChJ,EAAOyI,qBAC/D,IAAIW,GAAgBhJ,EAChB8D,IAAKkF,EAAehJ,GAExBoE,EAAOxL,YAAYuH,EAAO8I,mBAC1BrJ,EAAOsJ,qBAAuB,GAC9BtJ,EAAO8I,cAAgB,GAEvB,IAAK,IAAIpiB,EAAI,EAAGA,EAAI8d,EAAOtpB,OAAQwL,GAAK,EAAG,CACzC,MAAM4f,EAAQ9B,EAAO9d,GACrB,IAAI6iB,EAAcjD,EAAM0C,kBAEpBzI,EAAOsF,SAAWtF,EAAOqF,iBAC3B2D,GAAe/E,EAAO,GAAGwE,mBAG3B,MAAMQ,GAAiBJ,GAAgB7I,EAAOqF,eAAiB5F,EAAOyJ,eAAiB,GAAKF,IAAgBjD,EAAMU,gBAAkBzG,EAAO6E,cACrIsE,GAAyBN,EAAezE,EAAS,IAAMpE,EAAOqF,eAAiB5F,EAAOyJ,eAAiB,GAAKF,IAAgBjD,EAAMU,gBAAkBzG,EAAO6E,cAC3JuE,IAAgBP,EAAeG,GAC/BK,EAAaD,EAAc3J,EAAO6E,gBAAgBne,IACtCijB,GAAe,GAAKA,EAAc3J,EAAO1W,KAAO,GAAKsgB,EAAa,GAAKA,GAAc5J,EAAO1W,MAAQqgB,GAAe,GAAKC,GAAc5J,EAAO1W,QAG7J0W,EAAO8I,cAActqB,KAAK8nB,GAC1BtG,EAAOsJ,qBAAqB9qB,KAAKkI,GACjC8d,EAAOpH,GAAG1W,GAAGkS,SAAS2H,EAAO8I,oBAG/B/C,EAAMrF,SAAWiD,GAAOsF,EAAgBA,EACxClD,EAAMuD,iBAAmB3F,GAAOwF,EAAwBA,CAC1D,CAEA1J,EAAO8I,cAAgB7b,GAAE+S,EAAO8I,cAClC,EL5BEgB,eMfa,SAAwB1J,GACrC,MAAMJ,EAAS/mB,KAEf,QAAyB,IAAdmnB,EAA2B,CACpC,MAAM2J,EAAa/J,EAAOiE,cAAgB,EAAI,EAE9C7D,EAAYJ,GAAUA,EAAOI,WAAaJ,EAAOI,UAAY2J,GAAc,CAC7E,CAEA,MAAMxJ,EAASP,EAAOO,OAChByJ,EAAiBhK,EAAOiK,eAAiBjK,EAAOyJ,eACtD,IAAI,SACFxI,EAAQ,YACRiJ,EAAW,MACXC,GACEnK,EACJ,MAAMoK,EAAeF,EACfG,EAASF,EAEQ,IAAnBH,GACF/I,EAAW,EACXiJ,GAAc,EACdC,GAAQ,IAERlJ,GAAYb,EAAYJ,EAAOyJ,gBAAkBO,EACjDE,EAAcjJ,GAAY,EAC1BkJ,EAAQlJ,GAAY,GAGtBpV,OAAO4X,OAAOzD,EAAQ,CACpBiB,WACAiJ,cACAC,WAEE5J,EAAOiI,qBAAuBjI,EAAOqF,gBAAkBrF,EAAO+J,aAAYtK,EAAOmJ,qBAAqB/I,GAEtG8J,IAAgBE,GAClBpK,EAAO+C,KAAK,yBAGVoH,IAAUE,GACZrK,EAAO+C,KAAK,oBAGVqH,IAAiBF,GAAeG,IAAWF,IAC7CnK,EAAO+C,KAAK,YAGd/C,EAAO+C,KAAK,WAAY9B,EAC1B,ENjCEsJ,oBOhBa,WACb,MAAMvK,EAAS/mB,MACT,OACJurB,EAAM,OACNjE,EAAM,WACNwD,EAAU,YACV/lB,EAAW,UACXwsB,GACExK,EACEoE,EAAYpE,EAAOqE,SAAW9D,EAAO8D,QAAQC,QAEnD,IAAImG,EADJjG,EAAOxL,YAAa,GAAEuH,EAAOmK,oBAAoBnK,EAAOoK,kBAAkBpK,EAAOqK,kBAAkBrK,EAAOsK,6BAA6BtK,EAAOuK,2BAA2BvK,EAAOwK,2BAI9KN,EADErG,EACYpE,EAAO+D,WAAW3F,KAAM,IAAGmC,EAAOkE,uCAAuCzmB,OAEzEwmB,EAAOpH,GAAGpf,GAI1BysB,EAAY7R,SAAS2H,EAAOmK,kBAExBnK,EAAOyK,OAELP,EAAYxR,SAASsH,EAAO0K,qBAC9BlH,EAAWnR,SAAU,IAAG2N,EAAOkE,mBAAmBlE,EAAO0K,iDAAiDT,OAAe5R,SAAS2H,EAAOsK,2BAEzI9G,EAAWnR,SAAU,IAAG2N,EAAOkE,cAAclE,EAAO0K,gDAAgDT,OAAe5R,SAAS2H,EAAOsK,4BAKvI,IAAIK,EAAYT,EAAY3M,QAAS,IAAGyC,EAAOkE,cAAcrH,GAAG,GAAGxE,SAAS2H,EAAOoK,gBAE/EpK,EAAOyK,MAA6B,IAArBE,EAAUhwB,SAC3BgwB,EAAY1G,EAAOpH,GAAG,GACtB8N,EAAUtS,SAAS2H,EAAOoK,iBAI5B,IAAIQ,EAAYV,EAAYvM,QAAS,IAAGqC,EAAOkE,cAAcrH,GAAG,GAAGxE,SAAS2H,EAAOqK,gBAE/ErK,EAAOyK,MAA6B,IAArBG,EAAUjwB,SAC3BiwB,EAAY3G,EAAOpH,IAAI,GACvB+N,EAAUvS,SAAS2H,EAAOqK,iBAGxBrK,EAAOyK,OAELE,EAAUjS,SAASsH,EAAO0K,qBAC5BlH,EAAWnR,SAAU,IAAG2N,EAAOkE,mBAAmBlE,EAAO0K,iDAAiDC,EAAU7R,KAAK,gCAAgCT,SAAS2H,EAAOuK,yBAEzK/G,EAAWnR,SAAU,IAAG2N,EAAOkE,cAAclE,EAAO0K,gDAAgDC,EAAU7R,KAAK,gCAAgCT,SAAS2H,EAAOuK,yBAGjKK,EAAUlS,SAASsH,EAAO0K,qBAC5BlH,EAAWnR,SAAU,IAAG2N,EAAOkE,mBAAmBlE,EAAO0K,iDAAiDE,EAAU9R,KAAK,gCAAgCT,SAAS2H,EAAOwK,yBAEzKhH,EAAWnR,SAAU,IAAG2N,EAAOkE,cAAclE,EAAO0K,gDAAgDE,EAAU9R,KAAK,gCAAgCT,SAAS2H,EAAOwK,0BAIvK/K,EAAOoL,mBACT,EP9CEC,kBQjBa,SAA2BC,GACxC,MAAMtL,EAAS/mB,KACTmnB,EAAYJ,EAAOiE,aAAejE,EAAOI,WAAaJ,EAAOI,WAC7D,WACJwE,EAAU,SACVD,EAAQ,OACRpE,EACAviB,YAAautB,EACbf,UAAWgB,EACXtD,UAAWuD,GACTzL,EACJ,IACIkI,EADAlqB,EAAcstB,EAGlB,QAA2B,IAAhBttB,EAA6B,CACtC,IAAK,IAAI0I,EAAI,EAAGA,EAAIke,EAAW1pB,OAAQwL,GAAK,OACT,IAAtBke,EAAWle,EAAI,GACpB0Z,GAAawE,EAAWle,IAAM0Z,EAAYwE,EAAWle,EAAI,IAAMke,EAAWle,EAAI,GAAKke,EAAWle,IAAM,EACtG1I,EAAc0I,EACL0Z,GAAawE,EAAWle,IAAM0Z,EAAYwE,EAAWle,EAAI,KAClE1I,EAAc0I,EAAI,GAEX0Z,GAAawE,EAAWle,KACjC1I,EAAc0I,GAKd6Z,EAAOmL,sBACL1tB,EAAc,QAA4B,IAAhBA,KAA6BA,EAAc,EAE7E,CAEA,GAAI2mB,EAAS9M,QAAQuI,IAAc,EACjC8H,EAAYvD,EAAS9M,QAAQuI,OACxB,CACL,MAAMuL,EAAOzK,KAAKE,IAAIb,EAAO4G,mBAAoBnpB,GACjDkqB,EAAYyD,EAAOzK,KAAK6F,OAAO/oB,EAAc2tB,GAAQpL,EAAO2G,eAC9D,CAIA,GAFIgB,GAAavD,EAASzpB,SAAQgtB,EAAYvD,EAASzpB,OAAS,GAE5D8C,IAAgButB,EAMlB,YALIrD,IAAcuD,IAChBzL,EAAOkI,UAAYA,EACnBlI,EAAO+C,KAAK,qBAOhB,MAAMyH,EAAYlH,SAAStD,EAAOwE,OAAOpH,GAAGpf,GAAaqb,KAAK,4BAA8Brb,EAAa,IACzG6N,OAAO4X,OAAOzD,EAAQ,CACpBkI,YACAsC,YACAe,gBACAvtB,gBAEFgiB,EAAO+C,KAAK,qBACZ/C,EAAO+C,KAAK,mBAERyI,IAAsBhB,GACxBxK,EAAO+C,KAAK,oBAGV/C,EAAO4L,aAAe5L,EAAOO,OAAOsL,qBACtC7L,EAAO+C,KAAK,cAEhB,ERnDE+I,mBSjBa,SAA4B5uB,GACzC,MAAM8iB,EAAS/mB,KACTsnB,EAASP,EAAOO,OAChB+F,EAAQrZ,GAAE/P,GAAGjD,QAAS,IAAGsmB,EAAOkE,cAAc,GACpD,IACIiD,EADAqE,GAAa,EAGjB,GAAIzF,EACF,IAAK,IAAI5f,EAAI,EAAGA,EAAIsZ,EAAOwE,OAAOtpB,OAAQwL,GAAK,EAC7C,GAAIsZ,EAAOwE,OAAO9d,KAAO4f,EAAO,CAC9ByF,GAAa,EACbrE,EAAahhB,EACb,KACF,CAIJ,IAAI4f,IAASyF,EAWX,OAFA/L,EAAOgM,kBAAe7wB,OACtB6kB,EAAOiM,kBAAe9wB,GATtB6kB,EAAOgM,aAAe1F,EAElBtG,EAAOqE,SAAWrE,EAAOO,OAAO8D,QAAQC,QAC1CtE,EAAOiM,aAAe3I,SAASrW,GAAEqZ,GAAOjN,KAAK,2BAA4B,IAEzE2G,EAAOiM,aAAevE,EAQtBnH,EAAO2L,0BAA+C/wB,IAAxB6kB,EAAOiM,cAA8BjM,EAAOiM,eAAiBjM,EAAOhiB,aACpGgiB,EAAOkM,qBAEX,GCnCe,SAASC,IAAe,OACrCnM,EAAM,aACNoM,EAAY,UACZC,EAAS,KACTC,IAEA,MAAM,YACJtuB,EAAW,cACXutB,GACEvL,EACJ,IAAIY,EAAMyL,EAQV,GANKzL,IAC8BA,EAA7B5iB,EAAcutB,EAAqB,OAAgBvtB,EAAcutB,EAAqB,OAAkB,SAG9GvL,EAAO+C,KAAM,aAAYuJ,KAErBF,GAAgBpuB,IAAgButB,EAAe,CACjD,GAAY,UAAR3K,EAEF,YADAZ,EAAO+C,KAAM,uBAAsBuJ,KAIrCtM,EAAO+C,KAAM,wBAAuBuJ,KAExB,SAAR1L,EACFZ,EAAO+C,KAAM,sBAAqBuJ,KAElCtM,EAAO+C,KAAM,sBAAqBuJ,IAEtC,CACF,CCzBA,QACEC,QCPa,SAAiB5uB,EAAQ,EAAG6iB,EAAQvnB,KAAKsnB,OAAOC,MAAO4L,GAAe,EAAMI,EAAUC,GACnG,GAAqB,iBAAV9uB,GAAuC,iBAAVA,EACtC,MAAM,IAAI+uB,MAAO,kFAAiF/uB,aAGpG,GAAqB,iBAAVA,EAAoB,CAK7B,MAAMgvB,EAAgBrJ,SAAS3lB,EAAO,IAStC,IAFsBivB,SAASD,GAG7B,MAAM,IAAID,MAAO,sEAAqE/uB,aAKxFA,EAAQgvB,CACV,CAEA,MAAM3M,EAAS/mB,KACf,IAAIyuB,EAAa/pB,EACb+pB,EAAa,IAAGA,EAAa,GACjC,MAAM,OACJnH,EAAM,SACNoE,EAAQ,WACRC,EAAU,cACV2G,EAAa,YACbvtB,EACAimB,aAAcC,EAAG,UACjBzD,EAAS,QACT6D,GACEtE,EAEJ,GAAIA,EAAO6M,WAAatM,EAAOuM,iCAAmCxI,IAAYkI,IAAaC,EACzF,OAAO,EAGT,MAAMd,EAAOzK,KAAKE,IAAIpB,EAAOO,OAAO4G,mBAAoBO,GACxD,IAAIQ,EAAYyD,EAAOzK,KAAK6F,OAAOW,EAAaiE,GAAQ3L,EAAOO,OAAO2G,gBAClEgB,GAAavD,EAASzpB,SAAQgtB,EAAYvD,EAASzpB,OAAS,IAE3D8C,GAAeuiB,EAAOwM,cAAgB,MAAQxB,GAAiB,IAAMa,GACxEpM,EAAO+C,KAAK,0BAGd,MAAM3C,GAAauE,EAASuD,GAI5B,GAFAlI,EAAO8J,eAAe1J,GAElBG,EAAOmL,oBACT,IAAK,IAAIhlB,EAAI,EAAGA,EAAIke,EAAW1pB,OAAQwL,GAAK,EAAG,CAC7C,MAAMsmB,GAAuB9L,KAAK6F,MAAkB,IAAZ3G,GAClC6M,EAAiB/L,KAAK6F,MAAsB,IAAhBnC,EAAWle,IACvCwmB,EAAqBhM,KAAK6F,MAA0B,IAApBnC,EAAWle,EAAI,SAEpB,IAAtBke,EAAWle,EAAI,GACpBsmB,GAAuBC,GAAkBD,EAAsBE,GAAsBA,EAAqBD,GAAkB,EAC9HvF,EAAahhB,EACJsmB,GAAuBC,GAAkBD,EAAsBE,IACxExF,EAAahhB,EAAI,GAEVsmB,GAAuBC,IAChCvF,EAAahhB,EAEjB,CAIF,GAAIsZ,EAAO4L,aAAelE,IAAe1pB,EAAa,CACpD,IAAKgiB,EAAOmN,gBAAkB/M,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAOyJ,eAC/E,OAAO,EAGT,IAAKzJ,EAAOoN,gBAAkBhN,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAOiK,iBAC1EjsB,GAAe,KAAO0pB,EAAY,OAAO,CAElD,CAEA,IAAI2E,EAGJ,GAF8BA,EAA1B3E,EAAa1pB,EAAyB,OAAgB0pB,EAAa1pB,EAAyB,OAAwB,QAEpHkmB,IAAQ9D,IAAcJ,EAAOI,YAAc8D,GAAO9D,IAAcJ,EAAOI,UAkBzE,OAjBAJ,EAAOqL,kBAAkB3D,GAErBnH,EAAO+J,YACTtK,EAAO0I,mBAGT1I,EAAOuK,sBAEe,UAAlBhK,EAAO6G,QACTpH,EAAOqN,aAAajN,GAGJ,UAAdiM,IACFrM,EAAOsN,gBAAgBlB,EAAcC,GACrCrM,EAAOvE,cAAc2Q,EAAcC,KAG9B,EAGT,GAAI9L,EAAOsF,QAAS,CAClB,MAAM0H,EAAMvN,EAAOoD,eACboK,EAAItJ,EAAM9D,GAAaA,EAE7B,GAAc,IAAVI,EAAa,CACf,MAAM4D,EAAYpE,EAAOqE,SAAWrE,EAAOO,OAAO8D,QAAQC,QAEtDF,IACFpE,EAAOS,UAAUnlB,MAAMolB,eAAiB,OACxCV,EAAOyN,mBAAoB,GAG7BhN,EAAU8M,EAAM,aAAe,aAAeC,EAE1CpJ,GACF/N,uBAAsB,KACpB2J,EAAOS,UAAUnlB,MAAMolB,eAAiB,GACxCV,EAAO0N,yBAA0B,CAAK,GAG5C,KAAO,CACL,IAAK1N,EAAO0B,QAAQI,aAMlB,OALA/B,GAAqB,CACnBC,SACAC,eAAgBuN,EAChBtN,KAAMqN,EAAM,OAAS,SAEhB,EAGT9M,EAAUpf,SAAS,CACjB,CAACksB,EAAM,OAAS,OAAQC,EACxBG,SAAU,UAEd,CAEA,OAAO,CACT,CA8BA,OA5BA3N,EAAO4I,cAAcpI,GACrBR,EAAOqN,aAAajN,GACpBJ,EAAOqL,kBAAkB3D,GACzB1H,EAAOuK,sBACPvK,EAAO+C,KAAK,wBAAyBvC,EAAOgM,GAC5CxM,EAAOsN,gBAAgBlB,EAAcC,GAEvB,IAAV7L,EACFR,EAAOvE,cAAc2Q,EAAcC,GACzBrM,EAAO6M,YACjB7M,EAAO6M,WAAY,EAEd7M,EAAO4N,gCACV5N,EAAO4N,8BAAgC,SAAuB1wB,GACvD8iB,IAAUA,EAAO6N,WAClB3wB,EAAElD,SAAWf,OACjB+mB,EAAO+D,WAAW,GAAGxhB,oBAAoB,gBAAiByd,EAAO4N,+BACjE5N,EAAO+D,WAAW,GAAGxhB,oBAAoB,sBAAuByd,EAAO4N,+BACvE5N,EAAO4N,8BAAgC,YAChC5N,EAAO4N,8BACd5N,EAAOvE,cAAc2Q,EAAcC,GACrC,GAGFrM,EAAO+D,WAAW,GAAGjqB,iBAAiB,gBAAiBkmB,EAAO4N,+BAC9D5N,EAAO+D,WAAW,GAAGjqB,iBAAiB,sBAAuBkmB,EAAO4N,iCAG/D,CACT,ED3KEE,YETa,SAAqBnwB,EAAQ,EAAG6iB,EAAQvnB,KAAKsnB,OAAOC,MAAO4L,GAAe,EAAMI,GAC7F,MAAMxM,EAAS/mB,KACf,IAAI80B,EAAWpwB,EAMf,OAJIqiB,EAAOO,OAAOyK,OAChB+C,GAAY/N,EAAOgO,cAGdhO,EAAOuM,QAAQwB,EAAUvN,EAAO4L,EAAcI,EACvD,EFCEyB,UGTa,SAAmBzN,EAAQvnB,KAAKsnB,OAAOC,MAAO4L,GAAe,EAAMI,GAChF,MAAMxM,EAAS/mB,MACT,UACJ4zB,EAAS,QACTvI,EAAO,OACP/D,GACEP,EACJ,IAAKsE,EAAS,OAAOtE,EACrB,IAAIkO,EAAW3N,EAAO2G,eAEO,SAAzB3G,EAAO6F,eAAsD,IAA1B7F,EAAO2G,gBAAwB3G,EAAO4N,qBAC3ED,EAAWhN,KAAKC,IAAInB,EAAOoO,qBAAqB,WAAW,GAAO,IAGpE,MAAMC,EAAYrO,EAAOhiB,YAAcuiB,EAAO4G,mBAAqB,EAAI+G,EAEvE,GAAI3N,EAAOyK,KAAM,CACf,GAAI6B,GAAatM,EAAO+N,kBAAmB,OAAO,EAClDtO,EAAOuO,UAEPvO,EAAOwO,YAAcxO,EAAO+D,WAAW,GAAGzH,UAC5C,CAEA,OAAIiE,EAAOkO,QAAUzO,EAAOmK,MACnBnK,EAAOuM,QAAQ,EAAG/L,EAAO4L,EAAcI,GAGzCxM,EAAOuM,QAAQvM,EAAOhiB,YAAcqwB,EAAW7N,EAAO4L,EAAcI,EAC7E,EHlBEkC,UIVa,SAAmBlO,EAAQvnB,KAAKsnB,OAAOC,MAAO4L,GAAe,EAAMI,GAChF,MAAMxM,EAAS/mB,MACT,OACJsnB,EAAM,UACNsM,EAAS,SACTlI,EAAQ,WACRC,EAAU,aACVX,EAAY,QACZK,GACEtE,EACJ,IAAKsE,EAAS,OAAOtE,EAErB,GAAIO,EAAOyK,KAAM,CACf,GAAI6B,GAAatM,EAAO+N,kBAAmB,OAAO,EAClDtO,EAAOuO,UAEPvO,EAAOwO,YAAcxO,EAAO+D,WAAW,GAAGzH,UAC5C,CAIA,SAASqS,EAAUloB,GACjB,OAAIA,EAAM,GAAWya,KAAK6F,MAAM7F,KAAK+F,IAAIxgB,IAClCya,KAAK6F,MAAMtgB,EACpB,CAEA,MAAMumB,EAAsB2B,EAPV1K,EAAejE,EAAOI,WAAaJ,EAAOI,WAQtDwO,EAAqBjK,EAAS9R,KAAIpM,GAAOkoB,EAAUloB,KACzD,IAAIooB,EAAWlK,EAASiK,EAAmB/W,QAAQmV,GAAuB,GAE1E,QAAwB,IAAb6B,GAA4BtO,EAAOsF,QAAS,CACrD,IAAIiJ,EACJnK,EAAS3pB,SAAQ,CAAC+sB,EAAMG,KAClB8E,GAAuBjF,IAEzB+G,EAAgB5G,EAClB,SAG2B,IAAlB4G,IACTD,EAAWlK,EAASmK,EAAgB,EAAIA,EAAgB,EAAIA,GAEhE,CAEA,IAAIC,EAAY,EAYhB,YAVwB,IAAbF,IACTE,EAAYnK,EAAW/M,QAAQgX,GAC3BE,EAAY,IAAGA,EAAY/O,EAAOhiB,YAAc,GAEvB,SAAzBuiB,EAAO6F,eAAsD,IAA1B7F,EAAO2G,gBAAwB3G,EAAO4N,qBAC3EY,EAAYA,EAAY/O,EAAOoO,qBAAqB,YAAY,GAAQ,EACxEW,EAAY7N,KAAKC,IAAI4N,EAAW,KAIhCxO,EAAOkO,QAAUzO,EAAOkK,YACnBlK,EAAOuM,QAAQvM,EAAOwE,OAAOtpB,OAAS,EAAGslB,EAAO4L,EAAcI,GAGhExM,EAAOuM,QAAQwC,EAAWvO,EAAO4L,EAAcI,EACxD,EJlDEwC,WKXa,SAAoBxO,EAAQvnB,KAAKsnB,OAAOC,MAAO4L,GAAe,EAAMI,GAEjF,OADevzB,KACDszB,QADCtzB,KACc+E,YAAawiB,EAAO4L,EAAcI,EACjE,ELSEyC,eMZa,SAAwBzO,EAAQvnB,KAAKsnB,OAAOC,MAAO4L,GAAe,EAAMI,EAAU0C,EAAY,IAC3G,MAAMlP,EAAS/mB,KACf,IAAI0E,EAAQqiB,EAAOhiB,YACnB,MAAM2tB,EAAOzK,KAAKE,IAAIpB,EAAOO,OAAO4G,mBAAoBxpB,GAClDuqB,EAAYyD,EAAOzK,KAAK6F,OAAOppB,EAAQguB,GAAQ3L,EAAOO,OAAO2G,gBAC7D9G,EAAYJ,EAAOiE,aAAejE,EAAOI,WAAaJ,EAAOI,UAEnE,GAAIA,GAAaJ,EAAO2E,SAASuD,GAAY,CAG3C,MAAMiH,EAAcnP,EAAO2E,SAASuD,GAGhC9H,EAAY+O,GAFCnP,EAAO2E,SAASuD,EAAY,GAEHiH,GAAeD,IACvDvxB,GAASqiB,EAAOO,OAAO2G,eAE3B,KAAO,CAGL,MAAM2H,EAAW7O,EAAO2E,SAASuD,EAAY,GAGzC9H,EAAYyO,IAFI7O,EAAO2E,SAASuD,GAEO2G,GAAYK,IACrDvxB,GAASqiB,EAAOO,OAAO2G,eAE3B,CAIA,OAFAvpB,EAAQujB,KAAKC,IAAIxjB,EAAO,GACxBA,EAAQujB,KAAKE,IAAIzjB,EAAOqiB,EAAO4E,WAAW1pB,OAAS,GAC5C8kB,EAAOuM,QAAQ5uB,EAAO6iB,EAAO4L,EAAcI,EACpD,ENjBEN,oBOZa,WACb,MAAMlM,EAAS/mB,MACT,OACJsnB,EAAM,WACNwD,GACE/D,EACEoG,EAAyC,SAAzB7F,EAAO6F,cAA2BpG,EAAOoO,uBAAyB7N,EAAO6F,cAC/F,IACIoE,EADA4E,EAAepP,EAAOiM,aAG1B,GAAI1L,EAAOyK,KAAM,CACf,GAAIhL,EAAO6M,UAAW,OACtBrC,EAAYlH,SAASrW,GAAE+S,EAAOgM,cAAc3S,KAAK,2BAA4B,IAEzEkH,EAAOqF,eACLwJ,EAAepP,EAAOgO,aAAe5H,EAAgB,GAAKgJ,EAAepP,EAAOwE,OAAOtpB,OAAS8kB,EAAOgO,aAAe5H,EAAgB,GACxIpG,EAAOuO,UACPa,EAAerL,EAAWnR,SAAU,IAAG2N,EAAOkE,uCAAuC+F,YAAoBjK,EAAO0K,wBAAwB7N,GAAG,GAAGzf,QAC9I+gB,IAAS,KACPsB,EAAOuM,QAAQ6C,EAAa,KAG9BpP,EAAOuM,QAAQ6C,GAERA,EAAepP,EAAOwE,OAAOtpB,OAASkrB,GAC/CpG,EAAOuO,UACPa,EAAerL,EAAWnR,SAAU,IAAG2N,EAAOkE,uCAAuC+F,YAAoBjK,EAAO0K,wBAAwB7N,GAAG,GAAGzf,QAC9I+gB,IAAS,KACPsB,EAAOuM,QAAQ6C,EAAa,KAG9BpP,EAAOuM,QAAQ6C,EAEnB,MACEpP,EAAOuM,QAAQ6C,EAEnB,GCnCA,IACEC,WCFa,WACb,MAAMrP,EAAS/mB,KACTY,EAAW0b,KACX,OACJgL,EAAM,WACNwD,GACE/D,EAEEsP,EAAYvL,EAAWnR,WAAW1X,OAAS,EAAI+R,GAAE8W,EAAWnR,WAAW,GAAGK,YAAc8Q,EAC9FuL,EAAU1c,SAAU,IAAG2N,EAAOkE,cAAclE,EAAO0K,uBAAuB7uB,SAC1E,IAAIooB,EAAS8K,EAAU1c,SAAU,IAAG2N,EAAOkE,cAE3C,GAAIlE,EAAOgP,uBAAwB,CACjC,MAAMC,EAAiBjP,EAAO2G,eAAiB1C,EAAOtpB,OAASqlB,EAAO2G,eAEtE,GAAIsI,IAAmBjP,EAAO2G,eAAgB,CAC5C,IAAK,IAAIxgB,EAAI,EAAGA,EAAI8oB,EAAgB9oB,GAAK,EAAG,CAC1C,MAAM+oB,EAAYxiB,GAAEpT,EAASyZ,cAAc,QAAQsF,SAAU,GAAE2H,EAAOkE,cAAclE,EAAOmP,mBAC3FJ,EAAUvc,OAAO0c,EACnB,CAEAjL,EAAS8K,EAAU1c,SAAU,IAAG2N,EAAOkE,aACzC,CACF,CAE6B,SAAzBlE,EAAO6F,eAA6B7F,EAAOyN,eAAczN,EAAOyN,aAAexJ,EAAOtpB,QAC1F8kB,EAAOgO,aAAe9M,KAAK6H,KAAK/M,WAAWuE,EAAOyN,cAAgBzN,EAAO6F,cAAe,KACxFpG,EAAOgO,cAAgBzN,EAAOoP,qBAE1B3P,EAAOgO,aAAexJ,EAAOtpB,SAC/B8kB,EAAOgO,aAAexJ,EAAOtpB,QAG/B,MAAM00B,EAAgB,GAChBC,EAAe,GACrBrL,EAAO1H,MAAK,CAAClY,EAAIjH,KACf,MAAM2oB,EAAQrZ,GAAErI,GAEZjH,EAAQqiB,EAAOgO,cACjB6B,EAAarxB,KAAKoG,GAGhBjH,EAAQ6mB,EAAOtpB,QAAUyC,GAAS6mB,EAAOtpB,OAAS8kB,EAAOgO,cAC3D4B,EAAcpxB,KAAKoG,GAGrB0hB,EAAMjN,KAAK,0BAA2B1b,EAAM,IAG9C,IAAK,IAAI+I,EAAI,EAAGA,EAAImpB,EAAa30B,OAAQwL,GAAK,EAC5C4oB,EAAUvc,OAAO9F,GAAE4iB,EAAanpB,GAAGopB,WAAU,IAAOlX,SAAS2H,EAAO0K,sBAGtE,IAAK,IAAIvkB,EAAIkpB,EAAc10B,OAAS,EAAGwL,GAAK,EAAGA,GAAK,EAClD4oB,EAAU5R,QAAQzQ,GAAE2iB,EAAclpB,GAAGopB,WAAU,IAAOlX,SAAS2H,EAAO0K,qBAE1E,EDrDEsD,QELa,WACb,MAAMvO,EAAS/mB,KACf+mB,EAAO+C,KAAK,iBACZ,MAAM,YACJ/kB,EAAW,OACXwmB,EAAM,aACNwJ,EAAY,eACZZ,EAAc,eACdD,EAAc,SACdxI,EACAV,aAAcC,GACZlE,EACJ,IAAI+N,EACJ/N,EAAOoN,gBAAiB,EACxBpN,EAAOmN,gBAAiB,EACxB,MACM4C,GADiBpL,EAAS3mB,GACHgiB,EAAOgQ,eAEhChyB,EAAcgwB,GAChBD,EAAWvJ,EAAOtpB,OAAwB,EAAf8yB,EAAmBhwB,EAC9C+vB,GAAYC,EACShO,EAAOuM,QAAQwB,EAAU,GAAG,GAAO,IAE3B,IAATgC,GAClB/P,EAAOqN,cAAcnJ,GAAOlE,EAAOI,UAAYJ,EAAOI,WAAa2P,IAE5D/xB,GAAewmB,EAAOtpB,OAAS8yB,IAExCD,GAAYvJ,EAAOtpB,OAAS8C,EAAcgwB,EAC1CD,GAAYC,EACShO,EAAOuM,QAAQwB,EAAU,GAAG,GAAO,IAE3B,IAATgC,GAClB/P,EAAOqN,cAAcnJ,GAAOlE,EAAOI,UAAYJ,EAAOI,WAAa2P,IAIvE/P,EAAOoN,eAAiBA,EACxBpN,EAAOmN,eAAiBA,EACxBnN,EAAO+C,KAAK,UACd,EFlCEkN,YGNa,WACb,MACM,WACJlM,EAAU,OACVxD,EAAM,OACNiE,GAJavrB,KAMf8qB,EAAWnR,SAAU,IAAG2N,EAAOkE,cAAclE,EAAO0K,wBAAwB1K,EAAOkE,cAAclE,EAAOmP,mBAAmBtzB,SAC3HooB,EAAOhL,WAAW,0BACpB,GCMe,SAAS0W,GAAanlB,GACnC,MAAMiV,EAAS/mB,KACTY,EAAW0b,IACXnc,EAASmd,IACT+E,EAAO0E,EAAOmQ,iBACd,OACJ5P,EAAM,QACN6P,EAAO,QACP9L,GACEtE,EACJ,IAAKsE,EAAS,OAEd,GAAItE,EAAO6M,WAAatM,EAAOuM,+BAC7B,QAGG9M,EAAO6M,WAAatM,EAAOsF,SAAWtF,EAAOyK,MAChDhL,EAAOuO,UAGT,IAAIrxB,EAAI6N,EACJ7N,EAAEmzB,gBAAenzB,EAAIA,EAAEmzB,eAC3B,IAAIC,EAAYrjB,GAAE/P,EAAElD,QAEpB,GAAiC,YAA7BumB,EAAOgQ,oBACJD,EAAUr2B,QAAQ+lB,EAAOS,WAAWvlB,OAAQ,OAInD,GADAogB,EAAKkV,aAA0B,eAAXtzB,EAAEqM,MACjB+R,EAAKkV,cAAgB,UAAWtzB,GAAiB,IAAZA,EAAEuzB,MAAa,OACzD,IAAKnV,EAAKkV,cAAgB,WAAYtzB,GAAKA,EAAEwzB,OAAS,EAAG,OACzD,GAAIpV,EAAKqV,WAAarV,EAAKsV,QAAS,OAELrQ,EAAOsQ,gBAA4C,KAA1BtQ,EAAOsQ,gBAEnC3zB,EAAElD,QAAUkD,EAAElD,OAAO82B,YAAc/lB,EAAMgmB,MAAQhmB,EAAMgmB,KAAK,KACtFT,EAAYrjB,GAAElC,EAAMgmB,KAAK,KAG3B,MAAMC,EAAoBzQ,EAAOyQ,kBAAoBzQ,EAAOyQ,kBAAqB,IAAGzQ,EAAOsQ,iBACrFI,KAAoB/zB,EAAElD,SAAUkD,EAAElD,OAAO82B,YAE/C,GAAIvQ,EAAO2Q,YAAcD,EArD3B,SAAwBzgB,EAAUjF,EAAOtS,MAQvC,OAPA,SAASk4B,EAAcvsB,GACrB,OAAKA,GAAMA,IAAO2Q,KAAiB3Q,IAAO2R,KACtC3R,EAAGwsB,eAAcxsB,EAAKA,EAAGwsB,cACfxsB,EAAG3K,QAAQuW,IACT2gB,EAAcvsB,EAAGysB,cAAcpc,OAHe,IAIhE,CAEOkc,CAAc5lB,EACvB,CA4C4C+lB,CAAeN,EAAmB9zB,EAAElD,QAAUs2B,EAAUr2B,QAAQ+2B,GAAmB,IAE3H,YADAhR,EAAOuR,YAAa,GAItB,GAAIhR,EAAOiR,eACJlB,EAAUr2B,QAAQsmB,EAAOiR,cAAc,GAAI,OAGlDpB,EAAQqB,SAAsB,eAAXv0B,EAAEqM,KAAwBrM,EAAEw0B,cAAc,GAAGC,MAAQz0B,EAAEy0B,MAC1EvB,EAAQwB,SAAsB,eAAX10B,EAAEqM,KAAwBrM,EAAEw0B,cAAc,GAAGG,MAAQ30B,EAAE20B,MAC1E,MAAMC,EAAS1B,EAAQqB,SACjBM,EAAS3B,EAAQwB,SAEjBI,EAAqBzR,EAAOyR,oBAAsBzR,EAAO0R,sBACzDC,EAAqB3R,EAAO2R,oBAAsB3R,EAAO4R,sBAE/D,GAAIH,IAAuBF,GAAUI,GAAsBJ,GAAU14B,EAAOC,WAAa64B,GAAqB,CAC5G,GAA2B,YAAvBF,EAGF,OAFAjnB,EAAM7Q,gBAIV,CAiBA,GAfA2R,OAAO4X,OAAOnI,EAAM,CAClBqV,WAAW,EACXC,SAAS,EACTwB,qBAAqB,EACrBC,iBAAal3B,EACbm3B,iBAAan3B,IAEfi1B,EAAQ0B,OAASA,EACjB1B,EAAQ2B,OAASA,EACjBzW,EAAKiX,eAAiB5T,KACtBqB,EAAOuR,YAAa,EACpBvR,EAAOgD,aACPhD,EAAOwS,oBAAiBr3B,EACpBolB,EAAO2O,UAAY,IAAG5T,EAAKmX,oBAAqB,GAErC,eAAXv1B,EAAEqM,KAAuB,CAC3B,IAAIrP,GAAiB,EACjBo2B,EAAUlW,GAAGkB,EAAKoX,qBAAoBx4B,GAAiB,GAEvDL,EAAS6F,eAAiBuN,GAAEpT,EAAS6F,eAAe0a,GAAGkB,EAAKoX,oBAAsB74B,EAAS6F,gBAAkB4wB,EAAU,IACzHz2B,EAAS6F,cAAcG,OAGzB,MAAM8yB,EAAuBz4B,GAAkB8lB,EAAO4S,gBAAkBrS,EAAOsS,0BAE1EtS,EAAOuS,gCAAiCH,GAA0BrC,EAAU,GAAGyC,mBAClF71B,EAAEhD,gBAEN,CAEA8lB,EAAO+C,KAAK,aAAc7lB,EAC5B,CC9Ge,SAAS81B,GAAYjoB,GAClC,MAAMlR,EAAW0b,IACXyK,EAAS/mB,KACTqiB,EAAO0E,EAAOmQ,iBACd,OACJ5P,EAAM,QACN6P,EACAnM,aAAcC,EAAG,QACjBI,GACEtE,EACJ,IAAKsE,EAAS,OACd,IAAIpnB,EAAI6N,EAGR,GAFI7N,EAAEmzB,gBAAenzB,EAAIA,EAAEmzB,gBAEtB/U,EAAKqV,UAKR,YAJIrV,EAAKgX,aAAehX,EAAK+W,aAC3BrS,EAAO+C,KAAK,oBAAqB7lB,IAMrC,GAAIoe,EAAKkV,cAA2B,cAAXtzB,EAAEqM,KAAsB,OACjD,MAAM0pB,EAAyB,cAAX/1B,EAAEqM,MAAwBrM,EAAEw0B,gBAAkBx0B,EAAEw0B,cAAc,IAAMx0B,EAAEg2B,eAAe,IACnGvB,EAAmB,cAAXz0B,EAAEqM,KAAuB0pB,EAAYtB,MAAQz0B,EAAEy0B,MACvDE,EAAmB,cAAX30B,EAAEqM,KAAuB0pB,EAAYpB,MAAQ30B,EAAE20B,MAE7D,GAAI30B,EAAEi2B,wBAGJ,OAFA/C,EAAQ0B,OAASH,OACjBvB,EAAQ2B,OAASF,GAInB,IAAK7R,EAAO4S,eAcV,OAZA5S,EAAOuR,YAAa,OAEhBjW,EAAKqV,YACP9kB,OAAO4X,OAAO2M,EAAS,CACrB0B,OAAQH,EACRI,OAAQF,EACRJ,SAAUE,EACVC,SAAUC,IAEZvW,EAAKiX,eAAiB5T,OAM1B,GAAIrD,EAAKkV,cAAgBjQ,EAAO6S,sBAAwB7S,EAAOyK,KAC7D,GAAIhL,EAAOqD,cAET,GAAIwO,EAAQzB,EAAQ2B,QAAU/R,EAAOI,WAAaJ,EAAOiK,gBAAkB4H,EAAQzB,EAAQ2B,QAAU/R,EAAOI,WAAaJ,EAAOyJ,eAG9H,OAFAnO,EAAKqV,WAAY,OACjBrV,EAAKsV,SAAU,QAGZ,GAAIe,EAAQvB,EAAQ0B,QAAU9R,EAAOI,WAAaJ,EAAOiK,gBAAkB0H,EAAQvB,EAAQ0B,QAAU9R,EAAOI,WAAaJ,EAAOyJ,eACrI,OAIJ,GAAInO,EAAKkV,cAAgB32B,EAAS6F,eAC5BxC,EAAElD,SAAWH,EAAS6F,eAAiBuN,GAAE/P,EAAElD,QAAQogB,GAAGkB,EAAKoX,mBAG7D,OAFApX,EAAKsV,SAAU,OACf5Q,EAAOuR,YAAa,GASxB,GAJIjW,EAAK8W,qBACPpS,EAAO+C,KAAK,YAAa7lB,GAGvBA,EAAEw0B,eAAiBx0B,EAAEw0B,cAAcx2B,OAAS,EAAG,OACnDk1B,EAAQqB,SAAWE,EACnBvB,EAAQwB,SAAWC,EACnB,MAAMwB,EAAQjD,EAAQqB,SAAWrB,EAAQ0B,OACnCwB,EAAQlD,EAAQwB,SAAWxB,EAAQ2B,OACzC,GAAI/R,EAAOO,OAAO2O,WAAahO,KAAKqS,KAAKF,GAAS,EAAIC,GAAS,GAAKtT,EAAOO,OAAO2O,UAAW,OAE7F,QAAgC,IAArB5T,EAAK+W,YAA6B,CAC3C,IAAImB,EAEAxT,EAAOoD,gBAAkBgN,EAAQwB,WAAaxB,EAAQ2B,QAAU/R,EAAOqD,cAAgB+M,EAAQqB,WAAarB,EAAQ0B,OACtHxW,EAAK+W,aAAc,EAGfgB,EAAQA,EAAQC,EAAQA,GAAS,KACnCE,EAA4D,IAA/CtS,KAAKuS,MAAMvS,KAAK+F,IAAIqM,GAAQpS,KAAK+F,IAAIoM,IAAgBnS,KAAKK,GACvEjG,EAAK+W,YAAcrS,EAAOoD,eAAiBoQ,EAAajT,EAAOiT,WAAa,GAAKA,EAAajT,EAAOiT,WAG3G,CAYA,GAVIlY,EAAK+W,aACPrS,EAAO+C,KAAK,oBAAqB7lB,QAGH,IAArBoe,EAAKgX,cACVlC,EAAQqB,WAAarB,EAAQ0B,QAAU1B,EAAQwB,WAAaxB,EAAQ2B,SACtEzW,EAAKgX,aAAc,IAInBhX,EAAK+W,YAEP,YADA/W,EAAKqV,WAAY,GAInB,IAAKrV,EAAKgX,YACR,OAGFtS,EAAOuR,YAAa,GAEfhR,EAAOsF,SAAW3oB,EAAEme,YACvBne,EAAEhD,iBAGAqmB,EAAOmT,2BAA6BnT,EAAOoT,QAC7Cz2B,EAAE02B,kBAGCtY,EAAKsV,UACJrQ,EAAOyK,OAASzK,EAAOsF,SACzB7F,EAAOuO,UAGTjT,EAAKuY,eAAiB7T,EAAOgQ,eAC7BhQ,EAAO4I,cAAc,GAEjB5I,EAAO6M,WACT7M,EAAO+D,WAAW/b,QAAQ,qCAG5BsT,EAAKwY,qBAAsB,GAEvBvT,EAAOwT,aAAyC,IAA1B/T,EAAOmN,iBAAqD,IAA1BnN,EAAOoN,gBACjEpN,EAAOgU,eAAc,GAGvBhU,EAAO+C,KAAK,kBAAmB7lB,IAGjC8iB,EAAO+C,KAAK,aAAc7lB,GAC1Boe,EAAKsV,SAAU,EACf,IAAIb,EAAO/P,EAAOoD,eAAiBiQ,EAAQC,EAC3ClD,EAAQL,KAAOA,EACfA,GAAQxP,EAAO0T,WACX/P,IAAK6L,GAAQA,GACjB/P,EAAOwS,eAAiBzC,EAAO,EAAI,OAAS,OAC5CzU,EAAK4Y,iBAAmBnE,EAAOzU,EAAKuY,eACpC,IAAIM,GAAsB,EACtBC,EAAkB7T,EAAO6T,gBAgC7B,GA9BI7T,EAAO6S,sBACTgB,EAAkB,GAGhBrE,EAAO,GAAKzU,EAAK4Y,iBAAmBlU,EAAOyJ,gBAC7C0K,GAAsB,EAClB5T,EAAO8T,aAAY/Y,EAAK4Y,iBAAmBlU,EAAOyJ,eAAiB,IAAMzJ,EAAOyJ,eAAiBnO,EAAKuY,eAAiB9D,IAASqE,IAC3HrE,EAAO,GAAKzU,EAAK4Y,iBAAmBlU,EAAOiK,iBACpDkK,GAAsB,EAClB5T,EAAO8T,aAAY/Y,EAAK4Y,iBAAmBlU,EAAOiK,eAAiB,GAAKjK,EAAOiK,eAAiB3O,EAAKuY,eAAiB9D,IAASqE,IAGjID,IACFj3B,EAAEi2B,yBAA0B,IAIzBnT,EAAOmN,gBAA4C,SAA1BnN,EAAOwS,gBAA6BlX,EAAK4Y,iBAAmB5Y,EAAKuY,iBAC7FvY,EAAK4Y,iBAAmB5Y,EAAKuY,iBAG1B7T,EAAOoN,gBAA4C,SAA1BpN,EAAOwS,gBAA6BlX,EAAK4Y,iBAAmB5Y,EAAKuY,iBAC7FvY,EAAK4Y,iBAAmB5Y,EAAKuY,gBAG1B7T,EAAOoN,gBAAmBpN,EAAOmN,iBACpC7R,EAAK4Y,iBAAmB5Y,EAAKuY,gBAI3BtT,EAAO2O,UAAY,EAAG,CACxB,KAAIhO,KAAK+F,IAAI8I,GAAQxP,EAAO2O,WAAa5T,EAAKmX,oBAW5C,YADAnX,EAAK4Y,iBAAmB5Y,EAAKuY,gBAT7B,IAAKvY,EAAKmX,mBAMR,OALAnX,EAAKmX,oBAAqB,EAC1BrC,EAAQ0B,OAAS1B,EAAQqB,SACzBrB,EAAQ2B,OAAS3B,EAAQwB,SACzBtW,EAAK4Y,iBAAmB5Y,EAAKuY,oBAC7BzD,EAAQL,KAAO/P,EAAOoD,eAAiBgN,EAAQqB,SAAWrB,EAAQ0B,OAAS1B,EAAQwB,SAAWxB,EAAQ2B,OAO5G,CAEKxR,EAAO+T,eAAgB/T,EAAOsF,WAE/BtF,EAAOgU,UAAYhU,EAAOgU,SAASjQ,SAAWtE,EAAOuU,UAAYhU,EAAOiI,uBAC1ExI,EAAOqL,oBACPrL,EAAOuK,uBAGLvK,EAAOO,OAAOgU,UAAYhU,EAAOgU,SAASjQ,SAAWtE,EAAOuU,UAC9DvU,EAAOuU,SAASvB,cAIlBhT,EAAO8J,eAAexO,EAAK4Y,kBAE3BlU,EAAOqN,aAAa/R,EAAK4Y,kBAC3B,CC5Ne,SAASM,GAAWzpB,GACjC,MAAMiV,EAAS/mB,KACTqiB,EAAO0E,EAAOmQ,iBACd,OACJ5P,EAAM,QACN6P,EACAnM,aAAcC,EAAG,WACjBU,EAAU,QACVN,GACEtE,EACJ,IAAKsE,EAAS,OACd,IAAIpnB,EAAI6N,EASR,GARI7N,EAAEmzB,gBAAenzB,EAAIA,EAAEmzB,eAEvB/U,EAAK8W,qBACPpS,EAAO+C,KAAK,WAAY7lB,GAG1Boe,EAAK8W,qBAAsB,GAEtB9W,EAAKqV,UAOR,OANIrV,EAAKsV,SAAWrQ,EAAOwT,YACzB/T,EAAOgU,eAAc,GAGvB1Y,EAAKsV,SAAU,OACftV,EAAKgX,aAAc,GAKjB/R,EAAOwT,YAAczY,EAAKsV,SAAWtV,EAAKqV,aAAwC,IAA1B3Q,EAAOmN,iBAAqD,IAA1BnN,EAAOoN,iBACnGpN,EAAOgU,eAAc,GAIvB,MAAMS,EAAe9V,KACf+V,EAAWD,EAAenZ,EAAKiX,eAErC,GAAIvS,EAAOuR,WAAY,CACrB,MAAMoD,EAAWz3B,EAAE6zB,MAAQ7zB,EAAE03B,cAAgB13B,EAAE03B,eAC/C5U,EAAO8L,mBAAmB6I,GAAYA,EAAS,IAAMz3B,EAAElD,QACvDgmB,EAAO+C,KAAK,YAAa7lB,GAErBw3B,EAAW,KAAOD,EAAenZ,EAAKuZ,cAAgB,KACxD7U,EAAO+C,KAAK,wBAAyB7lB,EAEzC,CAOA,GALAoe,EAAKuZ,cAAgBlW,KACrBD,IAAS,KACFsB,EAAO6N,YAAW7N,EAAOuR,YAAa,EAAI,KAG5CjW,EAAKqV,YAAcrV,EAAKsV,UAAY5Q,EAAOwS,gBAAmC,IAAjBpC,EAAQL,MAAczU,EAAK4Y,mBAAqB5Y,EAAKuY,eAIrH,OAHAvY,EAAKqV,WAAY,EACjBrV,EAAKsV,SAAU,OACftV,EAAKgX,aAAc,GAOrB,IAAIwC,EAQJ,GAXAxZ,EAAKqV,WAAY,EACjBrV,EAAKsV,SAAU,EACftV,EAAKgX,aAAc,EAIjBwC,EADEvU,EAAO+T,aACIpQ,EAAMlE,EAAOI,WAAaJ,EAAOI,WAEhC9E,EAAK4Y,iBAGjB3T,EAAOsF,QACT,OAGF,GAAI7F,EAAOO,OAAOgU,UAAYhU,EAAOgU,SAASjQ,QAI5C,YAHAtE,EAAOuU,SAASC,WAAW,CACzBM,eAMJ,IAAIC,EAAY,EACZC,EAAYhV,EAAO6E,gBAAgB,GAEvC,IAAK,IAAIne,EAAI,EAAGA,EAAIke,EAAW1pB,OAAQwL,GAAKA,EAAI6Z,EAAO4G,mBAAqB,EAAI5G,EAAO2G,eAAgB,CACrG,MAAMmH,EAAY3nB,EAAI6Z,EAAO4G,mBAAqB,EAAI,EAAI5G,EAAO2G,oBAExB,IAA9BtC,EAAWle,EAAI2nB,GACpByG,GAAclQ,EAAWle,IAAMouB,EAAalQ,EAAWle,EAAI2nB,KAC7D0G,EAAYruB,EACZsuB,EAAYpQ,EAAWle,EAAI2nB,GAAazJ,EAAWle,IAE5CouB,GAAclQ,EAAWle,KAClCquB,EAAYruB,EACZsuB,EAAYpQ,EAAWA,EAAW1pB,OAAS,GAAK0pB,EAAWA,EAAW1pB,OAAS,GAEnF,CAGA,MAAM+5B,GAASH,EAAalQ,EAAWmQ,IAAcC,EAC/C3G,EAAY0G,EAAYxU,EAAO4G,mBAAqB,EAAI,EAAI5G,EAAO2G,eAEzE,GAAIwN,EAAWnU,EAAO2U,aAAc,CAElC,IAAK3U,EAAO4U,WAEV,YADAnV,EAAOuM,QAAQvM,EAAOhiB,aAIM,SAA1BgiB,EAAOwS,iBACLyC,GAAS1U,EAAO6U,gBAAiBpV,EAAOuM,QAAQwI,EAAY1G,GAAgBrO,EAAOuM,QAAQwI,IAGnE,SAA1B/U,EAAOwS,iBACLyC,EAAQ,EAAI1U,EAAO6U,gBAAiBpV,EAAOuM,QAAQwI,EAAY1G,GAAgBrO,EAAOuM,QAAQwI,GAEtG,KAAO,CAEL,IAAKxU,EAAO8U,YAEV,YADArV,EAAOuM,QAAQvM,EAAOhiB,cAIEgiB,EAAOsV,YAAep4B,EAAElD,SAAWgmB,EAAOsV,WAAWC,QAAUr4B,EAAElD,SAAWgmB,EAAOsV,WAAWE,QAGxF,SAA1BxV,EAAOwS,gBACTxS,EAAOuM,QAAQwI,EAAY1G,GAGC,SAA1BrO,EAAOwS,gBACTxS,EAAOuM,QAAQwI,IAER73B,EAAElD,SAAWgmB,EAAOsV,WAAWC,OACxCvV,EAAOuM,QAAQwI,EAAY1G,GAE3BrO,EAAOuM,QAAQwI,EAEnB,CACF,CC/Ie,SAASU,KACtB,MAAMzV,EAAS/mB,MACT,OACJsnB,EAAM,GACN3b,GACEob,EACJ,GAAIpb,GAAyB,IAAnBA,EAAGmX,YAAmB,OAE5BwE,EAAO8F,aACTrG,EAAO0V,gBAIT,MAAM,eACJvI,EAAc,eACdC,EAAc,SACdzI,GACE3E,EAEJA,EAAOmN,gBAAiB,EACxBnN,EAAOoN,gBAAiB,EACxBpN,EAAOgD,aACPhD,EAAO0D,eACP1D,EAAOuK,uBAEuB,SAAzBhK,EAAO6F,eAA4B7F,EAAO6F,cAAgB,IAAMpG,EAAOmK,QAAUnK,EAAOkK,cAAgBlK,EAAOO,OAAOqF,eACzH5F,EAAOuM,QAAQvM,EAAOwE,OAAOtpB,OAAS,EAAG,GAAG,GAAO,GAEnD8kB,EAAOuM,QAAQvM,EAAOhiB,YAAa,GAAG,GAAO,GAG3CgiB,EAAO2V,UAAY3V,EAAO2V,SAASC,SAAW5V,EAAO2V,SAASE,QAChE7V,EAAO2V,SAASG,MAIlB9V,EAAOoN,eAAiBA,EACxBpN,EAAOmN,eAAiBA,EAEpBnN,EAAOO,OAAO+H,eAAiB3D,IAAa3E,EAAO2E,UACrD3E,EAAOuI,eAEX,CC1Ce,SAASwN,GAAQ74B,GAC9B,MAAM8iB,EAAS/mB,KACV+mB,EAAOsE,UAEPtE,EAAOuR,aACNvR,EAAOO,OAAOyV,eAAe94B,EAAEhD,iBAE/B8lB,EAAOO,OAAO0V,0BAA4BjW,EAAO6M,YACnD3vB,EAAE02B,kBACF12B,EAAEg5B,6BAGR,CCZe,SAASC,KACtB,MAAMnW,EAAS/mB,MACT,UACJwnB,EAAS,aACTwD,EAAY,QACZK,GACEtE,EACJ,IAAKsE,EAAS,OAad,IAAI8R,EAZJpW,EAAOqW,kBAAoBrW,EAAOI,UAE9BJ,EAAOoD,eACTpD,EAAOI,WAAaK,EAAUjE,WAE9BwD,EAAOI,WAAaK,EAAU3f,WAIN,IAAtBkf,EAAOI,YAAkBJ,EAAOI,UAAY,GAChDJ,EAAOqL,oBACPrL,EAAOuK,sBAEP,MAAMP,EAAiBhK,EAAOiK,eAAiBjK,EAAOyJ,eAGpD2M,EADqB,IAAnBpM,EACY,GAEChK,EAAOI,UAAYJ,EAAOyJ,gBAAkBO,EAGzDoM,IAAgBpW,EAAOiB,UACzBjB,EAAO8J,eAAe7F,GAAgBjE,EAAOI,UAAYJ,EAAOI,WAGlEJ,EAAO+C,KAAK,eAAgB/C,EAAOI,WAAW,EAChD,CC3BA,IAAIkW,IAAqB,EAEzB,SAASC,KAAsB,CAE/B,MAAM9b,GAASA,CAACuF,EAAQ/T,KACtB,MAAMpS,EAAW0b,KACX,OACJgL,EAAM,YACNiW,EAAW,GACX5xB,EAAE,UACF6b,EAAS,OACTgW,EAAM,QACN/U,GACE1B,EACEjG,IAAYwG,EAAOoT,OACnB+C,EAAuB,OAAXzqB,EAAkB,mBAAqB,sBACnD0qB,EAAe1qB,EAErB,GAAKyV,EAAQK,MAIN,CACL,MAAME,IAAwC,eAAtBuU,EAAYI,QAA0BlV,EAAQO,kBAAmB1B,EAAOsW,mBAAmB,CACjHC,SAAS,EACT/c,SAAS,GAEXnV,EAAG8xB,GAAWF,EAAYI,MAAO5W,EAAOkQ,aAAcjO,GACtDrd,EAAG8xB,GAAWF,EAAYO,KAAM/W,EAAOgT,YAAatR,EAAQO,gBAAkB,CAC5E6U,SAAS,EACT/c,WACEA,GACJnV,EAAG8xB,GAAWF,EAAYQ,IAAKhX,EAAOwU,WAAYvS,GAE9CuU,EAAYS,QACdryB,EAAG8xB,GAAWF,EAAYS,OAAQjX,EAAOwU,WAAYvS,EAEzD,MAlBErd,EAAG8xB,GAAWF,EAAYI,MAAO5W,EAAOkQ,cAAc,GACtDr2B,EAAS68B,GAAWF,EAAYO,KAAM/W,EAAOgT,YAAajZ,GAC1DlgB,EAAS68B,GAAWF,EAAYQ,IAAKhX,EAAOwU,YAAY,IAmBtDjU,EAAOyV,eAAiBzV,EAAO0V,2BACjCrxB,EAAG8xB,GAAW,QAAS1W,EAAO+V,SAAS,GAGrCxV,EAAOsF,SACTpF,EAAUiW,GAAW,SAAU1W,EAAOmW,UAIpC5V,EAAO2W,qBACTlX,EAAO2W,GAAcF,EAAOU,KAAOV,EAAOW,QAAU,0CAA4C,wBAAyB3B,IAAU,GAEnIzV,EAAO2W,GAAc,iBAAkBlB,IAAU,EACnD,EAiCF,QACE4B,aA/BF,WACE,MAAMrX,EAAS/mB,KACTY,EAAW0b,KACX,OACJgL,EAAM,QACNmB,GACE1B,EACJA,EAAOkQ,aAAeA,GAAa32B,KAAKymB,GACxCA,EAAOgT,YAAcA,GAAYz5B,KAAKymB,GACtCA,EAAOwU,WAAaA,GAAWj7B,KAAKymB,GAEhCO,EAAOsF,UACT7F,EAAOmW,SAAWA,GAAS58B,KAAKymB,IAGlCA,EAAO+V,QAAUA,GAAQx8B,KAAKymB,GAE1B0B,EAAQK,QAAUuU,KACpBz8B,EAASC,iBAAiB,aAAcy8B,IACxCD,IAAqB,GAGvB7b,GAAOuF,EAAQ,KACjB,EASEsX,aAPF,WAEE7c,GADexhB,KACA,MACjB,GCzFA,MAAMs+B,GAAgBA,CAACvX,EAAQO,IACtBP,EAAO+F,MAAQxF,EAAOwF,MAAQxF,EAAOwF,KAAKC,KAAO,ECD1D,ICAA,IACEwR,WCaa,WACb,MAAMxX,EAAS/mB,MACT,WACJ6f,EAAU,OACVyH,EAAM,IACN2D,EAAG,IACHhB,EAAG,OACHuT,EAAM,QACN/U,GACE1B,EAEEyX,EA3BR,SAAwBh7B,EAASi7B,GAC/B,MAAMC,EAAgB,GAYtB,OAXAl7B,EAAQzB,SAAQqL,IACM,iBAATA,EACTwF,OAAOwI,KAAKhO,GAAMrL,SAAQ8d,IACpBzS,EAAKyS,IACP6e,EAAcn5B,KAAKk5B,EAAS5e,EAC9B,IAEuB,iBAATzS,GAChBsxB,EAAcn5B,KAAKk5B,EAASrxB,EAC9B,IAEKsxB,CACT,CAamBC,CAAe,CAAC,cAAerX,EAAO8L,UAAW,CAChE,kBAAmB3K,EAAQK,OAC1B,CACD,YAAa/B,EAAOO,OAAOgU,UAAYhU,EAAOgU,SAASjQ,SACtD,CACD,WAAc/D,EAAO+J,YACpB,CACD,IAAOpG,GACN,CACD,KAAQ3D,EAAOwF,MAAQxF,EAAOwF,KAAKC,KAAO,GACzC,CACD,cAAezF,EAAOwF,MAAQxF,EAAOwF,KAAKC,KAAO,GAA0B,WAArBzF,EAAOwF,KAAK8R,MACjE,CACD,QAAWpB,EAAOW,SACjB,CACD,IAAOX,EAAOU,KACb,CACD,WAAY5W,EAAOsF,SAClB,CACD,SAAYtF,EAAOsF,SAAWtF,EAAOqF,iBACnCrF,EAAOuX,wBACXhf,EAAWta,QAAQi5B,GACnBvU,EAAItK,SAAS,IAAIE,GAAYif,KAAK,MAClC/X,EAAOgY,sBACT,ED/CEC,cEJa,WACb,MACM,IACJ/U,EAAG,WACHpK,GAHa7f,KAKfiqB,EAAIlK,YAAYF,EAAWif,KAAK,MALjB9+B,KAMR++B,sBACT,GCRA,IACE3nB,MAAM,EACNgc,UAAW,aACXkE,kBAAmB,UACnBxD,aAAc,EACdvM,MAAO,IACPqF,SAAS,EACTqR,sBAAsB,EACtBgB,gBAAgB,EAChBvE,QAAQ,EACRwE,gBAAgB,EAChB7T,SAAS,EACToO,kBAAmB,wDAEnBzP,MAAO,KACP3kB,OAAQ,KAERwuB,gCAAgC,EAEhC5sB,UAAW,KACXk4B,IAAK,KAELpG,oBAAoB,EACpBE,mBAAoB,GAEpB5H,YAAY,EAEZjD,gBAAgB,EAEhBgR,kBAAkB,EAElBjR,OAAQ,QAGRf,iBAAalrB,EACbm9B,gBAAiB,SAEjBlT,aAAc,EACdgB,cAAe,EACfc,eAAgB,EAChBC,mBAAoB,EACpBgH,oBAAoB,EACpBvI,gBAAgB,EAChB+B,sBAAsB,EACtB5C,mBAAoB,EAEpBE,kBAAmB,EAEnByG,qBAAqB,EACrB1D,0BAA0B,EAE1BM,eAAe,EAEf1B,cAAc,EAEdqN,WAAY,EACZT,WAAY,GACZ+E,eAAe,EACflD,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBF,aAAc,IACdZ,cAAc,EACd1B,gBAAgB,EAChB1D,UAAW,EACXwE,0BAA0B,EAC1Bb,0BAA0B,EAC1BC,+BAA+B,EAC/BM,qBAAqB,EAErBoF,mBAAmB,EAEnBnE,YAAY,EACZD,gBAAiB,IAEjB5L,qBAAqB,EAErBuL,YAAY,EAEZiC,eAAe,EACfC,0BAA0B,EAC1B/J,qBAAqB,EAErBuM,eAAe,EACfC,qBAAqB,EAErB1N,MAAM,EACN2E,qBAAsB,EACtB3B,aAAc,KACduB,wBAAwB,EACxBjB,mBAAmB,EAEnBG,QAAQ,EAERrB,gBAAgB,EAChBD,gBAAgB,EAChBqE,aAAc,KAEdN,WAAW,EACXL,eAAgB,oBAChBG,kBAAmB,KAEnB6F,kBAAkB,EAElBiB,uBAAwB,UAExBrT,WAAY,eACZiL,gBAAiB,+BACjBhF,iBAAkB,sBAClBG,0BAA2B,gCAC3BxB,kBAAmB,uBACnB4B,oBAAqB,yBACrBN,eAAgB,oBAChBG,wBAAyB,8BACzBF,eAAgB,oBAChBG,wBAAyB,8BACzB4N,aAAc,iBAEd9M,oBAAoB,EAEpB+M,cAAc,GCvHD,SAASC,GAAmBtY,EAAQuY,GACjD,OAAO,SAAsB7kB,EAAM,CAAC,GAClC,MAAM8kB,EAAkBltB,OAAOwI,KAAKJ,GAAK,GACnC+kB,EAAe/kB,EAAI8kB,GAEG,iBAAjBC,GAA8C,OAAjBA,GAKpC,CAAC,aAAc,aAAc,aAAanhB,QAAQkhB,IAAoB,IAAiC,IAA5BxY,EAAOwY,KACpFxY,EAAOwY,GAAmB,CACxBE,MAAM,IAIJF,KAAmBxY,GAAU,YAAayY,IAKhB,IAA5BzY,EAAOwY,KACTxY,EAAOwY,GAAmB,CACxBzU,SAAS,IAI0B,iBAA5B/D,EAAOwY,IAAmC,YAAaxY,EAAOwY,KACvExY,EAAOwY,GAAiBzU,SAAU,GAG/B/D,EAAOwY,KAAkBxY,EAAOwY,GAAmB,CACtDzU,SAAS,IAEXnQ,GAAO2kB,EAAkB7kB,IAjBvBE,GAAO2kB,EAAkB7kB,IAXzBE,GAAO2kB,EAAkB7kB,EA6B7B,CACF,CCdA,MAAMilB,GAAa,CACjBC,cAAa,GACbC,OAAM,GACNhZ,UCrBF,CACE4P,aCLa,SAA4BqJ,GAAOpgC,KAAKmqB,eAAiB,IAAM,MAC5E,MACM,OACJ7C,EACA0D,aAAcC,EAAG,UACjB9D,EAAS,WACT2D,GALa9qB,KAQf,GAAIsnB,EAAO8X,iBACT,OAAOnU,GAAO9D,EAAYA,EAG5B,GAAIG,EAAOsF,QACT,OAAOzF,EAGT,IAAI8T,E5C0BN,SAAsBtvB,EAAIy0B,EAAO,KAC/B,MAAMjgC,EAASmd,IACf,IAAIrQ,EACAozB,EACAC,EACJ,MAAMC,EAxBR,SAA0B50B,GACxB,MAAMxL,EAASmd,IACf,IAAIjb,EAcJ,OAZIlC,EAAO2c,mBACTza,EAAQlC,EAAO2c,iBAAiBnR,EAAI,QAGjCtJ,GAASsJ,EAAG60B,eACfn+B,EAAQsJ,EAAG60B,cAGRn+B,IACHA,EAAQsJ,EAAGtJ,OAGNA,CACT,CAOmBya,CAAiBnR,GA+BlC,OA7BIxL,EAAOsgC,iBACTJ,EAAeE,EAAS/f,WAAa+f,EAAS7S,gBAE1C2S,EAAahhB,MAAM,KAAKpd,OAAS,IACnCo+B,EAAeA,EAAahhB,MAAM,MAAMzF,KAAInU,GAAKA,EAAE8H,QAAQ,IAAK,OAAMuxB,KAAK,OAK7EwB,EAAkB,IAAIngC,EAAOsgC,gBAAiC,SAAjBJ,EAA0B,GAAKA,KAE5EC,EAAkBC,EAASG,cAAgBH,EAASI,YAAcJ,EAASK,aAAeL,EAASM,aAAeN,EAAS/f,WAAa+f,EAASxjB,iBAAiB,aAAaxP,QAAQ,aAAc,sBACrMN,EAASqzB,EAAgB1a,WAAWvG,MAAM,MAG/B,MAAT+gB,IAE0BC,EAAxBlgC,EAAOsgC,gBAAgCH,EAAgBQ,IAChC,KAAlB7zB,EAAOhL,OAA8B8gB,WAAW9V,EAAO,KAC5C8V,WAAW9V,EAAO,KAG3B,MAATmzB,IAE0BC,EAAxBlgC,EAAOsgC,gBAAgCH,EAAgBS,IAChC,KAAlB9zB,EAAOhL,OAA8B8gB,WAAW9V,EAAO,KAC5C8V,WAAW9V,EAAO,KAGjCozB,GAAgB,CACzB,C4C/DyBtJ,CAAajM,EAAW,GAAIsV,GAEnD,OADInV,IAAKgQ,GAAoBA,GACtBA,GAAoB,CAC7B,EDdE7G,aEPa,SAAsBjN,EAAW6Z,GAC9C,MAAMja,EAAS/mB,MAEbgrB,aAAcC,EAAG,OACjB3D,EAAM,WACNwD,EAAU,UACVtD,EAAS,SACTQ,GACEjB,EACJ,IAwBIoW,EAxBA8D,EAAI,EACJC,EAAI,EAGJna,EAAOoD,eACT8W,EAAIhW,GAAO9D,EAAYA,EAEvB+Z,EAAI/Z,EAGFG,EAAOqG,eACTsT,EAAIhZ,KAAK6F,MAAMmT,GACfC,EAAIjZ,KAAK6F,MAAMoT,IAGb5Z,EAAOsF,QACTpF,EAAUT,EAAOoD,eAAiB,aAAe,aAAepD,EAAOoD,gBAAkB8W,GAAKC,EACpF5Z,EAAO8X,kBACjBtU,EAAWtK,UAAW,eAAcygB,QAAQC,aAG9Cna,EAAOqW,kBAAoBrW,EAAOI,UAClCJ,EAAOI,UAAYJ,EAAOoD,eAAiB8W,EAAIC,EAG/C,MAAMnQ,EAAiBhK,EAAOiK,eAAiBjK,EAAOyJ,eAGpD2M,EADqB,IAAnBpM,EACY,GAEC5J,EAAYJ,EAAOyJ,gBAAkBO,EAGlDoM,IAAgBnV,GAClBjB,EAAO8J,eAAe1J,GAGxBJ,EAAO+C,KAAK,eAAgB/C,EAAOI,UAAW6Z,EAChD,EFvCExQ,aGRa,WACb,OAAQxwB,KAAK0rB,SAAS,EACxB,EHOEsF,aITa,WACb,OAAQhxB,KAAK0rB,SAAS1rB,KAAK0rB,SAASzpB,OAAS,EAC/C,EJQEk/B,YKTa,SAAqBha,EAAY,EAAGI,EAAQvnB,KAAKsnB,OAAOC,MAAO4L,GAAe,EAAMiO,GAAkB,EAAM7N,GACzH,MAAMxM,EAAS/mB,MACT,OACJsnB,EAAM,UACNE,GACET,EAEJ,GAAIA,EAAO6M,WAAatM,EAAOuM,+BAC7B,OAAO,EAGT,MAAMrD,EAAezJ,EAAOyJ,eACtBQ,EAAejK,EAAOiK,eAC5B,IAAIqQ,EAKJ,GAJiDA,EAA7CD,GAAmBja,EAAYqJ,EAA6BA,EAAsB4Q,GAAmBja,EAAY6J,EAA6BA,EAAiC7J,EAEnLJ,EAAO8J,eAAewQ,GAElB/Z,EAAOsF,QAAS,CAClB,MAAM0H,EAAMvN,EAAOoD,eAEnB,GAAc,IAAV5C,EACFC,EAAU8M,EAAM,aAAe,cAAgB+M,MAC1C,CACL,IAAKta,EAAO0B,QAAQI,aAMlB,OALA/B,GAAqB,CACnBC,SACAC,gBAAiBqa,EACjBpa,KAAMqN,EAAM,OAAS,SAEhB,EAGT9M,EAAUpf,SAAS,CACjB,CAACksB,EAAM,OAAS,QAAS+M,EACzB3M,SAAU,UAEd,CAEA,OAAO,CACT,CA0CA,OAxCc,IAAVnN,GACFR,EAAO4I,cAAc,GACrB5I,EAAOqN,aAAaiN,GAEhBlO,IACFpM,EAAO+C,KAAK,wBAAyBvC,EAAOgM,GAC5CxM,EAAO+C,KAAK,oBAGd/C,EAAO4I,cAAcpI,GACrBR,EAAOqN,aAAaiN,GAEhBlO,IACFpM,EAAO+C,KAAK,wBAAyBvC,EAAOgM,GAC5CxM,EAAO+C,KAAK,oBAGT/C,EAAO6M,YACV7M,EAAO6M,WAAY,EAEd7M,EAAOua,oCACVva,EAAOua,kCAAoC,SAAuBr9B,GAC3D8iB,IAAUA,EAAO6N,WAClB3wB,EAAElD,SAAWf,OACjB+mB,EAAO+D,WAAW,GAAGxhB,oBAAoB,gBAAiByd,EAAOua,mCACjEva,EAAO+D,WAAW,GAAGxhB,oBAAoB,sBAAuByd,EAAOua,mCACvEva,EAAOua,kCAAoC,YACpCva,EAAOua,kCAEVnO,GACFpM,EAAO+C,KAAK,iBAEhB,GAGF/C,EAAO+D,WAAW,GAAGjqB,iBAAiB,gBAAiBkmB,EAAOua,mCAC9Dva,EAAO+D,WAAW,GAAGjqB,iBAAiB,sBAAuBkmB,EAAOua,sCAIjE,CACT,GNzDEh/B,WOxBF,CACEqtB,cCJa,SAAuBlP,EAAUugB,GAC9C,MAAMja,EAAS/mB,KAEV+mB,EAAOO,OAAOsF,SACjB7F,EAAO+D,WAAWxoB,WAAWme,GAG/BsG,EAAO+C,KAAK,gBAAiBrJ,EAAUugB,EACzC,EDHE3M,gBEJa,SAAyBlB,GAAe,EAAMC,GAC3D,MAAMrM,EAAS/mB,MACT,OACJsnB,GACEP,EACAO,EAAOsF,UAEPtF,EAAO+J,YACTtK,EAAO0I,mBAGTyD,GAAe,CACbnM,SACAoM,eACAC,YACAC,KAAM,UAEV,EFZE7Q,cGLa,SAAuB2Q,GAAe,EAAMC,GACzD,MAAMrM,EAAS/mB,MACT,OACJsnB,GACEP,EACJA,EAAO6M,WAAY,EACftM,EAAOsF,UACX7F,EAAO4I,cAAc,GACrBuD,GAAe,CACbnM,SACAoM,eACAC,YACAC,KAAM,QAEV,GVaEhG,MAAK,GACL0E,KAAI,GACJ+I,WW5BF,CACEC,cCHa,SAAuBwG,GACpC,MAAMxa,EAAS/mB,KACf,GAAI+mB,EAAO0B,QAAQK,QAAU/B,EAAOO,OAAOgY,eAAiBvY,EAAOO,OAAO+H,eAAiBtI,EAAOya,UAAYza,EAAOO,OAAOsF,QAAS,OACrI,MAAMjhB,EAAyC,cAApCob,EAAOO,OAAOgQ,kBAAoCvQ,EAAOpb,GAAKob,EAAOS,UAChF7b,EAAGtJ,MAAMo/B,OAAS,OAClB91B,EAAGtJ,MAAMo/B,OAASF,EAAS,mBAAqB,eAChD51B,EAAGtJ,MAAMo/B,OAASF,EAAS,eAAiB,YAC5C51B,EAAGtJ,MAAMo/B,OAASF,EAAS,WAAa,MAC1C,EDJEG,gBEJa,WACb,MAAM3a,EAAS/mB,KAEX+mB,EAAO0B,QAAQK,OAAS/B,EAAOO,OAAO+H,eAAiBtI,EAAOya,UAAYza,EAAOO,OAAOsF,UAI5F7F,EAA2C,cAApCA,EAAOO,OAAOgQ,kBAAoC,KAAO,aAAaj1B,MAAMo/B,OAAS,GAC9F,GbuBEjgB,OAAM,GACN4L,YN9BF,CACEqP,cDGa,WACb,MAAM1V,EAAS/mB,MACT,YACJ+E,EAAW,YACX4tB,EAAW,aACXoC,EAAe,EAAC,OAChBzN,EAAM,IACN2C,GACElD,EACEqG,EAAc9F,EAAO8F,YAC3B,IAAKA,GAAeA,GAAmD,IAApCxa,OAAOwI,KAAKgS,GAAanrB,OAAc,OAE1E,MAAM0/B,EAAa5a,EAAO6a,cAAcxU,EAAarG,EAAOO,OAAO+X,gBAAiBtY,EAAOpb,IAC3F,IAAKg2B,GAAc5a,EAAO8a,oBAAsBF,EAAY,OAC5D,MACMG,GADuBH,KAAcvU,EAAcA,EAAYuU,QAAcz/B,IAClC6kB,EAAOgb,eAClDC,EAAc1D,GAAcvX,EAAQO,GACpC2a,EAAa3D,GAAcvX,EAAQ+a,GACnCI,EAAa5a,EAAO+D,QAEtB2W,IAAgBC,GAClBhY,EAAIlK,YAAa,GAAEuH,EAAOuX,8BAA8BvX,EAAOuX,qCAC/D9X,EAAOgY,yBACGiD,GAAeC,IACzBhY,EAAItK,SAAU,GAAE2H,EAAOuX,+BAEnBiD,EAAiBhV,KAAK8R,MAAuC,WAA/BkD,EAAiBhV,KAAK8R,OAAsBkD,EAAiBhV,KAAK8R,MAA6B,WAArBtX,EAAOwF,KAAK8R,OACtH3U,EAAItK,SAAU,GAAE2H,EAAOuX,qCAGzB9X,EAAOgY,wBAGT,MAAMoD,EAAmBL,EAAiB1O,WAAa0O,EAAiB1O,YAAc9L,EAAO8L,UACvFgP,EAAc9a,EAAOyK,OAAS+P,EAAiB3U,gBAAkB7F,EAAO6F,eAAiBgV,GAE3FA,GAAoBxP,GACtB5L,EAAOsb,kBAGTnnB,GAAO6L,EAAOO,OAAQwa,GACtB,MAAMQ,EAAYvb,EAAOO,OAAO+D,QAChCzY,OAAO4X,OAAOzD,EAAQ,CACpB4S,eAAgB5S,EAAOO,OAAOqS,eAC9BzF,eAAgBnN,EAAOO,OAAO4M,eAC9BC,eAAgBpN,EAAOO,OAAO6M,iBAG5B+N,IAAeI,EACjBvb,EAAOwb,WACGL,GAAcI,GACxBvb,EAAOyb,SAGTzb,EAAO8a,kBAAoBF,EAC3B5a,EAAO+C,KAAK,oBAAqBgY,GAE7BM,GAAezP,IACjB5L,EAAOiQ,cACPjQ,EAAOqP,aACPrP,EAAO0D,eACP1D,EAAOuM,QAAQvuB,EAAcgwB,EAAehO,EAAOgO,aAAc,GAAG,IAGtEhO,EAAO+C,KAAK,aAAcgY,EAC5B,ECnEEF,coBHa,SAAuBxU,EAAa9a,EAAO,SAAUmwB,GAClE,IAAKrV,GAAwB,cAAT9a,IAAyBmwB,EAAa,OAC1D,IAAId,GAAa,EACjB,MAAMxhC,EAASmd,IACT5W,EAAyB,WAAT4L,EAAoBnS,EAAOuiC,YAAcD,EAAYvY,aACrEyY,EAAS/vB,OAAOwI,KAAKgS,GAAaxT,KAAIgpB,IAC1C,GAAqB,iBAAVA,GAA6C,IAAvBA,EAAMhkB,QAAQ,KAAY,CACzD,MAAMikB,EAAW9f,WAAW6f,EAAME,OAAO,IAEzC,MAAO,CACLpiC,MAFYgG,EAAgBm8B,EAG5BD,QAEJ,CAEA,MAAO,CACLliC,MAAOkiC,EACPA,QACD,IAEHD,EAAOn9B,MAAK,CAACC,EAAGC,IAAM2kB,SAAS5kB,EAAE/E,MAAO,IAAM2pB,SAAS3kB,EAAEhF,MAAO,MAEhE,IAAK,IAAI+M,EAAI,EAAGA,EAAIk1B,EAAO1gC,OAAQwL,GAAK,EAAG,CACzC,MAAM,MACJm1B,EAAK,MACLliC,GACEiiC,EAAOl1B,GAEE,WAAT6E,EACEnS,EAAOkB,WAAY,eAAcX,QAAYY,UAC/CqgC,EAAaiB,GAENliC,GAAS+hC,EAAYj7B,cAC9Bm6B,EAAaiB,EAEjB,CAEA,OAAOjB,GAAc,KACvB,GdNErS,ceEF,CACEA,cApCF,WACE,MAAMvI,EAAS/mB,MAEbwhC,SAAUuB,EAAS,OACnBzb,GACEP,GACE,mBACJ+E,GACExE,EAEJ,GAAIwE,EAAoB,CACtB,MAAMkX,EAAiBjc,EAAOwE,OAAOtpB,OAAS,EACxCghC,EAAqBlc,EAAO4E,WAAWqX,GAAkBjc,EAAO6E,gBAAgBoX,GAAuC,EAArBlX,EACxG/E,EAAOya,SAAWza,EAAO1W,KAAO4yB,CAClC,MACElc,EAAOya,SAAsC,IAA3Bza,EAAO2E,SAASzpB,QAGN,IAA1BqlB,EAAO4M,iBACTnN,EAAOmN,gBAAkBnN,EAAOya,WAGJ,IAA1Bla,EAAO6M,iBACTpN,EAAOoN,gBAAkBpN,EAAOya,UAG9BuB,GAAaA,IAAchc,EAAOya,WACpCza,EAAOmK,OAAQ,GAGb6R,IAAchc,EAAOya,UACvBza,EAAO+C,KAAK/C,EAAOya,SAAW,OAAS,SAE3C,GfCE5hB,QAAO,GACPsjB,OgBjCF,CACEC,UCDa,SAAmBC,EAASjoB,EAAKkoB,EAAQC,EAAOC,EAAkBrtB,GAC/E,MAAM/V,EAASmd,IACf,IAAIkmB,EAEJ,SAASC,IACHvtB,GAAUA,GAChB,CAEkBlC,GAAEovB,GAASliC,OAAO,WAAW,IAE3BkiC,EAAQM,UAAaH,EAsBvCE,IArBItoB,GACFqoB,EAAQ,IAAIrjC,EAAO6c,MACnBwmB,EAAMG,OAASF,EACfD,EAAMI,QAAUH,EAEZH,IACFE,EAAMF,MAAQA,GAGZD,IACFG,EAAMH,OAASA,GAGbloB,IACFqoB,EAAMroB,IAAMA,IAGdsoB,GAMN,EDhCEjE,cEJa,WACb,MAAMzY,EAAS/mB,KAGf,SAASyjC,IACH,MAAO1c,GAA8CA,IAAUA,EAAO6N,iBAC9C1yB,IAAxB6kB,EAAO8c,eAA4B9c,EAAO8c,cAAgB,GAE1D9c,EAAO8c,eAAiB9c,EAAO+c,aAAa7hC,SAC1C8kB,EAAOO,OAAOmY,qBAAqB1Y,EAAOoZ,SAC9CpZ,EAAO+C,KAAK,gBAEhB,CAVA/C,EAAO+c,aAAe/c,EAAOkD,IAAI9E,KAAK,OAYtC,IAAK,IAAI1X,EAAI,EAAGA,EAAIsZ,EAAO+c,aAAa7hC,OAAQwL,GAAK,EAAG,CACtD,MAAM21B,EAAUrc,EAAO+c,aAAar2B,GACpCsZ,EAAOoc,UAAUC,EAASA,EAAQW,YAAcX,EAAQv0B,aAAa,OAAQu0B,EAAQC,QAAUD,EAAQv0B,aAAa,UAAWu0B,EAAQE,OAASF,EAAQv0B,aAAa,UAAU,EAAM40B,EACvL,CACF,IlBmBMO,GAAmB,CAAC,EAE1B,MAAMC,GACJhpB,WAAAA,IAAeuE,GACb,IAAI7T,EACA2b,EAYJ,GAVoB,IAAhB9H,EAAKvd,QAAgBud,EAAK,GAAGvE,aAAwE,WAAzDrI,OAAO0L,UAAUsH,SAASpH,KAAKgB,EAAK,IAAIzK,MAAM,GAAI,GAChGuS,EAAS9H,EAAK,IAEb7T,EAAI2b,GAAU9H,EAGZ8H,IAAQA,EAAS,CAAC,GACvBA,EAASpM,GAAO,CAAC,EAAGoM,GAChB3b,IAAO2b,EAAO3b,KAAI2b,EAAO3b,GAAKA,GAE9B2b,EAAO3b,IAAMqI,GAAEsT,EAAO3b,IAAI1J,OAAS,EAAG,CACxC,MAAMiiC,EAAU,GAOhB,OANAlwB,GAAEsT,EAAO3b,IAAIkY,MAAK4e,IAChB,MAAM0B,EAAYjpB,GAAO,CAAC,EAAGoM,EAAQ,CACnC3b,GAAI82B,IAENyB,EAAQ3+B,KAAK,IAAI0+B,GAAOE,GAAW,IAE9BD,CACT,CAGA,MAAMnd,EAAS/mB,KACf+mB,EAAON,YAAa,EACpBM,EAAO0B,QAAUG,KACjB7B,EAAOyW,OxCrBX,SAAmB4G,EAAY,CAAC,GAK9B,OAJK1b,KACHA,GA9CJ,UAAoB,UAClBzhB,GACE,CAAC,GACH,MAAMwhB,EAAUG,KACVzoB,EAASmd,IACTtW,EAAW7G,EAAO4G,UAAUC,SAC5Bq9B,EAAKp9B,GAAa9G,EAAO4G,UAAUE,UACnCu2B,EAAS,CACbU,KAAK,EACLC,SAAS,GAELmG,EAAcnkC,EAAO+c,OAAO8M,MAC5Bua,EAAepkC,EAAO+c,OAAO7X,OAC7B84B,EAAUkG,EAAGG,MAAM,+BAEzB,IAAIC,EAAOJ,EAAGG,MAAM,wBACpB,MAAME,EAAOL,EAAGG,MAAM,2BAChBG,GAAUF,GAAQJ,EAAGG,MAAM,8BAC3BI,EAAuB,UAAb59B,EAChB,IAAI69B,EAAqB,aAAb79B,EAsBZ,OAlBKy9B,GAAQI,GAASpc,EAAQK,OAFV,CAAC,YAAa,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAExGlK,QAAS,GAAE0lB,KAAeC,MAAmB,IAC9FE,EAAOJ,EAAGG,MAAM,uBACXC,IAAMA,EAAO,CAAC,EAAG,EAAG,WACzBI,GAAQ,GAIN1G,IAAYyG,IACdpH,EAAOsH,GAAK,UACZtH,EAAOW,SAAU,IAGfsG,GAAQE,GAAUD,KACpBlH,EAAOsH,GAAK,MACZtH,EAAOU,KAAM,GAIRV,CACT,CAImBuH,CAAWX,IAGrB1b,EACT,CwCeoBsc,CAAU,CACxB/9B,UAAWqgB,EAAOrgB,YAEpB8f,EAAO4B,SvCtDJA,KACHA,GAhBJ,WACE,MAAMxoB,EAASmd,IAOf,MAAO,CACL2nB,SANF,WACE,MAAMZ,EAAKlkC,EAAO4G,UAAUE,UAAUi+B,cACtC,OAAOb,EAAGzlB,QAAQ,WAAa,GAAKylB,EAAGzlB,QAAQ,UAAY,GAAKylB,EAAGzlB,QAAQ,WAAa,CAC1F,CAGYqmB,GACVE,UAAW,+CAA+Cz3B,KAAKvN,EAAO4G,UAAUE,WAEpF,CAIcm+B,IAGLzc,IuCmDL5B,EAAOuC,gBAAkB,CAAC,EAC1BvC,EAAO4C,mBAAqB,GAC5B5C,EAAOse,QAAU,IAAIte,EAAOue,aAExBhe,EAAO+d,SAAW5nB,MAAMW,QAAQkJ,EAAO+d,UACzCte,EAAOse,QAAQ9/B,QAAQ+hB,EAAO+d,SAGhC,MAAMxF,EAAmB,CAAC,EAC1B9Y,EAAOse,QAAQtjC,SAAQwjC,IACrBA,EAAI,CACFxe,SACAye,aAAc5F,GAAmBtY,EAAQuY,GACzCpgB,GAAIsH,EAAOtH,GAAGnf,KAAKymB,GACnBwC,KAAMxC,EAAOwC,KAAKjpB,KAAKymB,GACvBlF,IAAKkF,EAAOlF,IAAIvhB,KAAKymB,GACrB+C,KAAM/C,EAAO+C,KAAKxpB,KAAKymB,IACvB,IAGJ,MAAM0e,EAAevqB,GAAO,CAAC,EAAGwqB,GAAU7F,GAiH1C,OA/GA9Y,EAAOO,OAASpM,GAAO,CAAC,EAAGuqB,EAAczB,GAAkB1c,GAC3DP,EAAOgb,eAAiB7mB,GAAO,CAAC,EAAG6L,EAAOO,QAC1CP,EAAO4e,aAAezqB,GAAO,CAAC,EAAGoM,GAE7BP,EAAOO,QAAUP,EAAOO,OAAO7H,IACjC7M,OAAOwI,KAAK2L,EAAOO,OAAO7H,IAAI1d,SAAQ6jC,IACpC7e,EAAOtH,GAAGmmB,EAAW7e,EAAOO,OAAO7H,GAAGmmB,GAAW,IAIjD7e,EAAOO,QAAUP,EAAOO,OAAOoC,OACjC3C,EAAO2C,MAAM3C,EAAOO,OAAOoC,OAI7B3C,EAAO/S,EAAIA,GAEXpB,OAAO4X,OAAOzD,EAAQ,CACpBsE,QAAStE,EAAOO,OAAO+D,QACvB1f,KAEAkU,WAAY,GAEZ0L,OAAQvX,KACR2X,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAGjBzB,YAAAA,GACE,MAAmC,eAA5BpD,EAAOO,OAAO8L,SACvB,EAEAhJ,UAAAA,GACE,MAAmC,aAA5BrD,EAAOO,OAAO8L,SACvB,EAGAruB,YAAa,EACbwsB,UAAW,EAEXN,aAAa,EACbC,OAAO,EAEP/J,UAAW,EACXiW,kBAAmB,EACnBpV,SAAU,EACV6d,SAAU,EACVjS,WAAW,EAEXM,eAAgBnN,EAAOO,OAAO4M,eAC9BC,eAAgBpN,EAAOO,OAAO6M,eAE9BoJ,YAAa,WACX,MAAMzU,EAAQ,CAAC,aAAc,YAAa,WAAY,eAChDgd,EAAU,CAAC,cAAe,cAAe,aAY/C,OAXA/e,EAAOgf,iBAAmB,CACxBpI,MAAO7U,EAAM,GACbgV,KAAMhV,EAAM,GACZiV,IAAKjV,EAAM,GACXkV,OAAQlV,EAAM,IAEhB/B,EAAOif,mBAAqB,CAC1BrI,MAAOmI,EAAQ,GACfhI,KAAMgI,EAAQ,GACd/H,IAAK+H,EAAQ,IAER/e,EAAO0B,QAAQK,QAAU/B,EAAOO,OAAOgY,cAAgBvY,EAAOgf,iBAAmBhf,EAAOif,kBACjG,CAfa,GAgBb9O,gBAAiB,CACfQ,eAAWx1B,EACXy1B,aAASz1B,EACTi3B,yBAAqBj3B,EACrBo3B,oBAAgBp3B,EAChBk3B,iBAAal3B,EACb+4B,sBAAkB/4B,EAClB04B,oBAAgB14B,EAChBs3B,wBAAoBt3B,EAEpBu3B,kBAAmB1S,EAAOO,OAAOmS,kBAEjCmC,cAAelW,KACfugB,kBAAc/jC,EAEdgkC,WAAY,GACZrL,yBAAqB34B,EACrBq1B,kBAAcr1B,EACdm3B,iBAAan3B,GAGfo2B,YAAY,EAEZqB,eAAgB5S,EAAOO,OAAOqS,eAC9BxC,QAAS,CACP0B,OAAQ,EACRC,OAAQ,EACRN,SAAU,EACVG,SAAU,EACV7B,KAAM,GAGRgN,aAAc,GACdD,aAAc,IAEhB9c,EAAO+C,KAAK,WAER/C,EAAOO,OAAOlQ,MAChB2P,EAAO3P,OAIF2P,CACT,CAEAyb,MAAAA,GACE,MAAMzb,EAAS/mB,KACX+mB,EAAOsE,UACXtE,EAAOsE,SAAU,EAEbtE,EAAOO,OAAOwT,YAChB/T,EAAOgU,gBAGThU,EAAO+C,KAAK,UACd,CAEAyY,OAAAA,GACE,MAAMxb,EAAS/mB,KACV+mB,EAAOsE,UACZtE,EAAOsE,SAAU,EAEbtE,EAAOO,OAAOwT,YAChB/T,EAAO2a,kBAGT3a,EAAO+C,KAAK,WACd,CAEAqc,WAAAA,CAAYne,EAAUT,GACpB,MAAMR,EAAS/mB,KACfgoB,EAAWC,KAAKE,IAAIF,KAAKC,IAAIF,EAAU,GAAI,GAC3C,MAAMG,EAAMpB,EAAOyJ,eAEb3I,GADMd,EAAOiK,eACI7I,GAAOH,EAAWG,EACzCpB,EAAOoa,YAAYtZ,OAA0B,IAAVN,EAAwB,EAAIA,GAC/DR,EAAOqL,oBACPrL,EAAOuK,qBACT,CAEAyN,oBAAAA,GACE,MAAMhY,EAAS/mB,KACf,IAAK+mB,EAAOO,OAAOqY,eAAiB5Y,EAAOpb,GAAI,OAC/C,MAAMy6B,EAAMrf,EAAOpb,GAAGsU,UAAUZ,MAAM,KAAKd,QAAO0B,GACT,IAAhCA,EAAUrB,QAAQ,WAA+E,IAA5DqB,EAAUrB,QAAQmI,EAAOO,OAAOuX,0BAE9E9X,EAAO+C,KAAK,oBAAqBsc,EAAItH,KAAK,KAC5C,CAEAuH,eAAAA,CAAgBC,GACd,MAAMvf,EAAS/mB,KACf,OAAOsmC,EAAQrmB,UAAUZ,MAAM,KAAKd,QAAO0B,GACI,IAAtCA,EAAUrB,QAAQ,iBAAyE,IAAhDqB,EAAUrB,QAAQmI,EAAOO,OAAOkE,cACjFsT,KAAK,IACV,CAEA3M,iBAAAA,GACE,MAAMpL,EAAS/mB,KACf,IAAK+mB,EAAOO,OAAOqY,eAAiB5Y,EAAOpb,GAAI,OAC/C,MAAM46B,EAAU,GAChBxf,EAAOwE,OAAO1H,MAAKyiB,IACjB,MAAMzmB,EAAakH,EAAOsf,gBAAgBC,GAC1CC,EAAQhhC,KAAK,CACX+gC,UACAzmB,eAEFkH,EAAO+C,KAAK,cAAewc,EAASzmB,EAAW,IAEjDkH,EAAO+C,KAAK,gBAAiByc,EAC/B,CAEApR,oBAAAA,CAAqBqR,EAAO,UAAWC,GAAQ,GAC7C,MACM,OACJnf,EAAM,OACNiE,EAAM,WACNI,EAAU,gBACVC,EACAvb,KAAM0a,EAAU,YAChBhmB,GAPa/E,KASf,IAAI0mC,EAAM,EAEV,GAAIpf,EAAOqF,eAAgB,CACzB,IACIga,EADA3Z,EAAYzB,EAAOxmB,GAAagpB,gBAGpC,IAAK,IAAItgB,EAAI1I,EAAc,EAAG0I,EAAI8d,EAAOtpB,OAAQwL,GAAK,EAChD8d,EAAO9d,KAAOk5B,IAChB3Z,GAAazB,EAAO9d,GAAGsgB,gBACvB2Y,GAAO,EACH1Z,EAAYjC,IAAY4b,GAAY,IAI5C,IAAK,IAAIl5B,EAAI1I,EAAc,EAAG0I,GAAK,EAAGA,GAAK,EACrC8d,EAAO9d,KAAOk5B,IAChB3Z,GAAazB,EAAO9d,GAAGsgB,gBACvB2Y,GAAO,EACH1Z,EAAYjC,IAAY4b,GAAY,GAG9C,MAEE,GAAa,YAATH,EACF,IAAK,IAAI/4B,EAAI1I,EAAc,EAAG0I,EAAI8d,EAAOtpB,OAAQwL,GAAK,GAChCg5B,EAAQ9a,EAAWle,GAAKme,EAAgBne,GAAKke,EAAW5mB,GAAegmB,EAAaY,EAAWle,GAAKke,EAAW5mB,GAAegmB,KAGhJ2b,GAAO,QAKX,IAAK,IAAIj5B,EAAI1I,EAAc,EAAG0I,GAAK,EAAGA,GAAK,EACrBke,EAAW5mB,GAAe4mB,EAAWle,GAAKsd,IAG5D2b,GAAO,GAMf,OAAOA,CACT,CAEAvG,MAAAA,GACE,MAAMpZ,EAAS/mB,KACf,IAAK+mB,GAAUA,EAAO6N,UAAW,OACjC,MAAM,SACJlJ,EAAQ,OACRpE,GACEP,EAWJ,SAASqN,IACP,MAAMwS,EAAiB7f,EAAOiE,cAAmC,EAApBjE,EAAOI,UAAiBJ,EAAOI,UACtEka,EAAepZ,KAAKE,IAAIF,KAAKC,IAAI0e,EAAgB7f,EAAOiK,gBAAiBjK,EAAOyJ,gBACtFzJ,EAAOqN,aAAaiN,GACpBta,EAAOqL,oBACPrL,EAAOuK,qBACT,CAEA,IAAIuV,EAjBAvf,EAAO8F,aACTrG,EAAO0V,gBAGT1V,EAAOgD,aACPhD,EAAO0D,eACP1D,EAAO8J,iBACP9J,EAAOuK,sBAYHvK,EAAOO,OAAOgU,UAAYvU,EAAOO,OAAOgU,SAASjQ,SACnD+I,IAEIrN,EAAOO,OAAO+J,YAChBtK,EAAO0I,qBAIPoX,GADmC,SAAhC9f,EAAOO,OAAO6F,eAA4BpG,EAAOO,OAAO6F,cAAgB,IAAMpG,EAAOmK,QAAUnK,EAAOO,OAAOqF,eACnG5F,EAAOuM,QAAQvM,EAAOwE,OAAOtpB,OAAS,EAAG,GAAG,GAAO,GAEnD8kB,EAAOuM,QAAQvM,EAAOhiB,YAAa,GAAG,GAAO,GAGvD8hC,GACHzS,KAIA9M,EAAO+H,eAAiB3D,IAAa3E,EAAO2E,UAC9C3E,EAAOuI,gBAGTvI,EAAO+C,KAAK,SACd,CAEAuY,eAAAA,CAAgByE,EAAcC,GAAa,GACzC,MAAMhgB,EAAS/mB,KACTgnC,EAAmBjgB,EAAOO,OAAO8L,UAOvC,OALK0T,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAG9DF,IAAiBE,GAAqC,eAAjBF,GAAkD,aAAjBA,IAI1E/f,EAAOkD,IAAIlK,YAAa,GAAEgH,EAAOO,OAAOuX,yBAAyBmI,KAAoBrnB,SAAU,GAAEoH,EAAOO,OAAOuX,yBAAyBiI,KACxI/f,EAAOgY,uBACPhY,EAAOO,OAAO8L,UAAY0T,EAC1B/f,EAAOwE,OAAO1H,MAAKyiB,IACI,aAAjBQ,EACFR,EAAQjkC,MAAM2nB,MAAQ,GAEtBsc,EAAQjkC,MAAMgD,OAAS,EACzB,IAEF0hB,EAAO+C,KAAK,mBACRid,GAAYhgB,EAAOoZ,UAddpZ,CAgBX,CAEAkgB,KAAAA,CAAMt7B,GACJ,MAAMob,EAAS/mB,KACf,GAAI+mB,EAAOmgB,QAAS,OAAO,EAE3B,MAAMjd,EAAMjW,GAAErI,GAAMob,EAAOO,OAAO3b,IAGlC,KAFAA,EAAKse,EAAI,IAGP,OAAO,EAGTte,EAAGob,OAASA,EAEZ,MAAMogB,EAAqBA,IACjB,KAAIpgB,EAAOO,OAAOoY,cAAgB,IAAI/gB,OAAOU,MAAM,KAAKyf,KAAK,OAgBvE,IAAIhU,EAbesc,MACjB,GAAIz7B,GAAMA,EAAGksB,YAAclsB,EAAGksB,WAAWz1B,cAAe,CACtD,MAAM+b,EAAMnK,GAAErI,EAAGksB,WAAWz1B,cAAc+kC,MAI1C,OAFAhpB,EAAIxE,SAAWjK,GAAWua,EAAItQ,SAASjK,GAEhCyO,CACT,CAEA,OAAO8L,EAAItQ,SAASwtB,IAAqB,EAI1BC,GAEjB,GAA0B,IAAtBtc,EAAW7oB,QAAgB8kB,EAAOO,OAAO4X,eAAgB,CAC3D,MACMmI,EADW/qB,IACQjC,cAAc,OACvCyQ,EAAa9W,GAAEqzB,GACfA,EAAQpnB,UAAY8G,EAAOO,OAAOoY,aAClCzV,EAAInQ,OAAOutB,GACXpd,EAAItQ,SAAU,IAAGoN,EAAOO,OAAOkE,cAAc3H,MAAKyiB,IAChDxb,EAAWhR,OAAOwsB,EAAQ,GAE9B,CAaA,OAXA1zB,OAAO4X,OAAOzD,EAAQ,CACpBkD,MACAte,KACAmf,aACAtD,UAAWsD,EAAW,GACtBoc,SAAS,EAETjc,IAA8B,QAAzBtf,EAAGgc,IAAIud,eAAoD,QAAzBjb,EAAIvG,IAAI,aAC/CsH,aAA0C,eAA5BjE,EAAOO,OAAO8L,YAAwD,QAAzBznB,EAAGgc,IAAIud,eAAoD,QAAzBjb,EAAIvG,IAAI,cACrGwH,SAAwC,gBAA9BJ,EAAWpH,IAAI,cAEpB,CACT,CAEAtM,IAAAA,CAAKzL,GACH,MAAMob,EAAS/mB,KACf,OAAI+mB,EAAO4L,cAEK,IADA5L,EAAOkgB,MAAMt7B,KAE7Bob,EAAO+C,KAAK,cAER/C,EAAOO,OAAO8F,aAChBrG,EAAO0V,gBAIT1V,EAAOwX,aAEHxX,EAAOO,OAAOyK,MAChBhL,EAAOqP,aAITrP,EAAOgD,aAEPhD,EAAO0D,eAEH1D,EAAOO,OAAO+H,eAChBtI,EAAOuI,gBAILvI,EAAOO,OAAOwT,YAAc/T,EAAOsE,SACrCtE,EAAOgU,gBAGLhU,EAAOO,OAAOkY,eAChBzY,EAAOyY,gBAILzY,EAAOO,OAAOyK,KAChBhL,EAAOuM,QAAQvM,EAAOO,OAAOwM,aAAe/M,EAAOgO,aAAc,EAAGhO,EAAOO,OAAOsL,oBAAoB,GAAO,GAE7G7L,EAAOuM,QAAQvM,EAAOO,OAAOwM,aAAc,EAAG/M,EAAOO,OAAOsL,oBAAoB,GAAO,GAIzF7L,EAAOqX,eAEPrX,EAAO4L,aAAc,EAErB5L,EAAO+C,KAAK,QACZ/C,EAAO+C,KAAK,cA/CmB/C,CAiDjC,CAEA3lB,OAAAA,CAAQkmC,GAAiB,EAAMC,GAAc,GAC3C,MAAMxgB,EAAS/mB,MACT,OACJsnB,EAAM,IACN2C,EAAG,WACHa,EAAU,OACVS,GACExE,EAEJ,YAA6B,IAAlBA,EAAOO,QAA0BP,EAAO6N,YAInD7N,EAAO+C,KAAK,iBAEZ/C,EAAO4L,aAAc,EAErB5L,EAAOsX,eAEH/W,EAAOyK,MACThL,EAAOiQ,cAILuQ,IACFxgB,EAAOiY,gBACP/U,EAAI1J,WAAW,SACfuK,EAAWvK,WAAW,SAElBgL,GAAUA,EAAOtpB,QACnBspB,EAAOxL,YAAY,CAACuH,EAAO8I,kBAAmB9I,EAAOmK,iBAAkBnK,EAAOoK,eAAgBpK,EAAOqK,gBAAgBmN,KAAK,MAAMve,WAAW,SAASA,WAAW,4BAInKwG,EAAO+C,KAAK,WAEZlX,OAAOwI,KAAK2L,EAAOuC,iBAAiBvnB,SAAQ6jC,IAC1C7e,EAAOlF,IAAI+jB,EAAU,KAGA,IAAnB0B,IACFvgB,EAAOkD,IAAI,GAAGlD,OAAS,K1ChjB7B,SAAqB/L,GACnB,MAAMwsB,EAASxsB,EACfpI,OAAOwI,KAAKosB,GAAQzlC,SAAQtB,IAC1B,IACE+mC,EAAO/mC,GAAO,IAChB,CAAE,MAAOwD,GAAI,CAGb,WACSujC,EAAO/mC,EAChB,CAAE,MAAOwD,GAAI,IAGjB,C0CoiBMwjC,CAAY1gB,IAGdA,EAAO6N,WAAY,GAnCV,IAqCX,CAEA,qBAAO8S,CAAeC,GACpBzsB,GAAO8oB,GAAkB2D,EAC3B,CAEA,2BAAW3D,GACT,OAAOA,EACT,CAEA,mBAAW0B,GACT,OAAOA,EACT,CAEA,oBAAOkC,CAAcrC,GACdtB,GAAO3lB,UAAUgnB,cAAarB,GAAO3lB,UAAUgnB,YAAc,IAClE,MAAMD,EAAUpB,GAAO3lB,UAAUgnB,YAEd,mBAARC,GAAsBF,EAAQzmB,QAAQ2mB,GAAO,GACtDF,EAAQ9/B,KAAKggC,EAEjB,CAEA,UAAOsC,CAAIC,GACT,OAAIrqB,MAAMW,QAAQ0pB,IAChBA,EAAO/lC,SAAQgmC,GAAK9D,GAAO2D,cAAcG,KAClC9D,KAGTA,GAAO2D,cAAcE,GACd7D,GACT,EAIFrxB,OAAOwI,KAAK6kB,IAAYl+B,SAAQimC,IAC9Bp1B,OAAOwI,KAAK6kB,GAAW+H,IAAiBjmC,SAAQkmC,IAC9ChE,GAAO3lB,UAAU2pB,GAAehI,GAAW+H,GAAgBC,EAAY,GACvE,IAEJhE,GAAO4D,IAAI,CmB/lBI,UAAgB,OAC7B9gB,EAAM,GACNtH,EAAE,KACFqK,IAEA,MAAM3pB,EAASmd,IACf,IAAI4qB,EAAW,KAEf,MAAMC,EAAgBA,KACfphB,IAAUA,EAAO6N,WAAc7N,EAAO4L,cAC3C7I,EAAK,gBACLA,EAAK,UAAS,EAoCVse,EAA2BA,KAC1BrhB,IAAUA,EAAO6N,WAAc7N,EAAO4L,aAC3C7I,EAAK,oBAAoB,EAG3BrK,EAAG,QAAQ,KACLsH,EAAOO,OAAO2X,qBAAmD,IAA1B9+B,EAAOoD,eAtC7CwjB,IAAUA,EAAO6N,WAAc7N,EAAO4L,cAC3CuV,EAAW,IAAI3kC,gBAAeC,IAC5B,MAAM,MACJwmB,EAAK,OACL3kB,GACE0hB,EACJ,IAAIshB,EAAWre,EACXrjB,EAAYtB,EAChB7B,EAAQzB,SAAQ,EACdumC,iBACAC,cACAxnC,aAEIA,GAAUA,IAAWgmB,EAAOpb,KAChC08B,EAAWE,EAAcA,EAAYve,OAASse,EAAe,IAAMA,GAAgBE,WACnF7hC,EAAY4hC,EAAcA,EAAYljC,QAAUijC,EAAe,IAAMA,GAAgBG,UAAS,IAG5FJ,IAAare,GAASrjB,IAActB,GACtC8iC,GACF,IAEFD,EAAS5hC,QAAQygB,EAAOpb,MAqBxBxL,EAAOU,iBAAiB,SAAUsnC,GAClChoC,EAAOU,iBAAiB,oBAAqBunC,GAAyB,IAExE3oB,EAAG,WAAW,KApBRyoB,GAAYA,EAASQ,WAAa3hB,EAAOpb,KAC3Cu8B,EAASQ,UAAU3hB,EAAOpb,IAC1Bu8B,EAAW,MAoBb/nC,EAAOmJ,oBAAoB,SAAU6+B,GACrChoC,EAAOmJ,oBAAoB,oBAAqB8+B,EAAyB,GAE7E,EClEe,UAAkB,OAC/BrhB,EAAM,aACNye,EAAY,GACZ/lB,EAAE,KACFqK,IAEA,MAAM6e,EAAY,GACZxoC,EAASmd,IAETsrB,EAASA,CAAC7nC,EAAQ2O,EAAU,CAAC,KACjC,MACMw4B,EAAW,IADI/nC,EAAO0oC,kBAAoB1oC,EAAO2oC,yBACrBC,IAIhC,GAAyB,IAArBA,EAAU9mC,OAEZ,YADA6nB,EAAK,iBAAkBif,EAAU,IAInC,MAAMC,EAAiB,WACrBlf,EAAK,iBAAkBif,EAAU,GACnC,EAEI5oC,EAAOid,sBACTjd,EAAOid,sBAAsB4rB,GAE7B7oC,EAAOuC,WAAWsmC,EAAgB,EACpC,IAEFd,EAAS5hC,QAAQvF,EAAQ,CACvBkoC,gBAA0C,IAAvBv5B,EAAQu5B,YAAoCv5B,EAAQu5B,WACvEC,eAAwC,IAAtBx5B,EAAQw5B,WAAmCx5B,EAAQw5B,UACrEC,mBAAgD,IAA1Bz5B,EAAQy5B,eAAuCz5B,EAAQy5B,gBAE/ER,EAAUpjC,KAAK2iC,EAAS,EA+B1B1C,EAAa,CACX0C,UAAU,EACVkB,gBAAgB,EAChBC,sBAAsB,IAExB5pB,EAAG,QAjCUrI,KACX,GAAK2P,EAAOO,OAAO4gB,SAAnB,CAEA,GAAInhB,EAAOO,OAAO8hB,eAAgB,CAChC,MAAME,EAAmBviB,EAAOkD,IAAI5I,UAEpC,IAAK,IAAI5T,EAAI,EAAGA,EAAI67B,EAAiBrnC,OAAQwL,GAAK,EAChDm7B,EAAOU,EAAiB77B,GAE5B,CAGAm7B,EAAO7hB,EAAOkD,IAAI,GAAI,CACpBif,UAAWniB,EAAOO,OAAO+hB,uBAG3BT,EAAO7hB,EAAO+D,WAAW,GAAI,CAC3Bme,YAAY,GAhBqB,CAiBjC,IAgBJxpB,EAAG,WAbare,KACdunC,EAAU5mC,SAAQmmC,IAChBA,EAASqB,YAAY,IAEvBZ,EAAU1mB,OAAO,EAAG0mB,EAAU1mC,OAAO,GAUzC,IpBuhBA,UqBjmBe,SAASunC,GAAkB5pB,EAAU,IAClD,MAAQ,IAAGA,EAAQjB,OAAOpR,QAAQ,cAAe,QAChDA,QAAQ,KAAM,MACjB,CCDA02B,GAAO4D,IAAI,CCCI,UAAoB,OACjC9gB,EAAM,aACNye,EAAY,GACZ/lB,EAAE,KACFqK,IAEA,MAAM2f,EAAM,oBAqCZ,IAAIC,EApCJlE,EAAa,CACXmE,WAAY,CACVh+B,GAAI,KACJi+B,cAAe,OACfC,WAAW,EACXC,aAAa,EACbC,aAAc,KACdC,kBAAmB,KACnBC,eAAgB,KAChBC,aAAc,KACdC,qBAAqB,EACrB75B,KAAM,UAEN85B,gBAAgB,EAChBC,mBAAoB,EACpBC,sBAAuBC,GAAUA,EACjCC,oBAAqBD,GAAUA,EAC/BE,YAAc,GAAEhB,WAChBiB,kBAAoB,GAAEjB,kBACtBkB,cAAgB,GAAElB,KAClBmB,aAAe,GAAEnB,YACjBoB,WAAa,GAAEpB,UACfqB,YAAc,GAAErB,WAChBsB,qBAAuB,GAAEtB,qBACzBuB,yBAA2B,GAAEvB,yBAC7BwB,eAAiB,GAAExB,cACnByB,UAAY,GAAEzB,SACd0B,gBAAkB,GAAE1B,eACpB2B,cAAgB,GAAE3B,gBAGtB1iB,EAAO4iB,WAAa,CAClBh+B,GAAI,KACJse,IAAK,KACLohB,QAAS,IAGX,IAAIC,EAAqB,EAEzB,SAASC,IACP,OAAQxkB,EAAOO,OAAOqiB,WAAWh+B,KAAOob,EAAO4iB,WAAWh+B,KAAOob,EAAO4iB,WAAW1f,KAAwC,IAAjClD,EAAO4iB,WAAW1f,IAAIhoB,MAClH,CAEA,SAASupC,EAAeC,EAAWC,GACjC,MAAM,kBACJhB,GACE3jB,EAAOO,OAAOqiB,WAClB8B,EAAUC,KAAY/rB,SAAU,GAAE+qB,KAAqBgB,KAAYA,KAAY/rB,SAAU,GAAE+qB,KAAqBgB,KAAYA,IAC9H,CAEA,SAASvL,IAEP,MAAMlV,EAAMlE,EAAOkE,IACb3D,EAASP,EAAOO,OAAOqiB,WAC7B,GAAI4B,IAAwB,OAC5B,MAAM9f,EAAe1E,EAAOqE,SAAWrE,EAAOO,OAAO8D,QAAQC,QAAUtE,EAAOqE,QAAQG,OAAOtpB,OAAS8kB,EAAOwE,OAAOtpB,OAC9GgoB,EAAMlD,EAAO4iB,WAAW1f,IAE9B,IAAIpC,EACJ,MAAM8jB,EAAQ5kB,EAAOO,OAAOyK,KAAO9J,KAAK6H,MAAMrE,EAAqC,EAAtB1E,EAAOgO,cAAoBhO,EAAOO,OAAO2G,gBAAkBlH,EAAO2E,SAASzpB,OAkBxI,GAhBI8kB,EAAOO,OAAOyK,MAChBlK,EAAUI,KAAK6H,MAAM/I,EAAOhiB,YAAcgiB,EAAOgO,cAAgBhO,EAAOO,OAAO2G,gBAE3EpG,EAAU4D,EAAe,EAA0B,EAAtB1E,EAAOgO,eACtClN,GAAW4D,EAAqC,EAAtB1E,EAAOgO,cAG/BlN,EAAU8jB,EAAQ,IAAG9jB,GAAW8jB,GAChC9jB,EAAU,GAAsC,YAAjCd,EAAOO,OAAOskB,iBAA8B/jB,EAAU8jB,EAAQ9jB,IAEjFA,OADqC,IAArBd,EAAOkI,UACblI,EAAOkI,UAEPlI,EAAOhiB,aAAe,EAId,YAAhBuiB,EAAOhX,MAAsByW,EAAO4iB,WAAW0B,SAAWtkB,EAAO4iB,WAAW0B,QAAQppC,OAAS,EAAG,CAClG,MAAMopC,EAAUtkB,EAAO4iB,WAAW0B,QAClC,IAAIQ,EACAC,EACAC,EAuBJ,GArBIzkB,EAAO8iB,iBACTV,EAAa2B,EAAQlnB,GAAG,GAAG4C,EAAOoD,eAAiB,aAAe,gBAAe,GACjFF,EAAIvG,IAAIqD,EAAOoD,eAAiB,QAAU,SAAauf,GAAcpiB,EAAO+iB,mBAAqB,GAA5C,MAEjD/iB,EAAO+iB,mBAAqB,QAA8BnoC,IAAzB6kB,EAAOuL,gBAC1CgZ,GAAsBzjB,GAAWd,EAAOuL,cAAgBvL,EAAOgO,cAAgB,GAE3EuW,EAAqBhkB,EAAO+iB,mBAAqB,EACnDiB,EAAqBhkB,EAAO+iB,mBAAqB,EACxCiB,EAAqB,IAC9BA,EAAqB,IAIzBO,EAAa5jB,KAAKC,IAAIL,EAAUyjB,EAAoB,GACpDQ,EAAYD,GAAc5jB,KAAKE,IAAIkjB,EAAQppC,OAAQqlB,EAAO+iB,oBAAsB,GAChF0B,GAAYD,EAAYD,GAAc,GAGxCR,EAAQtrB,YAAY,CAAC,GAAI,QAAS,aAAc,QAAS,aAAc,SAASnG,KAAIoyB,GAAW,GAAE1kB,EAAOojB,oBAAoBsB,MAAUlN,KAAK,MAEvI7U,EAAIhoB,OAAS,EACfopC,EAAQxnB,MAAKooB,IACX,MAAMC,EAAUl4B,GAAEi4B,GACZE,EAAcD,EAAQxnC,QAExBynC,IAAgBtkB,GAClBqkB,EAAQvsB,SAAS2H,EAAOojB,mBAGtBpjB,EAAO8iB,iBACL+B,GAAeN,GAAcM,GAAeL,GAC9CI,EAAQvsB,SAAU,GAAE2H,EAAOojB,0BAGzByB,IAAgBN,GAClBL,EAAeU,EAAS,QAGtBC,IAAgBL,GAClBN,EAAeU,EAAS,QAE5B,QAEG,CACL,MAAMA,EAAUb,EAAQlnB,GAAG0D,GACrBskB,EAAcD,EAAQxnC,QAG5B,GAFAwnC,EAAQvsB,SAAS2H,EAAOojB,mBAEpBpjB,EAAO8iB,eAAgB,CACzB,MAAMgC,EAAwBf,EAAQlnB,GAAG0nB,GACnCQ,EAAuBhB,EAAQlnB,GAAG2nB,GAExC,IAAK,IAAIr+B,EAAIo+B,EAAYp+B,GAAKq+B,EAAWr+B,GAAK,EAC5C49B,EAAQlnB,GAAG1W,GAAGkS,SAAU,GAAE2H,EAAOojB,0BAGnC,GAAI3jB,EAAOO,OAAOyK,KAChB,GAAIoa,GAAed,EAAQppC,OAAQ,CACjC,IAAK,IAAIwL,EAAI6Z,EAAO+iB,mBAAoB58B,GAAK,EAAGA,GAAK,EACnD49B,EAAQlnB,GAAGknB,EAAQppC,OAASwL,GAAGkS,SAAU,GAAE2H,EAAOojB,0BAGpDW,EAAQlnB,GAAGknB,EAAQppC,OAASqlB,EAAO+iB,mBAAqB,GAAG1qB,SAAU,GAAE2H,EAAOojB,yBAChF,MACEc,EAAeY,EAAuB,QACtCZ,EAAea,EAAsB,aAGvCb,EAAeY,EAAuB,QACtCZ,EAAea,EAAsB,OAEzC,CACF,CAEA,GAAI/kB,EAAO8iB,eAAgB,CACzB,MAAMkC,EAAuBrkB,KAAKE,IAAIkjB,EAAQppC,OAAQqlB,EAAO+iB,mBAAqB,GAC5EkC,GAAiB7C,EAAa4C,EAAuB5C,GAAc,EAAIqC,EAAWrC,EAClF8C,EAAavhB,EAAM,QAAU,OACnCogB,EAAQ3nB,IAAIqD,EAAOoD,eAAiBqiB,EAAa,MAAQ,GAAED,MAC7D,CACF,CAOA,GALoB,aAAhBjlB,EAAOhX,OACT2Z,EAAI9E,KAAKqkB,GAAkBliB,EAAOsjB,eAAetxB,KAAKgO,EAAOgjB,sBAAsBziB,EAAU,IAC7FoC,EAAI9E,KAAKqkB,GAAkBliB,EAAOujB,aAAavxB,KAAKgO,EAAOkjB,oBAAoBmB,KAG7D,gBAAhBrkB,EAAOhX,KAAwB,CACjC,IAAIm8B,EAGFA,EADEnlB,EAAO6iB,oBACcpjB,EAAOoD,eAAiB,WAAa,aAErCpD,EAAOoD,eAAiB,aAAe,WAGhE,MAAMuiB,GAAS7kB,EAAU,GAAK8jB,EAC9B,IAAIgB,EAAS,EACTC,EAAS,EAEgB,eAAzBH,EACFE,EAASD,EAETE,EAASF,EAGXziB,EAAI9E,KAAKqkB,GAAkBliB,EAAOyjB,uBAAuBvqB,UAAW,6BAA4BmsB,aAAkBC,MAAWtqC,WAAWykB,EAAOO,OAAOC,MACxJ,CAEoB,WAAhBD,EAAOhX,MAAqBgX,EAAO4iB,cACrCjgB,EAAIvL,KAAK4I,EAAO4iB,aAAanjB,EAAQc,EAAU,EAAG8jB,IAClD7hB,EAAK,mBAAoBG,EAAI,KAE7BH,EAAK,mBAAoBG,EAAI,IAG3BlD,EAAOO,OAAO+H,eAAiBtI,EAAOsE,SACxCpB,EAAIlD,EAAOya,SAAW,WAAa,eAAela,EAAO4jB,UAE7D,CAEA,SAAS2B,IAEP,MAAMvlB,EAASP,EAAOO,OAAOqiB,WAC7B,GAAI4B,IAAwB,OAC5B,MAAM9f,EAAe1E,EAAOqE,SAAWrE,EAAOO,OAAO8D,QAAQC,QAAUtE,EAAOqE,QAAQG,OAAOtpB,OAAS8kB,EAAOwE,OAAOtpB,OAC9GgoB,EAAMlD,EAAO4iB,WAAW1f,IAC9B,IAAI6iB,EAAiB,GAErB,GAAoB,YAAhBxlB,EAAOhX,KAAoB,CAC7B,IAAIy8B,EAAkBhmB,EAAOO,OAAOyK,KAAO9J,KAAK6H,MAAMrE,EAAqC,EAAtB1E,EAAOgO,cAAoBhO,EAAOO,OAAO2G,gBAAkBlH,EAAO2E,SAASzpB,OAE5I8kB,EAAOO,OAAOgU,UAAYvU,EAAOO,OAAOgU,SAASjQ,UAAYtE,EAAOO,OAAOyK,MAAQgb,EAAkBthB,IACvGshB,EAAkBthB,GAGpB,IAAK,IAAIhe,EAAI,EAAGA,EAAIs/B,EAAiBt/B,GAAK,EACpC6Z,EAAOyiB,aACT+C,GAAkBxlB,EAAOyiB,aAAavrB,KAAKuI,EAAQtZ,EAAG6Z,EAAOmjB,aAE7DqC,GAAmB,IAAGxlB,EAAOsiB,wBAAwBtiB,EAAOmjB,kBAAkBnjB,EAAOsiB,iBAIzF3f,EAAIvL,KAAKouB,GACT/lB,EAAO4iB,WAAW0B,QAAUphB,EAAI9E,KAAKqkB,GAAkBliB,EAAOmjB,aAChE,CAEoB,aAAhBnjB,EAAOhX,OAEPw8B,EADExlB,EAAO2iB,eACQ3iB,EAAO2iB,eAAezrB,KAAKuI,EAAQO,EAAOsjB,aAActjB,EAAOujB,YAE9D,gBAAevjB,EAAOsjB,wCAAkDtjB,EAAOujB,sBAGnG5gB,EAAIvL,KAAKouB,IAGS,gBAAhBxlB,EAAOhX,OAEPw8B,EADExlB,EAAO0iB,kBACQ1iB,EAAO0iB,kBAAkBxrB,KAAKuI,EAAQO,EAAOyjB,sBAE5C,gBAAezjB,EAAOyjB,gCAG1C9gB,EAAIvL,KAAKouB,IAGS,WAAhBxlB,EAAOhX,MACTwZ,EAAK,mBAAoB/C,EAAO4iB,WAAW1f,IAAI,GAEnD,CAEA,SAAS7S,IACP2P,EAAOO,OAAOqiB,WC3QH,SAAmC5iB,EAAQgb,EAAgBza,EAAQ0lB,GAChF,MAAMpsC,EAAW0b,IAmBjB,OAjBIyK,EAAOO,OAAO4X,gBAChBtsB,OAAOwI,KAAK4xB,GAAYjrC,SAAQtB,IAC9B,IAAK6mB,EAAO7mB,KAAwB,IAAhB6mB,EAAO0Y,KAAe,CACxC,IAAIz+B,EAAUwlB,EAAOkD,IAAItQ,SAAU,IAAGqzB,EAAWvsC,MAAQ,GAEpDc,IACHA,EAAUX,EAASyZ,cAAc,OACjC9Y,EAAQ0e,UAAY+sB,EAAWvsC,GAC/BsmB,EAAOkD,IAAInQ,OAAOvY,IAGpB+lB,EAAO7mB,GAAOc,EACdwgC,EAAethC,GAAOc,CACxB,KAIG+lB,CACT,CDsP+B2lB,CAA0BlmB,EAAQA,EAAOgb,eAAe4H,WAAY5iB,EAAOO,OAAOqiB,WAAY,CACvHh+B,GAAI,sBAEN,MAAM2b,EAASP,EAAOO,OAAOqiB,WAC7B,IAAKriB,EAAO3b,GAAI,OAChB,IAAIse,EAAMjW,GAAEsT,EAAO3b,IACA,IAAfse,EAAIhoB,SAEJ8kB,EAAOO,OAAOiY,mBAA0C,iBAAdjY,EAAO3b,IAAmBse,EAAIhoB,OAAS,IACnFgoB,EAAMlD,EAAOkD,IAAI9E,KAAKmC,EAAO3b,IAEzBse,EAAIhoB,OAAS,IACfgoB,EAAMA,EAAI1L,QAAO5S,GACXqI,GAAErI,GAAI0V,QAAQ,WAAW,KAAO0F,EAAOpb,OAM7B,YAAhB2b,EAAOhX,MAAsBgX,EAAOuiB,WACtC5f,EAAItK,SAAS2H,EAAO2jB,gBAGtBhhB,EAAItK,SAAS2H,EAAOqjB,cAAgBrjB,EAAOhX,MAC3C2Z,EAAItK,SAAS2H,EAAOqjB,cAAgB5jB,EAAOO,OAAO8L,WAE9B,YAAhB9L,EAAOhX,MAAsBgX,EAAO8iB,iBACtCngB,EAAItK,SAAU,GAAE2H,EAAOqjB,gBAAgBrjB,EAAOhX,gBAC9Cg7B,EAAqB,EAEjBhkB,EAAO+iB,mBAAqB,IAC9B/iB,EAAO+iB,mBAAqB,IAIZ,gBAAhB/iB,EAAOhX,MAA0BgX,EAAO6iB,qBAC1ClgB,EAAItK,SAAS2H,EAAO0jB,0BAGlB1jB,EAAOuiB,WACT5f,EAAIxK,GAAG,QAAS+pB,GAAkBliB,EAAOmjB,cAAc,SAAiBxmC,GACtEA,EAAEhD,iBACF,IAAIyD,EAAQsP,GAAEhU,MAAM0E,QAAUqiB,EAAOO,OAAO2G,eACxClH,EAAOO,OAAOyK,OAAMrtB,GAASqiB,EAAOgO,cACxChO,EAAOuM,QAAQ5uB,EACjB,IAGFkO,OAAO4X,OAAOzD,EAAO4iB,WAAY,CAC/B1f,MACAte,GAAIse,EAAI,KAGLlD,EAAOsE,SACVpB,EAAItK,SAAS2H,EAAO4jB,WAExB,CAEA,SAAS9pC,IACP,MAAMkmB,EAASP,EAAOO,OAAOqiB,WAC7B,GAAI4B,IAAwB,OAC5B,MAAMthB,EAAMlD,EAAO4iB,WAAW1f,IAC9BA,EAAIlK,YAAYuH,EAAOwjB,aACvB7gB,EAAIlK,YAAYuH,EAAOqjB,cAAgBrjB,EAAOhX,MAC9C2Z,EAAIlK,YAAYuH,EAAOqjB,cAAgB5jB,EAAOO,OAAO8L,WACjDrM,EAAO4iB,WAAW0B,SAAWtkB,EAAO4iB,WAAW0B,QAAQtrB,aAAagH,EAAO4iB,WAAW0B,QAAQtrB,YAAYuH,EAAOojB,mBAEjHpjB,EAAOuiB,WACT5f,EAAIpI,IAAI,QAAS2nB,GAAkBliB,EAAOmjB,aAE9C,CAEAhrB,EAAG,QAAQ,KACTrI,IACAy1B,IACA1M,GAAQ,IAEV1gB,EAAG,qBAAqB,MAClBsH,EAAOO,OAAOyK,WAEqB,IAArBhL,EAAOkI,YADvBkR,GAGF,IAEF1gB,EAAG,mBAAmB,KACfsH,EAAOO,OAAOyK,MACjBoO,GACF,IAEF1gB,EAAG,sBAAsB,KACnBsH,EAAOO,OAAOyK,OAChB8a,IACA1M,IACF,IAEF1gB,EAAG,wBAAwB,KACpBsH,EAAOO,OAAOyK,OACjB8a,IACA1M,IACF,IAEF1gB,EAAG,WAAW,KACZre,GAAS,IAEXqe,EAAG,kBAAkB,KACnB,MAAM,IACJwK,GACElD,EAAO4iB,WAEP1f,GACFA,EAAIlD,EAAOsE,QAAU,cAAgB,YAAYtE,EAAOO,OAAOqiB,WAAWuB,UAC5E,IAEFzrB,EAAG,eAAe,KAChB0gB,GAAQ,IAEV1gB,EAAG,SAAS,CAACytB,EAAIjpC,KACf,MAAMkpC,EAAWlpC,EAAElD,QACb,IACJkpB,GACElD,EAAO4iB,WAEX,GAAI5iB,EAAOO,OAAOqiB,WAAWh+B,IAAMob,EAAOO,OAAOqiB,WAAWG,aAAe7f,EAAIhoB,OAAS,IAAM+R,GAAEm5B,GAAUntB,SAAS+G,EAAOO,OAAOqiB,WAAWc,aAAc,CACxJ,GAAI1jB,EAAOsV,aAAetV,EAAOsV,WAAWC,QAAU6Q,IAAapmB,EAAOsV,WAAWC,QAAUvV,EAAOsV,WAAWE,QAAU4Q,IAAapmB,EAAOsV,WAAWE,QAAS,OACnK,MAAM6Q,EAAWnjB,EAAIjK,SAAS+G,EAAOO,OAAOqiB,WAAWmB,aAGrDhhB,GADe,IAAbsjB,EACG,iBAEA,kBAGPnjB,EAAI/J,YAAY6G,EAAOO,OAAOqiB,WAAWmB,YAC3C,KAEFl4B,OAAO4X,OAAOzD,EAAO4iB,WAAY,CAC/BkD,SACA1M,SACA/oB,OACAhW,WAEJ,IDrZA,IA4CA,GA5CwB,WACtB,IGLYisC,EACRC,EHIEC,EAAS3sC,SAASwB,cAAc,iBAClC2kB,EAAS,KAgCb,SAASymB,IACPrtC,OAAOC,YAAc,IA9BhB2mB,IACHA,EAAS,IAAIkd,GAAOsJ,EAAQ,CAC1BrF,UAAU,EACVkB,gBAAgB,EAChBrX,MAAM,EACN5F,aAAc,GACdiB,YAAa,CACX,IAAK,CACHD,cAAe,GAEjB,IAAK,CACHA,cAAe,IAEjBwc,WAAY,CACVh+B,GAAI,2BACJ++B,kBAAmB,SACnBb,WAAW,MAOf9iB,IACFA,EAAO3lB,UACP2lB,EAAS,KAQb,CAEAwmB,GAAUC,IACVD,IG7CYF,EH6CKG,EG5CbF,EAAoBntC,OAAOC,WAE/BD,OAAOU,iBAAiB,UAAU,WAC5BV,OAAOC,aAAektC,IAC1BA,EAAoBntC,OAAOC,WAC3BitC,IACF,IHuCF,+sCI7CAI,GAAA,kBAAAxpC,CAAA,MAAAswB,EAAAtwB,EAAA,GAAAypC,EAAA96B,OAAA0L,UAAAza,EAAA6pC,EAAAC,eAAAhoB,EAAA/S,OAAAiL,gBAAA,SAAA0W,EAAAtwB,EAAAypC,GAAAnZ,EAAAtwB,GAAAypC,EAAAhtC,KAAA,EAAA+M,EAAA,mBAAAmgC,OAAAA,OAAA,GAAAnoC,EAAAgI,EAAAogC,UAAA,aAAA/tB,EAAArS,EAAAqgC,eAAA,kBAAAC,EAAAtgC,EAAAugC,aAAA,yBAAAC,EAAA1Z,EAAAtwB,EAAAypC,GAAA,OAAA96B,OAAAiL,eAAA0W,EAAAtwB,EAAA,CAAAvD,MAAAgtC,EAAAlnB,YAAA,EAAA0nB,cAAA,EAAA1oB,UAAA,IAAA+O,EAAAtwB,EAAA,KAAAgqC,EAAA,aAAA1Z,GAAA0Z,EAAA,SAAA1Z,EAAAtwB,EAAAypC,GAAA,OAAAnZ,EAAAtwB,GAAAypC,CAAA,WAAAS,EAAA5Z,EAAAtwB,EAAAypC,EAAA7pC,GAAA,IAAA4J,EAAAxJ,GAAAA,EAAAqa,qBAAA8vB,EAAAnqC,EAAAmqC,EAAA3oC,EAAAmN,OAAAy7B,OAAA5gC,EAAA6Q,WAAAwB,EAAA,IAAAwuB,EAAAzqC,GAAA,WAAA8hB,EAAAlgB,EAAA,WAAA/E,MAAA6tC,EAAAha,EAAAmZ,EAAA5tB,KAAAra,CAAA,UAAA+oC,EAAAja,EAAAtwB,EAAAypC,GAAA,WAAAp9B,KAAA,SAAAm+B,IAAAla,EAAA/V,KAAAva,EAAAypC,GAAA,OAAAnZ,GAAA,OAAAjkB,KAAA,QAAAm+B,IAAAla,EAAA,EAAAtwB,EAAAkqC,KAAAA,EAAA,IAAAO,EAAA,iBAAAC,EAAA,iBAAAzqC,EAAA,YAAAN,EAAA,YAAAs9B,EAAA,YAAAkN,IAAA,UAAAQ,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAAb,EAAAa,EAAArpC,GAAA,8BAAAspC,EAAAn8B,OAAAo8B,eAAA5f,EAAA2f,GAAAA,EAAAA,EAAAE,EAAA,MAAA7f,GAAAA,IAAAse,GAAA7pC,EAAA2a,KAAA4Q,EAAA3pB,KAAAqpC,EAAA1f,GAAA,IAAA8f,EAAAL,EAAAvwB,UAAA8vB,EAAA9vB,UAAA1L,OAAAy7B,OAAAS,GAAA,SAAAK,EAAA5a,GAAA,0BAAAxyB,SAAA,SAAAkC,GAAAgqC,EAAA1Z,EAAAtwB,GAAA,SAAAswB,GAAA,YAAA6a,QAAAnrC,EAAAswB,EAAA,gBAAA8a,EAAA9a,EAAAtwB,GAAA,SAAAqrC,EAAA5B,EAAA/nB,EAAAlY,EAAAhI,GAAA,IAAAqa,EAAA0uB,EAAAja,EAAAmZ,GAAAnZ,EAAA5O,GAAA,aAAA7F,EAAAxP,KAAA,KAAAy9B,EAAAjuB,EAAA2uB,IAAAC,EAAAX,EAAArtC,MAAA,OAAAguC,GAAA,UAAAa,GAAAb,IAAA7qC,EAAA2a,KAAAkwB,EAAA,WAAAzqC,EAAAurC,QAAAd,EAAAe,SAAAr8B,MAAA,SAAAmhB,GAAA+a,EAAA,OAAA/a,EAAA9mB,EAAAhI,EAAA,aAAA8uB,GAAA+a,EAAA,QAAA/a,EAAA9mB,EAAAhI,EAAA,IAAAxB,EAAAurC,QAAAd,GAAAt7B,MAAA,SAAAmhB,GAAAwZ,EAAArtC,MAAA6zB,EAAA9mB,EAAAsgC,EAAA,aAAAxZ,GAAA,OAAA+a,EAAA,QAAA/a,EAAA9mB,EAAAhI,EAAA,IAAAA,EAAAqa,EAAA2uB,IAAA,KAAAf,EAAA/nB,EAAA,gBAAAjlB,MAAA,SAAA6zB,EAAA1wB,GAAA,SAAA6rC,IAAA,WAAAzrC,GAAA,SAAAA,EAAAypC,GAAA4B,EAAA/a,EAAA1wB,EAAAI,EAAAypC,EAAA,WAAAA,EAAAA,EAAAA,EAAAt6B,KAAAs8B,EAAAA,GAAAA,GAAA,aAAAnB,EAAAtqC,EAAAypC,EAAA7pC,GAAA,IAAA8hB,EAAA+oB,EAAA,gBAAAjhC,EAAAhI,GAAA,GAAAkgB,IAAAzhB,EAAA,UAAAuvB,MAAA,mCAAA9N,IAAA/hB,EAAA,cAAA6J,EAAA,MAAAhI,EAAA,OAAA/E,MAAA6zB,EAAAzwB,MAAA,OAAAD,EAAAmP,OAAAvF,EAAA5J,EAAA4qC,IAAAhpC,IAAA,KAAAqa,EAAAjc,EAAA8rC,SAAA,GAAA7vB,EAAA,KAAAiuB,EAAA6B,EAAA9vB,EAAAjc,GAAA,GAAAkqC,EAAA,IAAAA,IAAA7M,EAAA,gBAAA6M,CAAA,cAAAlqC,EAAAmP,OAAAnP,EAAAgsC,KAAAhsC,EAAAisC,MAAAjsC,EAAA4qC,SAAA,aAAA5qC,EAAAmP,OAAA,IAAA2S,IAAA+oB,EAAA,MAAA/oB,EAAA/hB,EAAAC,EAAA4qC,IAAA5qC,EAAAksC,kBAAAlsC,EAAA4qC,IAAA,gBAAA5qC,EAAAmP,QAAAnP,EAAAmsC,OAAA,SAAAnsC,EAAA4qC,KAAA9oB,EAAAzhB,EAAA,IAAA4qC,EAAAN,EAAAvqC,EAAAypC,EAAA7pC,GAAA,cAAAirC,EAAAx+B,KAAA,IAAAqV,EAAA9hB,EAAAC,KAAAF,EAAA+qC,EAAAG,EAAAL,MAAAvN,EAAA,gBAAAxgC,MAAAouC,EAAAL,IAAA3qC,KAAAD,EAAAC,KAAA,WAAAgrC,EAAAx+B,OAAAqV,EAAA/hB,EAAAC,EAAAmP,OAAA,QAAAnP,EAAA4qC,IAAAK,EAAAL,IAAA,YAAAmB,EAAA3rC,EAAAypC,GAAA,IAAA7pC,EAAA6pC,EAAA16B,OAAA2S,EAAA1hB,EAAA4pC,SAAAhqC,GAAA,GAAA8hB,IAAA4O,EAAA,OAAAmZ,EAAAiC,SAAA,eAAA9rC,GAAAI,EAAA4pC,SAAAoC,SAAAvC,EAAA16B,OAAA,SAAA06B,EAAAe,IAAAla,EAAAqb,EAAA3rC,EAAAypC,GAAA,UAAAA,EAAA16B,SAAA,WAAAnP,IAAA6pC,EAAA16B,OAAA,QAAA06B,EAAAe,IAAA,IAAAyB,UAAA,oCAAArsC,EAAA,aAAAq9B,EAAA,IAAAzzB,EAAA+gC,EAAA7oB,EAAA1hB,EAAA4pC,SAAAH,EAAAe,KAAA,aAAAhhC,EAAA6C,KAAA,OAAAo9B,EAAA16B,OAAA,QAAA06B,EAAAe,IAAAhhC,EAAAghC,IAAAf,EAAAiC,SAAA,KAAAzO,EAAA,IAAAz7B,EAAAgI,EAAAghC,IAAA,OAAAhpC,EAAAA,EAAA3B,MAAA4pC,EAAAzpC,EAAAksC,YAAA1qC,EAAA/E,MAAAgtC,EAAA/oB,KAAA1gB,EAAAmsC,QAAA,WAAA1C,EAAA16B,SAAA06B,EAAA16B,OAAA,OAAA06B,EAAAe,IAAAla,GAAAmZ,EAAAiC,SAAA,KAAAzO,GAAAz7B,GAAAioC,EAAA16B,OAAA,QAAA06B,EAAAe,IAAA,IAAAyB,UAAA,oCAAAxC,EAAAiC,SAAA,KAAAzO,EAAA,UAAAmP,EAAA9b,GAAA,IAAAtwB,EAAA,CAAAqsC,OAAA/b,EAAA,SAAAA,IAAAtwB,EAAAssC,SAAAhc,EAAA,SAAAA,IAAAtwB,EAAAusC,WAAAjc,EAAA,GAAAtwB,EAAAwsC,SAAAlc,EAAA,SAAAmc,WAAAnrC,KAAAtB,EAAA,UAAA0sC,EAAApc,GAAA,IAAAtwB,EAAAswB,EAAAqc,YAAA,GAAA3sC,EAAAqM,KAAA,gBAAArM,EAAAwqC,IAAAla,EAAAqc,WAAA3sC,CAAA,UAAAqqC,EAAA/Z,GAAA,KAAAmc,WAAA,EAAAJ,OAAA,SAAA/b,EAAAxyB,QAAAsuC,EAAA,WAAA99B,OAAA,YAAA08B,EAAAhrC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAypC,EAAAzpC,EAAAwB,GAAA,GAAAioC,EAAA,OAAAA,EAAAlvB,KAAAva,GAAA,sBAAAA,EAAA0gB,KAAA,OAAA1gB,EAAA,IAAAsmB,MAAAtmB,EAAAhC,QAAA,KAAA0jB,GAAA,EAAAlY,EAAA,SAAAkX,IAAA,OAAAgB,EAAA1hB,EAAAhC,QAAA,GAAA4B,EAAA2a,KAAAva,EAAA0hB,GAAA,OAAAhB,EAAAjkB,MAAAuD,EAAA0hB,GAAAhB,EAAA7gB,MAAA,EAAA6gB,EAAA,OAAAA,EAAAjkB,MAAA6zB,EAAA5P,EAAA7gB,MAAA,EAAA6gB,CAAA,SAAAlX,EAAAkX,KAAAlX,CAAA,YAAAyiC,UAAAX,GAAAtrC,GAAA,2BAAA2qC,EAAAtwB,UAAAuwB,EAAAlpB,EAAAupB,EAAA,eAAAxuC,MAAAmuC,EAAAX,cAAA,IAAAvoB,EAAAkpB,EAAA,eAAAnuC,MAAAkuC,EAAAV,cAAA,IAAAU,EAAAiC,YAAA5C,EAAAY,EAAAd,EAAA,qBAAA9pC,EAAA6sC,oBAAA,SAAAvc,GAAA,IAAAtwB,EAAA,mBAAAswB,GAAAA,EAAAtZ,YAAA,QAAAhX,IAAAA,IAAA2qC,GAAA,uBAAA3qC,EAAA4sC,aAAA5sC,EAAAsb,MAAA,EAAAtb,EAAA8sC,KAAA,SAAAxc,GAAA,OAAA3hB,OAAAo+B,eAAAp+B,OAAAo+B,eAAAzc,EAAAsa,IAAAta,EAAA3W,UAAAixB,EAAAZ,EAAA1Z,EAAAwZ,EAAA,sBAAAxZ,EAAAjW,UAAA1L,OAAAy7B,OAAAa,GAAA3a,CAAA,EAAAtwB,EAAAgtC,MAAA,SAAA1c,GAAA,OAAAkb,QAAAlb,EAAA,EAAA4a,EAAAE,EAAA/wB,WAAA2vB,EAAAoB,EAAA/wB,UAAAwB,GAAA,0BAAA7b,EAAAorC,cAAAA,EAAAprC,EAAAitC,MAAA,SAAA3c,EAAAmZ,EAAA7pC,EAAA8hB,EAAAlY,QAAA,IAAAA,IAAAA,EAAA0jC,SAAA,IAAA1rC,EAAA,IAAA4pC,EAAAlB,EAAA5Z,EAAAmZ,EAAA7pC,EAAA8hB,GAAAlY,GAAA,OAAAxJ,EAAA6sC,oBAAApD,GAAAjoC,EAAAA,EAAAkf,OAAAvR,MAAA,SAAAmhB,GAAA,OAAAA,EAAAzwB,KAAAywB,EAAA7zB,MAAA+E,EAAAkf,MAAA,KAAAwqB,EAAAD,GAAAjB,EAAAiB,EAAAnB,EAAA,aAAAE,EAAAiB,EAAAzpC,GAAA,0BAAAwoC,EAAAiB,EAAA,qDAAAjrC,EAAAmX,KAAA,SAAAmZ,GAAA,IAAAtwB,EAAA2O,OAAA2hB,GAAAmZ,EAAA,WAAA7pC,KAAAI,EAAAypC,EAAAnoC,KAAA1B,GAAA,OAAA6pC,EAAA0D,UAAA,SAAAzsB,IAAA,KAAA+oB,EAAAzrC,QAAA,KAAAsyB,EAAAmZ,EAAAnhC,MAAA,GAAAgoB,KAAAtwB,EAAA,OAAA0gB,EAAAjkB,MAAA6zB,EAAA5P,EAAA7gB,MAAA,EAAA6gB,CAAA,QAAAA,EAAA7gB,MAAA,EAAA6gB,CAAA,GAAA1gB,EAAAgrC,OAAAA,EAAAX,EAAAhwB,UAAA,CAAArD,YAAAqzB,EAAA/7B,MAAA,SAAAtO,GAAA,QAAA8gB,KAAA,OAAAJ,KAAA,OAAAkrB,KAAA,KAAAC,MAAAvb,EAAA,KAAAzwB,MAAA,OAAA6rC,SAAA,UAAA38B,OAAA,YAAAy7B,IAAAla,EAAA,KAAAmc,WAAA3uC,QAAA4uC,IAAA1sC,EAAA,QAAAypC,KAAA,WAAAA,EAAA//B,OAAA,IAAA9J,EAAA2a,KAAA,KAAAkvB,KAAAnjB,OAAAmjB,EAAA34B,MAAA,WAAA24B,GAAAnZ,EAAA,EAAA8c,KAAA,gBAAAvtC,MAAA,MAAAywB,EAAA,KAAAmc,WAAA,GAAAE,WAAA,aAAArc,EAAAjkB,KAAA,MAAAikB,EAAAka,IAAA,YAAA6C,IAAA,EAAAvB,kBAAA,SAAA9rC,GAAA,QAAAH,KAAA,MAAAG,EAAA,IAAAypC,EAAA,cAAA6D,EAAA1tC,EAAA8hB,GAAA,OAAAlgB,EAAA6K,KAAA,QAAA7K,EAAAgpC,IAAAxqC,EAAAypC,EAAA/oB,KAAA9gB,EAAA8hB,IAAA+nB,EAAA16B,OAAA,OAAA06B,EAAAe,IAAAla,KAAA5O,CAAA,SAAAA,EAAA,KAAA+qB,WAAAzuC,OAAA,EAAA0jB,GAAA,IAAAA,EAAA,KAAAlY,EAAA,KAAAijC,WAAA/qB,GAAAlgB,EAAAgI,EAAAmjC,WAAA,YAAAnjC,EAAA6iC,OAAA,OAAAiB,EAAA,UAAA9jC,EAAA6iC,QAAA,KAAAvrB,KAAA,KAAAjF,EAAAjc,EAAA2a,KAAA/Q,EAAA,YAAAsgC,EAAAlqC,EAAA2a,KAAA/Q,EAAA,iBAAAqS,GAAAiuB,EAAA,SAAAhpB,KAAAtX,EAAA8iC,SAAA,OAAAgB,EAAA9jC,EAAA8iC,UAAA,WAAAxrB,KAAAtX,EAAA+iC,WAAA,OAAAe,EAAA9jC,EAAA+iC,WAAA,SAAA1wB,GAAA,QAAAiF,KAAAtX,EAAA8iC,SAAA,OAAAgB,EAAA9jC,EAAA8iC,UAAA,YAAAxC,EAAA,UAAAta,MAAA,kDAAA1O,KAAAtX,EAAA+iC,WAAA,OAAAe,EAAA9jC,EAAA+iC,WAAA,KAAAR,OAAA,SAAAzb,EAAAtwB,GAAA,QAAAypC,EAAA,KAAAgD,WAAAzuC,OAAA,EAAAyrC,GAAA,IAAAA,EAAA,KAAA/nB,EAAA,KAAA+qB,WAAAhD,GAAA,GAAA/nB,EAAA2qB,QAAA,KAAAvrB,MAAAlhB,EAAA2a,KAAAmH,EAAA,oBAAAZ,KAAAY,EAAA6qB,WAAA,KAAA/iC,EAAAkY,EAAA,OAAAlY,IAAA,UAAA8mB,GAAA,aAAAA,IAAA9mB,EAAA6iC,QAAArsC,GAAAA,GAAAwJ,EAAA+iC,aAAA/iC,EAAA,UAAAhI,EAAAgI,EAAAA,EAAAmjC,WAAA,UAAAnrC,EAAA6K,KAAAikB,EAAA9uB,EAAAgpC,IAAAxqC,EAAAwJ,GAAA,KAAAuF,OAAA,YAAA2R,KAAAlX,EAAA+iC,WAAAtP,GAAA,KAAAwC,SAAAj+B,EAAA,EAAAi+B,SAAA,SAAAnP,EAAAtwB,GAAA,aAAAswB,EAAAjkB,KAAA,MAAAikB,EAAAka,IAAA,gBAAAla,EAAAjkB,MAAA,aAAAikB,EAAAjkB,KAAA,KAAAqU,KAAA4P,EAAAka,IAAA,WAAAla,EAAAjkB,MAAA,KAAAghC,KAAA,KAAA7C,IAAAla,EAAAka,IAAA,KAAAz7B,OAAA,cAAA2R,KAAA,kBAAA4P,EAAAjkB,MAAArM,IAAA,KAAA0gB,KAAA1gB,GAAAi9B,CAAA,EAAAsQ,OAAA,SAAAjd,GAAA,QAAAtwB,EAAA,KAAAysC,WAAAzuC,OAAA,EAAAgC,GAAA,IAAAA,EAAA,KAAAypC,EAAA,KAAAgD,WAAAzsC,GAAA,GAAAypC,EAAA8C,aAAAjc,EAAA,YAAAmP,SAAAgK,EAAAkD,WAAAlD,EAAA+C,UAAAE,EAAAjD,GAAAxM,CAAA,GAAAjtB,MAAA,SAAAsgB,GAAA,QAAAtwB,EAAA,KAAAysC,WAAAzuC,OAAA,EAAAgC,GAAA,IAAAA,EAAA,KAAAypC,EAAA,KAAAgD,WAAAzsC,GAAA,GAAAypC,EAAA4C,SAAA/b,EAAA,KAAA1wB,EAAA6pC,EAAAkD,WAAA,aAAA/sC,EAAAyM,KAAA,KAAAqV,EAAA9hB,EAAA4qC,IAAAkC,EAAAjD,EAAA,QAAA/nB,CAAA,YAAA8N,MAAA,0BAAAge,cAAA,SAAAxtC,EAAAypC,EAAA7pC,GAAA,YAAA8rC,SAAA,CAAA9B,SAAAoB,EAAAhrC,GAAAksC,WAAAzC,EAAA0C,QAAAvsC,GAAA,cAAAmP,SAAA,KAAAy7B,IAAAla,GAAA2M,CAAA,GAAAj9B,CAAA,UAAAytC,GAAAC,EAAAnC,EAAAoC,EAAAC,EAAAC,EAAArxC,EAAAguC,GAAA,QAAAsD,EAAAJ,EAAAlxC,GAAAguC,GAAA/tC,EAAAqxC,EAAArxC,KAAA,OAAAoM,GAAA,YAAA8kC,EAAA9kC,EAAA,CAAAilC,EAAAjuC,KAAA0rC,EAAA9uC,GAAAywC,QAAA3B,QAAA9uC,GAAA0S,KAAAy+B,EAAAC,EAAA,UAAAE,GAAA7yB,GAAA,sBAAA1X,EAAA,KAAA+X,EAAAxd,UAAA,WAAAmvC,SAAA,SAAA3B,EAAAoC,GAAA,IAAAD,EAAAxyB,EAAAiC,MAAA3Z,EAAA+X,GAAA,SAAAqyB,EAAAnxC,GAAAgxC,GAAAC,EAAAnC,EAAAoC,EAAAC,EAAAC,EAAA,OAAApxC,EAAA,UAAAoxC,EAAA9tC,GAAA0tC,GAAAC,EAAAnC,EAAAoC,EAAAC,EAAAC,EAAA,QAAA9tC,EAAA,CAAA6tC,OAAA3vC,EAAA,KAD0B,SAAA+vC,KA2DzB,OA3DyBA,GAAAD,GAAAvE,KAAAsD,MAA1B,SAAAmB,IAAA,IACiBC,EAAkBC,EAkBlBC,EAAOC,EAwBPC,EAAgBC,EAAA,OAAA/E,KAAAU,MAAC,SAADsE,GAAA,cAAAA,EAAA1tB,KAAA0tB,EAAA9tB,MAAA,OAD/B,OAC+B6tB,EAAA,WAa9B,OAb8BA,EAAAR,GAAAvE,KAAAsD,MAA/B,SAAA2B,EAAgCC,GAAQ,IAAAjjC,EAAAkjC,EAAAC,EAAAC,EAAAz7B,EAAAhE,EAAA0/B,EAAA/wC,UAAA,OAAAyrC,KAAAU,MAAA,SAAA6E,GAAA,cAAAA,EAAAjuB,KAAAiuB,EAAAruB,MAAA,OAIkB,OAJJiuB,GAAZljC,EAAOqjC,EAAA9wC,OAAA,QAAAC,IAAA6wC,EAAA,GAAAA,EAAA,GAAG,CAAC,GAC3CF,QAAAA,OAAO,IAAAD,EAAG,IAAIA,EAEhBE,EAAa,IAAIG,gBACjB57B,EAAK3U,YAAW,kBAAMowC,EAAWI,OAAO,GAAEL,GAAQG,EAAAruB,KAAA,EAEjC5R,MAAM4/B,EAAQQ,GAAAA,GAAA,GAChCzjC,GAAO,IACV0jC,OAAQN,EAAWM,UACnB,OACe,OAJX//B,EAAQ2/B,EAAAnD,KAId1yB,aAAa9F,GAAI27B,EAAAhD,OAAA,SAEV38B,GAAQ,wBAAA2/B,EAAA3B,OAAA,GAAAqB,EAAA,KAChBF,EAAApxB,MAAA,KAAApf,UAAA,EAbcuwC,EAAgB,SAAAc,GAAA,OAAAb,EAAApxB,MAAC,KAADpf,UAAA,EAAAswC,EAAA,WAH9B,OAG8BA,EAAAN,GAAAvE,KAAAsD,MAxB/B,SAAAuC,EAAuBC,GAAK,IAAAvhC,EAAAqB,EAAAmgC,EAAA,OAAA/F,KAAAU,MAAA,SAAAsF,GAAA,cAAAA,EAAA1uB,KAAA0uB,EAAA9uB,MAAA,UACrB4uB,EAAO,CAAFE,EAAA9uB,KAAA,eAAA8uB,EAAAzD,OAAA,oBAAAyD,EAAA1uB,KAAA,IAMJ,oBAAqB5kB,QAAM,CAAAszC,EAAA9uB,KAAA,gBAAA8uB,EAAA9uB,KAAA,EACN4tB,EAAiBgB,EAAO,CAC7CV,QAAS,MACT,OAFY,OAARx/B,EAAQogC,EAAA5D,KAAA4D,EAAA9uB,KAAG,EAGFtR,EAASC,OAAM,OAA9BtB,EAAMyhC,EAAA5D,KAAA4D,EAAA9uB,KAAG,GAAH,qBAAA8uB,EAAA9uB,KAAG,GAEc5R,MAAMwgC,GAAM,QAArB,OAARlgC,EAAQogC,EAAA5D,KAAA4D,EAAA9uB,KAAG,GACFtR,EAASC,OAAM,QAA9BtB,EAAMyhC,EAAA5D,KAAA,eAAA4D,EAAAzD,OAAA,SAGDh+B,GAAM,QAAAyhC,EAAA1uB,KAAA,GAAA0uB,EAAAC,GAAAD,EAAA,SAEb5mC,QAAQqH,IAAmB,eAAfu/B,EAAAC,GAAMn0B,MAAuB,yBAAAk0B,EAAApC,OAAA,GAAAiC,EAAA,oBAE5ClyB,MAAA,KAAApf,UAAA,EArBcqwC,EAAO,SAAAsB,GAAA,OAAArB,EAAAlxB,MAAC,KAADpf,UAAA,EAAAowC,EAAA,WAFrB,OAEqBA,EAAAJ,GAAAvE,KAAAsD,MAlBtB,SAAA6C,IAAA,IAAA11B,EAAA/G,EAAA,OAAAs2B,KAAAU,MAAA,SAAA0F,GAAA,cAAAA,EAAA9uB,KAAA8uB,EAAAlvB,MAAA,OACc,OAARzG,EAAM,GAAE21B,EAAAlvB,KAAA,EAEU0tB,EACpB,sEACD,OAFY,MAAPl7B,EAAO08B,EAAAhE,MAID5tC,OAAS,GAAC,CAAA4xC,EAAAlvB,KAAA,QAKjB,OAJHxN,EAAQpV,SAAQ,SAAA+xC,GACVA,EAAO76B,wBACTiF,EAAI3Y,KAAKuuC,EAEb,IAAGD,EAAA7D,OAAA,SAEI9xB,GAAG,wBAAA21B,EAAAxC,OAAA,GAAAuC,EAAA,MAEbxyB,MAAA,KAAApf,UAAA,EAhBcmwC,EAAkB,kBAAAC,EAAAhxB,MAAC,KAADpf,UAAA,EAyCjCywC,EAAA9tB,KAAA,EAgBawtB,IAAoB,cAAAM,EAAAzC,OAAA,SAAAyC,EAAA5C,MAAA,yBAAA4C,EAAApB,OAAA,GAAAa,EAAA,KAClCD,GAAA7wB,MAAA,KAAApf,UAAA,CAED,OA5DA,WAD0B,OAAAiwC,GAAA7wB,MAAC,KAADpf,UAAA,ECwF1B,GAxFgB,SAAC+xC,GACb,IAAMC,EAAkBpzC,SAASwB,cAAc,kBACzC6xC,EAAiBrzC,SAASwB,cAAc,yBAE9C,GAAK4xC,EAAL,CAEAD,EAAKvuC,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAEwT,uBAAyBvT,EAAEuT,uBAAyB,GAAK,CAAC,IACjF,IAAI9W,EAAU,GACVqH,EAAS,GACT0qC,EAAe,CAAC,EA8DpB,IAAK,IAAIzzC,KA5DTszC,EAAKhyC,SAAQ,SAACR,GACV,IAAIge,EAAMhe,EAAQ0X,uBAElB,GAAI1X,EAAQ4yC,UAAY5yC,EAAQ6yC,UAAW,CACvC,IAAI3c,EAAS,wDAAHj1B,OAA2DjB,EAAQgY,kBAAiB,qCAAA/W,OAAoC+c,GAAI/c,OAAGjB,EAAQ8yC,sBAAwB,KAAH7xC,OAAQjB,EAAQ8yC,uBAA0B,GAAE,aAC9Mr5B,EAAM,CACNuE,KAAMA,EAAK5R,OAAO,GAClB2mC,QAAS,IAGTJ,EAAa30B,EAAK5R,OAAO,IACzBumC,EAAa30B,EAAK5R,OAAO,IAAI,GAAG2mC,QAAUJ,EAAa30B,EAAK5R,OAAO,IAAI,GAAG2mC,QAAU7c,GAEpFyc,EAAa30B,EAAK5R,OAAO,IAAM,GAC/BumC,EAAa30B,EAAK5R,OAAO,IAAIpI,KAAKyV,GAClCk5B,EAAa30B,EAAK5R,OAAO,IAAI,GAAG2mC,QAAU7c,GAG9CjuB,GAAU,iFAAJhH,OAC4DjB,EAAQgY,kBAAiB,iUAAA/W,OAK/B+c,EAAKF,MAAM,KAAK,GAAE,uRAAA7c,OAIhDjB,EAAQ2X,wBAA0B,MAAH1W,OAASjB,EAAQ2X,wBAAuB,QAAS,GAAE,wQAAA1W,OAI5E+c,GAAI/c,OAAGjB,EAAQ8yC,sBAAwB,KAAH7xC,OAAQjB,EAAQ8yC,uBAA0B,GAAE,kPAAA7xC,OAItFjB,EAAQgzC,aAAe,MAAH/xC,OAASjB,EAAQgzC,aAAY,QAAS,GAAE,2OAAA/xC,OAI5DjB,EAAQizC,aAAe,4BAAHhyC,OAA+BjB,EAAQizC,aAAY,MAAAhyC,OAAKjB,EAAQizC,aAAY,YAAa,GAAE,8CAAAhyC,OAC/GjB,EAAQkzC,aAAe,8BAAHjyC,OAAiCjB,EAAQkzC,aAAY,MAAAjyC,OAAKjB,EAAQkzC,aAAY,YAAa,GAAE,kMAAAjyC,OAIrHjB,EAAQyX,4BAA8B,2DAAHxW,OAC0BjB,EAAQgY,kBAAiB,oBACpF,oEAAmE,0CAAA/W,OAErEjB,EAAQkY,6BAA+B,YAAHjX,OAAejB,EAAQkY,6BAA4B,kHAAmH,GAAE,mTAQ1O,CACJ,IAEgBy6B,EACZA,EAAazzC,GAAKsB,SAAQ,SAAAR,GACtBY,GAAW,yEAAJK,OAEOjB,EAAQge,KAAI,2FAAA/c,OAEZjB,EAAQ+yC,QAAO,oEAIjC,IAGJL,EAAev5B,UAAYlR,EAC3BwqC,EAAgBt5B,UAAYvY,CAjFA,CAkFhC,EC5BA,GA1DY,SAAC4xC,GACT,IAAMW,EAAS,CACXC,WAAY,gBACZC,cAAe,kBACfC,cAAe,CAAC,GAAI,KAGxBC,MAAMC,OACN,WACI,IAAIn7B,EAAM,IAAIk7B,MAAME,IAAI,MAAO,CAC3BlB,OAAQ,CAAC,UAAW,WACpBmB,KAAM,IAGVlB,EAAKhyC,SAAQ,SAAAR,GACT,IAAIge,EAAMhe,EAAQ0X,uBAElB,GAAI1X,EAAQ4yC,UAAY5yC,EAAQ6yC,UAAW,CACvC,IAAIc,EAAY,IAAIJ,MAAMK,UAAU,CAAC5zC,EAAQ4yC,SAAU5yC,EAAQ6yC,WAAY,CACvEgB,eAAgB,sHAAF5yC,OAEkC+c,EAAKF,MAAM,KAAK,GAAE,6PAAA7c,OAIhDjB,EAAQ2X,wBAA0B,MAAH1W,OAASjB,EAAQ2X,wBAAuB,QAAS,GAAE,mPAAA1W,OAI5E+c,GAAI/c,OAAGjB,EAAQ8yC,sBAAwB,KAAH7xC,OAAQjB,EAAQ8yC,uBAA0B,GAAE,6NAAA7xC,OAItFjB,EAAQgzC,aAAe,MAAH/xC,OAASjB,EAAQgzC,aAAY,QAAS,GAAE,sNAAA/xC,OAI5DjB,EAAQizC,aAAe,4BAAHhyC,OAA+BjB,EAAQizC,aAAY,MAAAhyC,OAAKjB,EAAQizC,aAAY,YAAa,GAAE,0CAAAhyC,OAC/GjB,EAAQkzC,aAAe,8BAAHjyC,OAAiCjB,EAAQkzC,aAAY,MAAAjyC,OAAKjB,EAAQkzC,aAAY,YAAa,GAAE,6KAAAjyC,OAIrHjB,EAAQyX,4BAA8B,2DAAHxW,OAC0BjB,EAAQgY,kBAAiB,oBACpF,oEAAmE,sCAAA/W,OAErEjB,EAAQkY,6BAA+B,YAAHjX,OAAejB,EAAQkY,6BAA4B,6GAA8G,GAAE,+FAItNi7B,GAEH96B,EAAIy7B,WAAWnyC,IAAIgyC,EACvB,CACJ,GACJ,GACJ,ECtDA,SAAA3F,GAAA5pB,GAAA,OAAA4pB,GAAA,mBAAA3B,QAAA,iBAAAA,OAAAC,SAAA,SAAAloB,GAAA,cAAAA,CAAA,WAAAA,GAAA,OAAAA,GAAA,mBAAAioB,QAAAjoB,EAAA1K,cAAA2yB,QAAAjoB,IAAAioB,OAAAtvB,UAAA,gBAAAqH,CAAA,EAAA4pB,GAAA5pB,EAAA,UAAA8nB,KADAA,GAAA,kBAAAxpC,CAAA,MAAAswB,EAAAtwB,EAAA,GAAAypC,EAAA96B,OAAA0L,UAAAza,EAAA6pC,EAAAC,eAAAhoB,EAAA/S,OAAAiL,gBAAA,SAAA0W,EAAAtwB,EAAAypC,GAAAnZ,EAAAtwB,GAAAypC,EAAAhtC,KAAA,EAAA+M,EAAA,mBAAAmgC,OAAAA,OAAA,GAAAnoC,EAAAgI,EAAAogC,UAAA,aAAA/tB,EAAArS,EAAAqgC,eAAA,kBAAAC,EAAAtgC,EAAAugC,aAAA,yBAAAC,EAAA1Z,EAAAtwB,EAAAypC,GAAA,OAAA96B,OAAAiL,eAAA0W,EAAAtwB,EAAA,CAAAvD,MAAAgtC,EAAAlnB,YAAA,EAAA0nB,cAAA,EAAA1oB,UAAA,IAAA+O,EAAAtwB,EAAA,KAAAgqC,EAAA,aAAA1Z,GAAA0Z,EAAA,SAAA1Z,EAAAtwB,EAAAypC,GAAA,OAAAnZ,EAAAtwB,GAAAypC,CAAA,WAAAS,EAAA5Z,EAAAtwB,EAAAypC,EAAA7pC,GAAA,IAAA4J,EAAAxJ,GAAAA,EAAAqa,qBAAA8vB,EAAAnqC,EAAAmqC,EAAA3oC,EAAAmN,OAAAy7B,OAAA5gC,EAAA6Q,WAAAwB,EAAA,IAAAwuB,EAAAzqC,GAAA,WAAA8hB,EAAAlgB,EAAA,WAAA/E,MAAA6tC,EAAAha,EAAAmZ,EAAA5tB,KAAAra,CAAA,UAAA+oC,EAAAja,EAAAtwB,EAAAypC,GAAA,WAAAp9B,KAAA,SAAAm+B,IAAAla,EAAA/V,KAAAva,EAAAypC,GAAA,OAAAnZ,GAAA,OAAAjkB,KAAA,QAAAm+B,IAAAla,EAAA,EAAAtwB,EAAAkqC,KAAAA,EAAA,IAAAO,EAAA,iBAAAC,EAAA,iBAAAzqC,EAAA,YAAAN,EAAA,YAAAs9B,EAAA,YAAAkN,IAAA,UAAAQ,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAAb,EAAAa,EAAArpC,GAAA,8BAAAspC,EAAAn8B,OAAAo8B,eAAA5f,EAAA2f,GAAAA,EAAAA,EAAAE,EAAA,MAAA7f,GAAAA,IAAAse,GAAA7pC,EAAA2a,KAAA4Q,EAAA3pB,KAAAqpC,EAAA1f,GAAA,IAAA8f,EAAAL,EAAAvwB,UAAA8vB,EAAA9vB,UAAA1L,OAAAy7B,OAAAS,GAAA,SAAAK,EAAA5a,GAAA,0BAAAxyB,SAAA,SAAAkC,GAAAgqC,EAAA1Z,EAAAtwB,GAAA,SAAAswB,GAAA,YAAA6a,QAAAnrC,EAAAswB,EAAA,gBAAA8a,EAAA9a,EAAAtwB,GAAA,SAAAqrC,EAAA5B,EAAA/nB,EAAAlY,EAAAhI,GAAA,IAAAqa,EAAA0uB,EAAAja,EAAAmZ,GAAAnZ,EAAA5O,GAAA,aAAA7F,EAAAxP,KAAA,KAAAy9B,EAAAjuB,EAAA2uB,IAAAC,EAAAX,EAAArtC,MAAA,OAAAguC,GAAA,UAAAa,GAAAb,IAAA7qC,EAAA2a,KAAAkwB,EAAA,WAAAzqC,EAAAurC,QAAAd,EAAAe,SAAAr8B,MAAA,SAAAmhB,GAAA+a,EAAA,OAAA/a,EAAA9mB,EAAAhI,EAAA,aAAA8uB,GAAA+a,EAAA,QAAA/a,EAAA9mB,EAAAhI,EAAA,IAAAxB,EAAAurC,QAAAd,GAAAt7B,MAAA,SAAAmhB,GAAAwZ,EAAArtC,MAAA6zB,EAAA9mB,EAAAsgC,EAAA,aAAAxZ,GAAA,OAAA+a,EAAA,QAAA/a,EAAA9mB,EAAAhI,EAAA,IAAAA,EAAAqa,EAAA2uB,IAAA,KAAAf,EAAA/nB,EAAA,gBAAAjlB,MAAA,SAAA6zB,EAAA1wB,GAAA,SAAA6rC,IAAA,WAAAzrC,GAAA,SAAAA,EAAAypC,GAAA4B,EAAA/a,EAAA1wB,EAAAI,EAAAypC,EAAA,WAAAA,EAAAA,EAAAA,EAAAt6B,KAAAs8B,EAAAA,GAAAA,GAAA,aAAAnB,EAAAtqC,EAAAypC,EAAA7pC,GAAA,IAAA8hB,EAAA+oB,EAAA,gBAAAjhC,EAAAhI,GAAA,GAAAkgB,IAAAzhB,EAAA,UAAAuvB,MAAA,mCAAA9N,IAAA/hB,EAAA,cAAA6J,EAAA,MAAAhI,EAAA,OAAA/E,MAAA6zB,EAAAzwB,MAAA,OAAAD,EAAAmP,OAAAvF,EAAA5J,EAAA4qC,IAAAhpC,IAAA,KAAAqa,EAAAjc,EAAA8rC,SAAA,GAAA7vB,EAAA,KAAAiuB,EAAA6B,EAAA9vB,EAAAjc,GAAA,GAAAkqC,EAAA,IAAAA,IAAA7M,EAAA,gBAAA6M,CAAA,cAAAlqC,EAAAmP,OAAAnP,EAAAgsC,KAAAhsC,EAAAisC,MAAAjsC,EAAA4qC,SAAA,aAAA5qC,EAAAmP,OAAA,IAAA2S,IAAA+oB,EAAA,MAAA/oB,EAAA/hB,EAAAC,EAAA4qC,IAAA5qC,EAAAksC,kBAAAlsC,EAAA4qC,IAAA,gBAAA5qC,EAAAmP,QAAAnP,EAAAmsC,OAAA,SAAAnsC,EAAA4qC,KAAA9oB,EAAAzhB,EAAA,IAAA4qC,EAAAN,EAAAvqC,EAAAypC,EAAA7pC,GAAA,cAAAirC,EAAAx+B,KAAA,IAAAqV,EAAA9hB,EAAAC,KAAAF,EAAA+qC,EAAAG,EAAAL,MAAAvN,EAAA,gBAAAxgC,MAAAouC,EAAAL,IAAA3qC,KAAAD,EAAAC,KAAA,WAAAgrC,EAAAx+B,OAAAqV,EAAA/hB,EAAAC,EAAAmP,OAAA,QAAAnP,EAAA4qC,IAAAK,EAAAL,IAAA,YAAAmB,EAAA3rC,EAAAypC,GAAA,IAAA7pC,EAAA6pC,EAAA16B,OAAA2S,EAAA1hB,EAAA4pC,SAAAhqC,GAAA,GAAA8hB,IAAA4O,EAAA,OAAAmZ,EAAAiC,SAAA,eAAA9rC,GAAAI,EAAA4pC,SAAAoC,SAAAvC,EAAA16B,OAAA,SAAA06B,EAAAe,IAAAla,EAAAqb,EAAA3rC,EAAAypC,GAAA,UAAAA,EAAA16B,SAAA,WAAAnP,IAAA6pC,EAAA16B,OAAA,QAAA06B,EAAAe,IAAA,IAAAyB,UAAA,oCAAArsC,EAAA,aAAAq9B,EAAA,IAAAzzB,EAAA+gC,EAAA7oB,EAAA1hB,EAAA4pC,SAAAH,EAAAe,KAAA,aAAAhhC,EAAA6C,KAAA,OAAAo9B,EAAA16B,OAAA,QAAA06B,EAAAe,IAAAhhC,EAAAghC,IAAAf,EAAAiC,SAAA,KAAAzO,EAAA,IAAAz7B,EAAAgI,EAAAghC,IAAA,OAAAhpC,EAAAA,EAAA3B,MAAA4pC,EAAAzpC,EAAAksC,YAAA1qC,EAAA/E,MAAAgtC,EAAA/oB,KAAA1gB,EAAAmsC,QAAA,WAAA1C,EAAA16B,SAAA06B,EAAA16B,OAAA,OAAA06B,EAAAe,IAAAla,GAAAmZ,EAAAiC,SAAA,KAAAzO,GAAAz7B,GAAAioC,EAAA16B,OAAA,QAAA06B,EAAAe,IAAA,IAAAyB,UAAA,oCAAAxC,EAAAiC,SAAA,KAAAzO,EAAA,UAAAmP,EAAA9b,GAAA,IAAAtwB,EAAA,CAAAqsC,OAAA/b,EAAA,SAAAA,IAAAtwB,EAAAssC,SAAAhc,EAAA,SAAAA,IAAAtwB,EAAAusC,WAAAjc,EAAA,GAAAtwB,EAAAwsC,SAAAlc,EAAA,SAAAmc,WAAAnrC,KAAAtB,EAAA,UAAA0sC,EAAApc,GAAA,IAAAtwB,EAAAswB,EAAAqc,YAAA,GAAA3sC,EAAAqM,KAAA,gBAAArM,EAAAwqC,IAAAla,EAAAqc,WAAA3sC,CAAA,UAAAqqC,EAAA/Z,GAAA,KAAAmc,WAAA,EAAAJ,OAAA,SAAA/b,EAAAxyB,QAAAsuC,EAAA,WAAA99B,OAAA,YAAA08B,EAAAhrC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAypC,EAAAzpC,EAAAwB,GAAA,GAAAioC,EAAA,OAAAA,EAAAlvB,KAAAva,GAAA,sBAAAA,EAAA0gB,KAAA,OAAA1gB,EAAA,IAAAsmB,MAAAtmB,EAAAhC,QAAA,KAAA0jB,GAAA,EAAAlY,EAAA,SAAAkX,IAAA,OAAAgB,EAAA1hB,EAAAhC,QAAA,GAAA4B,EAAA2a,KAAAva,EAAA0hB,GAAA,OAAAhB,EAAAjkB,MAAAuD,EAAA0hB,GAAAhB,EAAA7gB,MAAA,EAAA6gB,EAAA,OAAAA,EAAAjkB,MAAA6zB,EAAA5P,EAAA7gB,MAAA,EAAA6gB,CAAA,SAAAlX,EAAAkX,KAAAlX,CAAA,YAAAyiC,UAAAX,GAAAtrC,GAAA,2BAAA2qC,EAAAtwB,UAAAuwB,EAAAlpB,EAAAupB,EAAA,eAAAxuC,MAAAmuC,EAAAX,cAAA,IAAAvoB,EAAAkpB,EAAA,eAAAnuC,MAAAkuC,EAAAV,cAAA,IAAAU,EAAAiC,YAAA5C,EAAAY,EAAAd,EAAA,qBAAA9pC,EAAA6sC,oBAAA,SAAAvc,GAAA,IAAAtwB,EAAA,mBAAAswB,GAAAA,EAAAtZ,YAAA,QAAAhX,IAAAA,IAAA2qC,GAAA,uBAAA3qC,EAAA4sC,aAAA5sC,EAAAsb,MAAA,EAAAtb,EAAA8sC,KAAA,SAAAxc,GAAA,OAAA3hB,OAAAo+B,eAAAp+B,OAAAo+B,eAAAzc,EAAAsa,IAAAta,EAAA3W,UAAAixB,EAAAZ,EAAA1Z,EAAAwZ,EAAA,sBAAAxZ,EAAAjW,UAAA1L,OAAAy7B,OAAAa,GAAA3a,CAAA,EAAAtwB,EAAAgtC,MAAA,SAAA1c,GAAA,OAAAkb,QAAAlb,EAAA,EAAA4a,EAAAE,EAAA/wB,WAAA2vB,EAAAoB,EAAA/wB,UAAAwB,GAAA,0BAAA7b,EAAAorC,cAAAA,EAAAprC,EAAAitC,MAAA,SAAA3c,EAAAmZ,EAAA7pC,EAAA8hB,EAAAlY,QAAA,IAAAA,IAAAA,EAAA0jC,SAAA,IAAA1rC,EAAA,IAAA4pC,EAAAlB,EAAA5Z,EAAAmZ,EAAA7pC,EAAA8hB,GAAAlY,GAAA,OAAAxJ,EAAA6sC,oBAAApD,GAAAjoC,EAAAA,EAAAkf,OAAAvR,MAAA,SAAAmhB,GAAA,OAAAA,EAAAzwB,KAAAywB,EAAA7zB,MAAA+E,EAAAkf,MAAA,KAAAwqB,EAAAD,GAAAjB,EAAAiB,EAAAnB,EAAA,aAAAE,EAAAiB,EAAAzpC,GAAA,0BAAAwoC,EAAAiB,EAAA,qDAAAjrC,EAAAmX,KAAA,SAAAmZ,GAAA,IAAAtwB,EAAA2O,OAAA2hB,GAAAmZ,EAAA,WAAA7pC,KAAAI,EAAAypC,EAAAnoC,KAAA1B,GAAA,OAAA6pC,EAAA0D,UAAA,SAAAzsB,IAAA,KAAA+oB,EAAAzrC,QAAA,KAAAsyB,EAAAmZ,EAAAnhC,MAAA,GAAAgoB,KAAAtwB,EAAA,OAAA0gB,EAAAjkB,MAAA6zB,EAAA5P,EAAA7gB,MAAA,EAAA6gB,CAAA,QAAAA,EAAA7gB,MAAA,EAAA6gB,CAAA,GAAA1gB,EAAAgrC,OAAAA,EAAAX,EAAAhwB,UAAA,CAAArD,YAAAqzB,EAAA/7B,MAAA,SAAAtO,GAAA,QAAA8gB,KAAA,OAAAJ,KAAA,OAAAkrB,KAAA,KAAAC,MAAAvb,EAAA,KAAAzwB,MAAA,OAAA6rC,SAAA,UAAA38B,OAAA,YAAAy7B,IAAAla,EAAA,KAAAmc,WAAA3uC,QAAA4uC,IAAA1sC,EAAA,QAAAypC,KAAA,WAAAA,EAAA//B,OAAA,IAAA9J,EAAA2a,KAAA,KAAAkvB,KAAAnjB,OAAAmjB,EAAA34B,MAAA,WAAA24B,GAAAnZ,EAAA,EAAA8c,KAAA,gBAAAvtC,MAAA,MAAAywB,EAAA,KAAAmc,WAAA,GAAAE,WAAA,aAAArc,EAAAjkB,KAAA,MAAAikB,EAAAka,IAAA,YAAA6C,IAAA,EAAAvB,kBAAA,SAAA9rC,GAAA,QAAAH,KAAA,MAAAG,EAAA,IAAAypC,EAAA,cAAA6D,EAAA1tC,EAAA8hB,GAAA,OAAAlgB,EAAA6K,KAAA,QAAA7K,EAAAgpC,IAAAxqC,EAAAypC,EAAA/oB,KAAA9gB,EAAA8hB,IAAA+nB,EAAA16B,OAAA,OAAA06B,EAAAe,IAAAla,KAAA5O,CAAA,SAAAA,EAAA,KAAA+qB,WAAAzuC,OAAA,EAAA0jB,GAAA,IAAAA,EAAA,KAAAlY,EAAA,KAAAijC,WAAA/qB,GAAAlgB,EAAAgI,EAAAmjC,WAAA,YAAAnjC,EAAA6iC,OAAA,OAAAiB,EAAA,UAAA9jC,EAAA6iC,QAAA,KAAAvrB,KAAA,KAAAjF,EAAAjc,EAAA2a,KAAA/Q,EAAA,YAAAsgC,EAAAlqC,EAAA2a,KAAA/Q,EAAA,iBAAAqS,GAAAiuB,EAAA,SAAAhpB,KAAAtX,EAAA8iC,SAAA,OAAAgB,EAAA9jC,EAAA8iC,UAAA,WAAAxrB,KAAAtX,EAAA+iC,WAAA,OAAAe,EAAA9jC,EAAA+iC,WAAA,SAAA1wB,GAAA,QAAAiF,KAAAtX,EAAA8iC,SAAA,OAAAgB,EAAA9jC,EAAA8iC,UAAA,YAAAxC,EAAA,UAAAta,MAAA,kDAAA1O,KAAAtX,EAAA+iC,WAAA,OAAAe,EAAA9jC,EAAA+iC,WAAA,KAAAR,OAAA,SAAAzb,EAAAtwB,GAAA,QAAAypC,EAAA,KAAAgD,WAAAzuC,OAAA,EAAAyrC,GAAA,IAAAA,EAAA,KAAA/nB,EAAA,KAAA+qB,WAAAhD,GAAA,GAAA/nB,EAAA2qB,QAAA,KAAAvrB,MAAAlhB,EAAA2a,KAAAmH,EAAA,oBAAAZ,KAAAY,EAAA6qB,WAAA,KAAA/iC,EAAAkY,EAAA,OAAAlY,IAAA,UAAA8mB,GAAA,aAAAA,IAAA9mB,EAAA6iC,QAAArsC,GAAAA,GAAAwJ,EAAA+iC,aAAA/iC,EAAA,UAAAhI,EAAAgI,EAAAA,EAAAmjC,WAAA,UAAAnrC,EAAA6K,KAAAikB,EAAA9uB,EAAAgpC,IAAAxqC,EAAAwJ,GAAA,KAAAuF,OAAA,YAAA2R,KAAAlX,EAAA+iC,WAAAtP,GAAA,KAAAwC,SAAAj+B,EAAA,EAAAi+B,SAAA,SAAAnP,EAAAtwB,GAAA,aAAAswB,EAAAjkB,KAAA,MAAAikB,EAAAka,IAAA,gBAAAla,EAAAjkB,MAAA,aAAAikB,EAAAjkB,KAAA,KAAAqU,KAAA4P,EAAAka,IAAA,WAAAla,EAAAjkB,MAAA,KAAAghC,KAAA,KAAA7C,IAAAla,EAAAka,IAAA,KAAAz7B,OAAA,cAAA2R,KAAA,kBAAA4P,EAAAjkB,MAAArM,IAAA,KAAA0gB,KAAA1gB,GAAAi9B,CAAA,EAAAsQ,OAAA,SAAAjd,GAAA,QAAAtwB,EAAA,KAAAysC,WAAAzuC,OAAA,EAAAgC,GAAA,IAAAA,EAAA,KAAAypC,EAAA,KAAAgD,WAAAzsC,GAAA,GAAAypC,EAAA8C,aAAAjc,EAAA,YAAAmP,SAAAgK,EAAAkD,WAAAlD,EAAA+C,UAAAE,EAAAjD,GAAAxM,CAAA,GAAAjtB,MAAA,SAAAsgB,GAAA,QAAAtwB,EAAA,KAAAysC,WAAAzuC,OAAA,EAAAgC,GAAA,IAAAA,EAAA,KAAAypC,EAAA,KAAAgD,WAAAzsC,GAAA,GAAAypC,EAAA4C,SAAA/b,EAAA,KAAA1wB,EAAA6pC,EAAAkD,WAAA,aAAA/sC,EAAAyM,KAAA,KAAAqV,EAAA9hB,EAAA4qC,IAAAkC,EAAAjD,EAAA,QAAA/nB,CAAA,YAAA8N,MAAA,0BAAAge,cAAA,SAAAxtC,EAAAypC,EAAA7pC,GAAA,YAAA8rC,SAAA,CAAA9B,SAAAoB,EAAAhrC,GAAAksC,WAAAzC,EAAA0C,QAAAvsC,GAAA,cAAAmP,SAAA,KAAAy7B,IAAAla,GAAA2M,CAAA,GAAAj9B,CAAA,UAAAytC,GAAAC,EAAAnC,EAAAoC,EAAAC,EAAAC,EAAArxC,EAAAguC,GAAA,QAAAsD,EAAAJ,EAAAlxC,GAAAguC,GAAA/tC,EAAAqxC,EAAArxC,KAAA,OAAAoM,GAAA,YAAA8kC,EAAA9kC,EAAA,CAAAilC,EAAAjuC,KAAA0rC,EAAA9uC,GAAAywC,QAAA3B,QAAA9uC,GAAA0S,KAAAy+B,EAAAC,EAAA,CAiBA3xC,OAAOU,iBAAiB,oBAAoB,WAE1C,IACQy0C,ErFCFC,EqFcwB,SAAAC,IAnChC,IAAAr2B,EA0CG,OA1CHA,EAmCgCsuB,KAAAsD,MAA9B,SAAA6C,IAAA,IAAAG,EAAA,OAAAtG,KAAAU,MAAA,SAAA0F,GAAA,cAAAA,EAAA9uB,KAAA8uB,EAAAlvB,MAAA,cAAAkvB,EAAAlvB,KAAA,EACqB8wB,KAAa,OAA1B1B,EAAIF,EAAAhE,KAEV34B,EAAS68B,GACT58B,GAAQ48B,GACRn6B,GAAIm6B,GClBN//B,GAAE,WAlBAA,EAAE,gBAAgByL,GAChB,SACA,SAAUxb,GAAG,IAAAyxC,EACXzxC,EAAEhD,iBACF+S,EAAE,aACCq9B,OACAvpB,QACC,CACEjgB,WAC8C,QAA5C6tC,EAAA1hC,EAAE,IAADxR,OAAKxC,KAAKuT,KAAK8L,MAAM,KAAK9S,QAAS0W,gBAAQ,IAAAyyB,OAAA,EAA5CA,EAA8CvtC,KAAM,KAExD,IAEN,GAOJ,IAKAzF,YAAW,WACTkR,GAAGE,YAAYC,MAAM,gBACvB,GAAG,KDUM,wBAAA8/B,EAAAxC,OAAA,GAAAuC,EAAA,IANqB4B,EAnChC,eAAA/tC,EAAA,KAAA+X,EAAAxd,UAAA,WAAAmvC,SAAA,SAAA3B,EAAAoC,GAAA,IAAAD,EAAAxyB,EAAAiC,MAAA3Z,EAAA+X,GAAA,SAAAqyB,EAAAnxC,GAAAgxC,GAAAC,EAAAnC,EAAAoC,EAAAC,EAAAC,EAAA,OAAApxC,EAAA,UAAAoxC,EAAA9tC,GAAA0tC,GAAAC,EAAAnC,EAAAoC,EAAAC,EAAAC,EAAA,QAAA9tC,EAAA,CAAA6tC,OAAA3vC,EAAA,KA0CGszC,EAAAp0B,MAAA,KAAApf,UAAA,EAtBOszC,EAAY10C,SAASkB,iBAAiB,sBAE9BG,OAAS,GAAK7B,WAAa,KACrCk1C,EAAUvzC,SAAQ,SAAA4zC,GACZA,EAASn0C,UAAUC,SAAS,cAC9Bk0C,EAASn0C,UAAU2B,OAAO,YAE9B,KrFNAoyC,EAAgB30C,SAASkB,iBAAiB,WAC9BG,QAChBszC,EAAcxzC,SAAQ,SAAC4J,GACrBjJ,YAAW,WACTiJ,EAAGnK,UAAU2B,OAAO,iBACtB,GAAG,IACL,IAGFqG,EAAS,IAAIC,EAAOC,GAEpBvJ,OAAOqJ,OAASA,EL5BhBpG,EAAO,IAAIC,EAEXlD,OAAOiD,KAAOA,E4FHF,IAAItD,EF8BA,WAEc01C,EAAAp0B,MAAC,KAADpf,UAAA,CAS9B4zC,GAIAz1C,OAAOU,iBAAiB,QAAQ,WG9C9Bg1C,IHgDF,GACF","sources":["webpack://Flow.landing/./wwwroot/src/modules/accordion/accordion.js","webpack://Flow.landing/./wwwroot/src/modules/tabs/tabs.js","webpack://Flow.landing/./wwwroot/src/modules/tabs/init-tabs.js","webpack://Flow.landing/./wwwroot/src/modules/utils/ios-checker.js","webpack://Flow.landing/./wwwroot/src/modules/utils/scroll-lock.js","webpack://Flow.landing/./wwwroot/src/modules/utils/focus-lock.js","webpack://Flow.landing/./wwwroot/src/modules/modals/modals.js","webpack://Flow.landing/./wwwroot/src/modules/modals/init-modals.js","webpack://Flow.landing/./wwwroot/src/modules/form/adresses.js","webpack://Flow.landing/./wwwroot/src/modules/form/regular-expression.js","webpack://Flow.landing/./wwwroot/src/modules/form/matrix.js","webpack://Flow.landing/./wwwroot/src/modules/form/render-message.js","webpack://Flow.landing/./wwwroot/src/modules/form/validator.js","webpack://Flow.landing/./wwwroot/src/modules/form/callback.js","webpack://Flow.landing/./wwwroot/src/modules/form/init-phone-input.js","webpack://Flow.landing/./wwwroot/src/modules/form/form.js","webpack://Flow.landing/./wwwroot/src/modules/form/init-form.js","webpack://Flow.landing/./wwwroot/src/modules/form/selects.js","webpack://Flow.landing/./node_modules/ssr-window/ssr-window.esm.js","webpack://Flow.landing/./node_modules/dom7/dom7.esm.js","webpack://Flow.landing/./node_modules/swiper/shared/dom.js","webpack://Flow.landing/./node_modules/swiper/shared/utils.js","webpack://Flow.landing/./node_modules/swiper/shared/get-support.js","webpack://Flow.landing/./node_modules/swiper/shared/get-device.js","webpack://Flow.landing/./node_modules/swiper/shared/get-browser.js","webpack://Flow.landing/./node_modules/swiper/core/events-emitter.js","webpack://Flow.landing/./node_modules/swiper/core/update/index.js","webpack://Flow.landing/./node_modules/swiper/core/update/updateSize.js","webpack://Flow.landing/./node_modules/swiper/core/update/updateSlides.js","webpack://Flow.landing/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://Flow.landing/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://Flow.landing/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://Flow.landing/./node_modules/swiper/core/update/updateProgress.js","webpack://Flow.landing/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://Flow.landing/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://Flow.landing/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://Flow.landing/./node_modules/swiper/core/transition/transitionEmit.js","webpack://Flow.landing/./node_modules/swiper/core/slide/index.js","webpack://Flow.landing/./node_modules/swiper/core/slide/slideTo.js","webpack://Flow.landing/./node_modules/swiper/core/slide/slideToLoop.js","webpack://Flow.landing/./node_modules/swiper/core/slide/slideNext.js","webpack://Flow.landing/./node_modules/swiper/core/slide/slidePrev.js","webpack://Flow.landing/./node_modules/swiper/core/slide/slideReset.js","webpack://Flow.landing/./node_modules/swiper/core/slide/slideToClosest.js","webpack://Flow.landing/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://Flow.landing/./node_modules/swiper/core/loop/index.js","webpack://Flow.landing/./node_modules/swiper/core/loop/loopCreate.js","webpack://Flow.landing/./node_modules/swiper/core/loop/loopFix.js","webpack://Flow.landing/./node_modules/swiper/core/loop/loopDestroy.js","webpack://Flow.landing/./node_modules/swiper/core/events/onTouchStart.js","webpack://Flow.landing/./node_modules/swiper/core/events/onTouchMove.js","webpack://Flow.landing/./node_modules/swiper/core/events/onTouchEnd.js","webpack://Flow.landing/./node_modules/swiper/core/events/onResize.js","webpack://Flow.landing/./node_modules/swiper/core/events/onClick.js","webpack://Flow.landing/./node_modules/swiper/core/events/onScroll.js","webpack://Flow.landing/./node_modules/swiper/core/events/index.js","webpack://Flow.landing/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://Flow.landing/./node_modules/swiper/core/breakpoints/index.js","webpack://Flow.landing/./node_modules/swiper/core/classes/index.js","webpack://Flow.landing/./node_modules/swiper/core/classes/addClasses.js","webpack://Flow.landing/./node_modules/swiper/core/classes/removeClasses.js","webpack://Flow.landing/./node_modules/swiper/core/defaults.js","webpack://Flow.landing/./node_modules/swiper/core/moduleExtendParams.js","webpack://Flow.landing/./node_modules/swiper/core/core.js","webpack://Flow.landing/./node_modules/swiper/core/translate/index.js","webpack://Flow.landing/./node_modules/swiper/core/translate/getTranslate.js","webpack://Flow.landing/./node_modules/swiper/core/translate/setTranslate.js","webpack://Flow.landing/./node_modules/swiper/core/translate/minTranslate.js","webpack://Flow.landing/./node_modules/swiper/core/translate/maxTranslate.js","webpack://Flow.landing/./node_modules/swiper/core/translate/translateTo.js","webpack://Flow.landing/./node_modules/swiper/core/transition/index.js","webpack://Flow.landing/./node_modules/swiper/core/transition/setTransition.js","webpack://Flow.landing/./node_modules/swiper/core/transition/transitionStart.js","webpack://Flow.landing/./node_modules/swiper/core/transition/transitionEnd.js","webpack://Flow.landing/./node_modules/swiper/core/grab-cursor/index.js","webpack://Flow.landing/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://Flow.landing/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://Flow.landing/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://Flow.landing/./node_modules/swiper/core/check-overflow/index.js","webpack://Flow.landing/./node_modules/swiper/core/images/index.js","webpack://Flow.landing/./node_modules/swiper/core/images/loadImage.js","webpack://Flow.landing/./node_modules/swiper/core/images/preloadImages.js","webpack://Flow.landing/./node_modules/swiper/core/modules/resize/resize.js","webpack://Flow.landing/./node_modules/swiper/core/modules/observer/observer.js","webpack://Flow.landing/./node_modules/swiper/shared/classes-to-selector.js","webpack://Flow.landing/./wwwroot/src/modules/sliders.js/init-exams-slider.js","webpack://Flow.landing/./node_modules/swiper/modules/pagination/pagination.js","webpack://Flow.landing/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://Flow.landing/./wwwroot/src/modules/resize.js","webpack://Flow.landing/./wwwroot/src/modules/netRequest.js","webpack://Flow.landing/./wwwroot/src/modules/centers.js","webpack://Flow.landing/./wwwroot/src/modules/map.js","webpack://Flow.landing/./wwwroot/src/index.js","webpack://Flow.landing/./wwwroot/src/modules/site.js","webpack://Flow.landing/./wwwroot/src/modules/accordion/init-accordion.js","webpack://Flow.landing/./wwwroot/src/modules/sliders.js/sliders.js"],"sourcesContent":["export class Accordion {\r\n constructor() {\r\n this._openHeight = 0;\r\n this._windowWidth = window.innerWidth;\r\n this._documentClickHandler = this._documentClickHandler.bind(this);\r\n this._windowResizeHandler = this._windowResizeHandler.bind(this);\r\n this._init();\r\n }\r\n\r\n _init() {\r\n this.fullUpdate();\r\n document.addEventListener('click', this._documentClickHandler);\r\n window.addEventListener('resize', this._windowResizeHandler);\r\n }\r\n\r\n _documentClickHandler(evt) {\r\n const target = evt.target;\r\n if (!target.closest('[data-accordion=\"button\"]')) {\r\n return;\r\n }\r\n\r\n evt.preventDefault();\r\n const parent = target.closest('[data-accordion=\"parent\"]');\r\n\r\n if (\r\n parent.dataset.destroy &&\r\n !window.matchMedia(parent.dataset.destroy).matches\r\n ) {\r\n return;\r\n }\r\n\r\n const element = target.closest('[data-accordion=\"element\"]');\r\n if (element.classList.contains('is-active')) {\r\n this.closeAccordion(element);\r\n return;\r\n }\r\n this.openAccordion(element);\r\n }\r\n\r\n _windowResizeHandler() {\r\n if (this._windowWidth === window.innerWidth) {\r\n return;\r\n }\r\n this._windowWidth = window.innerWidth;\r\n this.updateAccordionsHeight();\r\n }\r\n\r\n closeAllAccordion(parent) {\r\n const elements = parent.querySelectorAll('[data-accordion=\"element\"]');\r\n elements.forEach((element) => {\r\n const currentParent = element.closest('[data-accordion=\"parent\"]');\r\n if (currentParent === parent) {\r\n this.closeAccordion(element);\r\n }\r\n });\r\n }\r\n\r\n updateAccordionsHeight(element = null) {\r\n if (element) {\r\n const content = element.querySelector('[data-accordion=\"content\"]');\r\n content.style.transition = 'none';\r\n content.style.maxHeight = `${content.scrollHeight}px`;\r\n setTimeout(() => {\r\n content.style.transition = null;\r\n });\r\n return;\r\n }\r\n\r\n const closeElements = document.querySelectorAll(\r\n '[data-accordion=\"element\"]:not(.is-active)'\r\n );\r\n\r\n closeElements.forEach((closeElement) => {\r\n const parent = closeElement.closest('[data-accordion=\"parent\"]');\r\n const content = closeElement?.querySelector('[data-accordion=\"content\"]');\r\n if (\r\n parent.dataset.destroy &&\r\n !window.matchMedia(parent.dataset.destroy).matches\r\n ) {\r\n content.style.maxHeight = '100%';\r\n return;\r\n }\r\n if (content) {\r\n content.style.maxHeight = null;\r\n }\r\n });\r\n\r\n const openElements = document.querySelectorAll(\r\n '[data-accordion=\"element\"].is-active'\r\n );\r\n openElements.forEach((openElement) => {\r\n const content = openElement.querySelector('[data-accordion=\"content\"]');\r\n const parent = openElement.closest('[data-accordion=\"parent\"]');\r\n if (\r\n parent.dataset.destroy &&\r\n !window.matchMedia(parent.dataset.destroy).matches\r\n ) {\r\n content.style.maxHeight = '100%';\r\n return;\r\n }\r\n content.style.transition = 'none';\r\n content.style.maxHeight = `${content.scrollHeight}px`;\r\n setTimeout(() => {\r\n content.style.transition = null;\r\n });\r\n });\r\n }\r\n\r\n fullUpdate(parent = null, transition = false) {\r\n let openElements;\r\n if (parent) {\r\n openElements = parent.querySelectorAll(\r\n '[data-accordion=\"element\"].is-active'\r\n );\r\n } else {\r\n openElements = document.querySelectorAll(\r\n '[data-accordion=\"element\"].is-active'\r\n );\r\n }\r\n openElements.forEach((openElement) => {\r\n const innerParent = openElement.querySelector(\r\n '[data-accordion=\"parent\"]'\r\n );\r\n if (innerParent) {\r\n return;\r\n }\r\n this.openAccordion(openElement, transition);\r\n });\r\n this.updateAccordionsHeight();\r\n }\r\n\r\n openAccordion(element, transition = true) {\r\n const parentElement = element.closest('[data-accordion=\"parent\"]');\r\n const contentElement = element.querySelector('[data-accordion=\"content\"]');\r\n this._openHeight += contentElement.scrollHeight;\r\n\r\n if (parentElement.hasAttribute('data-single')) {\r\n this.closeAllAccordion(parentElement);\r\n }\r\n\r\n element.classList.add('is-active');\r\n if (transition) {\r\n contentElement.style.maxHeight = `${this._openHeight}px`;\r\n } else {\r\n contentElement.style.transition = 'none';\r\n contentElement.style.maxHeight = `${this._openHeight}px`;\r\n setTimeout(() => {\r\n contentElement.style.transition = null;\r\n });\r\n }\r\n\r\n if (parentElement.closest('[data-accordion=\"element\"]')) {\r\n this.openAccordion(\r\n parentElement.closest('[data-accordion=\"element\"]'),\r\n transition\r\n );\r\n return;\r\n }\r\n\r\n this._openHeight = 0;\r\n }\r\n\r\n closeAccordion(element, transition = true) {\r\n const contentElement = element.querySelector('[data-accordion=\"content\"]');\r\n if (!contentElement) {\r\n return;\r\n }\r\n element.classList.remove('is-active');\r\n if (transition) {\r\n contentElement.style.maxHeight = '0';\r\n } else {\r\n contentElement.style.transition = 'none';\r\n contentElement.style.maxHeight = '0';\r\n setTimeout(() => {\r\n contentElement.style.transition = null;\r\n });\r\n }\r\n }\r\n}\r\n","export class Tabs {\r\n constructor() {\r\n this._windowWidth = window.innerWidth;\r\n this._documentClickHandler = this._documentClickHandler.bind(this);\r\n this._init();\r\n }\r\n\r\n _init() {\r\n this._initAllTabs();\r\n document.addEventListener('click', this._documentClickHandler);\r\n }\r\n\r\n _resizeObserver() {\r\n return new ResizeObserver((entries) => {\r\n for (let entry of entries) {\r\n if (entry.target.classList.contains('is-active')) {\r\n this._updateTabHeight();\r\n }\r\n }\r\n });\r\n }\r\n\r\n _documentClickHandler(evt) {\r\n const target = evt.target;\r\n if (!target.closest('[data-tabs=\"control\"]')) {\r\n return;\r\n }\r\n evt.preventDefault();\r\n const control = target.closest('[data-tabs=\"control\"]');\r\n this.openTab(control);\r\n }\r\n\r\n _initAllTabs() {\r\n const tabs = document.querySelectorAll('[data-tabs=\"parent\"]');\r\n const forLoadTabs = document.querySelectorAll('[data-tabs=\"element\"].for-load');\r\n tabs.forEach((tab) => {\r\n this._initTab(tab);\r\n });\r\n forLoadTabs.forEach((tab) => {\r\n tab.classList.remove('for-load');\r\n });\r\n }\r\n\r\n _removeAllActiveClasses(tabControlElements, tabElements) {\r\n tabElements.forEach((tab) => {\r\n tab.classList.remove('is-active');\r\n });\r\n\r\n tabControlElements.forEach((element, index) => {\r\n element.classList.remove('is-active');\r\n element.setAttribute('data-index', index);\r\n });\r\n }\r\n\r\n _setTabStartState(tab, dataHeight, tabElements, tabContentElement, tabControlElements, dataDelay) {\r\n const activeIndex = this._returnActiveIndex(tabControlElements);\r\n const blockHeight = dataHeight === 'max' ? this._returnMaxHeight(tabElements) : tabElements[activeIndex].offsetHeight;\r\n this._removeAllActiveClasses(tabControlElements, tabElements);\r\n tab.classList.add('no-transition');\r\n tabControlElements[activeIndex].classList.add('is-active');\r\n tabElements[activeIndex].classList.add('is-active');\r\n if (dataHeight !== 'unset') {\r\n tabContentElement.style.height = `${blockHeight}px`;\r\n }\r\n setTimeout(() => {\r\n if (dataDelay) {\r\n tab.classList.remove('no-transition');\r\n }\r\n }, dataDelay);\r\n }\r\n\r\n _returnActiveIndex(tabControlElements) {\r\n let activeIndex = 0;\r\n let flag = true;\r\n tabControlElements.forEach((control, index) => {\r\n if (control.classList.contains('is-active') && flag) {\r\n activeIndex = index;\r\n flag = false;\r\n }\r\n });\r\n return activeIndex;\r\n }\r\n\r\n _returnMaxHeight(tabElements) {\r\n let height = [];\r\n tabElements.forEach((element) => {\r\n height.push(element.offsetHeight);\r\n });\r\n height.sort((a, b) => a - b);\r\n return height[height.length - 1];\r\n }\r\n\r\n _returnScopeList(nodeList, parent) {\r\n const array = [];\r\n nodeList.forEach((element) => {\r\n const elementParent = element.closest('[data-tabs=\"parent\"]');\r\n if (elementParent === parent) {\r\n array.push(element);\r\n }\r\n });\r\n\r\n return array;\r\n }\r\n\r\n _returnScopeChild(nodeList, parent) {\r\n let currentChild;\r\n nodeList.forEach((element) => {\r\n const elementParent = element.closest('[data-tabs=\"parent\"]');\r\n if (elementParent === parent) {\r\n currentChild = element;\r\n }\r\n });\r\n\r\n return currentChild;\r\n }\r\n\r\n _updateTabHeight() {\r\n const activeElements = document.querySelectorAll('[data-tabs=\"element\"].is-active');\r\n activeElements.forEach((element) => {\r\n let transition = false;\r\n const parent = element.closest('[data-tabs=\"parent\"]');\r\n if (parent.closest('[data-tabs=\"element\"]')) {\r\n transition = true;\r\n }\r\n this._setTabElementHeight(element, transition);\r\n });\r\n }\r\n\r\n _setTabElementHeight(element, transition) {\r\n const parentElement = element.closest('[data-tabs=\"parent\"]');\r\n const dataHeight = parentElement.dataset.height;\r\n const contentElement = this._returnScopeChild(parentElement.querySelectorAll('[data-tabs=\"content\"]'), parentElement);\r\n const tabElements = this._returnScopeList(parentElement.querySelectorAll('[data-tabs=\"element\"]'), parentElement);\r\n\r\n if (!transition) {\r\n parentElement.classList.add('no-transition');\r\n }\r\n\r\n if (dataHeight === 'max') {\r\n contentElement.style.height = `${this._returnMaxHeight(tabElements)}px`;\r\n } else if (dataHeight === 'unset') {\r\n contentElement.style.height = null;\r\n } else {\r\n contentElement.style.height = `${this._returnScopeChild(parentElement.querySelectorAll('[data-tabs=\"element\"].is-active'), parentElement).offsetHeight}px`;\r\n }\r\n\r\n setTimeout(() => parentElement.classList.remove('no-transition'));\r\n }\r\n\r\n _initTab(tab) {\r\n const dataHeight = tab.dataset.height;\r\n const dataDelay = tab.dataset.delay ? tab.dataset.delay : 0;\r\n const tabContentElement = tab.querySelector('[data-tabs=\"content\"]');\r\n const tabControlElements = this._returnScopeList(tab.querySelectorAll('[data-tabs=\"control\"]'), tab);\r\n const tabElements = this._returnScopeList(tab.querySelectorAll('[data-tabs=\"element\"]'), tab);\r\n this._setTabStartState(tab, dataHeight, tabElements, tabContentElement, tabControlElements, dataDelay);\r\n if (dataHeight !== 'unset') {\r\n tabElements.forEach((element) => {\r\n this._resizeObserver().observe(element);\r\n });\r\n }\r\n setTimeout(() => {\r\n tab.classList.remove('no-transition-global');\r\n });\r\n }\r\n\r\n reInit() {\r\n this._initAllTabs();\r\n }\r\n\r\n openTab(control) {\r\n const currentIndex = control.dataset.index;\r\n const parentElement = control.closest('[data-tabs=\"parent\"]');\r\n\r\n if (control.classList.contains('is-active') || parentElement.classList.contains('no-action')) {\r\n return;\r\n }\r\n\r\n const dataDelay = parentElement.dataset.delay ? parentElement.dataset.delay : 0;\r\n const dataHeight = parentElement.dataset.height;\r\n const contentElement = parentElement.querySelector('[data-tabs=\"content\"]');\r\n const tabElements = this._returnScopeList(parentElement.querySelectorAll('[data-tabs=\"element\"]'), parentElement);\r\n\r\n const activeControl = this._returnScopeChild(parentElement.querySelectorAll('[data-tabs=\"control\"].is-active'), parentElement);\r\n const activeElement = this._returnScopeChild(parentElement.querySelectorAll('[data-tabs=\"element\"].is-active'), parentElement);\r\n const currentHeight = contentElement.offsetHeight;\r\n const newHeight = tabElements[currentIndex].offsetHeight;\r\n\r\n parentElement.classList.add('no-action');\r\n document.activeElement.blur();\r\n\r\n if (activeControl) {\r\n activeControl.classList.remove('is-active');\r\n }\r\n\r\n if (activeElement) {\r\n activeElement.classList.remove('is-active');\r\n }\r\n\r\n if (currentHeight > newHeight) {\r\n setTimeout(() => {\r\n if (dataHeight !== 'max' && dataHeight !== 'unset') {\r\n contentElement.style.height = newHeight + 'px';\r\n }\r\n control.classList.add('is-active');\r\n tabElements[currentIndex].classList.add('is-active');\r\n parentElement.classList.remove('no-action');\r\n }, dataDelay);\r\n } else {\r\n if (dataHeight !== 'max' && dataHeight !== 'unset') {\r\n contentElement.style.height = newHeight + 'px';\r\n }\r\n setTimeout(() => {\r\n control.classList.add('is-active');\r\n tabElements[currentIndex].classList.add('is-active');\r\n parentElement.classList.remove('no-action');\r\n }, dataDelay);\r\n }\r\n }\r\n}\r\n","import {Tabs} from './tabs';\r\n\r\nlet tabs;\r\n\r\nconst initTabs = () => {\r\n tabs = new Tabs();\r\n // Используйте в разработке экспортируемую переменную tabs, window сделан для бэкэнда\r\n window.tabs = tabs;\r\n};\r\n\r\nexport {initTabs, tabs};\r\n","export const iosChecker = () => {\r\n return [\r\n 'iPad Simulator',\r\n 'iPhone Simulator',\r\n 'iPod Simulator',\r\n 'iPad',\r\n 'iPhone',\r\n 'iPod'\r\n ].includes(navigator.platform)\r\n // iPad on iOS 13 detection\r\n || (navigator.userAgent.includes('Mac') && 'ontouchend' in document);\r\n};\r\n","import {iosChecker} from './ios-checker';\r\n\r\nexport class ScrollLock {\r\n constructor() {\r\n this._iosChecker = iosChecker;\r\n this._lockClass = 'scroll-lock';\r\n this._scrollTop = null;\r\n this._fixedBlockElements = document.querySelectorAll('[data-fix-block]');\r\n }\r\n\r\n _getScrollbarWidth() {\r\n return window.innerWidth - document.documentElement.clientWidth;\r\n }\r\n\r\n _getBodyScrollTop() {\r\n return (\r\n self.pageYOffset ||\r\n (document.documentElement && document.documentElement.ScrollTop) ||\r\n (document.body && document.body.scrollTop)\r\n );\r\n }\r\n\r\n disableScrolling() {\r\n this._scrollTop = document.body.dataset.scroll = document.body.dataset.scroll ? document.body.dataset.scroll : this._getBodyScrollTop();\r\n if (this._getScrollbarWidth()) {\r\n document.body.style.paddingRight = `${this._getScrollbarWidth()}px`;\r\n this._fixedBlockElements.forEach((block) => {\r\n block.style.paddingRight = `${this._getScrollbarWidth()}px`;\r\n });\r\n }\r\n document.body.style.top = `-${this._scrollTop}px`;\r\n document.body.classList.add(this._lockClass);\r\n }\r\n\r\n enableScrolling() {\r\n document.body.classList.remove(this._lockClass);\r\n window.scrollTo(0, +document.body.dataset.scroll);\r\n document.body.style.paddingRight = null;\r\n document.body.style.top = null;\r\n this._fixedBlockElements.forEach((block) => {\r\n block.style.paddingRight = null;\r\n });\r\n document.body.removeAttribute('data-scroll');\r\n this._scrollTop = null;\r\n }\r\n}\r\n\r\nwindow.scrollLock = new ScrollLock();\r\n","const SELECTORS = [\r\n 'a[href]',\r\n 'area[href]',\r\n 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\r\n 'select:not([disabled]):not([aria-hidden])',\r\n 'textarea:not([disabled]):not([aria-hidden])',\r\n 'button:not([disabled]):not([aria-hidden])',\r\n 'iframe',\r\n 'object',\r\n 'embed',\r\n '[contenteditable]',\r\n '[tabindex]:not([tabindex^=\"-\"])'\r\n];\r\n\r\nexport class FocusLock {\r\n constructor() {\r\n this._lockedSelector = null;\r\n this._focusableElements = null;\r\n this._endElement = null;\r\n this._selectors = SELECTORS;\r\n\r\n this._documentKeydownHandler = this._documentKeydownHandler.bind(this);\r\n }\r\n\r\n _documentKeydownHandler(evt) {\r\n const activeElement = document.activeElement;\r\n if (evt.key === 'Tab') {\r\n if (!this._focusableElements.length) {\r\n evt.preventDefault();\r\n activeElement.blur();\r\n return;\r\n }\r\n if (this._focusableElements.length === 1) {\r\n evt.preventDefault();\r\n this._focusableElements[0].focus();\r\n return;\r\n }\r\n if (this._focusableElements.length > 1 && !activeElement.closest(this._lockedSelector)) {\r\n evt.preventDefault();\r\n this._focusableElements[0].focus();\r\n return;\r\n }\r\n }\r\n if (evt.key === 'Tab' && !evt.shiftKey && activeElement === this._focusableElements[this._focusableElements.length - 1]) {\r\n evt.preventDefault();\r\n this._focusableElements[0].focus();\r\n }\r\n if (evt.key === 'Tab' && evt.shiftKey && activeElement === this._focusableElements[0]) {\r\n evt.preventDefault();\r\n this._focusableElements[this._focusableElements.length - 1].focus();\r\n }\r\n }\r\n\r\n lock(lockedSelector, startFocus = true) {\r\n this.unlock();\r\n this._lockedSelector = lockedSelector;\r\n const lockedElement = document.querySelector(this._lockedSelector);\r\n if (!lockedElement) {\r\n return;\r\n }\r\n this._focusableElements = lockedElement.querySelectorAll(this._selectors);\r\n this._endElement = document.activeElement;\r\n const startElement = lockedElement.querySelector('[data-focus]') || this._focusableElements[0];\r\n if (this._endElement) {\r\n this._endElement.blur();\r\n }\r\n if (startElement && startFocus) {\r\n startElement.focus();\r\n }\r\n document.addEventListener('keydown', this._documentKeydownHandler);\r\n }\r\n\r\n unlock(returnFocus = true) {\r\n if (this._endElement && returnFocus) {\r\n this._endElement.focus();\r\n }\r\n this._lockedSelector = null;\r\n this._focusableElements = null;\r\n this._endElement = null;\r\n document.removeEventListener('keydown', this._documentKeydownHandler);\r\n }\r\n}\r\n\r\nwindow.focusLock = new FocusLock();\r\n","import {ScrollLock} from '../utils/scroll-lock';\r\nimport {FocusLock} from '../utils/focus-lock';\r\n\r\nexport class Modals {\r\n constructor(settings = {}) {\r\n this._scrollLock = new ScrollLock();\r\n this._focusLock = new FocusLock();\r\n\r\n this._modalOpenElements = document.querySelectorAll('[data-open-modal]');\r\n this._stackModalElements = [];\r\n this._openedModalElement = null;\r\n this._modalName = null;\r\n this._enableScrolling = true;\r\n this._settingKey = 'default';\r\n\r\n this._settings = settings;\r\n this._preventDefault = this._settings[this._settingKey].preventDefault;\r\n this._stopPlay = this._settings[this._settingKey].stopPlay;\r\n this._lockFocus = this._settings[this._settingKey].lockFocus;\r\n this._startFocus = this._settings[this._settingKey].startFocus;\r\n this._focusBack = this._settings[this._settingKey].focusBack;\r\n this._eventTimeout = this._settings[this._settingKey].eventTimeout;\r\n this._resetScrollPos = this._settings[this._settingKey].resetScrollPos;\r\n this._openCallback = this._settings[this._settingKey].openCallback;\r\n this._closeCallback = this._settings[this._settingKey].closeCallback;\r\n\r\n this._documentKeydownHandler = this._documentKeydownHandler.bind(this);\r\n this._documentClickHandler = this._documentClickHandler.bind(this);\r\n this._modalClickHandler = this._modalClickHandler.bind(this);\r\n\r\n this._init();\r\n }\r\n\r\n _init() {\r\n if (this._modalOpenElements.length) {\r\n document.addEventListener('click', this._documentClickHandler);\r\n }\r\n }\r\n\r\n _setSettings(settingKey = this._settingKey) {\r\n if (!this._settings[settingKey]) {\r\n return;\r\n }\r\n\r\n this._preventDefault =\r\n typeof this._settings[settingKey].preventDefault === 'boolean'\r\n ? this._settings[settingKey].preventDefault\r\n : this._settings[this._settingKey].preventDefault;\r\n this._stopPlay =\r\n typeof this._settings[settingKey].stopPlay === 'boolean'\r\n ? this._settings[settingKey].stopPlay\r\n : this._settings[this._settingKey].stopPlay;\r\n this._lockFocus =\r\n typeof this._settings[settingKey].lockFocus === 'boolean'\r\n ? this._settings[settingKey].lockFocus\r\n : this._settings[this._settingKey].lockFocus;\r\n this._startFocus =\r\n typeof this._settings[settingKey].startFocus === 'boolean'\r\n ? this._settings[settingKey].startFocus\r\n : this._settings[this._settingKey].startFocus;\r\n this._focusBack =\r\n typeof this._settings[settingKey].lockFocus === 'boolean'\r\n ? this._settings[settingKey].focusBack\r\n : this._settings[this._settingKey].focusBack;\r\n this._resetScrollPos =\r\n typeof this._settings[settingKey].resetScrollPos === 'boolean'\r\n ? this._settings[settingKey].resetScrollPos\r\n : this._settings[this._settingKey].resetScrollPos;\r\n this._eventTimeout =\r\n typeof this._settings[settingKey].eventTimeout === 'number'\r\n ? this._settings[settingKey].eventTimeout\r\n : this._settings[this._settingKey].eventTimeout;\r\n this._openCallback = this._settings[settingKey].openCallback || this._settings[this._settingKey].openCallback;\r\n this._closeCallback = this._settings[settingKey].closeCallback || this._settings[this._settingKey].closeCallback;\r\n }\r\n\r\n _documentClickHandler(evt) {\r\n const target = evt.target;\r\n\r\n if (!target.closest('[data-open-modal]')) {\r\n return;\r\n }\r\n\r\n evt.preventDefault();\r\n\r\n this._modalName = target.closest('[data-open-modal]').dataset.openModal;\r\n\r\n if (!this._modalName) {\r\n return;\r\n }\r\n\r\n this.open();\r\n }\r\n\r\n _documentKeydownHandler(evt) {\r\n const isEscKey = evt.key === 'Escape' || evt.key === 'Esc';\r\n\r\n if (isEscKey) {\r\n evt.preventDefault();\r\n this.close(document.querySelector('.modal.is-active').dataset.modal);\r\n }\r\n }\r\n\r\n _modalClickHandler(evt) {\r\n const target = evt.target;\r\n\r\n if (!target.closest('[data-close-modal]')) {\r\n return;\r\n }\r\n\r\n if (target.closest('[data-close-modal=\"back\"]')) {\r\n this.back();\r\n } else {\r\n this.close(target.closest('[data-modal]').dataset.modal);\r\n this._stackModalElements = [];\r\n }\r\n }\r\n\r\n _addListeners(modal) {\r\n modal.addEventListener('click', this._modalClickHandler);\r\n document.addEventListener('keydown', this._documentKeydownHandler);\r\n }\r\n\r\n _removeListeners(modal) {\r\n modal.removeEventListener('click', this._modalClickHandler);\r\n document.removeEventListener('keydown', this._documentKeydownHandler);\r\n }\r\n\r\n _stopInteractive(modal) {\r\n if (this._stopPlay) {\r\n modal.querySelectorAll('video, audio').forEach((el) => el.pause());\r\n modal.querySelectorAll('[data-iframe]').forEach((el) => {\r\n el.querySelector('iframe').contentWindow.postMessage('{\"event\": \"command\", \"func\": \"pauseVideo\", \"args\": \"\"}', '*');\r\n });\r\n }\r\n }\r\n\r\n _autoPlay(modal) {\r\n modal.querySelectorAll('[data-iframe]').forEach((el) => {\r\n const autoPlay = el.closest('[data-auto-play]');\r\n if (autoPlay) {\r\n el.querySelector('iframe').contentWindow.postMessage('{\"event\":\"command\",\"func\":\"playVideo\",\"args\":\"\"}', '*');\r\n }\r\n });\r\n }\r\n\r\n open(modalName = this._modalName) {\r\n const modal = document.querySelector(`[data-modal=\"${modalName}\"]`);\r\n\r\n if (!modal || modal.classList.contains('is-active')) {\r\n return;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickHandler);\r\n\r\n this._openedModalElement = document.querySelector('.modal.is-active');\r\n\r\n if (this._openedModalElement) {\r\n this._enableScrolling = false;\r\n this.close(this._openedModalElement.dataset.modal);\r\n }\r\n\r\n this._setSettings(modalName);\r\n modal.classList.add('is-active');\r\n\r\n if (modalName !== this._stackModalElements[this._stackModalElements.length - 1]) {\r\n this._stackModalElements.push(modalName);\r\n }\r\n\r\n if (!this._openedModalElement) {\r\n this._scrollLock.disableScrolling();\r\n }\r\n\r\n if (this._openCallback) {\r\n this._openCallback();\r\n }\r\n\r\n if (this._lockFocus) {\r\n this._focusLock.lock('.modal.is-active', this._startFocus);\r\n }\r\n\r\n if (this._resetScrollPos) {\r\n modal.scrollTo(0, 0);\r\n }\r\n\r\n setTimeout(() => {\r\n this._addListeners(modal);\r\n this._autoPlay(modal);\r\n document.addEventListener('click', this._documentClickHandler);\r\n }, this._eventTimeout);\r\n }\r\n\r\n back() {\r\n if (!this._stackModalElements.length) {\r\n return;\r\n }\r\n\r\n const activeModal = this._stackModalElements[this._stackModalElements.length - 1];\r\n const prevModal = this._stackModalElements[this._stackModalElements.length - 2];\r\n\r\n if (this._stackModalElements.length === 1) {\r\n this._stackModalElements = [];\r\n }\r\n\r\n if (prevModal) {\r\n this._stackModalElements.pop();\r\n this.open(prevModal);\r\n }\r\n\r\n this.close(activeModal);\r\n }\r\n\r\n close(modalName = this._modalName) {\r\n const modal = document.querySelector(`[data-modal=\"${modalName}\"]`);\r\n document.removeEventListener('click', this._documentClickHandler);\r\n\r\n if (!modal || !modal.classList.contains('is-active')) {\r\n return;\r\n }\r\n\r\n if (this._lockFocus) {\r\n this._focusLock.unlock(this._focusBack);\r\n }\r\n\r\n modal.classList.remove('is-active');\r\n this._removeListeners(modal);\r\n this._stopInteractive(modal);\r\n\r\n if (this._closeCallback) {\r\n this._closeCallback();\r\n }\r\n\r\n if (this._enableScrolling) {\r\n setTimeout(() => {\r\n this._scrollLock.enableScrolling();\r\n }, this._eventTimeout);\r\n }\r\n\r\n setTimeout(() => {\r\n document.addEventListener('click', this._documentClickHandler);\r\n }, this._eventTimeout);\r\n\r\n this._setSettings('default');\r\n this._enableScrolling = true;\r\n }\r\n}\r\n","import {Modals} from './modals';\r\n\r\nlet modals;\r\n\r\nconst settings = {\r\n 'default': {\r\n preventDefault: true,\r\n stopPlay: true,\r\n lockFocus: true,\r\n startFocus: false,\r\n focusBack: false,\r\n resetScrollPos: false,\r\n eventTimeout: 400,\r\n openCallback: false,\r\n closeCallback: false,\r\n },\r\n 'form-modal': {\r\n startFocus: true,\r\n },\r\n};\r\n\r\nconst initModals = () => {\r\n const modalElements = document.querySelectorAll('.modal');\r\n if (modalElements.length) {\r\n modalElements.forEach((el) => {\r\n setTimeout(() => {\r\n el.classList.remove('modal--preload');\r\n }, 100);\r\n });\r\n }\r\n\r\n modals = new Modals(settings);\r\n // Используйте в разработке экспортируемую переменную modals, window сделан для бэкэнда\r\n window.modals = modals;\r\n};\r\n\r\nexport {modals, initModals};\r\n","const adresses = (centers) => {\r\n const form = document.querySelector(\".form form\");\r\n const selectAdresses = form.querySelector(\"#ExaminationAreaId\");\r\n const selectExamType = form.querySelector(\"#ExamType\");\r\n const checkbox = form.querySelector(\".form__checkbox\");\r\n const linkPolicy = form.querySelector(\".form__checkbox a\");\r\n const inputCheckbox = checkbox.querySelector(\".form__checkbox input\");\r\n const btnSubmit = form.querySelector('button[type=\"submit\"]');\r\n let allAreas = centers;\r\n\r\n let targetTypeExam = '';\r\n let targetExaminationArea = '';\r\n\r\n /* Базовое добавление адресов не привязанных к типу экзамена */\r\n addOptionsAdress('');\r\n\r\n /* В блоке \"Виды экзамена\" при нажатии на конпку \"Оставить заявку\" или \"Записаться\" в форме предустанавливается выбранный вариант */\r\n (() => {\r\n const exams = document.querySelectorAll(\"[data-exams]\");\r\n const select = $('#ExamType');\r\n\r\n exams.forEach(btn => {\r\n btn.addEventListener('click', () => {\r\n if (targetExaminationArea == '') {\r\n let value = btn.getAttribute('data-exams');\r\n select.val(value).trigger('change');\r\n }\r\n })\r\n }) \r\n })();\r\n\r\n /* В блоке \"Центры тестирования\" при нажатии на конпку \"Записаться\" в форме предустанавливается выбранный вариант */\r\n (() => {\r\n const select = $('#ExaminationAreaId');\r\n\r\n document.addEventListener('click', (e) => {\r\n if (targetTypeExam == '') {\r\n let target = e.target;\r\n \r\n if (target.getAttribute('data-area')) {\r\n let value = target.getAttribute('data-area');\r\n select.val(value).trigger('change');\r\n }\r\n }\r\n })\r\n })();\r\n\r\n /* Вывод сообщения на селекте */\r\n inputCheckbox.parentNode.addEventListener(\"click\", () => {\r\n if (checkbox.classList.contains(\"disabled\")) {\r\n createMessage(inputCheckbox, \"Выберите экзаменационную площадку\");\r\n }\r\n });\r\n\r\n /* Вывод сообщения на селекте */\r\n selectAdresses.parentNode.addEventListener(\"click\", () => {\r\n if (selectAdresses.disabled) {\r\n createMessage(selectAdresses, \"Выберите тип экзамена\");\r\n }\r\n });\r\n\r\n /* Логика при изменении поля вида экзамена */\r\n selectExamType.onchange = (e) => {\r\n if (targetExaminationArea == '') { \r\n targetTypeExam = e.target.value;\r\n addOptionsAdress(targetTypeExam);\r\n addMessageError(selectAdresses);\r\n disabledCheckbox(\"disabled\");\r\n }\r\n\r\n removeMessageError(selectExamType);\r\n activationButtonSubmit();\r\n };\r\n\r\n /* Логика при изменении поля адреса */\r\n selectAdresses.onchange = (e) => {\r\n if (targetTypeExam == '') { \r\n targetExaminationArea = e.target.value;\r\n addOptionsTypesExam(targetExaminationArea);\r\n addMessageError(selectExamType);\r\n }\r\n \r\n [...selectAdresses].forEach((area) => {\r\n if (e.target.value == area.value) {\r\n let link = area.getAttribute(\"link\");\r\n \r\n if (link == 'null' || !link) {\r\n linkPolicy.href = \"/files/PD_Policy.pdf\"; \r\n } else {\r\n linkPolicy.href = link; \r\n }\r\n }\r\n });\r\n\r\n disabledCheckbox(\"enable\");\r\n removeMessageError(selectAdresses); \r\n activationButtonSubmit();\r\n };\r\n\r\n /* Добавление типов экзаменов */\r\n function addOptionsTypesExam(id) {\r\n let allAreasDublicate = structuredClone(allAreas);\r\n\r\n allAreasDublicate.forEach((area) => {\r\n if (area.migrationExamTypes.length > 0) {\r\n if (area.examinationAreaId == id) {\r\n [...selectExamType.children].map((item) => {\r\n item.remove();\r\n });\r\n \r\n area.migrationExamTypes.forEach((type) => {\r\n let option = new Option(\r\n type.examName,\r\n type.examTypeId,\r\n false,\r\n false\r\n );\r\n \r\n selectExamType.append(option);\r\n });\r\n }\r\n }\r\n }) \r\n\r\n $(`#ExamType`).val(null).trigger(\"change\");\r\n }\r\n\r\n /* Добавление адресов */\r\n function addOptionsAdress(examType) {\r\n let allAreasDublicate = structuredClone(allAreas);\r\n let listAreasEnable = [];\r\n let listAreasDisable = [];\r\n \r\n allAreasDublicate.forEach((area) => {\r\n let isNotDisabled, areaName;\r\n\r\n if (area.isRemoteSubmissionAvailable == false) {\r\n isNotDisabled = false;\r\n areaName = `${area.examinationAreaAddress}
${area.examinationAreaFullName}
Недоступно для выбора`;\r\n } else {\r\n let status = false;\r\n\r\n area.migrationExamTypes.forEach((type) => {\r\n if (type.examTypeId == examType || examType == '') {\r\n status = true;\r\n }\r\n });\r\n\r\n if (status) {\r\n isNotDisabled = true;\r\n areaName = `${area.examinationAreaAddress}
${area.examinationAreaFullName}
Доступно для выбора`;\r\n } else {\r\n isNotDisabled = false;\r\n areaName = `${area.examinationAreaAddress}
${area.examinationAreaFullName}
Недоступно для выбора`;\r\n }\r\n }\r\n\r\n let AREA = {};\r\n AREA.text = areaName;\r\n AREA.status = isNotDisabled;\r\n AREA.id = area.examinationAreaId;\r\n AREA.link = area.linkToProcessingPersonalData;\r\n \r\n if (isNotDisabled) {\r\n listAreasEnable.push(AREA);\r\n } else {\r\n listAreasDisable.push(AREA);\r\n }\r\n });\r\n\r\n listAreasEnable.sort((a, b) => (a.text > b.text ? 1 : -1));\r\n listAreasDisable.sort((a, b) => (a.text > b.text ? 1 : -1));\r\n\r\n [...selectAdresses.children].map((item) => {\r\n item.remove();\r\n });\r\n\r\n listAreasEnable.forEach((area) => {\r\n let option = new Option(\r\n 'г. ' + area.text,\r\n area.id,\r\n false,\r\n false\r\n );\r\n\r\n option.setAttribute(\"link\", area.link);\r\n selectAdresses.append(option);\r\n });\r\n\r\n listAreasDisable.forEach((area) => {\r\n let option = new Option(\r\n 'г. ' + area.text,\r\n area.id,\r\n false,\r\n false\r\n );\r\n\r\n option.setAttribute(\"disabled\", \"disabled\");\r\n selectAdresses.append(option);\r\n });\r\n\r\n $(`#ExaminationAreaId`).val(null).trigger(\"change\");\r\n }\r\n\r\n /* Удаление сообщения об обязательном заполнении поля */\r\n function removeMessageError(element) {\r\n let parent = element.parentNode;\r\n const parentMessage = parent.querySelector(\".input-message\");\r\n\r\n parent.classList.remove(\"is-invalid\");\r\n parent.classList.add(\"is-valid\");\r\n if (parentMessage) {\r\n parentMessage.remove();\r\n }\r\n }\r\n\r\n /* Добавление сообщения об обязательном заполнении поля на селект Адресов */\r\n function addMessageError(element) {\r\n let parentAdresses = element.parentNode;\r\n const parentMessageAdresses = parentAdresses.querySelector(\".input-message\");\r\n\r\n parentAdresses.classList.add(\"is-invalid\");\r\n parentAdresses.classList.remove(\"is-valid\");\r\n if (!parentMessageAdresses) {\r\n let span = document.createElement('span');\r\n span.classList.add('input-message', 'is-invalid');\r\n span.textContent = 'Поле обязательно к заполнению';\r\n parentAdresses.appendChild(span);\r\n }\r\n }\r\n\r\n /* Блокировка / разблокировка чекбокса */\r\n function disabledCheckbox(status) {\r\n if (status == \"disabled\") {\r\n checkbox.classList.add(\"disabled\");\r\n checkbox.classList.remove(\"is-valid\");\r\n inputCheckbox.checked = false;\r\n linkPolicy.href = \"\";\r\n } else {\r\n checkbox.classList.remove(\"disabled\");\r\n inputCheckbox.checked = false;\r\n }\r\n }\r\n\r\n /* Вывод сообщения */\r\n function createMessage(field, text) {\r\n const message = field.parentNode.querySelector(\"[data-form-mesage]\");\r\n\r\n if (message) return;\r\n\r\n let div = document.createElement(\"div\");\r\n div.setAttribute(\"data-form-mesage\", \"\");\r\n div.classList.add(\"form__message\");\r\n div.innerHTML = `\r\n
\r\n

${text}

\r\n
\r\n `;\r\n field.parentNode.appendChild(div);\r\n\r\n setTimeout(() => {\r\n div.remove();\r\n }, 5000);\r\n }\r\n\r\n /* Активация кнопки отправки при заполненных полях */\r\n function activationButtonSubmit() {\r\n const fields = form.querySelectorAll(\"input, select, textarea\");\r\n let status = true;\r\n\r\n fields.forEach(field => {\r\n if (!field.parentElement.classList.contains('is-valid')) {\r\n status = false;\r\n }\r\n })\r\n \r\n if (status == true && inputCheckbox.checked == true) {\r\n btnSubmit.disabled = false;\r\n } else {\r\n btnSubmit.disabled = true;\r\n } \r\n }\r\n};\r\n\r\nexport default adresses;\r\n","const setLimitationError = (limitation) => {\r\n // eslint-disable-next-line no-console\r\n console.error(`Переданный формат ограничения(data-limitation=\"${limitation}\") - не поддерживается. Проверьте корректность введённых значений.`);\r\n};\r\n\r\nexport const getLimitationsRegEx = (limitation) => {\r\n switch (limitation) {\r\n case 'digit':\r\n return /[^\\d]/g;\r\n case 'name':\r\n return /[^a-zA-Zа-яёА-ЯЁ\\-\\s]/g;\r\n case 'letters':\r\n return /[^a-zA-Zа-яёА-ЯЁ\\s]/g;\r\n case 'letters-and-digit':\r\n return /[^a-zA-Zа-яёА-ЯЁ\\s\\d]/g;\r\n case 'cyrillic':\r\n return /[^а-яёА-ЯЁ\\-\\s]/g;\r\n case 'latin':\r\n return /[^a-zA-Z\\s]/g;\r\n default:\r\n return setLimitationError(limitation);\r\n }\r\n};\r\n\r\nexport const getMatrixLimitationsRegEx = (matrix) => {\r\n switch (matrix) {\r\n case 'digit':\r\n return /[^\\d]/g;\r\n case 'name':\r\n return /[^\\а-яё\\А-ЯЁ\\a-z\\A-Z\\-]]/g;\r\n case 'letters':\r\n return /[^\\а-яё\\А-ЯЁ\\a-z\\A-Z]/g;\r\n case 'letters-and-digit':\r\n return /[^\\а-яё\\А-ЯЁ\\a-z\\A-Z\\d]/g;\r\n case 'cyrillic':\r\n return /[^\\а-яё\\А-ЯЁ]/g;\r\n case 'latin':\r\n return /[^\\a-z\\A-Z]/g;\r\n default:\r\n return false;\r\n }\r\n};\r\n\r\nexport const getMailRegEx = () => /[a-zA-Zа-яёА-ЯЁ0-9]{1}([a-zA-Zа-яёА-ЯЁ0-9\\-_\\.]{1,})?@[a-zA-Zа-яёА-ЯЁ0-9\\-]{1}([a-zA-Zа-яёА-ЯЁ0-9.\\-]{1,})?[a-zA-Zа-яёА-ЯЁ0-9\\-]{1}\\.[a-zA-Zа-яёА-ЯЁ]{2,6}/;\r\n","export const matrixReplace = (item, matrix, RegEx) => {\r\n if (!matrix) {\r\n // eslint-disable-next-line no-console\r\n console.error('При валидации по матрице обязательно указывать формат матрицы: data-matrix=\"\"');\r\n item.value = '';\r\n return;\r\n }\r\n\r\n if (!RegEx) {\r\n // eslint-disable-next-line no-console\r\n console.error('При валидации по матрице обязательно указывать формат ограничений: data-matrix-limitations=\"\"');\r\n item.value = '';\r\n return;\r\n }\r\n\r\n const def = matrix.replace(RegEx, '');\r\n let val = item.value.replace(RegEx, '');\r\n let i = 0;\r\n\r\n if (def.length >= val.length) {\r\n val = def;\r\n }\r\n\r\n item.value = matrix.replace(/./g, (a) => {\r\n if (/[_\\^]/.test(a) && i < val.length) {\r\n return val.charAt(i++);\r\n } else if (i >= val.length) {\r\n return '';\r\n } else {\r\n return a;\r\n }\r\n });\r\n};\r\n","export class Message {\r\n constructor() {\r\n this._baseErrorText = 'Это поле является обязательным';\r\n }\r\n\r\n _messageTemplate(message, state) {\r\n const cssClass = state === 'valid' ? 'is-valid' : 'is-invalid';\r\n return `${message}`;\r\n }\r\n\r\n removeMessage(parent) {\r\n const parentMessage = parent.querySelector('.input-message');\r\n if (parentMessage) {\r\n parentMessage.remove();\r\n }\r\n }\r\n\r\n renderMessage(parent, message, state) {\r\n this.removeMessage(parent);\r\n parent.insertAdjacentHTML('beforeend', this._messageTemplate(message, state));\r\n }\r\n}\r\n","import {getLimitationsRegEx, getMatrixLimitationsRegEx, getMailRegEx} from './regular-expression';\r\nimport {matrixReplace} from './matrix';\r\nimport {Message} from './render-message';\r\n\r\nexport class Validator {\r\n constructor() {\r\n this._getLimitationsRegEx = getLimitationsRegEx;\r\n this._getMatrixLimitationsRegEx = getMatrixLimitationsRegEx;\r\n this._getMailRegEx = getMailRegEx;\r\n this._matrixReplace = matrixReplace;\r\n this._message = new Message();\r\n this._invalidNotEmpty = false;\r\n this._validState = true;\r\n this._submitEvent = false;\r\n }\r\n\r\n _createStates(item) {\r\n this._validState = true;\r\n this._invalidNotEmpty = false;\r\n const parent = item.closest('[data-form-validate]');\r\n const formElements = parent.querySelectorAll('input', 'select', 'textarea');\r\n formElements.forEach((element) => {\r\n if (element.getAttribute('aria-invalid') === 'true') {\r\n this._validState = false;\r\n if (element.value) {\r\n this._invalidNotEmpty = true;\r\n }\r\n }\r\n });\r\n this._validateFormParent(parent);\r\n }\r\n\r\n _renderMessage(trigger, parent, input) {\r\n if (!parent.hasAttribute('data-required') && !input.value) {\r\n return;\r\n }\r\n if (!trigger) {\r\n parent.classList.add('is-invalid');\r\n if (parent.hasAttribute('data-message-base') && !input.value) {\r\n this._message.renderMessage(parent, parent.dataset.messageBase, 'invalid');\r\n } else if (parent.hasAttribute('data-message-extra') && input.value) {\r\n this._message.renderMessage(parent, parent.dataset.messageExtra, 'invalid');\r\n } else if (!parent.hasAttribute('data-message-extra') && parent.hasAttribute('data-message-base') && input.value) {\r\n this._message.renderMessage(parent, parent.dataset.messageBase, 'invalid');\r\n } else {\r\n this._message.removeMessage(parent);\r\n }\r\n } else {\r\n if (parent.hasAttribute('data-message-success')) {\r\n this._message.renderMessage(parent, parent.dataset.messageSuccess, 'valid');\r\n } else {\r\n this._message.removeMessage(parent);\r\n }\r\n }\r\n }\r\n\r\n _setItemValidState(parent, input) {\r\n if (!parent.hasAttribute('data-required') && !input.value) {\r\n return;\r\n }\r\n parent.classList.add('is-valid');\r\n parent.classList.remove('is-invalid');\r\n input.setAttribute('aria-invalid', 'false');\r\n this._message.removeMessage(parent);\r\n }\r\n\r\n _setItemInvalidState(parent, input) {\r\n if (!parent.hasAttribute('data-required') && !input.value) {\r\n return;\r\n }\r\n parent.classList.remove('is-valid');\r\n input.setAttribute('aria-invalid', 'true');\r\n }\r\n\r\n _simpleLimitation(item, limitation) {\r\n item.value = item.value.replace(this._getLimitationsRegEx(limitation), '');\r\n }\r\n\r\n _matrixLimitation(item, matrix, limitation) {\r\n this._matrixReplace(item, matrix, limitation);\r\n }\r\n\r\n _validateTextInput(parent, input) {\r\n let flag = true;\r\n if (input.value.length >= (+input.getAttribute('minlength') || 1)) {\r\n this._setItemValidState(parent, input);\r\n } else {\r\n this._setItemInvalidState(parent, input);\r\n flag = false;\r\n }\r\n return flag;\r\n }\r\n\r\n _validateMatrixInput(parent, input) {\r\n let flag = true;\r\n if (input.value.length === input.closest('[data-matrix]').dataset.matrix.length) {\r\n this._setItemValidState(parent, input);\r\n } else {\r\n this._setItemInvalidState(parent, input);\r\n flag = false;\r\n }\r\n return flag;\r\n }\r\n\r\n _validateEmailInput(parent, input) {\r\n let flag = true;\r\n if (new RegExp(this._getMailRegEx(), '').test(input.value)) {\r\n this._setItemValidState(parent, input);\r\n } else {\r\n this._setItemInvalidState(parent, input);\r\n flag = false;\r\n }\r\n return flag;\r\n }\r\n\r\n _validatePhoneInput(parent, input) {\r\n let flag = true;\r\n if (input.value.length >= +parent.dataset.phoneLength) {\r\n this._setItemValidState(parent, input);\r\n } else {\r\n this._setItemInvalidState(parent, input);\r\n flag = false;\r\n }\r\n return flag;\r\n }\r\n\r\n _validateCheckbox(parent, input) {\r\n let flag = true;\r\n if (input.checked) {\r\n this._setItemValidState(parent, input);\r\n } else {\r\n this._setItemInvalidState(parent, input);\r\n flag = false;\r\n }\r\n return flag;\r\n }\r\n\r\n _findSelectedOption(options) {\r\n let flag = false;\r\n options.forEach((option) => {\r\n if (option.value && option.selected) {\r\n flag = true;\r\n }\r\n });\r\n return flag;\r\n }\r\n\r\n _validateSelect(parent, input) {\r\n let flag = true;\r\n if (input.value) {\r\n this._setItemValidState(parent, input);\r\n } else {\r\n this._setItemInvalidState(parent, input);\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n _returnCheckedElements(inputs) {\r\n let flag = false;\r\n inputs.forEach((input) => {\r\n if (input.checked) {\r\n flag = true;\r\n }\r\n });\r\n return flag;\r\n }\r\n\r\n _removeGroupAria(inputs) {\r\n inputs.forEach((input) => {\r\n if (!input.checked) {\r\n input.removeAttribute('aria-required');\r\n input.removeAttribute('aria-invalid');\r\n } else {\r\n input.setAttribute('aria-required', true);\r\n input.setAttribute('aria-invalid', false);\r\n }\r\n });\r\n }\r\n\r\n _setGroupAria(inputs) {\r\n inputs.forEach((input) => {\r\n input.setAttribute('aria-required', true);\r\n input.setAttribute('aria-invalid', true);\r\n });\r\n }\r\n\r\n _validateToggleGroup(parent) {\r\n const formElements = parent.querySelectorAll('input');\r\n let flag = true;\r\n if (this._returnCheckedElements(formElements)) {\r\n this._removeGroupAria(formElements);\r\n parent.classList.remove('is-invalid');\r\n parent.classList.add('is-valid');\r\n this._message.removeMessage(parent);\r\n } else {\r\n this._setGroupAria(formElements);\r\n parent.classList.remove('is-valid');\r\n flag = false;\r\n }\r\n return flag;\r\n }\r\n\r\n _validateFile(parent, input) {\r\n let flag = true;\r\n const sizeTest = parent.dataset.maxSize && input.files[0] ? input.files[0].size < +parent.dataset.maxSize : true;\r\n if (input.value && sizeTest) {\r\n this._setItemValidState(parent, input);\r\n } else {\r\n this._setItemInvalidState(parent, input);\r\n flag = false;\r\n }\r\n return flag;\r\n }\r\n\r\n _customUpload(parent, input) {\r\n let flag = true;\r\n if (parent.classList.contains('is-invalid') || !input.files[0]) {\r\n flag = false;\r\n }\r\n return flag;\r\n }\r\n\r\n _validateInput(type, parent, input) {\r\n switch (type) {\r\n case 'text':\r\n return this._validateTextInput(parent, input);\r\n case 'matrix':\r\n return this._validateMatrixInput(parent, input);\r\n case 'email':\r\n return this._validateEmailInput(parent, input);\r\n case 'phone':\r\n return this._validatePhoneInput(parent, input);\r\n case 'checkbox':\r\n return this._validateCheckbox(parent, input);\r\n case 'select':\r\n return this._validateSelect(parent, input);\r\n case 'toggle-group':\r\n return this._validateToggleGroup(parent, input);\r\n case 'file':\r\n return this._validateFile(parent, input);\r\n case 'custom-upload':\r\n return this._customUpload(parent, input);\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n _baseParentValidate(formParent) {\r\n if (!this._submitEvent) {\r\n return;\r\n }\r\n\r\n if (!this._invalidNotEmpty && !this._validState) {\r\n this._message.renderMessage(formParent, formParent.dataset.messageBase, 'invalid');\r\n return;\r\n }\r\n\r\n if (this._invalidNotEmpty && !this._validState) {\r\n this._message.renderMessage(formParent, formParent.dataset.messageExtra || formParent.dataset.messageBase, 'invalid');\r\n return;\r\n }\r\n\r\n if (this._validState) {\r\n this._message.removeMessage(formParent);\r\n return;\r\n }\r\n }\r\n\r\n _validateParent(formParent, type) {\r\n switch (type) {\r\n case 'base':\r\n return this._baseParentValidate(formParent);\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n validateFormElement(formElement, fullValidate = false) {\r\n const parent = formElement.closest('[data-validate-type]');\r\n if (!parent) {\r\n return;\r\n }\r\n\r\n if (!parent.hasAttribute('data-required')) {\r\n const removeElement = parent.querySelector('input') || parent.querySelector('select') || parent.querySelector('textarea');\r\n\r\n if (!removeElement.value) {\r\n parent.classList.remove('is-valid');\r\n parent.classList.remove('is-invalid');\r\n }\r\n }\r\n\r\n const onInputValidate = parent.hasAttribute('data-on-input-validate');\r\n\r\n if (parent.hasAttribute('data-limitation')) {\r\n this._simpleLimitation(formElement, parent.dataset.limitation);\r\n }\r\n\r\n if (parent.dataset.validateType === 'matrix') {\r\n this._matrixLimitation(formElement, parent.dataset.matrix, this._getMatrixLimitationsRegEx(parent.dataset.matrixLimitation));\r\n }\r\n\r\n const isValid = this._validateInput(parent.dataset.validateType, parent, formElement);\r\n\r\n if (onInputValidate || fullValidate) {\r\n this._renderMessage(isValid, parent, formElement);\r\n }\r\n }\r\n\r\n _fullValidate(items) {\r\n let isValid = true;\r\n items.forEach((item) => {\r\n const formElement = item.querySelector('input') || item.querySelector('select') || item.querySelector('textarea');\r\n this.validateFormElement(formElement, true);\r\n if (item.classList.contains('is-invalid')) {\r\n isValid = false;\r\n }\r\n });\r\n return isValid;\r\n }\r\n\r\n validateForm(event) {\r\n if (event.type === 'submit') {\r\n this._submitEvent = true;\r\n }\r\n const validateItems = event.target.querySelectorAll('[data-validate-type]');\r\n const result = this._fullValidate(validateItems);\r\n this._createStates(event.target);\r\n return result;\r\n }\r\n\r\n _reset() {\r\n this._submitEvent = false;\r\n }\r\n\r\n _validateFormParent(element) {\r\n const formParent = element.closest('[data-form-validate]');\r\n if (formParent.dataset.parentValidate) {\r\n this._validateParent(formParent, formParent.dataset.parentValidate);\r\n }\r\n }\r\n}\r\n","import { modals } from \"../modals/init-modals\";\r\n\r\nconst citizenRequest = \"https://api.migrant-exam.ru/CitizenRequest/NewRequest\";\r\nconst successModal = \"submit-modal\";\r\nconst errorModal = \"submit-modal-error\";\r\nconst defaultModal = \"submit-modal-default\";\r\n\r\nconst baseSuccessCallback = (event) => {\r\n event.preventDefault();\r\n const formData = Object.fromEntries(new FormData(event.target));\r\n let status;\r\n \r\n fetch(citizenRequest, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json;charset=utf-8\" },\r\n body: JSON.stringify(formData),\r\n })\r\n .then((response) => {\r\n status = response.status;\r\n return response.json();\r\n })\r\n .then((result) => {\r\n if (status == 200) {\r\n document.querySelector(\"[data-user-success-link]\").href = result.value.message;\r\n document.querySelector(\"[data-user-email]\").textContent = formData.Email;\r\n modals.open(successModal);\r\n } else if (status == 422) {\r\n document.querySelector(\"[data-user-error-link]\").href = result.value.linkFeedbackForm;\r\n document.querySelector(\"[data-user-message]\").textContent = result.value.message;\r\n modals.open(errorModal);\r\n } else {\r\n modals.open(defaultModal);\r\n }\r\n\r\n try {\r\n ym(98183557, 'reachGoal', 'submit_form');\r\n } catch (e) {}\r\n\r\n VK.Goal('lead');\r\n VK.Retargeting.Event('lead');\r\n $('#ExamType').val('').trigger('change');\r\n $('#ExaminationAreaId').val('').trigger('change');\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n modals.close(\"form-modal\");\r\n });\r\n};\r\n\r\nconst baseErrorCallback = (event) => {\r\n event.preventDefault();\r\n // Данный коллбек используется при необходимости выполнить какое-либо действие помимо показа ошибок при попытке отправить неккорректные данные, он не связан с запросами на сервер\r\n};\r\n\r\nexport const callbacks = {\r\n base: {\r\n // Сбросс формы\r\n reset: true,\r\n // Таймаут сброса формы\r\n resetTimeout: 500,\r\n successCallback: baseSuccessCallback,\r\n errorCallback: baseErrorCallback,\r\n },\r\n};\r\n","const baseCountryCode = '+7';\r\nconst baseMatrix = ' (___) ___-__-__';\r\nconst phoneLength = baseCountryCode.length + baseMatrix.length;\r\n\r\nconst onPhoneInputInput = (e) => {\r\n const matrix = `${baseCountryCode}${baseMatrix}`;\r\n const def = matrix.replace(/\\D/g, '');\r\n let i = 0;\r\n let val = e.target.value.replace(/\\D/g, '');\r\n if (def.length >= val.length) {\r\n val = def;\r\n }\r\n e.target.value = matrix.replace(/./g, (a) => {\r\n if (/[_\\d]/.test(a) && i < val.length) {\r\n return val.charAt(i++);\r\n } else if (i >= val.length) {\r\n return '';\r\n } else {\r\n return a;\r\n }\r\n });\r\n};\r\n\r\nconst onPhoneInputFocus = ({target}) => {\r\n if (!target.value) {\r\n target.value = baseCountryCode;\r\n }\r\n target.addEventListener('input', onPhoneInputInput);\r\n target.addEventListener('blur', onPhoneInputBlur);\r\n target.addEventListener('keydown', onPhoneInputKeydown);\r\n target.addEventListener('paste', onPhoneInputPaste);\r\n target.addEventListener('click', onPhoneInputClick);\r\n};\r\n\r\nconst onPhoneInputClick = (e) => {\r\n if (e.target.selectionStart < 4) {\r\n e.preventDefault();\r\n e.target.setSelectionRange(3, 3);\r\n }\r\n};\r\n\r\nconst onPhoneInputPaste = (e) => {\r\n e.target.setSelectionRange(0, 0);\r\n if (!e.target.selectionStart) {\r\n setTimeout(() => {\r\n if (e.target.value.startsWith('+7')) {\r\n return;\r\n }\r\n if (e.target.value.startsWith('+8')) {\r\n e.target.value = `+7 ${e.target.value.slice(3)}`;\r\n return;\r\n }\r\n e.target.value = '';\r\n });\r\n }\r\n};\r\n\r\nconst onPhoneInputKeydown = (e) => {\r\n if (e.target.selectionStart < 4 && (e.keyCode === 37 || e.keyCode === 13)) {\r\n e.preventDefault();\r\n e.target.setSelectionRange(3, 3);\r\n }\r\n};\r\n\r\nconst onPhoneInputBlur = ({target}) => {\r\n if (target.value === baseCountryCode) {\r\n const parent = target.closest('[data-validate-type=\"phone\"]');\r\n target.value = '';\r\n if (!parent.hasAttribute('data-required')) {\r\n parent.classList.remove('is-valid');\r\n parent.classList.remove('is-invalid');\r\n const parentMessage = parent.querySelector('.input-message');\r\n if (parentMessage) {\r\n parentMessage.remove();\r\n }\r\n }\r\n parent.classList.remove('not-empty');\r\n target.removeEventListener('input', onPhoneInputInput);\r\n target.removeEventListener('blur', onPhoneInputBlur);\r\n target.removeEventListener('keydown', onPhoneInputKeydown);\r\n target.removeEventListener('paste', onPhoneInputPaste);\r\n target.removeEventListener('click', onPhoneInputClick);\r\n }\r\n};\r\n\r\nexport const initPhoneInput = (parent) => {\r\n const input = parent.querySelector('input');\r\n parent.dataset.phoneLength = phoneLength;\r\n input.addEventListener('focus', onPhoneInputFocus);\r\n};\r\n","import {Validator} from './validator';\r\nimport {callbacks} from './callback';\r\nimport {initPhoneInput} from './init-phone-input';\r\n\r\nexport class Form {\r\n constructor() {\r\n this._validator = new Validator();\r\n this._initPhoneInput = initPhoneInput;\r\n this._callbacks = callbacks;\r\n this._validState = false;\r\n }\r\n\r\n _resetSelect(select) {\r\n const nativeSelect = select.querySelector('select');\r\n const activeIndex = nativeSelect.options.selectedIndex;\r\n const selectedOption = nativeSelect.options[activeIndex];\r\n const buttonText = select.querySelector('.custom-select__text');\r\n const selectItems = select.querySelectorAll('.custom-select__item');\r\n buttonText.textContent = selectedOption.textContent;\r\n selectItems.forEach((item, index) => {\r\n if (index === activeIndex - 1) {\r\n item.setAttribute('aria-selected', 'true');\r\n return;\r\n }\r\n item.setAttribute('aria-selected', 'false');\r\n });\r\n if (!nativeSelect.value) {\r\n select.classList.remove('not-empty');\r\n select.classList.remove('is-valid');\r\n }\r\n }\r\n\r\n _resetSelects(form) {\r\n const selects = form.querySelectorAll('[data-select]');\r\n selects.forEach((select) => {\r\n this._resetSelect(select);\r\n });\r\n }\r\n\r\n reset(form) {\r\n this._validator._reset();\r\n const parent = form.closest('[data-form-validate]');\r\n form.reset();\r\n form.querySelectorAll('.is-invalid').forEach((item) => item.classList.remove('is-invalid'));\r\n form.querySelectorAll('.is-valid').forEach((item) => item.classList.remove('is-valid'));\r\n form.querySelectorAll('.input-message').forEach((item) => item.remove());\r\n parent.querySelectorAll('.input-message').forEach((item) => item.remove());\r\n setTimeout(() => {\r\n this._resetSelects(form);\r\n });\r\n }\r\n\r\n initPhoneInput(parent) {\r\n this._initPhoneInput(parent);\r\n }\r\n\r\n validateForm(event) {\r\n return this._validator.validateForm(event);\r\n }\r\n\r\n validateFormElement(item) {\r\n return this._validator.validateFormElement(item);\r\n }\r\n\r\n createStates(item) {\r\n return this._validator._createStates(item);\r\n }\r\n\r\n _onFormSubmit(event, callback = null) {\r\n this._validState = this.validateForm(event);\r\n \r\n if (this._validState && callback) {\r\n this._callbacks[callback].successCallback(event);\r\n if (this._callbacks[callback].reset) {\r\n setTimeout(() => {\r\n this.reset(event.target);\r\n }, this._callbacks[callback].resetTimeout ? this._callbacks[callback].resetTimeout : 500);\r\n }\r\n return;\r\n }\r\n if (!this._validState && callback) {\r\n this._callbacks[callback].errorCallback(event);\r\n return;\r\n }\r\n }\r\n\r\n _onFormInput(item) {\r\n this.validateFormElement(item); \r\n this.createStates(item);\r\n }\r\n\r\n _initValidate(parent) {\r\n const form = parent.querySelector('form');\r\n if (!form) {\r\n return;\r\n }\r\n\r\n const phoneParents = form.querySelectorAll('[data-validate-type=\"phone\"]');\r\n phoneParents.forEach((item) => this._initPhoneInput(item));\r\n\r\n const callback = parent.dataset.callback;\r\n form.noValidate = true;\r\n\r\n form.addEventListener('submit', (event) => {\r\n this._onFormSubmit(event, callback);\r\n });\r\n\r\n form.addEventListener('input', (event) => {\r\n this._onFormInput(event.target); \r\n this.activationButtonSubmit(form);\r\n });\r\n\r\n form.addEventListener('reset', (event) => {\r\n this.reset(event.target);\r\n });\r\n\r\n this.onFormFilling(form, () => { \r\n VK.Retargeting.Event('Initiate_Checkout');\r\n try {\r\n ym(98183557, 'reachGoal', 'FormStart');\r\n } catch (e) {}\r\n });\r\n }\r\n\r\n /* Активация кнопки отправки при заполненных полях */\r\n activationButtonSubmit(form) {\r\n const fields = form.querySelectorAll(\"input, select, textarea\");\r\n const btnSubmit = form.querySelector('button[type=\"submit\"]');\r\n let status = true;\r\n\r\n fields.forEach(field => {\r\n if (!field.parentElement.classList.contains('is-valid')) {\r\n status = false;\r\n }\r\n })\r\n \r\n if (status == true) {\r\n btnSubmit.disabled = false;\r\n } else {\r\n btnSubmit.disabled = true;\r\n } \r\n }\r\n\r\n /* Начало заполнения формы */\r\n onFormFilling(form, callback) {\r\n const controls = form.querySelectorAll(\"input, select, textarea\");\r\n let changed = false;\r\n controls.forEach((control) => {\r\n $(control).one(\"blur\", (e) => {\r\n if (!changed) {\r\n callback(e);\r\n changed = true;\r\n }\r\n });\r\n });\r\n }\r\n\r\n init() {\r\n this._validateParent = document.querySelectorAll('[data-form-validate]');\r\n if (!this._validateParent.length) {\r\n return;\r\n }\r\n this._validateParent.forEach((parent) => this._initValidate(parent));\r\n }\r\n}\r\n","import adresses from \"./adresses\";\r\nimport {Form} from \"./form\";\r\nimport selects from \"./selects\";\r\n\r\nlet form;\r\n\r\nconst initForm = (centers) => {\r\n form = new Form();\r\n \r\n window.form = form;\r\n form.init();\r\n selects(); \r\n adresses(centers); \r\n};\r\n\r\nexport {form, initForm};\r\n","const selects = () => {\r\n const selectors = [\r\n {\r\n id: \"#ExaminationAreaId\",\r\n placeholder: \"Выберите из списка\",\r\n },\r\n {\r\n id: \"#ExamType\",\r\n placeholder: \"Выберите из списка\",\r\n }\r\n ];\r\n\r\n selectors.forEach((item) => {\r\n let selector = $(item.id),\r\n message = \"\",\r\n placeholder;\r\n \r\n message = \"Ничего не найдено\";\r\n placeholder = item.placeholder;\r\n\r\n selector.select2({\r\n placeholder: placeholder,\r\n minimumResultsForSearch: item.id == \"#ExamType\" ? '-1' : '',\r\n language: {\r\n noResults: function () {\r\n return message;\r\n },\r\n },\r\n escapeMarkup: function (markup) {\r\n return markup;\r\n },\r\n });\r\n\r\n selector.val(null).trigger(\"change\");\r\n });\r\n};\r\n\r\nexport default selects;\r\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 &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\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}\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 { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\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 }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\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\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\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\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\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\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\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\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\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\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\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\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\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\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\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\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'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\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 } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\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\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\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\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\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\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\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\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\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};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('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}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\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\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\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 = $wrapperEl.children(`.${swiper.params.slideClass}`);\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\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\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\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\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\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(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\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\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\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\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\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 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\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.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\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}","export default function 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\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(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 } // Find new height from highest slide in view\n\n\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 } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\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; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\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 } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\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\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\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\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('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\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\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\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\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\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\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\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 } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = 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\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\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\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\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[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\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\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\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\n if (params.rewind && swiper.isBeginning) {\n return swiper.slideTo(swiper.slides.length - 1, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\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\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\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\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\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}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\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 = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\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 return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\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\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function 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 let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\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\n return;\n }\n\n if (data.isTouchEvent && 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\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\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\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\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\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\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\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\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\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 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 swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function 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\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\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\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\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\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\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 wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function 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}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\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 }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","export default {\n init: true,\n direction: 'horizontal',\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 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 // 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: 0,\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 // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: 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 // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\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\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\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\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\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 }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\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\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\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\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\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 // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\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: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\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'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\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\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\n getSlideClasses(slideEl) {\n const swiper = this;\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(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\n slidesPerViewDynamic(view = 'current', exact = false) {\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\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\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\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\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\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\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(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\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\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'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\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]);\nexport default Swiper;","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\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; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\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\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\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\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\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[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\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}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\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\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\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\n return breakpoint || 'max';\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\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\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\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\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\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}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\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 (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\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: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import resize from \"../resize\";\r\nimport Swiper, { Pagination } from \"swiper\";\r\nSwiper.use([Pagination]);\r\n\r\nconst initExamsSlider = () => {\r\n const slider = document.querySelector(\".exams-slider\");\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n observer: true,\r\n observeParents: true,\r\n loop: false,\r\n spaceBetween: 16,\r\n breakpoints: {\r\n 768: {\r\n slidesPerView: 2,\r\n },\r\n 630: {\r\n slidesPerView: 1,\r\n }\r\n },pagination: {\r\n el: \".exams .exams-pagination\",\r\n bulletActiveClass: \"active\",\r\n clickable: true,\r\n }\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth <= 996\r\n ? init() \r\n : destroy();\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initExamsSlider;\r\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\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 }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\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 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\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\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\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\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\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.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](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.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\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 paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\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 $el.html(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 $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\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 = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](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 {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(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.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","let resize = (func) => {\r\n let currentInnerWidth = window.innerWidth;\r\n\r\n window.addEventListener('resize', () => {\r\n if (window.innerWidth === currentInnerWidth) return;\r\n currentInnerWidth = window.innerWidth;\r\n func();\r\n });\r\n}\r\n\r\nexport default resize;","async function netRequests() {\r\n async function removeEmptyCenters() {\r\n let arr = [];\r\n\r\n const centers = await getJson(\r\n \"https://api.migrant-exam.ru/EducationalProgram/GetExaminationAreas\"\r\n );\r\n\r\n if (centers.length > 0) {\r\n centers.forEach(center => {\r\n if (center.examinationAreaAddress) {\r\n arr.push(center);\r\n }\r\n });\r\n\r\n return arr;\r\n }\r\n }\r\n /* Запрос на получение json */\r\n async function getJson(patch) {\r\n if (!patch) return;\r\n\r\n let result;\r\n\r\n try {\r\n /* На данный момент не все браузеры поддерживают AbortController */\r\n if (\"AbortController\" in window) {\r\n const response = await fetchWithTimeout(patch, {\r\n timeout: 3000,\r\n });\r\n result = await response.json();\r\n } else {\r\n const response = await fetch(patch);\r\n result = await response.json();\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n console.log(error.name === \"AbortError\");\r\n }\r\n }\r\n\r\n /* Функция прерывания запроса через определенный промежуток времени на основе AbortController */\r\n async function fetchWithTimeout(resource, options = {}) {\r\n const { timeout = 6000 } = options;\r\n\r\n const controller = new AbortController();\r\n const id = setTimeout(() => controller.abort(), timeout);\r\n\r\n const response = await fetch(resource, {\r\n ...options,\r\n signal: controller.signal,\r\n });\r\n clearTimeout(id);\r\n\r\n return response;\r\n }\r\n\r\n return await removeEmptyCenters();;\r\n}\r\n\r\nexport default netRequests;\r\n","const centers = (list) => {\r\n const wrapper_centers = document.querySelector('[data-centers]');\r\n const wrapper_modals = document.querySelector('[data-centers-modals]');\r\n\r\n if (!wrapper_centers) return;\r\n \r\n list.sort((a, b) => (a.examinationAreaAddress > b.examinationAreaAddress ? 1 : -1)); \r\n let content = '',\r\n modals = '',\r\n list_buttons = {};\r\n\r\n list.forEach((element) => {\r\n let name= element.examinationAreaAddress; \r\n\r\n if (element.latitude && element.longitude) {\r\n let button = ``;\r\n let obj = {\r\n name: name.charAt(0),\r\n buttons: '' \r\n }\r\n \r\n if (list_buttons[name.charAt(0)]) { \r\n list_buttons[name.charAt(0)][0].buttons = list_buttons[name.charAt(0)][0].buttons + button;\r\n } else {\r\n list_buttons[name.charAt(0)] = [];\r\n list_buttons[name.charAt(0)].push(obj);\r\n list_buttons[name.charAt(0)][0].buttons = button;\r\n }\r\n \r\n modals += `\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Центр тестирования в г. ${name.split(',')[0]}

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

Экзаменационная площадка:

\r\n ${element.examinationAreaFullName ? `

${element.examinationAreaFullName}

` : ''}\r\n
\r\n
\r\n

Адрес места проведения экзамена:

\r\n

г. ${name}${element.additionalAddressInfo ? `, ${element.additionalAddressInfo}` : ''}

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

Часы работы:

\r\n ${element.openingHours ? `

${element.openingHours}

` : ''}\r\n
\r\n
\r\n

Контакты:

\r\n ${element.contactPhone ? `

Телефон: ${element.contactPhone}

` : ''}\r\n ${element.contactEmail ? `

E-mail: ${element.contactEmail}

` : ''}\r\n
\r\n
\r\n
\r\n ${element.isRemoteSubmissionAvailable ? \r\n `Записаться` : \r\n ''\r\n }\r\n ${element.linkToProcessingPersonalData ? `Политика конфиденциальности` : ''}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n `\r\n }\r\n }); \r\n\r\n for (let key in list_buttons) {\r\n list_buttons[key].forEach(element => {\r\n content += `\r\n
  • \r\n
    ${element.name}
    \r\n
    \r\n ${element.buttons}\r\n
    \r\n
  • \r\n `\r\n })\r\n }\r\n\r\n wrapper_modals.innerHTML = modals;\r\n wrapper_centers.innerHTML = content;\r\n}\r\n\r\nexport default centers;","const map = (list) => {\r\n const marker = {\r\n iconLayout: 'default#image',\r\n iconImageHref: '/img/marker.svg',\r\n iconImageSize: [40, 40]\r\n };\r\n\r\n ymaps.ready(init);\r\n function init() {\r\n var map = new ymaps.Map(\"map\", {\r\n center: [56.448897, 84.973367],\r\n zoom: 7\r\n });\r\n\r\n list.forEach(element => {\r\n let name= element.examinationAreaAddress; \r\n\r\n if (element.latitude && element.longitude) {\r\n let placemark = new ymaps.Placemark([element.latitude, element.longitude], {\r\n balloonContent: `\r\n
    \r\n

    Центр тестирования в г. ${name.split(',')[0]}

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

    Экзаменационная площадка:

    \r\n ${element.examinationAreaFullName ? `

    ${element.examinationAreaFullName}

    ` : ''}\r\n
    \r\n
    \r\n

    Адрес места проведения экзамена:

    \r\n

    г. ${name}${element.additionalAddressInfo ? `, ${element.additionalAddressInfo}` : ''}

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

    Часы работы:

    \r\n ${element.openingHours ? `

    ${element.openingHours}

    ` : ''}\r\n
    \r\n
    \r\n

    Контакты:

    \r\n ${element.contactPhone ? `

    Телефон: ${element.contactPhone}

    ` : ''}\r\n ${element.contactEmail ? `

    E-mail: ${element.contactEmail}

    ` : ''}\r\n
    \r\n
    \r\n
    \r\n ${element.isRemoteSubmissionAvailable ? \r\n `Записаться` : \r\n ''\r\n }\r\n ${element.linkToProcessingPersonalData ? `Политика конфиденциальности` : ''}\r\n
    \r\n
    \r\n `\r\n }, marker);\r\n \r\n map.geoObjects.add(placemark);\r\n }\r\n }); \r\n }\r\n}\r\n\r\nexport default map;","'use strict';\r\n\r\n/* Стили */\r\nimport '../css/site.scss';\r\n\r\n/* Библиотеки */\r\nimport { initAccordion } from './modules/accordion/init-accordion.js';\r\nimport { initTabs } from './modules/tabs/init-tabs.js';\r\nimport { initModals } from './modules/modals/init-modals.js';\r\nimport { initForm } from './modules/form/init-form.js';\r\n\r\n/* Скрипты */\r\nimport sliders from './modules/sliders.js/sliders';\r\nimport site from './modules/site.js';\r\nimport netRequests from './modules/netRequest.js';\r\nimport centers from './modules/centers.js';\r\nimport map from './modules/map.js';\r\n\r\nwindow.addEventListener('DOMContentLoaded', () => {\r\n /* Закрытие вкладок аккордиона на блоке Этапы сдачи экзамена */\r\n (() => {\r\n const questions = document.querySelectorAll('.stages__question');\r\n \r\n if (questions.length > 0 && innerWidth < 768) {\r\n questions.forEach(question => {\r\n if (question.classList.contains('is-active')) {\r\n question.classList.remove('is-active');\r\n }\r\n })\r\n }\r\n })();\r\n\r\n initModals();\r\n initTabs();\r\n initAccordion();\r\n\r\n async function initNetRequests() {\r\n const list = await netRequests();\r\n\r\n initForm(list);\r\n centers(list);\r\n map(list);\r\n site();\r\n }\r\n \r\n initNetRequests();\r\n\r\n // все скрипты должны быть в обработчике 'DOMContentLoaded', но не все в 'load'\r\n // в load следует добавить скрипты, не участвующие в работе первого экрана\r\n window.addEventListener('load', () => {\r\n sliders();\r\n });\r\n});\r\n","const site = () => {\r\n /**\r\n * Плавный скролл\r\n */\r\n function setNavigation() {\r\n $(\"a[href^='#']\").on(\r\n \"click\",\r\n function (e) {\r\n e.preventDefault();\r\n $(\"html,body\")\r\n .stop()\r\n .animate(\r\n {\r\n scrollTop:\r\n $(`#${this.href.split(\"#\").pop()}`).offset()?.top - 100,\r\n },\r\n 700\r\n );\r\n }\r\n );\r\n }\r\n\r\n /* Инициализация */\r\n $(function () {\r\n setNavigation();\r\n });\r\n\r\n /**\r\n * Пользователь находится на сайте больше 30 сек\r\n */\r\n setTimeout(() => {\r\n VK.Retargeting.Event('PageView30sec');\r\n }, 30000);\r\n};\r\n\r\nexport default site;\r\n","import {Accordion} from './accordion';\r\nlet accordion;\r\n\r\nconst initAccordion = () => {\r\n accordion = new Accordion();\r\n};\r\n\r\nexport {initAccordion, accordion};\r\n","import initExamsSlider from \"./init-exams-slider\";\r\n\r\nconst sliders = () => {\r\n initExamsSlider();\r\n};\r\n\r\nexport default sliders;\r\n"],"names":["Accordion","_classCallCheck","this","_openHeight","_windowWidth","window","innerWidth","_documentClickHandler","bind","_windowResizeHandler","_init","key","value","fullUpdate","document","addEventListener","evt","target","closest","preventDefault","parent","dataset","destroy","matchMedia","matches","element","classList","contains","closeAccordion","openAccordion","updateAccordionsHeight","_this","querySelectorAll","forEach","arguments","length","undefined","content","querySelector","style","transition","maxHeight","concat","scrollHeight","setTimeout","closeElement","openElement","_this2","parentElement","contentElement","hasAttribute","closeAllAccordion","add","remove","tabs","Tabs","_initAllTabs","ResizeObserver","entries","_step","_iterator","_createForOfIteratorHelper","s","n","done","_updateTabHeight","err","e","f","control","openTab","forLoadTabs","tab","_initTab","tabControlElements","tabElements","index","setAttribute","dataHeight","tabContentElement","dataDelay","activeIndex","_returnActiveIndex","blockHeight","_returnMaxHeight","offsetHeight","_removeAllActiveClasses","height","flag","push","sort","a","b","nodeList","array","currentChild","_this3","_setTabElementHeight","_returnScopeChild","_returnScopeList","_this4","delay","_setTabStartState","_resizeObserver","observe","currentIndex","activeControl","activeElement","currentHeight","newHeight","blur","iosChecker","includes","navigator","platform","userAgent","ScrollLock","_iosChecker","_lockClass","_scrollTop","_fixedBlockElements","documentElement","clientWidth","self","pageYOffset","ScrollTop","body","scrollTop","scroll","_getBodyScrollTop","_getScrollbarWidth","paddingRight","block","top","scrollTo","removeAttribute","scrollLock","SELECTORS","FocusLock","_lockedSelector","_focusableElements","_endElement","_selectors","_documentKeydownHandler","focus","shiftKey","lockedSelector","startFocus","unlock","lockedElement","startElement","returnFocus","removeEventListener","focusLock","modals","Modals","settings","_scrollLock","_focusLock","_modalOpenElements","_stackModalElements","_openedModalElement","_modalName","_enableScrolling","_settingKey","_settings","_preventDefault","_stopPlay","stopPlay","_lockFocus","lockFocus","_startFocus","_focusBack","focusBack","_eventTimeout","eventTimeout","_resetScrollPos","resetScrollPos","_openCallback","openCallback","_closeCallback","closeCallback","_modalClickHandler","settingKey","openModal","open","close","modal","back","el","pause","contentWindow","postMessage","modalName","_setSettings","disableScrolling","lock","_addListeners","_autoPlay","activeModal","prevModal","pop","_removeListeners","_stopInteractive","enableScrolling","getLimitationsRegEx","limitation","console","error","setLimitationError","getMatrixLimitationsRegEx","matrix","getMailRegEx","matrixReplace","item","RegEx","def","replace","val","i","test","charAt","Message","_baseErrorText","message","state","parentMessage","removeMessage","insertAdjacentHTML","_messageTemplate","Validator","_getLimitationsRegEx","_getMatrixLimitationsRegEx","_getMailRegEx","_matrixReplace","_message","_invalidNotEmpty","_validState","_submitEvent","getAttribute","_validateFormParent","trigger","input","renderMessage","messageSuccess","messageBase","messageExtra","_setItemValidState","_setItemInvalidState","RegExp","phoneLength","checked","options","option","selected","inputs","formElements","_returnCheckedElements","_removeGroupAria","_setGroupAria","sizeTest","maxSize","files","size","type","_validateTextInput","_validateMatrixInput","_validateEmailInput","_validatePhoneInput","_validateCheckbox","_validateSelect","_validateToggleGroup","_validateFile","_customUpload","formParent","_baseParentValidate","formElement","fullValidate","onInputValidate","_simpleLimitation","validateType","_matrixLimitation","matrixLimitation","isValid","_validateInput","_renderMessage","items","validateFormElement","event","validateItems","result","_fullValidate","_createStates","parentValidate","_validateParent","callbacks","base","reset","resetTimeout","successCallback","status","formData","Object","fromEntries","FormData","fetch","method","headers","JSON","stringify","then","response","json","href","textContent","Email","linkFeedbackForm","ym","VK","Goal","Retargeting","Event","$","catch","log","errorCallback","baseCountryCode","onPhoneInputInput","onPhoneInputFocus","_ref","onPhoneInputBlur","onPhoneInputKeydown","onPhoneInputPaste","onPhoneInputClick","selectionStart","setSelectionRange","startsWith","slice","keyCode","_ref2","initPhoneInput","form","Form","_validator","_initPhoneInput","_callbacks","select","nativeSelect","selectedIndex","selectedOption","buttonText","selectItems","_resetSelect","_reset","_resetSelects","validateForm","callback","createStates","noValidate","_onFormSubmit","_onFormInput","activationButtonSubmit","onFormFilling","fields","btnSubmit","field","disabled","controls","changed","one","_this5","_initValidate","initForm","centers","init","id","placeholder","selector","select2","minimumResultsForSearch","language","noResults","escapeMarkup","markup","exams","selectAdresses","selectExamType","checkbox","linkPolicy","inputCheckbox","allAreas","targetTypeExam","targetExaminationArea","addOptionsAdress","examType","allAreasDublicate","structuredClone","listAreasEnable","listAreasDisable","area","isNotDisabled","areaName","isRemoteSubmissionAvailable","examinationAreaAddress","examinationAreaFullName","migrationExamTypes","examTypeId","AREA","text","examinationAreaId","link","linkToProcessingPersonalData","_toConsumableArray","children","map","Option","append","removeMessageError","parentNode","addMessageError","parentAdresses","parentMessageAdresses","span","createElement","appendChild","disabledCheckbox","createMessage","div","innerHTML","btn","onchange","examName","adresses","isObject","obj","constructor","extend","src","keys","ssrDocument","nodeName","getElementById","createEvent","initEvent","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","origin","pathname","protocol","search","getDocument","doc","ssrWindow","history","replaceState","pushState","go","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","clearTimeout","requestAnimationFrame","cancelAnimationFrame","getWindow","win","Dom7","Array","super","proto","__proto__","defineProperty","get","set","makeReactive","arrayFlat","arr","res","isArray","arrayFilter","prototype","filter","call","context","html","trim","indexOf","toCreate","tempParent","qsa","nodeType","uniqueArray","arrayUnique","fn","noTrigger","split","shortcut","name","args","on","Methods","addClass","classes","classNames","c","removeClass","hasClass","className","toggleClass","toggle","attr","attrs","attrName","removeAttr","transform","duration","transitionDuration","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","j","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollY","scrollLeft","scrollX","left","css","props","prop","each","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","els","newChild","tempDiv","firstChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","find","foundElements","found","removeChild","methodName","writable","nextTick","now","o","toString","to","noExtend","nextSource","node","HTMLElement","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","overflow","support","deviceCached","browser","getSupport","smoothScroll","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","calcSupport","priority","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","emit","updateSize","width","$el","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","visibleSlides","ceil","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","direction","step","slideTo","internal","initial","Error","indexAsNumber","isFinite","animating","preventInteractionOnTransition","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","isH","t","_immediateVirtual","_swiperImmediateVirtual","behavior","onSlideToWrapperTransitionEnd","destroyed","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","getTranslate","loopDestroy","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","dummyEventAttached","dummyEventListener","touchEvents","device","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","ios","android","attachEvents","detachEvents","isGridEnabled","addClasses","suffixes","prefix","resultClasses","prepareClasses","fill","containerModifierClass","join","emitContainerClasses","removeClasses","resizeObserver","createElements","url","virtualTranslate","breakpointsBase","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","update","axis","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","x","y","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","moving","isLocked","cursor","unsetGrabCursor","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","innerHeight","points","point","minRatio","substr","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","overrides","ua","screenWidth","screenHeight","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getDevice","isSafari","toLowerCase","isWebView","calcBrowser","modules","__modules__","mod","extendParams","swiperParams","defaults","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","resizeHandler","orientationChangeHandler","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","classesToSelector","pfx","bulletSize","pagination","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","horizontalClass","verticalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","position","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","checkProps","createElementIfNotDefined","_s","targetEl","isHidden","func","currentInnerWidth","slider","resizeSwiper","_regeneratorRuntime","r","hasOwnProperty","Symbol","iterator","asyncIterator","u","toStringTag","define","configurable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","mark","setPrototypeOf","awrap","async","Promise","reverse","stop","rval","handle","finish","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","info","_asyncToGenerator","_netRequests","_callee4","removeEmptyCenters","_removeEmptyCenters","getJson","_getJson","fetchWithTimeout","_fetchWithTimeout","_context4","_callee3","resource","_options$timeout","timeout","controller","_args3","_context3","AbortController","abort","_objectSpread","signal","_x2","_callee2","patch","_response","_context2","t0","_x","_callee","_context","center","list","wrapper_centers","wrapper_modals","list_buttons","latitude","longitude","additionalAddressInfo","buttons","openingHours","contactPhone","contactEmail","marker","iconLayout","iconImageHref","iconImageSize","ymaps","ready","Map","zoom","placemark","Placemark","balloonContent","geoObjects","questions","modalElements","_initNetRequests","netRequests","_$$offset","question","initNetRequests","initExamsSlider"],"sourceRoot":""}