{"version":3,"file":"app-8e86d785afa38cc6abfa.js","mappings":";0OAkBIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,GAAI,EAC7FP,EAAcC,EAAGC,EAC5B,EAUA,IAAIS,EAAW,WAQX,OAPAA,EAAWR,OAAOS,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIR,KADTO,EAAIG,UAAUF,GACOZ,OAAOK,UAAUC,eAAeC,KAAKI,EAAGP,KAAIM,EAAEN,GAAKO,EAAEP,IAE9E,OAAOM,CACX,EACOF,EAASQ,MAAMC,KAAMH,UAChC,EAcA,SAASI,EAAUC,EAASC,EAAYC,EAAGC,GAEvC,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUN,MAAMG,EAASC,GAAc,KAAKS,OAClE,GACJ,CAEA,SAASM,EAAYhB,EAASiB,GAC1B,IAAsGC,EAAGC,EAAG5B,EAAG6B,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPhC,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGiC,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BP,EAAEO,OAAOC,UAAY,WAAa,OAAO9B,IAAM,GAAIsB,EACvJ,SAASM,EAAKhC,GAAK,OAAO,SAAUmC,GAAK,OACzC,SAAcC,GACV,GAAIZ,EAAG,MAAM,IAAIa,UAAU,mCAC3B,KAAOX,IAAMA,EAAI,EAAGU,EAAG,KAAOT,EAAI,IAAKA,OACnC,GAAIH,EAAI,EAAGC,IAAM5B,EAAY,EAARuC,EAAG,GAASX,EAAU,OAAIW,EAAG,GAAKX,EAAS,SAAO5B,EAAI4B,EAAU,SAAM5B,EAAEH,KAAK+B,GAAI,GAAKA,EAAET,SAAWnB,EAAIA,EAAEH,KAAK+B,EAAGW,EAAG,KAAKhB,KAAM,OAAOvB,EAE3J,OADI4B,EAAI,EAAG5B,IAAGuC,EAAK,CAAS,EAARA,EAAG,GAAQvC,EAAEiB,QACzBsB,EAAG,IACP,KAAK,EAAG,KAAK,EAAGvC,EAAIuC,EAAI,MACxB,KAAK,EAAc,OAAXT,EAAEC,QAAgB,CAAEd,MAAOsB,EAAG,GAAIhB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIW,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKT,EAAEI,IAAIO,MAAOX,EAAEG,KAAKQ,MAAO,SACxC,QACI,KAAMzC,EAAI8B,EAAEG,MAAMjC,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,KAAkB,IAAVkC,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAET,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVS,EAAG,MAAcvC,GAAMuC,EAAG,GAAKvC,EAAE,IAAMuC,EAAG,GAAKvC,EAAE,IAAM,CAAE8B,EAAEC,MAAQQ,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYT,EAAEC,MAAQ/B,EAAE,GAAI,CAAE8B,EAAEC,MAAQ/B,EAAE,GAAIA,EAAIuC,EAAI,KAAO,CACpE,GAAIvC,GAAK8B,EAAEC,MAAQ/B,EAAE,GAAI,CAAE8B,EAAEC,MAAQ/B,EAAE,GAAI8B,EAAEI,IAAIQ,KAAKH,GAAK,KAAO,CAC9DvC,EAAE,IAAI8B,EAAEI,IAAIO,MAChBX,EAAEG,KAAKQ,MAAO,SAEtBF,EAAKb,EAAK7B,KAAKY,EAASqB,GAC1B,MAAOV,GAAKmB,EAAK,CAAC,EAAGnB,GAAIQ,EAAI,CAAG,CAAE,QAAUD,EAAI3B,EAAI,CAAG,CACzD,GAAY,EAARuC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEtB,MAAOsB,EAAG,GAAKA,EAAG,QAAK,EAAQhB,MAAM,EAC9E,CAtBgDL,CAAK,CAACf,EAAGmC,GAAK,CAAG,CAuBrE,CAOA,SAASlB,EAAEA,EAAEpB,GAAG,IAAIE,EAAE,CAAC,EAAE,IAAI,IAAIyC,KAAKvB,EAAE9B,OAAOK,UAAUC,eAAeC,KAAKuB,EAAEuB,IAAI3C,EAAE4C,QAAQD,GAAG,IAAIzC,EAAEyC,GAAGvB,EAAEuB,IAAI,GAAG,MAAMvB,GAAG,mBAAmB9B,OAAOuD,sBAAsB,CAAC,IAAI1C,EAAE,EAAE,IAAIwC,EAAErD,OAAOuD,sBAAsBzB,GAAGjB,EAAEwC,EAAEtC,OAAOF,IAAIH,EAAE4C,QAAQD,EAAExC,IAAI,GAAGb,OAAOK,UAAUmD,qBAAqBjD,KAAKuB,EAAEuB,EAAExC,MAAMD,EAAEyC,EAAExC,IAAIiB,EAAEuB,EAAExC,IAAK,CAAC,OAAOD,CAAC,CALhT,mBAApB6C,iBAAiCA,gBAKoS,mBAAmBA,iBAAiBA,gBAAgB,IAAI/C,EAAE,oBAAoBgD,WAAWA,WAAW,oBAAoBC,OAAOA,YAAO,IAAoB,EAAApB,EAAO,EAAAA,EAAO,oBAAoBqB,KAAKA,KAAK,CAAC,EAAE,SAAShD,EAAEkB,GAAG,OAAOA,GAAGA,EAAE+B,YAAY7D,OAAOK,UAAUC,eAAeC,KAAKuB,EAAE,WAAWA,EAAEgC,QAAQhC,CAAC,CAAC,SAASuB,EAAEvB,EAAEpB,GAAG,OAAOoB,EAAEpB,EAAE,CAACqD,QAAQ,CAAC,GAAGrD,EAAEqD,SAASrD,EAAEqD,OAAO,CAAC,IAAIlD,EAAEwC,GAAE,SAAUvB,EAAEpB,GAAGV,OAAOgE,eAAetD,EAAE,aAAa,CAACiB,OAAM,IAAK,IAAIf,EAAE,WAAW,SAASkB,IAAI,IAAIA,EAAEb,KAAKA,KAAKgD,OAAO,IAAIC,IAAIjD,KAAKkD,YAAY,SAASzD,EAAEE,GAAG,IAAIyC,EAAEvB,EAAEmC,OAAOG,IAAI1D,QAAG,IAAS2C,OAAE,IAASzC,EAAEkB,EAAEmC,OAAOI,IAAI3D,EAAE,IAAIoB,EAAEmC,OAAOI,IAAI3D,EAAE,CAACE,SAAI,IAASA,IAAIyC,EAAEiB,QAAQ1D,GAAGkB,EAAEmC,OAAOI,IAAI3D,EAAE2C,GAAI,EAAEpC,KAAKsD,SAAS,SAAS7D,GAAG,OAAOoB,EAAEmC,OAAOO,IAAI9D,EAAE,EAAEO,KAAKwD,KAAK,SAAS/D,GAAG,OAAO,IAAIa,SAAQ,SAAUX,EAAEyC,GAAGvB,EAAEyC,SAAS7D,GAAGoB,EAAEqC,YAAYzD,EAAEE,IAAIkB,EAAEqC,YAAYzD,GAAGE,IAAM,GAAE,EAAEK,KAAKyD,OAAO,SAAShE,GAAG,IAAIE,EAAEkB,EAAEmC,OAAOG,IAAI1D,GAAG,QAAG,IAASE,GAAG,IAAIA,EAAEG,OAAO,CAAC,IAAIsC,EAAEzC,EAAEuC,MAAMrB,EAAEmC,OAAOI,IAAI3D,EAAEE,QAAG,IAASyC,GAAGsB,WAAWtB,EAAE,EAAG,MAAMvB,EAAEmC,OAAOW,OAAOlE,EAAG,CAAE,CAAC,OAAOoB,EAAE+C,YAAY,WAAW,YAAO,IAAS/C,EAAEgD,WAAWhD,EAAEgD,SAAS,IAAIhD,GAAGA,EAAEgD,QAAQ,EAAEhD,CAAC,CAA9nB,GAAkoBpB,EAAEoD,QAAQ,WAAW,OAAOlD,EAAEiE,aAAa,CAAG,IAAGjE,EAAEC,GAAG,IAAIkE,EAAEnE,EAAEyC,GAAE,SAAUvB,EAAElB,GAAG,IAAIyC,EAAE3C,GAAGA,EAAEQ,WAAW,SAASY,EAAEpB,EAAEE,EAAEyC,GAAG,OAAO,IAAIzC,IAAIA,EAAEW,WAAU,SAAUV,EAAEkE,GAAG,SAASC,EAAElD,GAAG,IAAImD,EAAE5B,EAAExB,KAAKC,GAAmB,CAAd,MAAMA,GAAGiD,EAAEjD,EAAG,CAAC,CAAC,SAASnB,EAAEmB,GAAG,IAAImD,EAAE5B,EAAE6B,MAAMpD,GAAmB,CAAd,MAAMA,GAAGiD,EAAEjD,EAAG,CAAC,CAAC,SAASmD,EAAEnD,GAAGA,EAAEG,KAAKpB,EAAEiB,EAAEH,OAAO,IAAIf,GAAE,SAAUF,GAAGA,EAAEoB,EAAEH,MAAQ,IAAGO,KAAK8C,EAAErE,EAAG,CAACsE,GAAG5B,EAAEA,EAAErC,MAAMc,EAAEpB,GAAG,KAAKmB,OAAS,GAAE,EAAEkD,EAAErE,GAAGA,EAAEyB,aAAa,SAASL,EAAEpB,GAAG,IAAIE,EAAEyC,EAAExC,EAAEkE,EAAEC,EAAE,CAACvC,MAAM,EAAEC,KAAK,WAAW,GAAG,EAAE7B,EAAE,GAAG,MAAMA,EAAE,GAAG,OAAOA,EAAE,EAAE,EAAE8B,KAAK,GAAGC,IAAI,IAAI,OAAOmC,EAAE,CAAClD,KAAKlB,EAAE,GAAGuE,MAAMvE,EAAE,GAAGwE,OAAOxE,EAAE,IAAI,mBAAmBmC,SAASiC,EAAEjC,OAAOC,UAAU,WAAW,OAAO9B,IAAI,GAAG8D,EAAE,SAASpE,EAAEoE,GAAG,OAAO,SAASpE,GAAG,OAAO,SAASoE,GAAG,GAAGnE,EAAE,MAAM,IAAIsC,UAAU,mCAAmC,KAAK8B,GAAG,IAAI,GAAGpE,EAAE,EAAEyC,IAAIxC,EAAE,EAAEkE,EAAE,GAAG1B,EAAE8B,OAAOJ,EAAE,GAAG1B,EAAE6B,SAASrE,EAAEwC,EAAE8B,SAAStE,EAAEN,KAAK8C,GAAG,GAAGA,EAAExB,SAAShB,EAAEA,EAAEN,KAAK8C,EAAE0B,EAAE,KAAK9C,KAAK,OAAOpB,EAAE,OAAOwC,EAAE,EAAExC,IAAIkE,EAAE,CAAC,EAAEA,EAAE,GAAGlE,EAAEc,QAAQoD,EAAE,IAAI,KAAK,EAAE,KAAK,EAAElE,EAAEkE,EAAE,MAAM,KAAK,EAAE,OAAOC,EAAEvC,QAAQ,CAACd,MAAMoD,EAAE,GAAG9C,MAAK,GAAI,KAAK,EAAE+C,EAAEvC,QAAQY,EAAE0B,EAAE,GAAGA,EAAE,CAAC,GAAG,SAAS,KAAK,EAAEA,EAAEC,EAAEpC,IAAIO,MAAM6B,EAAErC,KAAKQ,MAAM,SAAS,QAAQ,MAAetC,GAAVA,EAAEmE,EAAErC,MAAU5B,OAAO,GAAGF,EAAEA,EAAEE,OAAO,KAAK,IAAIgE,EAAE,IAAI,IAAIA,EAAE,IAAI,CAACC,EAAE,EAAE,QAAQ,CAAC,GAAG,IAAID,EAAE,MAAMlE,GAAGkE,EAAE,GAAGlE,EAAE,IAAIkE,EAAE,GAAGlE,EAAE,IAAI,CAACmE,EAAEvC,MAAMsC,EAAE,GAAG,KAAK,CAAC,GAAG,IAAIA,EAAE,IAAIC,EAAEvC,MAAM5B,EAAE,GAAG,CAACmE,EAAEvC,MAAM5B,EAAE,GAAGA,EAAEkE,EAAE,KAAK,CAAC,GAAGlE,GAAGmE,EAAEvC,MAAM5B,EAAE,GAAG,CAACmE,EAAEvC,MAAM5B,EAAE,GAAGmE,EAAEpC,IAAIQ,KAAK2B,GAAG,KAAK,CAAClE,EAAE,IAAImE,EAAEpC,IAAIO,MAAM6B,EAAErC,KAAKQ,MAAM,SAAS4B,EAAErE,EAAEH,KAAKuB,EAAEkD,EAAwC,CAApC,MAAMlD,GAAGiD,EAAE,CAAC,EAAEjD,GAAGuB,EAAE,CAAE,CAAC,QAAQzC,EAAEC,EAAE,CAAE,CAAC,GAAG,EAAEkE,EAAE,GAAG,MAAMA,EAAE,GAAG,MAAO,CAACpD,MAAMoD,EAAE,GAAGA,EAAE,QAAG,EAAO9C,MAAK,EAAG,CAAxxB,CAA0xB,CAAC8C,EAAEpE,GAAG,CAAC,CAAC,EAAEqE,EAAEtE,EAAEV,OAAOgE,eAAepD,EAAE,aAAa,CAACe,OAAM,IAAK,IAAIhB,EAAE,wBAAwBsE,EAAE,CAACG,IAAI,SAAStD,GAAG,OAAOuB,EAAE2B,OAAE,OAAO,GAAO,WAAY,OAAOD,EAAE9D,MAAK,SAAUa,GAAG,MAAM,IAAIuD,MAAM,cAAe,GAAG,GAAE,EAAEC,QAAQ,SAASxD,GAAG,OAAOuB,EAAE2B,OAAE,OAAO,GAAO,WAAY,OAAOD,EAAE9D,MAAK,SAAUa,GAAG,MAAM,IAAIuD,MAAM,cAAe,GAAG,GAAE,EAAEE,MAAM,WAAW,OAAOlC,EAAE2B,OAAE,OAAO,GAAO,WAAY,OAAOD,EAAE9D,MAAK,SAAUa,GAAG,MAAO,CAAC,EAAE6B,OAAO6B,aAAaD,QAAS,GAAG,GAAE,EAAEE,WAAW,SAAS3D,GAAG,OAAOuB,EAAE2B,OAAE,OAAO,GAAO,WAAY,OAAOD,EAAE9D,MAAK,SAAUa,GAAG,MAAM,IAAIuD,MAAM,cAAe,GAAG,GAAE,EAAEK,QAAQ,SAAS5D,EAAEpB,GAAG,OAAO2C,EAAE2B,OAAE,OAAO,GAAO,WAAY,OAAOD,EAAE9D,MAAK,SAAUa,GAAG,MAAM,IAAIuD,MAAM,cAAe,GAAG,GAAE,EAAEM,QAAQ,SAAS7D,GAAG,OAAO6B,OAAO6B,aAAaJ,IAAItD,EAAE,EAAE8D,YAAY,SAAS9D,GAAG,OAAO6B,OAAO6B,aAAaF,QAAQxD,EAAE,EAAE+D,UAAU,WAAW,OAAOlC,OAAO6B,aAAaD,OAAO,EAAEO,eAAe,SAAShE,GAAG,OAAO6B,OAAO6B,aAAaC,WAAW3D,EAAE,EAAEiE,YAAY,SAASjE,EAAEpB,GAAG,OAAOiD,OAAO6B,aAAaE,QAAQ5D,EAAEpB,EAAE,GAAG,SAASZ,EAAEgC,GAAG,OAAO,IAAIP,SAAQ,SAAUb,GAAG,OAAOiE,WAAWjE,EAAEoB,EAAG,GAAE,CAAC,SAASkE,EAAElE,GAAG,IAAI,IAAIpB,EAAE,gEAAgEE,EAAE,GAAGyC,EAAE,EAAEA,EAAEvB,EAAEuB,IAAKzC,GAAGF,EAAEuF,KAAKC,MAAMD,KAAKE,SAASzF,EAAEK,SAAU,OAAOH,CAAC,CAAC,IAAIwF,EAAE,WAAW,SAAStE,EAAEpB,GAAGO,KAAKoF,eAAe,IAAIC,IAAIrF,KAAKsF,oBAAe,EAAOtF,KAAKuF,GAAGC,KAAKC,MAAMC,WAAWX,EAAE,IAAI/E,KAAK2F,YAAY3F,KAAK2F,YAAYC,KAAK5F,MAAMA,KAAK6F,YAAY7F,KAAK6F,YAAYD,KAAK5F,MAAMA,KAAK8F,uBAAuB9F,KAAK8F,uBAAuBF,KAAK5F,MAAMA,KAAK+F,yBAAyB/F,KAAK+F,yBAAyBH,KAAK5F,MAAMA,KAAKgG,yBAAyBhG,KAAKgG,yBAAyBJ,KAAK5F,MAAMA,KAAKsF,eAAe7F,OAAE,IAASoB,EAAEoF,UAAUpF,EAAEoF,QAAQ,GAAI,CAAC,OAAOpF,EAAEzB,UAAUuG,YAAY,SAASlG,EAAEE,GAAG,YAAO,IAASA,IAAIA,EAAE,KAAKyC,EAAEpC,UAAK,OAAO,GAAO,WAAY,IAAIoC,EAAExC,EAAEmE,EAAEoB,EAAEe,EAAE/G,EAAEgH,EAAE,OAAOrC,EAAE9D,MAAK,SAAU8D,GAAG,OAAOA,EAAEtC,OAAO,KAAK,EAAEY,EAAEoD,KAAKC,MAAMV,EAAE,GAAGnF,EAAE4F,KAAKC,MAAM9F,EAAEoE,EAAErE,EAAE,IAAID,EAAE0F,OAAE,IAASnF,KAAKsF,eAAetB,EAAEhE,KAAKsF,eAAexB,EAAEtC,MAAM,EAAE,KAAK,EAAE,OAAOgE,KAAKC,MAAM7F,EAAE,CAAC,EAAEf,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,OAAOiF,EAAErC,OAAO,OAAO0D,EAAER,YAAYZ,GAAG,CAAC,EAAE,IAAImC,EAAElG,KAAKuF,GAAG,IAAI9F,EAAE,IAAI2C,EAAE,CAAC,EAAEvD,EAAEmG,KAAKC,MAAM,GAAGD,KAAKE,aAAa,KAAK,EAAE,OAAOpB,EAAErC,OAAO0D,EAAEL,YAAYf,EAAEqC,KAAKC,UAAU,CAACd,GAAGvF,KAAKuF,GAAGe,IAAIlE,EAAEmE,WAAWL,EAAEM,aAAahB,KAAKC,MAAMgB,cAAcjB,KAAKC,SAAS,CAAC,EAAE5G,EAAE,KAAK,KAAK,EAAE,OAAOiF,EAAErC,OAAO,QAAQtC,EAAEgG,EAAER,YAAYZ,MAAMoC,EAAEC,KAAKM,MAAMvH,IAAIoG,KAAKvF,KAAKuF,IAAIY,EAAEG,MAAMlE,GAAGpC,KAAKoF,eAAeuB,IAAIvE,GAAGpC,KAAKgG,yBAAyBjC,EAAE3B,GAAG,CAAC,GAAE,IAAK,CAAC,EAAE,GAAG,KAAK,EAAE,OAAOvB,EAAE+F,mBAAc,IAAS5G,KAAKsF,eAAetB,EAAEhE,KAAKsF,gBAAgB,CAAC,EAAEtF,KAAK+F,yBAAyBnG,IAAI,KAAK,EAAEkE,EAAErC,OAAOqC,EAAEtC,MAAM,EAAE,KAAK,EAAE,OAAOY,EAAEoD,KAAKC,MAAMV,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,MAAO,CAAC,GAAE,GAAK,GAAG,GAAE,EAAElE,EAAEzB,UAAU4G,yBAAyB,SAASnF,EAAEpB,GAAG,OAAO2C,EAAEpC,UAAK,OAAO,GAAO,WAAY,IAAIL,EAAEK,KAAK,OAAO8D,EAAE9D,MAAK,SAAU+D,GAAG,OAAOL,YAAW,WAAY,OAAOtB,EAAEzC,OAAE,OAAO,GAAO,WAAY,IAAIA,EAAEyC,EAAE2B,EAAE,OAAOD,EAAE9D,MAAK,SAAU8D,GAAG,OAAOA,EAAEtC,OAAO,KAAK,EAAE,MAAO,CAAC,EAAE5B,EAAEiD,UAAUW,KAAK/D,IAAI,KAAK,EAAE,OAAOqE,EAAErC,OAAOzB,KAAKoF,eAAe7B,IAAI9D,IAAIE,OAAE,IAASK,KAAKsF,eAAetB,EAAEhE,KAAKsF,eAAe,QAAQlD,EAAEzC,EAAEgF,YAAY9D,KAAKjB,EAAEiD,UAAUY,OAAOhE,GAAG,CAAC,MAAMsE,EAAEqC,KAAKM,MAAMtE,IAAIqE,cAAcjB,KAAKC,MAAM9F,EAAEmF,YAAYjE,EAAEuF,KAAKC,UAAUtC,IAAInE,EAAEiD,UAAUY,OAAOhE,GAAGO,KAAKgG,yBAAyBnF,EAAEpB,GAAG,CAAC,MAAMG,EAAEiD,UAAUY,OAAOhE,GAAG,CAAC,IAAK,GAAG,GAAG,GAAE,KAAK,CAAC,EAAG,GAAG,GAAE,EAAEoB,EAAEzB,UAAU2G,yBAAyB,SAAStG,GAAG,OAAO2C,EAAEpC,UAAK,OAAO,GAAO,WAAY,OAAO8D,EAAE9D,MAAK,SAAUL,GAAG,OAAOA,EAAE6B,OAAO,KAAK,EAAE,MAAO,CAAC,EAAE,IAAIlB,SAAQ,SAAUX,GAAG,IAAIyC,GAAE,EAAGxC,EAAE4F,KAAKC,MAAM3B,GAAE,EAAG,SAASC,IAAI,GAAGD,IAAIpB,OAAOmE,oBAAoB,UAAU9C,GAAGlD,EAAEiG,kBAAkB/C,GAAGgD,aAAarH,GAAGoE,GAAE,IAAK1B,EAAE,CAACA,GAAE,EAAG,IAAI3C,EAAE,IAAI+F,KAAKC,MAAM7F,GAAGH,EAAE,EAAEiE,WAAW/D,EAAEF,GAAGE,EAAE,KAAM,CAAC,CAAC+C,OAAOsE,iBAAiB,UAAUjD,GAAGlD,EAAEoG,aAAalD,GAAG,IAAIrE,EAAEgE,WAAWK,EAAEiB,KAAKkC,IAAI,EAAEzH,EAAE+F,KAAKC,OAAS,KAAI,KAAK,EAAE,OAAO9F,EAAE8B,OAAO,CAAC,GAAI,GAAG,GAAE,EAAEZ,EAAEoG,aAAa,SAASxH,GAAGO,KAAK8G,kBAAkBrH,QAAG,IAASoB,EAAEoF,SAASpF,EAAEoF,QAAQ9D,KAAK1C,EAAG,EAAEoB,EAAEiG,kBAAkB,SAASrH,QAAG,IAASoB,EAAEoF,UAAUpF,EAAEoF,QAAQpF,EAAEoF,QAAQkB,QAAO,SAAUtG,GAAG,OAAOA,IAAIpB,CAAE,IAAI,EAAEoB,EAAEuG,cAAc,gBAAW,IAASvG,EAAEoF,SAASpF,EAAEoF,QAAQoB,QAAQC,SAAQ,SAAUzG,GAAG,OAAOA,GAAI,GAAG,EAAEA,EAAEzB,UAAUyG,YAAY,SAAShF,GAAG,OAAOuB,EAAEpC,UAAK,OAAO,GAAO,WAAY,OAAO8D,EAAE9D,MAAK,SAAUP,GAAG,OAAOA,EAAE+B,OAAO,KAAK,EAAE,MAAO,CAAC,EAAExB,KAAK8F,uBAAuBjF,IAAI,KAAK,EAAE,MAAO,CAAC,EAAEpB,EAAEgC,QAAS,GAAG,GAAE,EAAEZ,EAAEzB,UAAU0G,uBAAuB,SAASrG,GAAG,OAAO2C,EAAEpC,UAAK,OAAO,GAAO,WAAY,IAAIL,EAAEyC,EAAE2B,EAAElF,EAAE,OAAOiF,EAAE9D,MAAK,SAAU8D,GAAG,OAAOA,EAAEtC,OAAO,KAAK,EAAE,OAAO7B,OAAE,IAASK,KAAKsF,eAAetB,EAAEhE,KAAKsF,eAAelD,EAAE1C,EAAE,IAAID,EAAE,QAAQsE,EAAEpE,EAAEgF,YAAYvC,IAAI,CAAC,IAAIvD,EAAEuH,KAAKM,MAAM3C,IAAIwB,KAAKvF,KAAKuF,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE3F,EAAEiD,UAAUW,KAAK3E,EAAEyH,MAAM,KAAK,EAAExC,EAAErC,OAAOzB,KAAKoF,eAAezB,OAAO9E,EAAEyH,KAAK3G,EAAEkF,eAAezC,GAAGxC,EAAEiD,UAAUY,OAAO5E,EAAEyH,KAAKzF,EAAEuG,gBAAgBtD,EAAEtC,MAAM,EAAE,KAAK,EAAE,MAAO,CAAC,GAAI,GAAG,GAAE,EAAEX,EAAE+F,cAAc,SAASnH,GAAG,IAAI,IAAIE,EAAE6F,KAAKC,MAAM,IAAIrD,EAAE3C,EAAEG,EAAE,GAAGkE,EAAE,IAAI,CAAC,IAAIC,EAAE3B,EAAEsC,QAAQZ,GAAG,GAAG,OAAOC,EAAE,MAAMnE,EAAEuC,KAAK4B,GAAGD,GAAI,CAAC,IAAI,IAAIE,GAAE,EAAGnF,EAAE,EAAEA,EAAEe,EAAEE,OAAOjB,IAAI,CAAC,IAAIkG,EAAEnF,EAAEf,GAAG,GAAGkG,EAAEwC,SAAS7H,GAAG,CAAC,IAAIyF,EAAE/C,EAAEuC,YAAYI,GAAG,GAAG,OAAOI,EAAE,CAAC,IAAIe,EAAEE,KAAKM,MAAMvB,SAAI,IAASe,EAAEO,eAAeP,EAAEM,aAAa7G,QAAG,IAASuG,EAAEO,eAAeP,EAAEO,cAAc9G,KAAKyC,EAAEyC,eAAeE,GAAGf,GAAE,EAAI,CAAC,CAAC,CAACA,GAAGnD,EAAEuG,eAAgB,EAAEvG,EAAEoF,aAAQ,EAAOpF,CAAC,CAA93H,GAAk4HlB,EAAEkD,QAAQsC,CAAG,KAAI,MAAMpB,EAAE,CAACyD,iBAAiB,IAAI9H,EAAE,CAAC+H,KAAK,eAAeC,QAAQ,SAAS1D,EAAE,IAAIwB,KAAKC,MAAM,MAAM5G,UAAUuF,MAAMuD,YAAY9G,EAAEpB,GAAGmI,MAAMnI,GAAGO,KAAK6H,MAAMhH,EAAEb,KAAK8H,kBAAkBrI,EAAEV,OAAOC,eAAegB,KAAKnB,EAAEO,UAAW,CAAC2I,oBAAoBF,MAAMhH,EAAEiH,kBAAkBrI,IAAI,OAAO,IAAIZ,EAAEgC,EAAEpB,EAAE,EAAE,MAAMsF,UAAUlG,EAAE8I,YAAY9G,EAAEpB,EAAEE,EAAEyC,EAAE,MAAMwF,MAAM/G,EAAEpB,GAAGO,KAAKgI,MAAMrI,EAAEK,KAAKiI,SAAS7F,EAAErD,OAAOC,eAAegB,KAAK+E,EAAE3F,UAAW,EAAE,MAAM+F,UAAUtG,EAAE8I,cAAcC,MAAM,UAAU,WAAW7I,OAAOC,eAAegB,KAAKmF,EAAE/F,UAAW,EAAE,MAAM8G,UAAUf,EAAEwC,YAAY9G,GAAG+G,QAAQ5H,KAAKkI,MAAMrH,EAAE9B,OAAOC,eAAegB,KAAKkG,EAAE9G,UAAW,EAAE,MAAMD,UAAUN,EAAE8I,YAAY9G,GAAG+G,MAAM,YAAY,gBAAgB5H,KAAKkI,MAAMrH,EAAE9B,OAAOC,eAAegB,KAAKb,EAAEC,UAAW,EAAE,MAAM+G,UAAUtH,EAAE8I,YAAY9G,EAAEpB,EAAEE,GAAGiI,MAAM/G,EAAEpB,GAAGO,KAAKmI,UAAUxI,EAAEZ,OAAOC,eAAegB,KAAKmG,EAAE/G,UAAW,EAAE,MAAMgC,UAAUvC,EAAE8I,YAAY9G,EAAEpB,GAAGmI,MAAM,wBAAwB,qCAAqCtG,EAAET,EAAE,CAAC,yBAAyBS,EAAE7B,QAAQO,KAAKoI,SAASvH,EAAEb,KAAKqI,MAAM5I,EAAEV,OAAOC,eAAegB,KAAKoB,EAAEhC,UAAW,EAAE,SAASkC,EAAET,EAAEpB,EAAE,IAAI,OAAOoB,IAAIpB,EAAE8H,SAAS1G,GAAGA,EAAE,EAAE,CAAC,MAAMyH,EAAE,IAAI5F,OAAO6F,OAAOlH,EAAE,KAAK,MAAMR,EAAE,qEAAqE,IAAIpB,EAAE,GAAG,OAAOP,MAAMsJ,KAAKF,IAAIG,gBAAgB,IAAIC,WAAW,MAAMpB,SAAS3H,GAAGF,GAAGoB,EAAElB,EAAEkB,EAAEf,UAAUL,GAAGkJ,EAAE9H,GAAG+H,KAAK/H,GAAGkB,EAAEtC,IAAI,IAAIoJ,SAASlJ,GAAGF,EAAE2C,EAAEvB,EAAEpB,EAAE,CAAC,aAAa,OAAO,IAAIqJ,gBAAgB,CAACjI,GAAG9B,OAAOgK,KAAKlI,GAAGsG,QAAQ1H,QAAG,IAASoB,EAAEpB,KAAKuJ,QAAO,CAAEvJ,EAAEE,IAAIZ,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEC,GAAG,CAAC,CAACE,GAAGkB,EAAElB,MAAM,CAAC,GAA7G,CAAiHZ,OAAOS,OAAO,CAACyJ,UAAUtJ,GAAGyC,KAAKsD,UAAS,EAAG5G,EAAE+B,GAAG,CAACA,GAAGqI,mBAAmBC,KAAKtI,GAAGuI,MAAM,IAAIC,KAAKxI,GAAG,KAAK,KAAKA,EAAEyI,WAAW,GAAG5D,SAAS,KAAK2B,OAAO,KAAKkC,KAAK,KAA1G,CAAgH1I,EAAE2I,QAAQ,KAAK,KAAKA,QAAQ,KAAK,MAAMjI,EAAEkI,MAAM5I,EAAEpB,KAAK,MAAME,QAAQ+J,MAAM7I,EAAEpB,GAAG,MAAO,CAACkK,GAAGhK,EAAEgK,GAAGC,WAAWjK,EAAEiK,OAAM,EAAyiBC,EAAEJ,MAAM5I,EAAEpB,EAAEE,EAAEyC,EAAExC,EAAEkE,EAAEC,EAAE,MAAMnE,EAA/U6J,OAAM5I,EAAEpB,EAAEE,EAAEyC,EAAExC,EAAEkE,EAAEC,KAAK,OAAOrE,EAAE,CAACoK,KAAK,CAAC1B,SAAS3I,EAAE4I,MAAM1I,GAAGoK,QAAQnK,EAAEoK,SAASnJ,EAAEoJ,aAAa7H,EAAE8H,YAAYnG,GAAGC,EAAEF,EAAE,IAAIxD,SAAQ,SAAUO,EAAEpB,GAAG,MAAME,EAAE,IAAIwK,eAAexK,EAAEyK,MAAMC,UAAU,SAASjI,GAAGA,EAAEkI,KAAKzC,MAAMpI,EAAE,IAAI2E,MAAMhC,EAAEkI,KAAKzC,QAAQhH,EAAEuB,EAAEkI,MAAM3K,EAAEyK,MAAMG,OAAQ,EAAEvG,EAAEwG,YAAY9K,EAAE,CAACC,EAAE8K,OAAS,IAAG,IAAI/K,EAAEsE,CAAC,EAAiC0G,CAAE7J,EAAEpB,EAAEE,EAAEyC,EAAE2B,EAAEnE,EAAEkE,GAAhlB2F,OAAM5I,EAAEpB,EAAEE,KAAK,MAAMyC,EAAE,IAAIuI,gBAAgB,IAAI/K,EAAE,OAAOH,EAAEmL,OAAOxI,EAAEwI,OAAOtK,QAAQuK,KAAK,CAACtJ,EAAEV,EAAEpB,GAAG,IAAIa,SAAQ,CAAEO,EAAEpB,KAAKG,EAAE8D,YAAW,KAAMtB,EAAE0I,QAAQrL,EAAE,IAAI2E,MAAM,kCAAoC,GAAEzE,EAAI,MAAKoL,SAAQ,KAAMhE,aAAanH,EAAI,GAAC,EAAuWoL,CAAEnK,EAAEuB,EAAE2B,GAAG0F,eAAewB,EAAExL,EAAEE,GAAG,IAAIuL,QAAQ9I,EAAE2H,QAAQnK,EAAEwI,SAAStE,EAAEuE,MAAMtE,EAAEoH,YAAYnH,EAAEkG,YAAYnF,GAAGtF,EAAE0F,EAAEtE,EAAEpB,EAAE,CAAC,UAAU,UAAU,WAAW,QAAQ,cAAc,gBAAgB,MAAMyG,EAAEnB,EAAEhD,EAAEoD,GAAGiB,KAAKC,UAAUlB,GAAG,aAAasE,eAAehK,EAAEE,EAAEyC,EAAExC,EAAEkE,EAAEC,EAAErE,GAAG,IAAIsE,EAAEe,EAAE,KAAK,IAAI,IAAIlE,EAAE,EAAEA,EAAE,EAAEA,IAAI,IAAImD,QAAQ6F,EAAEpK,EAAE2C,EAAExC,EAAEkE,EAAEC,EAAErE,EAAEC,GAAGoF,EAAE,KAAK,KAAmB,CAAb,MAAMlE,GAAGkE,EAAElE,CAAE,CAAC,GAAGkE,EAAE,MAAMA,EAAE,MAAMI,EAAEnB,EAAE4F,MAAM/B,MAAM3B,EAAE4B,kBAAkB3I,GAAGgG,EAAE7D,EAAET,EAAEsE,EAAE,CAAC,QAAQ,uBAAuBwE,GAAGrB,GAAGtE,EAAE,IAAIsE,EAAE,CAAC,MAAMzH,EAAE1B,GAAG,+BAA+BM,IAAI,GAAG,iBAAiByG,EAAE,MAAM,IAAIC,EAAED,EAAErF,EAAES,EAAE6G,WAAW,GAAG,0BAA0BjC,EAAE,MAAM,IAAI9E,EAAEgB,EAAExC,GAAG,MAAM,IAAIf,EAAEqH,GAAG,gBAAgBrF,EAAE,CAAC,OAAOS,CAAC,CAAnamI,CAAqa,GAAGrH,gBAAgBxC,EAAEkE,GAAG,UAAUC,EAAE,CAACqH,OAAO,OAAOjK,KAAK+E,EAAEmF,QAAQ,CAAC,eAAetG,EAAE,oCAAoC,mBAAmB,eAAe6D,KAAKxC,KAAKC,UAAUrC,GAAGtE,MAAMC,EAAEoF,EAAE,CAAC,MAAMuG,EAAE,IAAIzK,KAAK,OAAQpB,EAAEoB,EAAEsG,OAAOoE,SAAShC,KAAK,KAAKiC,OAAOpC,MAAM,OAAOlK,MAAMsJ,KAAK,IAAInD,IAAI5F,KAAK8J,KAAK,KAAK,IAAI9J,CAAC,EAAG,MAAMgM,EAAE9D,YAAY9G,EAAEpB,EAAE,iBAAiBE,GAAGK,KAAK0L,OAAOjM,EAAEO,KAAK2L,OAAOhM,EAAEK,KAAK6I,SAAShI,EAAEgI,SAAS7I,KAAKqI,MAAMxH,EAAEwH,MAAMrI,KAAKoI,SAASvH,EAAEuH,QAAS,CAACwD,QAAQ,MAAO,CAAC5L,KAAK0L,OAAO1L,KAAK6I,SAAS7I,KAAKoI,SAASpI,KAAKqI,MAAMrI,KAAK2L,QAAQxE,OAAOoE,SAAShC,KAAK,KAAK,CAACxB,eAAelH,GAAG,MAAMpB,EAAEE,EAAEyC,EAAExC,GAAGiB,EAAEuI,MAAM,MAAM,OAAO,IAAIqC,EAAE,CAAC5C,SAASlJ,EAAE0I,MAAMzI,EAAEwI,SAAShG,GAAG3C,EAAE,CAACsI,sBAAsBlH,GAAG,MAAMwH,MAAM5I,EAAE2I,SAASzI,EAAEsJ,UAAU7G,GAAGvB,EAAE,OAAO,IAAI4K,EAAE,CAACpD,MAAM5I,EAAE2I,SAASzI,EAAEkJ,SAASzG,GAAG,EAAE,MAAMyJ,EAAEzI,IAAIvC,EAAEpB,GAAG8E,aAAaE,QAAQ5D,EAAEuF,KAAKC,UAAU5G,GAAI,CAAC0D,IAAItC,GAAG,MAAMpB,EAAEiD,OAAO6B,aAAaF,QAAQxD,GAAG,GAAGpB,EAAE,IAAI,OAAO2G,KAAKM,MAAMjH,EAAkB,CAAf,MAAMoB,GAAG,MAAM,CAAC,CAACiL,OAAOjL,GAAG0D,aAAaC,WAAW3D,EAAG,CAACkL,UAAU,OAAOhN,OAAOgK,KAAKrG,OAAO6B,cAAc4C,QAAQtG,GAAGA,EAAEmL,WAAW,mBAAmB,EAAE,MAAM5L,EAAEuH,cAAc3H,KAAKiM,cAAc,WAAW,IAAIpL,EAAE,CAAC,EAAE,MAAO,CAACuC,IAAI3D,EAAEE,GAAGkB,EAAEpB,GAAGE,CAAE,EAAEwD,IAAI1D,GAAG,MAAME,EAAEkB,EAAEpB,GAAG,GAAGE,EAAE,OAAOA,CAAC,EAAEmM,OAAOrM,UAAUoB,EAAEpB,EAAG,EAAEsM,QAAQ,IAAIhN,OAAOgK,KAAKlI,GAAG,CAApI,EAAwI,EAAE,MAAMqL,EAAEvE,YAAY9G,EAAEpB,EAAEE,GAAGK,KAAKmM,MAAMtL,EAAEb,KAAKoM,YAAY3M,EAAEO,KAAKqM,YAAY1M,GAAGqE,CAAE,CAACyF,iBAAiB5I,EAAEpB,EAAEE,GAAG,IAAIyC,EAAE,MAAMxC,EAAEI,KAAKsM,mBAAmBzL,SAASb,KAAKmM,MAAM/I,IAAIxD,EAAE,CAAC2M,SAAS9M,EAAE+M,aAAa7M,UAAU,QAAQyC,EAAEpC,KAAKoM,mBAAc,IAAShK,OAAE,EAAOA,EAAEuE,IAAI/G,GAAI,CAAC6J,iBAAiB5I,GAAG,MAAMpB,QAAQO,KAAKmM,MAAMhJ,IAAInD,KAAKsM,mBAAmBzL,EAAEgI,WAAW,IAAIpJ,GAAGoB,EAAEwH,OAAOxH,EAAEuH,SAAS,CAAC,MAAM3I,QAAQO,KAAKmD,IAAItC,GAAG,IAAIpB,EAAE,OAAO,IAAIA,EAAE8M,WAAW9M,EAAE+M,aAAa,OAAO,MAAO,CAACD,SAAS9M,EAAE8M,SAASC,aAAa/M,EAAE+M,aAAa,CAAC,GAAG/M,EAAE,MAAO,CAAC8M,SAAS9M,EAAE8M,SAASC,aAAa/M,EAAE+M,aAAa,CAAC/C,UAAU5I,EAAEpB,EAAE,GAAG,IAAIE,EAAE,IAAIyC,QAAQpC,KAAKmM,MAAMhJ,IAAItC,EAAE+K,SAAS,IAAIxJ,EAAE,CAAC,MAAM3C,QAAQO,KAAKyM,eAAe,IAAIhN,EAAE,OAAO,MAAME,EAAEK,KAAK0M,sBAAsB7L,EAAEpB,GAAGE,IAAIyC,QAAQpC,KAAKmM,MAAMhJ,IAAIxD,GAAI,CAAC,IAAIyC,EAAE,OAAO,MAAMxC,QAAQI,KAAKqM,cAAcvI,EAAEkB,KAAKC,MAAMrF,EAAE,KAAK,OAAOwC,EAAEuK,UAAUlN,EAAEqE,EAAE1B,EAAEjB,KAAKyL,eAAexK,EAAEjB,KAAK,CAACyL,cAAcxK,EAAEjB,KAAKyL,qBAAqB5M,KAAKmM,MAAM/I,IAAIvC,EAAE+K,QAAQxJ,GAAGA,EAAEjB,aAAanB,KAAKmM,MAAML,OAAOjL,EAAE+K,oBAAoB,QAAQjM,EAAEK,KAAKoM,mBAAc,IAASzM,OAAE,EAAOA,EAAEmM,OAAOjL,EAAE+K,WAAWxJ,EAAEjB,IAAI,CAACsI,UAAU5I,GAAG,IAAIpB,EAAE,MAAME,EAAE,IAAI8L,EAAE,CAAC5C,SAAShI,EAAEoI,UAAUZ,MAAMxH,EAAEwH,MAAMD,SAASvH,EAAEuH,WAAWhG,QAAQpC,KAAK6M,eAAehM,SAASb,KAAKmM,MAAM/I,IAAIzD,EAAEiM,QAAQxJ,SAAS,QAAQ3C,EAAEO,KAAKoM,mBAAc,IAAS3M,OAAE,EAAOA,EAAEkH,IAAIhH,EAAEiM,SAAU,CAACnC,YAAY5I,GAAG,IAAIpB,EAAE,MAAME,QAAQK,KAAKyM,eAAe9M,UAAUA,EAAEwH,QAAQ1H,IAAIoB,GAAGpB,EAAE8H,SAAS1G,KAAKmI,QAAO,MAAOnI,EAAEpB,WAAWoB,QAAQb,KAAKmM,MAAML,OAAOrM,EAAI,GAAEa,QAAQC,iBAAiB,QAAQd,EAAEO,KAAKoM,mBAAc,IAAS3M,OAAE,EAAOA,EAAE6E,SAAU,CAACmF,qBAAqB5I,GAAG,MAAMpB,QAAQO,KAAKqM,cAAc,MAAO,CAAClL,KAAKN,EAAE8L,UAAU3H,KAAKC,MAAMxF,EAAE,KAAKoB,EAAEiM,WAAW,CAACrD,qBAAqB,IAAI5I,EAAE,OAAOb,KAAKoM,YAAY,QAAQvL,QAAQb,KAAKoM,YAAYjJ,aAAQ,IAAStC,OAAE,EAAOA,EAAEkI,KAAK/I,KAAKmM,MAAMJ,QAAQ/L,KAAKmM,MAAMJ,eAAU,CAAM,CAACO,mBAAmBzL,GAAG,OAAO,IAAI4K,EAAE,CAAC5C,SAAShI,GAAG,iBAAiB,YAAY+K,OAAO,CAACc,sBAAsB7L,EAAEpB,GAAG,OAAOA,EAAE0H,QAAQ1H,IAAI,IAAIE,EAAE,MAAMyC,EAAEqJ,EAAEsB,QAAQtN,GAAGG,EAAE,IAAIyF,IAAIjD,EAAEiG,OAAOjG,EAAEiG,MAAMe,MAAM,MAAMtF,GAAG,QAAQnE,EAAEkB,EAAEwH,aAAQ,IAAS1I,OAAE,EAAOA,EAAEyJ,MAAM,OAAO,GAAGrF,EAAE3B,EAAEiG,OAAOvE,EAAEkF,QAAO,CAAEnI,EAAEpB,IAAIoB,GAAGjB,EAAE2D,IAAI9D,KAAI,GAAI,MAAO,mBAAmB2C,EAAEsJ,QAAQtJ,EAAEyG,WAAWhI,EAAEgI,UAAUzG,EAAEgG,WAAWvH,EAAEuH,UAAUrE,CAAE,IAAG,EAAE,EAAE,MAAMiJ,EAAErF,YAAY9G,EAAEpB,EAAEE,GAAGK,KAAKiN,QAAQpM,EAAEb,KAAK6I,SAASpJ,EAAEO,KAAKkN,aAAavN,EAAEK,KAAKmN,WAAW,gBAAgBnN,KAAK6I,UAAW,CAACuE,OAAOvM,GAAGb,KAAKiN,QAAQI,KAAKrN,KAAKmN,WAAWtM,EAAE,CAACyM,gBAAgB,EAAEJ,aAAalN,KAAKkN,cAAe,CAAC/J,MAAM,OAAOnD,KAAKiN,QAAQ9J,IAAInD,KAAKmN,WAAW,CAACrB,SAAS9L,KAAKiN,QAAQnB,OAAO9L,KAAKmN,WAAW,CAACD,aAAalN,KAAKkN,cAAe,EAAE,MAAMK,EAAE1M,GAAG,iBAAiBA,EAAE2M,EAAE,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,QAAQ,YAAY,UAAU,SAAS,MAAM,MAAM,UAAU,MAAM,eAAe,WAAW,aAAa,eAAe,iBAAiB,OAAO,OAAO,MAAM,SAAS,MAAM,MAAM,MAAM,MAAM,MAAM,OAAuwH,IAAIC,EAAErL,GAAE,SAAUvB,EAAElB,GAAG,IAAIyC,EAAE3C,GAAGA,EAAEF,UAAU,WAAW,OAAO6C,EAAErD,OAAOS,QAAQ,SAASqB,GAAG,IAAI,IAAIpB,EAAEE,EAAE,EAAEyC,EAAEvC,UAAUC,OAAOH,EAAEyC,EAAEzC,IAAI,IAAI,IAAIC,KAAKH,EAAEI,UAAUF,GAAGZ,OAAOK,UAAUC,eAAeC,KAAKG,EAAEG,KAAKiB,EAAEjB,GAAGH,EAAEG,IAAI,OAAOiB,CAAC,EAAEuB,EAAErC,MAAMC,KAAKH,UAAU,EAAE,SAASD,EAAEiB,EAAEpB,GAAG,IAAIA,EAAE,MAAO,GAAG,IAAIE,EAAE,KAAKkB,EAAE,OAAO,IAAKpB,EAAEE,EAAEA,EAAE,IAAIF,CAAC,CAAC,SAASqE,EAAEjD,EAAEpB,EAAEE,GAAG,OAAO+N,mBAAmB7M,GAAG2I,QAAQ,2BAA2BN,oBAAoBM,QAAQ,MAAM,OAAOA,QAAQ,MAAM,OAAO,IAAIkE,mBAAmBjO,GAAG+J,QAAQ,4DAA4DN,oBAAoB,SAASrI,GAAG,GAAG,iBAAiBA,EAAE8M,QAAQ,CAAC,IAAIlO,EAAE,IAAI+F,KAAK/F,EAAEmO,gBAAgBnO,EAAEoO,kBAAkB,MAAMhN,EAAE8M,SAAS9M,EAAE8M,QAAQlO,CAAE,CAAC,OAAOG,EAAE,UAAUiB,EAAE8M,QAAQ9M,EAAE8M,QAAQG,cAAc,IAAIlO,EAAE,SAASiB,EAAEkN,QAAQnO,EAAE,OAAOiB,EAAEmN,MAAMpO,EAAE,SAASiB,EAAEoN,QAAQrO,EAAE,WAAWiB,EAAEqN,SAAS,CAA1Q,CAA4QvO,EAAE,CAAC,SAASoE,EAAElD,GAAG,IAAI,IAAIpB,EAAE,CAAC,EAAEE,EAAEkB,EAAEA,EAAEuI,MAAM,MAAM,GAAGhH,EAAE,mBAAmBxC,EAAE,EAAEA,EAAED,EAAEG,OAAOF,IAAI,CAAC,IAAIkE,EAAEnE,EAAEC,GAAGwJ,MAAM,KAAKrF,EAAED,EAAEuD,MAAM,GAAGkC,KAAK,KAAK,MAAMxF,EAAEoK,OAAO,KAAKpK,EAAEA,EAAEsD,MAAM,GAAG,IAAI,IAAI5H,EAAEqE,EAAE,GAAG0F,QAAQpH,EAAE8G,qBAAqBnF,EAAEyF,QAAQpH,EAAE8G,mBAA8B,CAAT,MAAMrI,GAAG,CAAC,CAAC,OAAOpB,CAAC,CAAC,SAASC,IAAI,OAAOqE,EAAEqK,SAASC,OAAO,CAAC,SAASrK,EAAEnD,EAAEpB,EAAEE,GAAGyO,SAASC,OAAOvK,EAAEjD,EAAEpB,EAAE2C,EAAE,CAAC4L,KAAK,KAAKrO,GAAI,CAACA,EAAEiD,YAAW,EAAGjD,EAAE2O,OAAOxK,EAAEnE,EAAE+G,MAAM3C,EAAEpE,EAAE4O,OAAO7O,EAAEC,EAAEwD,IAAI,SAAStC,GAAG,OAAOnB,IAAImB,EAAE,EAAElB,EAAEyD,IAAIY,EAAErE,EAAEmM,OAAO,SAASjL,EAAEpB,GAAGuE,EAAEnD,EAAE,GAAGuB,EAAEA,EAAE,CAAC,EAAE3C,GAAG,CAACkO,SAAS,IAAK,CAAG,IAAGhO,EAAE8N,GAAGA,EAAEa,OAAOb,EAAE/G,MAAM+G,EAAEc,OAAO,IAAIC,EAAEf,EAAEtK,IAAIsL,EAAEhB,EAAErK,IAAIsL,EAAEjB,EAAE3B,OAAO,MAAM6C,EAAE,CAACxL,IAAItC,GAAG,MAAMpB,EAAE+O,EAAE3N,GAAG,QAAG,IAASpB,EAAE,OAAO2G,KAAKM,MAAMjH,EAAE,EAAE4N,KAAKxM,EAAEpB,EAAEE,GAAG,IAAIyC,EAAE,CAAC,EAAE,WAAWM,OAAOkM,SAASC,WAAWzM,EAAE,CAAC6L,QAAO,EAAGC,SAAS,UAAU,MAAMvO,OAAE,EAAOA,EAAE2N,mBAAmBlL,EAAEuL,QAAQhO,EAAE2N,kBAAkB,MAAM3N,OAAE,EAAOA,EAAEuN,gBAAgB9K,EAAE2L,OAAOpO,EAAEuN,cAAcuB,EAAE5N,EAAEuF,KAAKC,UAAU5G,GAAG2C,EAAG,EAAE0J,OAAOjL,EAAEpB,GAAG,IAAIE,EAAE,CAAC,GAAG,MAAMF,OAAE,EAAOA,EAAEyN,gBAAgBvN,EAAEoO,OAAOtO,EAAEyN,cAAcwB,EAAE7N,EAAElB,EAAG,GAAGmP,EAAE,CAAC3L,IAAItC,GAAW8N,EAAExL,IAAItC,IAAa8N,EAAExL,IAAI,WAAWtC,KAAMwM,KAAKxM,EAAEpB,EAAEE,GAAG,IAAIyC,EAAE,CAAC,EAAE,WAAWM,OAAOkM,SAASC,WAAWzM,EAAE,CAAC6L,QAAO,KAAM,MAAMtO,OAAE,EAAOA,EAAE2N,mBAAmBlL,EAAEuL,QAAQhO,EAAE2N,kBAAkB,MAAM3N,OAAE,EAAOA,EAAEuN,gBAAgB9K,EAAE2L,OAAOpO,EAAEuN,cAAcuB,EAAE,WAAW5N,IAAIuF,KAAKC,UAAU5G,GAAG2C,GAAGuM,EAAEtB,KAAKxM,EAAEpB,EAAEE,EAAG,EAAEmM,OAAOjL,EAAEpB,GAAG,IAAIE,EAAE,CAAC,GAAG,MAAMF,OAAE,EAAOA,EAAEyN,gBAAgBvN,EAAEoO,OAAOtO,EAAEyN,cAAcwB,EAAE7N,EAAElB,GAAGgP,EAAE7C,OAAOjL,EAAEpB,GAAGkP,EAAE7C,OAAO,WAAWjL,IAAIpB,EAAG,GAAGsP,EAAE,CAAC5L,IAAItC,GAAG,GAAG,oBAAoBmO,eAAe,OAAO,MAAMvP,EAAEuP,eAAe3K,QAAQxD,GAAG,OAAO,MAAMpB,EAAE2G,KAAKM,MAAMjH,QAAG,CAAM,EAAE4N,KAAKxM,EAAEpB,GAAGuP,eAAevK,QAAQ5D,EAAEuF,KAAKC,UAAU5G,GAAI,EAAEqM,OAAOjL,GAAGmO,eAAexK,WAAW3D,EAAG,GAAmZ,IAAUoO,EAAEC,GAAK,29FAA69F,MAAO,EAAG,SAASrO,GAAG,OAAOoO,EAAEA,GAA75G,SAAWpO,EAAEpB,EAAEE,GAAG,IAAIyC,OAAE,IAAS3C,EAAE,KAAKA,EAAEG,EAAE,SAASiB,EAAEpB,GAAG,IAAIE,EAAEwJ,KAAKtI,GAAG,GAAGpB,EAAE,CAAC,IAAI,IAAI2C,EAAE,IAAIsG,WAAW/I,EAAEG,QAAQF,EAAE,EAAEkE,EAAEnE,EAAEG,OAAOF,EAAEkE,IAAIlE,EAAEwC,EAAExC,GAAGD,EAAE2J,WAAW1J,GAAG,OAAOuP,OAAOC,aAAarP,MAAM,KAAK,IAAIsP,YAAYjN,EAAEkN,QAAQ,CAAC,OAAO3P,CAAC,CAA1L,CAA4LkB,OAAE,IAASlB,GAAGA,GAAGmE,EAAElE,EAAEyC,QAAQ,KAAK,IAAI,EAAE0B,EAAEnE,EAAE2P,UAAUzL,IAAI1B,EAAE,wBAAwBA,EAAE,IAAI1C,EAAE,IAAI8P,KAAK,CAACzL,GAAG,CAAC0L,KAAK,2BAA2B,OAAOC,IAAIC,gBAAgBjQ,EAAE,CAAihGkQ,CAA//F,29FAA69F,KAAO,OAAoC,IAAIC,OAAOZ,EAAEpO,EAAE,GAAG,MAAMiP,EAAE,CAAC,EAAE,MAAMC,EAAEpI,YAAY9G,EAAEpB,GAAGO,KAAKmM,MAAMtL,EAAEb,KAAK6I,SAASpJ,EAAEO,KAAKgQ,YAAYhQ,KAAKiQ,sBAAsBjQ,KAAK6I,SAAU,CAACY,UAAU5I,GAAG,IAAIpB,EAAE,MAAME,EAAE,IAAI0F,KAAK,QAAQ5F,QAAQO,KAAKmM,MAAMhJ,IAAInD,KAAKgQ,oBAAe,IAASvQ,OAAE,EAAOA,EAAEsJ,OAAO,IAAIpJ,EAAEgH,IAAI9F,SAASb,KAAKmM,MAAM/I,IAAIpD,KAAKgQ,YAAY,CAACjH,KAAK,IAAIpJ,IAAK,CAAC8J,aAAa5I,GAAG,MAAMpB,QAAQO,KAAKmM,MAAMhJ,IAAInD,KAAKgQ,aAAa,GAAGvQ,EAAE,CAAC,MAAME,EAAE,IAAI0F,IAAI5F,EAAEsJ,MAAM,OAAOpJ,EAAEgE,OAAO9C,GAAGlB,EAAEuQ,KAAK,QAAQlQ,KAAKmM,MAAM/I,IAAIpD,KAAKgQ,YAAY,CAACjH,KAAK,IAAIpJ,WAAWK,KAAKmM,MAAML,OAAO9L,KAAKgQ,YAAY,CAAC,CAAC7M,MAAM,OAAOnD,KAAKmM,MAAMhJ,IAAInD,KAAKgQ,YAAY,CAAC1L,QAAQ,OAAOtE,KAAKmM,MAAML,OAAO9L,KAAKgQ,YAAY,CAACC,sBAAsBpP,GAAG,MAAO,mBAAmBA,GAAG,EAAE,MAAMsP,EAAE,CAACC,OAAO,KAAI,IAAKhQ,GAAG6L,cAAcoE,aAAa,IAAI,IAAIxE,GAAGyE,EAAEzP,GAAGsP,EAAEtP,GAAG0P,GAAE9Q,IAAI,MAAM+Q,QAAQ7Q,EAAE8Q,WAAWrO,GAAG3C,EAAEG,EAAEiB,EAAEpB,EAAE,CAAC,UAAU,eAAe,OAAOV,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEI,GAAG,CAAC4Q,SAAQ,IAAK7Q,GAAGA,EAAEA,EAAEyC,GAAE,EAAGsO,GAAG,IAAI5M,EAAE,MAAM6M,GAAGhJ,YAAY9G,GAAG,IAAIpB,EAAEE,EAAE,GAAGK,KAAK4Q,WAAU,IAAKxQ,GAAG6L,cAAcjM,KAAK6Q,eAAe,CAACC,oBAAoB,CAACzI,MAAM,wBAAwB0I,0BAAyB,EAAG7G,aAAY,GAAIlK,KAAKgR,uBAAuBvH,gBAAgBiH,GAAG7K,YAAY,+BAA+BnD,OAAOmE,oBAAoB,WAAW7G,KAAKgR,uBAAuB,EAAGhR,KAAKiR,QAAQlS,OAAOS,OAAOT,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEQ,KAAK6Q,gBAAgBhQ,GAAG,CAACiQ,oBAAoB/R,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEQ,KAAK6Q,eAAeC,qBAAqBjQ,EAAEiQ,uBAAuB,oBAAoBpO,QAAQ,MAAM,IAAI4F,IAAI,MAAM,IAAIlE,MAAM,4EAA4E,QAAG,IAASkE,IAAI4I,OAAO,MAAM,IAAI9M,MAAM,iMAAkM,EAAnV,GAAuVvD,EAAEsL,OAAOtL,EAAEsQ,eAAeC,QAAQC,KAAK,8IAA8IxQ,EAAEsL,MAAMxM,EAAEkB,EAAEsL,UAAW,CAAC,GAAG1M,EAAEoB,EAAEsQ,eAAe,UAAUb,EAAE7Q,GAAG,MAAM,IAAI2E,MAAM,2BAA2B3E,MAAME,EAAE2Q,EAAE7Q,EAAF6Q,EAAO,CAACtQ,KAAKsR,cAAczQ,EAAE0Q,qBAAqB,IAAI1Q,EAAE0Q,qBAAqB,IAAIvR,KAAKwR,eAAc,IAAK3Q,EAAE4Q,qBAAqB9C,EAAEG,EAAE9O,KAAK0R,kBAAkB,SAAS1R,KAAKiR,QAAQpI,6BAA6B7I,KAAK2R,0BAA0B,CAAC9Q,GAAG,SAA+Bb,KAAKiR,QAAQpI,4BAAhD,GAA0D7I,KAAK4R,uBAAuB/Q,EAAE+Q,wBAAwB,EAAE,MAAMxP,EAAEvB,EAAEgR,0BAA0B7R,KAAKwR,cAAczC,EAAE,IAAInP,EAAEI,KAAKqI,MAAMiD,EAAE,SAAStL,KAAKiR,QAAQH,oBAAoBzI,MAAMrI,KAAKiR,QAAQa,iBAAiB,iBAAiB,IAAI9R,KAAK+R,mBAAmB,IAAI/E,EAAE5K,EAAEpC,KAAKiR,QAAQpI,SAAS7I,KAAKiR,QAAQ/D,cAAclN,KAAKqM,YAAYrM,KAAKiR,QAAQ5E,aAAarI,EAAEhE,KAAKgS,aAAa,IAAI9F,EAAEvM,EAAEA,EAAEoM,aAAQ,EAAO,IAAIgE,EAAEpQ,EAAEK,KAAKiR,QAAQpI,UAAU7I,KAAKqM,aAAarM,KAAKiS,WAAWrS,EAAEI,KAAKiR,QAAQlD,OAAO,eAAemE,KAAKtS,GAAGA,EAAE,WAAWA,KAAKI,KAAKmS,YAAY,EAAEtR,EAAEpB,IAAIoB,EAAEA,EAAEmL,WAAW,YAAYnL,EAAE,WAAWA,KAAK,GAAGpB,KAAxD,CAA8DO,KAAKiR,QAAQmB,OAAOpS,KAAKiS,WAAW,oBAAoBvP,QAAQA,OAAOmN,QAAQ7P,KAAKiR,QAAQa,kBAAkB,WAAWrS,IAAIO,KAAKiR,QAAQoB,UAAUrS,KAAKsS,OAAO,IAAIzC,OAAO7P,KAAKiR,QAAQoB,WAAWrS,KAAKsS,OAAO,IAAIpD,EAAG,CAACqD,KAAK1R,GAAG,MAAMpB,EAAEiO,mBAAmB9E,KAAKxC,KAAKC,UAAUrG,KAAKiR,QAAQ9F,aAAazL,KAAK,MAAO,GAAGM,KAAKiS,YAAYpR,iBAAiBpB,GAAG,CAAC+S,cAAc3R,GAAG,OAAOb,KAAKuS,KAAK,cAAcxQ,EAAElB,KAAK,CAAC4I,qBAAqB5I,EAAEpB,EAAEE,GAAG,MAAMyC,QAAQpC,KAAKqM,cAAc,MAAtgaxL,KAAI,IAAIA,EAAE0L,SAAS,MAAM,IAAInI,MAAM,oCAAoC,MAAM3E,EAAE,CAACoB,IAAI,MAAMpB,EAAEoB,EAAEuI,MAAM,MAAMzJ,EAAEyC,EAAExC,GAAGH,EAAE,GAAG,IAAIA,EAAEK,SAASH,IAAIyC,IAAIxC,EAAE,MAAM,IAAIwE,MAAM,iCAAiC,MAAMN,EAAEsC,KAAKM,MAAM5H,EAAEsD,IAAI2B,EAAE,CAAC0O,MAAM5R,GAAGnB,EAAE,CAAC,EAAE,OAAOX,OAAOgK,KAAKjF,GAAGwD,SAASzG,IAAIkD,EAAElD,GAAGiD,EAAEjD,GAAG2M,EAAEjG,SAAS1G,KAAKnB,EAAEmB,GAAGiD,EAAEjD,GAAK,IAAG,CAAC6R,QAAQ,CAACC,OAAOhT,EAAEiT,QAAQxQ,EAAEyQ,UAAUjT,GAAG+S,OAAOvM,KAAKM,MAAM5H,EAAEa,IAAImT,OAAO/O,EAAEgP,KAAKrT,EAAG,EAA1T,CAA4TmB,EAAE0L,UAAU,IAAI9M,EAAEqT,OAAOE,IAAI,MAAM,IAAI5O,MAAM,+DAA+D,GAAG3E,EAAEqT,OAAOE,MAAMnS,EAAEmS,IAAI,MAAM,IAAI5O,MAAM,0DAA0DvD,EAAEmS,gBAAgBvT,EAAEqT,OAAOE,QAAQ,IAAIvT,EAAEsT,KAAKE,IAAI,MAAM,IAAI7O,MAAM,gEAAgE,GAAG,UAAU3E,EAAEkT,OAAOO,IAAI,MAAM,IAAI9O,MAAM,2BAA2B3E,EAAEkT,OAAOO,2EAA2E,IAAIzT,EAAEqT,OAAOK,KAAK,iBAAiB1T,EAAEqT,OAAOK,MAAMjU,MAAMkU,QAAQ3T,EAAEqT,OAAOK,KAAK,MAAM,IAAI/O,MAAM,qFAAqF,GAAGlF,MAAMkU,QAAQ3T,EAAEqT,OAAOK,KAAK,CAAC,IAAI1T,EAAEqT,OAAOK,IAAI5L,SAAS1G,EAAEsS,KAAK,MAAM,IAAI/O,MAAM,4DAA4DvD,EAAEsS,4BAA4B1T,EAAEqT,OAAOK,IAAI5J,KAAK,UAAU,GAAG9J,EAAEqT,OAAOK,IAAIrT,OAAO,EAAE,CAAC,IAAIL,EAAEqT,OAAOO,IAAI,MAAM,IAAIjP,MAAM,uHAAuH,GAAG3E,EAAEqT,OAAOO,MAAMxS,EAAEsS,IAAI,MAAM,IAAI/O,MAAM,oEAAoEvD,EAAEsS,gBAAgB1T,EAAEqT,OAAOO,OAAO,CAAC,MAAM,GAAG5T,EAAEqT,OAAOK,MAAMtS,EAAEsS,IAAI,MAAM,IAAI/O,MAAM,4DAA4DvD,EAAEsS,mBAAmB1T,EAAEqT,OAAOK,QAAQ,GAAGtS,EAAEyS,MAAM,CAAC,IAAI7T,EAAEqT,OAAOQ,MAAM,MAAM,IAAIlP,MAAM,gEAAgE,GAAG3E,EAAEqT,OAAOQ,QAAQzS,EAAEyS,MAAM,MAAM,IAAIlP,MAAM,2DAA2DvD,EAAEyS,kBAAkB7T,EAAEqT,OAAOQ,SAAS,CAAC,GAAGzS,EAAE0S,UAAUhG,EAAE9N,EAAEqT,OAAOU,WAAW,MAAM,IAAIpP,MAAM,sHAAsH,GAAG,MAAM3E,EAAEqT,OAAOW,MAAMlG,EAAE9N,EAAEqT,OAAOW,KAAK,MAAM,IAAIrP,MAAM,wEAAwE,IAAImJ,EAAE9N,EAAEqT,OAAOxM,KAAK,MAAM,IAAIlC,MAAM,kEAAkE,MAAMzE,EAAEkB,EAAE6S,QAAQ,GAAGtR,EAAE,IAAIoD,KAAK3E,EAAE4E,KAAKD,KAAKC,OAAO7F,EAAE,IAAI4F,KAAK,GAAG,GAAG5F,EAAE+T,cAAclU,EAAEqT,OAAOW,IAAI9T,GAAGyC,EAAExC,EAAE,MAAM,IAAIwE,MAAM,oEAAoEhC,gCAAgCxC,MAAM,GAAG,MAAMH,EAAEqT,OAAOc,KAAKrG,EAAE9N,EAAEqT,OAAOc,KAAK,CAAC,MAAM/S,EAAE,IAAI2E,KAAK,GAAG,GAAG3E,EAAE8S,cAAclU,EAAEqT,OAAOc,IAAIjU,GAAGyC,EAAEvB,EAAE,MAAM,IAAIuD,MAAM,+GAA+GhC,gBAAgBvB,IAAI,CAAC,GAAG,MAAMpB,EAAEqT,OAAOU,WAAWjG,EAAE9N,EAAEqT,OAAOU,WAAW,CAAC,MAAM5T,EAAE,IAAI4F,KAAK,GAAG,GAAG5F,EAAE+T,cAAcE,SAASpU,EAAEqT,OAAOU,WAAW3S,EAAE0S,QAAQ5T,GAAGyC,EAAExC,EAAE,MAAM,IAAIwE,MAAM,uJAAuJhC,4BAA4BxC,IAAI,CAAC,GAAGiB,EAAEiT,aAAa,CAAC,MAAMnU,EAAEkB,EAAEiT,aAAatI,OAAO,GAAG7L,EAAEqM,WAAW,QAAQ,CAAC,MAAMnL,EAAElB,EAAE,IAAIF,EAAEqT,OAAOiB,OAAO,MAAM,IAAI3P,MAAM,2EAA2E,GAAGvD,IAAIpB,EAAEqT,OAAOiB,OAAO,MAAM,IAAI3P,MAAM,sEAAsEvD,cAAcpB,EAAEqT,OAAOiB,UAAU,KAAM,CAAC,MAAMlT,EAAElB,EAAEqU,cAAc,IAAIvU,EAAEqT,OAAOmB,SAAS,MAAM,IAAI7P,MAAM,+EAA+E,GAAGvD,IAAIpB,EAAEqT,OAAOmB,SAAS,MAAM,IAAI7P,MAAM,0EAA0EvD,cAAcpB,EAAEqT,OAAOmB,YAAY,CAAC,CAAC,OAAOxU,GAAkxSyU,CAAE,CAAClB,IAAIhT,KAAKmS,YAAYgB,IAAInT,KAAKiR,QAAQpI,SAAS0D,SAAS1L,EAAEyS,MAAM7T,EAAEqU,aAAanU,EAAE+T,OAAO1T,KAAKiR,QAAQyC,OAAOH,SAAS3T,EAAEI,KAAKiR,QAAQH,oBAAoByC,QAAQ,iBAAiB3T,EAAEA,EAAEiU,SAASjU,EAAE,UAAK,GAAQ6F,IAAIrD,IAAI,IAAIxC,CAAE,CAACuU,gBAAgBtT,GAAGA,EAAEb,KAAKwR,cAAcnE,KAAKrN,KAAK0R,kBAAkB7Q,EAAE,CAACyM,gBAAgBtN,KAAK4R,uBAAuB1E,aAAalN,KAAKiR,QAAQ/D,eAAelN,KAAKwR,cAAc1F,OAAO9L,KAAK0R,kBAAkB,CAACxE,aAAalN,KAAKiR,QAAQ/D,cAAe,CAACzD,2BAA2B5I,EAAEpB,EAAEE,GAAG,MAAMyC,EAAEuG,EAAEtH,KAAKzB,EAAE+I,EAAEtH,KAAKyC,EAAEzC,IAAI0C,EAAE,CAAClD,IAAI,MAAMpB,EAAE,IAAIiJ,WAAW7H,GAAG,MAAO,CAACA,IAAI,MAAMpB,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAOoB,EAAE2I,QAAQ,UAAU3I,GAAGpB,EAAEoB,IAAK,EAA3E,CAA6E6B,OAAOkG,KAAKuG,OAAOC,gBAAgBlQ,MAAMsJ,KAAK/I,KAAM,EAAvK,MAA8K,OAACgK,IAAU,MAAMhK,EAAE6I,IAAI4I,OAAOkD,OAAO,CAAC3M,KAAK,YAAW,IAAK4M,aAAa/F,OAAOzN,IAAI,aAAapB,CAAE,EAAlG,CAAoGqE,IAAIpE,EAAE,EAAEmB,EAAEpB,EAAEE,EAAEyC,EAAExC,EAAEkE,EAAEC,EAAErE,IAAIX,OAAOS,OAAOT,OAAOS,OAAOT,OAAOS,OAAO,CAACyJ,UAAUpI,EAAEgI,UAAUhI,EAAEiQ,qBAAqBnR,GAAG,CAAC0I,MAAMiD,EAAE7L,EAAEE,EAAE0I,OAAOiM,cAAc,OAAOC,cAAc7U,GAAG,QAAQsI,MAAM5F,EAAEkR,MAAM1T,EAAE4U,aAAazQ,GAAGlD,EAAEiQ,oBAAoB0D,aAAaC,eAAe3Q,EAAE4Q,sBAAsB,SAA3R,CAAqS1U,KAAKiR,QAAQjR,KAAKqI,MAAMxH,EAAEuB,EAAExC,EAAEmE,EAAElD,EAAE2T,cAAcxU,KAAKiR,QAAQH,oBAAoB0D,cAAc7U,EAAE,MAAMF,OAAE,EAAOA,EAAE8U,eAAevQ,EAAEhE,KAAKwS,cAAc9S,GAAG,MAAO,CAAC4T,MAAM1T,EAAE+U,cAAc7Q,EAAEuE,MAAM3I,EAAE2I,MAAMD,SAAS1I,EAAE0I,UAAU,UAAUoM,aAAa9U,EAAE8U,aAAaxM,MAAM5F,EAAEwS,IAAI5Q,EAAE,CAACyF,qBAAqB5I,EAAEpB,GAAG,IAAIE,EAAE,GAAGkB,EAAEA,GAAG,CAAC,IAAIpB,EAAEA,GAAG,CAAC,GAAGyI,QAAQzI,EAAEyI,MAAM,CAACrH,IAAI,MAAMpB,EAAEiD,OAAOmS,SAASnS,OAAOoS,WAAW,KAAK,EAAEnV,EAAE+C,OAAOqS,SAASrS,OAAOsS,YAAY,KAAK,EAAE,OAAOtS,OAAOuS,KAA8G,GAAvG,wBAAwB,QAAQxV,SAASE,2DAA4D,EAA5N,IAAmOF,EAAEyI,OAAO,MAAM,IAAI9D,MAAM,2EAA2E,MAAMhC,QAAQpC,KAAKkV,qBAAqBrU,EAAEiQ,qBAAqB,CAAC,EAAE,CAACyD,cAAc,eAAe7R,OAAOkM,SAASuG,QAAQ1V,EAAEyI,MAAM0G,SAASwG,KAAKhT,EAAEwS,IAAI,MAAMhV,OAAO,CAACiB,GAAG,IAAIP,SAAQ,CAAEb,EAAEE,KAAK,IAAIyC,EAAE,MAAMxC,EAAEyV,aAAY,KAAMxU,EAAEqH,OAAOrH,EAAEqH,MAAMoN,SAASC,cAAc3V,GAAGmH,aAAajD,GAAGpB,OAAOmE,oBAAoB,UAAUzE,GAAE,GAAIzC,EAAE,IAAIR,EAAE0B,EAAEqH,QAAU,GAAE,KAAKpE,EAAEJ,YAAW,KAAM6R,cAAc3V,GAAGD,EAAE,IAAIuG,EAAErF,EAAEqH,QAAQxF,OAAOmE,oBAAoB,UAAUzE,GAAE,EAAK,GAAE,KAAKvB,EAAE2G,kBAAkB,KAAKpF,EAAE,SAAS2B,GAAG,GAAGA,EAAEuG,MAAM,2BAA2BvG,EAAEuG,KAAKmF,KAAK,CAAC,GAAG1I,aAAajD,GAAGyR,cAAc3V,GAAG8C,OAAOmE,oBAAoB,UAAUzE,GAAE,GAAIvB,EAAEqH,MAAMqC,QAAQxG,EAAEuG,KAAKkL,SAAS3N,MAAM,OAAOlI,EAAEd,EAAE4W,YAAY1R,EAAEuG,KAAKkL,WAAW/V,EAAEsE,EAAEuG,KAAKkL,SAAU,CAAC,EAAE9S,OAAOsE,iBAAiB,UAAU5E,EAAI,IAAvlB,CAA2lBrD,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEC,GAAG,CAAC+H,iBAAiB/H,EAAE+H,kBAAkBxH,KAAKiR,QAAQyE,2BAA2B,MAAM,GAAGtT,EAAE4F,QAAQpI,EAAEoI,MAAM,MAAM,IAAInJ,EAAE,iBAAiB,iBAAiB,MAAMiF,GAAG,QAAQnE,EAAEkB,EAAEiQ,2BAAsB,IAASnR,OAAE,EAAOA,EAAEmU,eAAe9T,KAAKiR,QAAQH,oBAAoBgD,mBAAmB9T,KAAK2V,cAAc,CAACvN,SAAShG,EAAEgG,SAASC,MAAMjG,EAAEiG,MAAMsM,cAAcvS,EAAEuS,cAAciB,WAAW,qBAAqBC,KAAKjW,EAAEiW,KAAKrB,aAAapS,EAAEoS,cAAc,CAACsB,QAAQ1T,EAAEkR,MAAMQ,aAAahQ,GAAI,CAAC2F,gBAAgB,IAAI5I,EAAE,MAAMpB,QAAQO,KAAK+V,uBAAuB,OAAO,QAAQlV,EAAE,MAAMpB,OAAE,EAAOA,EAAE+M,oBAAe,IAAS3L,OAAE,EAAOA,EAAEkS,IAAI,CAACtJ,yBAAyB,IAAI5I,EAAE,MAAMpB,QAAQO,KAAK+V,uBAAuB,OAAO,QAAQlV,EAAE,MAAMpB,OAAE,EAAOA,EAAE+M,oBAAe,IAAS3L,OAAE,EAAOA,EAAEiS,MAAM,CAACrJ,wBAAwBhK,EAAE,CAAC,GAAG,IAAIE,EAAE,MAAMyC,EAAEmO,GAAE9Q,IAAI+Q,QAAQ5Q,EAAEoW,SAASlS,EAAEmE,SAASlE,GAAG3B,EAAE1C,EAAEmB,EAAEuB,EAAE,CAAC,UAAU,WAAW,aAAa4B,GAAG,QAAQrE,EAAED,EAAEoR,2BAAsB,IAASnR,OAAE,EAAOA,EAAEmU,eAAe9T,KAAKiR,QAAQH,oBAAoBgD,aAAajV,QAAQmB,KAAKkV,qBAAqBxV,EAAEoR,qBAAqB,CAAC,IAAI8D,IAAI7P,GAAGlG,EAAEsG,EAAEtE,EAAEhC,EAAE,CAAC,QAAQmB,KAAK+R,mBAAmB3E,OAAOrO,OAAOS,OAAOT,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAE2F,GAAG,CAAC8C,SAASlE,IAAIC,GAAG,CAAC8P,aAAa9P,KAAK,MAAMkC,EAAEpC,EAAE,GAAGiB,KAAKjB,IAAIiB,EAAEnF,QAAQA,EAAEsG,GAAGxD,OAAOkM,SAASpP,OAAO0G,EAAG,CAACuD,6BAA6B5I,EAAE6B,OAAOkM,SAASwG,MAAM,MAAM3V,EAAEoB,EAAEuI,MAAM,KAAK/B,MAAM,GAAG,GAAG,IAAI5H,EAAEK,OAAO,MAAM,IAAIsE,MAAM,oDAAoD,MAAM4D,MAAMrI,EAAEkW,KAAKzT,EAAEyF,MAAMjI,EAAEkI,kBAAkBhE,GAAG,CAACjD,IAAIA,EAAEwB,QAAQ,MAAM,IAAIxB,EAAEA,EAAE0O,UAAU,EAAE1O,EAAEwB,QAAQ,OAAO,MAAM5C,EAAE,IAAIqJ,gBAAgBjI,GAAG,MAAO,CAACmH,MAAMvI,EAAE0D,IAAI,SAAS0S,KAAKpW,EAAE0D,IAAI,cAAS,EAAO0E,MAAMpI,EAAE0D,IAAI,eAAU,EAAO2E,kBAAkBrI,EAAE0D,IAAI,2BAAsB,EAAQ,EAApO,CAAsO1D,EAAE8J,KAAK,KAAKxF,EAAE/D,KAAK+R,mBAAmB5O,MAAM,IAAIY,EAAE,MAAM,IAAIlF,EAAE,sBAAsB,iBAAiB,GAAGmB,KAAK+R,mBAAmBjG,SAASlM,EAAE,MAAM,IAAImF,EAAEnF,EAAEkE,GAAGlE,EAAED,EAAEoE,EAAEkE,UAAU,IAAIlE,EAAE4Q,eAAe5Q,EAAEiE,OAAOjE,EAAEiE,QAAQrI,EAAE,MAAM,IAAId,EAAE,iBAAiB,iBAAiB,MAAMa,EAAEqE,EAAE+P,aAAa9P,EAAED,EAAEuP,MAAMnO,EAAEpB,EAAEyQ,aAAa,aAAaxU,KAAK2V,cAAc5W,OAAOS,OAAO,CAAC4I,SAASrE,EAAEqE,SAASC,MAAMtE,EAAEsE,MAAMsM,cAAc5Q,EAAE4Q,cAAciB,WAAW,qBAAqBC,KAAKzT,GAAG+C,EAAE,CAACqP,aAAarP,GAAG,CAAC,GAAG,CAAC2Q,QAAQ9R,EAAE8P,aAAapU,IAAI,CAACuI,SAASlE,EAAEkE,SAAS,CAACwB,mBAAmB5I,GAAG,IAAIb,KAAKwR,cAAcrO,IAAInD,KAAK2R,2BAA2B,CAAC,IAAI3R,KAAKwR,cAAcrO,IAAI,0BAA0B,OAAOnD,KAAKwR,cAAcnE,KAAKrN,KAAK2R,2BAA0B,EAAG,CAACrE,gBAAgBtN,KAAK4R,uBAAuB1E,aAAalN,KAAKiR,QAAQ/D,eAAelN,KAAKwR,cAAc1F,OAAO,yBAA0B,CAAC,UAAU9L,KAAKiW,iBAAiBpV,EAAa,CAAT,MAAMA,GAAG,CAAC,CAAC4I,uBAAuB5I,EAAE,CAAC,GAAG,IAAIpB,EAAE,MAAME,EAAEZ,OAAOS,OAAOT,OAAOS,OAAO,CAAC0W,UAAU,MAAMrV,GAAG,CAACiQ,oBAAoB/R,OAAOS,OAAOT,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEQ,KAAKiR,QAAQH,qBAAqBjQ,EAAEiQ,qBAAqB,CAACzI,MAAMiD,EAAEtL,KAAKqI,MAAM,QAAQ5I,EAAEoB,EAAEiQ,2BAAsB,IAASrR,OAAE,EAAOA,EAAE4I,WAAWjG,OAAO,EAAEvB,EAAEpB,KAAK,IAAIE,EAAEmQ,EAAErQ,GAAG,OAAOE,IAAIA,EAAEkB,IAAIkK,SAAQ,YAAa+E,EAAErQ,GAAGE,EAAE,IAAM,IAAGmQ,EAAErQ,GAAGE,GAAGA,CAAE,EAApF,EAAsF,IAAKK,KAAKmW,kBAAkBxW,IAAI,GAAGK,KAAKiR,QAAQpI,aAAalJ,EAAEmR,oBAAoB1I,aAAazI,EAAEmR,oBAAoBzI,SAAS,OAAOxH,EAAEuV,iBAAiBhU,EAAE,MAAMA,OAAE,EAAOA,EAAEiU,YAAY,CAAC5M,wBAAwBhK,GAAG,MAAMyW,UAAUvW,GAAGF,EAAE2C,EAAEvB,EAAEpB,EAAE,CAAC,cAAc,GAAG,QAAQE,EAAE,CAAC,MAAMkB,QAAQb,KAAKsW,mBAAmB,CAACjO,MAAMjG,EAAE0O,oBAAoBzI,MAAMD,SAAShG,EAAE0O,oBAAoB1I,UAAU,UAAUS,SAAS7I,KAAKiR,QAAQpI,WAAW,GAAGhI,EAAE,OAAOA,CAAC,CAAC,GAAG,eAAelB,EAAE,CAAC,SAAS,OAAOkB,EAAEpB,EAAE,KAAK,IAAI,IAAIE,EAAE,EAAEA,EAAEF,EAAEE,IAAI,SAASkB,IAAI,OAAO,EAAG,OAAO,CAAG,EAArE,EAAuE,IAAK6P,GAAG/K,YAAY,8BAA8B,MAAM,IAAI,MAAM,IAAIR,EAAE,IAAI,GAAGzC,OAAOsE,iBAAiB,WAAWhH,KAAKgR,wBAAwB,QAAQrR,EAAE,CAAC,MAAMkB,QAAQb,KAAKsW,mBAAmB,CAACjO,MAAMjG,EAAE0O,oBAAoBzI,MAAMD,SAAShG,EAAE0O,oBAAoB1I,UAAU,UAAUS,SAAS7I,KAAKiR,QAAQpI,WAAW,GAAGhI,EAAE,OAAOA,CAAC,CAAC,MAAMA,EAAEb,KAAKiR,QAAQa,uBAAuB9R,KAAKuW,2BAA2BnU,SAASpC,KAAKwW,oBAAoBpU,IAAImK,SAAS9M,EAAE4W,aAAazW,EAAE6W,gBAAgB3S,EAAEgJ,WAAW/I,GAAGlD,EAAE,OAAO9B,OAAOS,OAAOT,OAAOS,OAAO,CAAC+M,SAAS9M,EAAE4W,aAAazW,GAAGkE,EAAE,CAACuE,MAAMvE,GAAG,MAAM,CAACgJ,WAAW/I,GAAmI,CAA/H,cAAc2M,GAAG7K,YAAY,+BAA+BnD,OAAOmE,oBAAoB,WAAW7G,KAAKgR,uBAAwB,CAAC,CAAC,CAACvH,wBAAwB5I,EAAE,CAAC,EAAEpB,EAAE,CAAC,GAAG,IAAIE,EAAE,MAAMyC,EAAErD,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEqB,GAAG,CAACiQ,oBAAoB/R,OAAOS,OAAOT,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEQ,KAAKiR,QAAQH,qBAAqBjQ,EAAEiQ,qBAAqB,CAACzI,MAAMiD,EAAEtL,KAAKqI,MAAM,QAAQ1I,EAAEkB,EAAEiQ,2BAAsB,IAASnR,OAAE,EAAOA,EAAE0I,WAAiF,OAAtE5I,EAAEV,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEuE,GAAGtE,SAASO,KAAK0W,eAAetU,EAAE3C,UAAiBO,KAAKgS,aAAa7O,IAAI,IAAIsI,EAAE,CAACpD,MAAMjG,EAAE0O,oBAAoBzI,MAAMD,SAAShG,EAAE0O,oBAAoB1I,UAAU,UAAUS,SAAS7I,KAAKiR,QAAQpI,aAAawN,YAAY,CAAC5M,wBAAwB,cAAezJ,KAAK2W,SAAS,CAACC,gBAAgBnX,GAAG,OAAOA,EAAEoJ,SAASpJ,EAAEoJ,SAASpJ,EAAEoJ,UAAU7I,KAAKiR,QAAQpI,gBAAgBpJ,EAAEoJ,SAAS,MAAMlJ,EAAEF,EAAEoX,cAAc,CAAC,GAAGC,UAAU1U,GAAGzC,EAAEC,EAAEiB,EAAElB,EAAE,CAAC,cAAcmE,EAAE1B,EAAE,aAAa,GAAG,OAAOpC,KAAKuS,KAAK,cAAcxQ,EAAEhD,OAAOS,OAAO,CAACqJ,SAASpJ,EAAEoJ,UAAUjJ,OAAOkE,CAAC,CAAC2F,aAAahK,EAAE,CAAC,GAAG,MAAME,EAAE4Q,GAAE9Q,IAAI+Q,QAAQpO,GAAGzC,EAAEC,EAAEiB,EAAElB,EAAE,CAAC,YAAY,OAAOF,EAAEoJ,eAAe7I,KAAKgS,aAAa1N,cAActE,KAAKgS,aAAa1N,MAAM7E,EAAEoJ,UAAU7I,KAAKiR,QAAQpI,UAAU7I,KAAKwR,cAAc1F,OAAO9L,KAAK0R,kBAAkB,CAACxE,aAAalN,KAAKiR,QAAQ/D,eAAelN,KAAKwR,cAAc1F,OAAO9L,KAAK2R,0BAA0B,CAACzE,aAAalN,KAAKiR,QAAQ/D,eAAelN,KAAK4Q,UAAU9E,OAAO,YAAY,MAAMhI,EAAE9D,KAAK4W,gBAAgBhX,GAAGwC,QAAQA,EAAE0B,IAAG,IAAK1B,GAAGM,OAAOkM,SAASpP,OAAOsE,EAAG,CAAC2F,0BAA0B5I,GAAG,MAAMpB,EAAEV,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEqB,EAAEiQ,qBAAqB,CAACiG,OAAO,SAASpX,EAAEK,KAAKwR,cAAcrO,IAAInD,KAAK0R,mBAAmB/R,IAAIF,EAAEqU,eAAerU,EAAEqU,aAAanU,GAAG,MAAMiV,IAAIxS,EAAE4F,MAAMpI,EAAE0T,MAAMxP,EAAE6Q,cAAc5Q,EAAEyQ,aAAa9U,EAAE2I,MAAMrE,EAAEoE,SAASrD,SAAS/E,KAAKkV,qBAAqBzV,EAAE,CAAC8U,cAAc,eAAe7R,OAAOkM,SAASuG,QAAQ,IAAI,GAAGzS,OAAOsU,oBAAoB,MAAM,IAAInY,EAAE,iBAAiB,qIAAqI,MAAMc,EAAEkB,EAAE2G,kBAAkBxH,KAAKiR,QAAQyE,0BAA0BxP,OAAO,EAAErF,EAAEpB,EAAEE,EAAE,KAAK,IAAIW,SAAQ,CAAE8B,EAAExC,KAAK,MAAMkE,EAAEpB,OAAO0L,SAAS6I,cAAc,UAAUnT,EAAEoT,aAAa,QAAQ,KAAKpT,EAAEoT,aAAa,SAAS,KAAKpT,EAAEqT,MAAMC,QAAQ,OAAO,MAAMrT,EAAE,KAAKrB,OAAO0L,SAASjN,KAAKkW,SAASvT,KAAKpB,OAAO0L,SAASjN,KAAKmW,YAAYxT,GAAGpB,OAAOmE,oBAAoB,UAAUnH,GAAE,GAAI,EAAG,IAAIA,EAAE,MAAMsE,EAAEN,YAAW,KAAM9D,EAAE,IAAIuF,GAAGpB,GAAK,GAAE,IAAIpE,GAAGD,EAAE,SAASmB,GAAG,GAAGA,EAAEsU,QAAQ1V,EAAE,OAAO,IAAIoB,EAAEyJ,MAAM,2BAA2BzJ,EAAEyJ,KAAKmF,KAAK,OAAO,MAAM9P,EAAEkB,EAAE0W,OAAO5X,GAAGA,EAAE4K,QAAQ1J,EAAEyJ,KAAKkL,SAAS3N,MAAMjI,EAAEf,EAAE4W,YAAY5U,EAAEyJ,KAAKkL,WAAWpT,EAAEvB,EAAEyJ,KAAKkL,UAAUzO,aAAa/C,GAAGtB,OAAOmE,oBAAoB,UAAUnH,GAAE,GAAIgE,WAAWK,EAAE,IAAK,EAAErB,OAAOsE,iBAAiB,UAAUtH,GAAE,GAAIgD,OAAO0L,SAASjN,KAAKqW,YAAY1T,GAAGA,EAAEoT,aAAa,MAAMrW,EAAI,IAArtB,CAAytBuB,EAAEpC,KAAKiS,UAAUtS,GAAG,GAAGC,IAAIsG,EAAE8B,MAAM,MAAM,IAAInJ,EAAE,iBAAiB,iBAAiB,MAAMM,QAAQa,KAAK2V,cAAc5W,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEqB,EAAEiQ,qBAAqB,CAAC6D,cAAc5Q,EAAE8R,KAAK3P,EAAE2P,KAAKD,WAAW,qBAAqBpB,aAAa9U,EAAEqK,QAAQlJ,EAAEiQ,oBAAoB/G,SAAS/J,KAAKsR,gBAAgB,CAACwE,QAAQhS,EAAEgQ,aAAarU,EAAEqU,eAAe,OAAO/U,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEL,GAAG,CAACkJ,MAAMrE,EAAEyS,gBAAgBtX,EAAEkJ,MAAMD,SAASrD,GAA0E,CAAtE,MAAMlE,GAAG,KAAM,mBAAmBA,EAAEgH,OAAO7H,KAAKyX,OAAO,CAACjH,SAAQ,IAAK3P,CAAC,CAAC,CAAC4I,iCAAiC5I,GAAG,MAAMpB,QAAQO,KAAKgS,aAAa7O,IAAI,IAAIsI,EAAE,CAACpD,MAAMxH,EAAEiQ,oBAAoBzI,MAAMD,SAASvH,EAAEiQ,oBAAoB1I,UAAU,UAAUS,SAAS7I,KAAKiR,QAAQpI,YAAY,KAAKpJ,GAAGA,EAAEmN,eAAe5M,KAAKsS,QAAQ,CAAC,GAAGtS,KAAKiR,QAAQF,yBAAyB,aAAa/Q,KAAKwW,oBAAoB3V,GAAG,MAAM,IAAIO,EAAEP,EAAEiQ,oBAAoB1I,UAAU,UAAUvH,EAAEiQ,oBAAoBzI,MAAM,CAAC,MAAM1I,EAAEkB,EAAEiQ,oBAAoB0D,cAAcxU,KAAKiR,QAAQH,oBAAoB0D,cAAc9R,OAAOkM,SAASuG,OAAO/S,EAAE,iBAAiBvB,EAAE2G,iBAAiB,IAAI3G,EAAE2G,iBAAiB,KAAK,IAAI,MAAM5H,QAAQI,KAAK2V,cAAc5W,OAAOS,OAAOT,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEqB,EAAEiQ,qBAAqB,CAAC8E,WAAW,gBAAgBhJ,cAAcnN,GAAGA,EAAEmN,cAAc4H,aAAa7U,IAAIyC,GAAG,CAAC2H,QAAQ3H,KAAK,OAAOrD,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEI,GAAG,CAACyI,MAAMxH,EAAEiQ,oBAAoBzI,MAAMoO,gBAAgB7W,EAAEyI,MAAMD,SAASvH,EAAEiQ,oBAAoB1I,UAAU,WAAyN,CAA7M,MAAM3I,GAAG,IAAIA,EAAEiY,QAAQrV,QAAQ,0BAA0B,GAAG5C,EAAEiY,SAASjY,EAAEiY,QAAQrV,QAAQ,0BAA0B,IAAIrC,KAAKiR,QAAQF,yBAAyB,aAAa/Q,KAAKwW,oBAAoB3V,GAAG,MAAMpB,CAAC,CAAC,CAACgK,wBAAwBhK,GAAG,MAAM8M,SAAS5M,EAAE6M,aAAapK,GAAG3C,EAAEG,EAAEiB,EAAEpB,EAAE,CAAC,WAAW,iBAAiBO,KAAK4Q,UAAUxN,IAAI,WAAW,CAACmJ,SAAS5M,EAAE6M,aAAapK,UAAUpC,KAAKgS,aAAa2F,WAAW3X,KAAKiR,QAAQpI,SAASpJ,EAAE8M,SAAS9M,EAAE+M,oBAAoBxM,KAAKgS,aAAa5O,IAAIxD,EAAG,CAAC6J,6BAA6B,MAAM5I,EAAEb,KAAKiR,QAAQH,oBAAoB1I,UAAU,UAAU3I,QAAQO,KAAKgS,aAAa4F,WAAW,IAAInM,EAAE,CAAC5C,SAAS7I,KAAKiR,QAAQpI,SAAST,SAASvH,EAAEwH,MAAMrI,KAAKqI,SAAS1I,EAAEK,KAAK4Q,UAAUzN,IAAI,YAAY,OAAO1D,GAAGA,EAAE8M,YAAY,MAAM5M,OAAE,EAAOA,EAAE4M,UAAU5M,GAAGK,KAAK4Q,UAAUxN,IAAI,WAAW3D,GAAGA,EAAE,CAACgK,0BAA0BpB,MAAMxH,EAAEuH,SAAS3I,EAAEoJ,SAASlJ,IAAI,MAAMyC,QAAQpC,KAAKgS,aAAa7O,IAAI,IAAIsI,EAAE,CAACpD,MAAMxH,EAAEuH,SAAS3I,EAAEoJ,SAASlJ,IAAI,IAAI,GAAGyC,GAAGA,EAAEiU,aAAa,CAAC,MAAMA,aAAaxV,EAAE4V,gBAAgBhX,EAAEqN,WAAWnN,GAAGyC,EAAExC,QAAQI,KAAK+V,uBAAuB,OAAOnW,GAAGb,OAAOS,OAAOT,OAAOS,OAAO,CAAC+M,SAAS3M,EAAE2M,SAAS8J,aAAaxV,GAAGpB,EAAE,CAAC4I,MAAM5I,GAAG,MAAM,CAACqN,WAAWnN,GAAG,CAAC,CAAC8J,oBAAoB5I,EAAEpB,GAAG,MAAMqW,QAAQnW,EAAEmU,aAAa1R,GAAG3C,GAAG,CAAC,EAAEG,QAAQqL,EAAElM,OAAOS,OAAO,CAAC0L,QAAQlL,KAAKiS,UAAUhJ,UAAUjJ,KAAKiR,QAAQpI,SAASsC,YAAYnL,KAAKiR,QAAQ9F,YAAYjB,YAAYlK,KAAKiR,QAAQ/G,YAAYH,QAAQ/J,KAAKsR,eAAezQ,GAAGb,KAAKsS,QAAQxO,QAAQ9D,KAAK6X,eAAejY,EAAE2M,SAAS5M,EAAEyC,GAAG,aAAapC,KAAK8X,kBAAkB/Y,OAAOS,OAAOT,OAAOS,OAAOT,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEI,GAAG,CAAC4M,aAAa1I,EAAEuE,MAAMxH,EAAEwH,MAAMD,SAASvH,EAAEuH,UAAU,YAAYxI,EAAEyI,MAAM,CAACoO,gBAAgB7W,EAAEyI,OAAO,MAAM,CAACY,UAAUjJ,KAAKiR,QAAQpI,YAAY7I,KAAKwR,cAAcnE,KAAKrN,KAAK2R,2BAA0B,EAAG,CAACrE,gBAAgBtN,KAAK4R,uBAAuB1E,aAAalN,KAAKiR,QAAQ/D,eAAelN,KAAKmU,gBAAgB/R,GAAG0B,EAAEgP,OAAOiB,QAAQhV,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAEI,GAAG,CAAC4M,aAAa1I,GAAG,EAKvhxC,IAAIiU,GAAmB,CACnBC,iBAAiB,EACjBC,WAAW,GAMXC,GAAO,WACP,MAAM,IAAI9T,MAAM,wDACpB,EAII+T,GAAiB5Y,EAASA,EAAS,CAAC,EAAGwY,IAAmB,CAAEK,kBAAmBF,GAAMG,eAAgBH,GAAMI,uBAAwBJ,GAAMK,wBAAyBL,GAAMM,iBAAkBN,GAAMO,kBAAmBP,GAAMxB,eAAgBwB,GAAMT,OAAQS,GAAMQ,uBAAwBR,KAIrRS,IAAe,IAAAC,eAAcT,IAQ7BU,GAA4B,SAAUC,GAEtC,SAASD,EAAWhR,EAAOC,GACvB,IAAIiR,EAAQD,EAAOxZ,KAAKU,KAAM8H,GAAqBD,IAAU7H,KAK7D,OAJA+Y,EAAMlR,MAAQA,EACdkR,EAAMjR,kBAAoBA,EAE1B/I,OAAOC,eAAe+Z,EAAOF,EAAWzZ,WACjC2Z,CACX,CACA,OAnHJ,SAAmBla,EAAGC,GAClB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImD,UAAU,uBAAyBkN,OAAOrQ,GAAK,iCAE7D,SAASka,IAAOhZ,KAAK2H,YAAc9I,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOqO,OAAOtO,IAAMka,EAAG5Z,UAAYN,EAAEM,UAAW,IAAI4Z,EACnF,CAoGIC,CAAUJ,EAAYC,GASfD,CACX,CAX+B,CAW7BzU,OAEE8U,GAAU,iBACVC,GAAW,kBACXC,GAAW,kBAMXC,GAAmB,SAAUC,GAC7B,OAAO,SAAUzR,GACb,OAAIA,aAAiBzD,MACVyD,EAGG,OAAVA,GACiB,iBAAVA,GACP,UAAWA,GACY,iBAAhBA,EAAMA,MACT,sBAAuBA,GACY,iBAA5BA,EAAMC,kBACN,IAAI+Q,GAAWhR,EAAMA,MAAOA,EAAMC,mBAEtC,IAAI+Q,GAAWhR,EAAMA,OAEzB,IAAIzD,MAAMkV,EACrB,CACJ,EACIC,GAAaF,GAAiB,gBAC9BG,GAAaH,GAAiB,2BAO9BI,GAAuB,SAAUxI,GACjC,IAAIyI,GACAzI,aAAyC,EAASA,EAAQ0I,eAC1DvI,QAAQC,KAAK,mKACbJ,EAAQH,oBAAsBG,EAAQH,qBAAuB,CAAC,EAC9DG,EAAQH,oBAAoB0D,aAAevD,EAAQ0I,mBAC5C1I,EAAQ0I,cAE0E,QAAxFD,EAAKzI,aAAyC,EAASA,EAAQH,2BAAwC,IAAP4I,OAAgB,EAASA,EAAGC,eAC7HvI,QAAQC,KAAK,+LACbJ,EAAQH,oBAAoB0D,aACxBvD,EAAQH,oBAAoB6I,mBACzB1I,EAAQH,oBAAoB6I,YAE3C,EAKIC,GAAU,SAAU5R,EAAO6R,GAC3B,OAAQA,EAAOpK,MACX,IAAK,sBACD,OAAOlQ,EAASA,EAAS,CAAC,EAAGyI,GAAQ,CAAEiQ,WAAW,IACtD,IAAK,uBACL,IAAK,cACD,OAAO1Y,EAASA,EAAS,CAAC,EAAGyI,GAAQ,CAAEgQ,kBAAmB6B,EAAO9G,KAAMA,KAAM8G,EAAO9G,KAAMkF,WAAW,EAAOpQ,WAAOiS,IACvH,IAAK,2BACL,IAAK,4BACD,OAAI9R,EAAM+K,OAAS8G,EAAO9G,KACf/K,EAEJzI,EAASA,EAAS,CAAC,EAAGyI,GAAQ,CAAEgQ,kBAAmB6B,EAAO9G,KAAMA,KAAM8G,EAAO9G,OACxF,IAAK,SACD,OAAOxT,EAASA,EAAS,CAAC,EAAGyI,GAAQ,CAAEgQ,iBAAiB,EAAOjF,UAAM+G,IACzE,IAAK,QACD,OAAOva,EAASA,EAAS,CAAC,EAAGyI,GAAQ,CAAEiQ,WAAW,EAAOpQ,MAAOgS,EAAOhS,QAEnF,EAeIkS,GAA4B,SAAU9R,GACtCvF,OAAOsX,QAAQC,aAAa,CAAC,EAAG7L,SAAS8L,OAAQjS,aAA2C,EAASA,EAASkS,WAAazX,OAAOkM,SAASwL,SAC/I,EAaIC,GAAgB,SAAUC,GAC1B,IAAIC,EAAWD,EAAKC,SAAUC,EAAuBF,EAAKE,qBAAsBd,EAAKY,EAAKG,mBAAoBA,OAA4B,IAAPf,EAAgBK,GAA4BL,EAAIgB,EAAKJ,EAAKK,QAASA,OAAiB,IAAPD,EAAgB/B,GAAe+B,EAAIE,EA1MvP,SAAgBlb,EAAGmB,GACf,IAAIpB,EAAI,CAAC,EACT,IAAK,IAAIN,KAAKO,EAAOX,OAAOK,UAAUC,eAAeC,KAAKI,EAAGP,IAAM0B,EAAEwB,QAAQlD,GAAK,IAC9EM,EAAEN,GAAKO,EAAEP,IACb,GAAS,MAALO,GAAqD,mBAAjCX,OAAOuD,sBACtB,KAAI3C,EAAI,EAAb,IAAgBR,EAAIJ,OAAOuD,sBAAsB5C,GAAIC,EAAIR,EAAEW,OAAQH,IAC3DkB,EAAEwB,QAAQlD,EAAEQ,IAAM,GAAKZ,OAAOK,UAAUmD,qBAAqBjD,KAAKI,EAAGP,EAAEQ,MACvEF,EAAEN,EAAEQ,IAAMD,EAAEP,EAAEQ,IAF4B,CAItD,OAAOF,CACX,CAgMoQob,CAAOP,EAAM,CAAC,WAAY,uBAAwB,qBAAsB,YACpUQ,GAAS,IAAAC,WAAS,WAAc,OAAO,IAAIpK,GA3BxB,SAAU2J,GAEjC,OADAb,GAAqBa,GACd/a,EAASA,EAAS,CAAC,EAAG+a,GAAO,CAAEnP,YAAa,CAC3C1D,KAAM,cACNC,QAAS,UAErB,CAqBsDsT,CAAqBJ,GAAc,IAAG,GACpFK,GAAK,IAAAC,YAAWtB,GAAS7B,IAAmB/P,EAAQiT,EAAG,GAAIE,EAAWF,EAAG,GACzEG,GAAgB,IAAAC,SAAO,IAC3B,IAAAC,YAAU,WACFF,EAAcG,UAGlBH,EAAcG,SAAU,EACFtb,OAAU,OAAQ,OAAQ,GAAQ,WACpD,IAAI8S,EAAM9K,EAAUuT,EACpB,OAAOta,EAAYlB,MAAM,SAAU0Z,GAC/B,OAAQA,EAAGlY,OACP,KAAK,EAGD,OAFAkY,EAAGhY,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACtB4Q,OAAO,OAlHN,IAAjB0I,IAA2BA,EAAe/Y,OAAOkM,SAAS8M,SACtDxC,GAAQhH,KAAKuJ,KAAiBrC,GAASlH,KAAKuJ,KAChDtC,GAASjH,KAAKuJ,IAiH4BjB,EAA8B,CAAC,EAAa,GAC/D,CAAC,EAAaM,EAAOpC,0BAChC,KAAK,EAED,OADAzQ,EAAYyR,EAAGjY,OAAQwG,SAChB,CAAC,EAAa6S,EAAOnE,WAChC,KAAK,EAGD,OAFA5D,EAAO2G,EAAGjY,OACVgZ,EAAmBxS,EAAU8K,GACtB,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAa+H,EAAOa,gBACpC,KAAK,EAED,OADAjC,EAAGjY,OACI,CAAC,EAAaqZ,EAAOnE,WAChC,KAAK,EACD5D,EAAO2G,EAAGjY,OACViY,EAAGlY,MAAQ,EACf,KAAK,EAED,OADA2Z,EAAS,CAAE1L,KAAM,cAAesD,KAAMA,IAC/B,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAyI,EAAU9B,EAAGjY,OACb0Z,EAAS,CAAE1L,KAAM,QAAS5H,MAAO0R,GAAWiC,KACrC,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GA3IhB,IAAUC,CA6IlB,GACJ,IACJ,GAAG,CAACX,EAAQL,EAAoBD,IAChC,IAAI/B,GAAoB,IAAAmD,cAAY,SAAUtB,GAE1C,OADAb,GAAqBa,GACdQ,EAAOrC,kBAAkB6B,EACpC,GAAG,CAACQ,IACApE,GAAiB,IAAAkF,cAAY,SAAU3K,EAAS4K,GAAU,OAAO5b,OAAU,OAAQ,OAAQ,GAAQ,WACnG,IAAI6b,EAAS/I,EACb,OAAO7R,EAAYlB,MAAM,SAAU0Z,GAC/B,OAAQA,EAAGlY,OACP,KAAK,EACD2Z,EAAS,CAAE1L,KAAM,wBACjBiK,EAAGlY,MAAQ,EACf,KAAK,EAED,OADAkY,EAAGhY,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa2Y,EAAOpE,eAAezF,EAAS4K,IACxD,KAAK,EAED,OADAnC,EAAGjY,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAqa,EAAUpC,EAAGjY,OACb0Z,EAAS,CAAE1L,KAAM,QAAS5H,MAAO0R,GAAWuC,KACrC,CAAC,GACZ,KAAK,EAAG,MAAO,CAAC,EAAahB,EAAOnE,WACpC,KAAK,EAGD,OAFA5D,EAAO2G,EAAGjY,OACV0Z,EAAS,CAAE1L,KAAM,uBAAwBsD,KAAMA,IACxC,CAAC,GAEpB,GACJ,GAAI,GAAG,CAAC+H,IACJrD,GAAS,IAAAmE,cAAY,SAAUtB,GAE/B,YADa,IAATA,IAAmBA,EAAO,CAAC,GACxBra,OAAU,OAAQ,OAAQ,GAAQ,WACrC,OAAOiB,EAAYlB,MAAM,SAAU0Z,GAC/B,OAAQA,EAAGlY,OACP,KAAK,EAAG,MAAO,CAAC,EAAasZ,EAAOrD,OAAO6C,IAC3C,KAAK,EAKD,OAJAZ,EAAGjY,QACC6Y,EAAK9J,UAA4B,IAAjB8J,EAAK9J,UACrB2K,EAAS,CAAE1L,KAAM,WAEd,CAAC,GAEpB,GACJ,GACJ,GAAG,CAACqL,IACAxC,GAAyB,IAAAsD,cAE7B,SAAUtB,GAAQ,OAAOra,OAAU,OAAQ,OAAQ,GAAQ,WACvD,IAAI8b,EAAOC,EAAStC,EAChBgB,EACJ,OAAOxZ,EAAYlB,MAAM,SAAUib,GAC/B,OAAQA,EAAGzZ,OACP,KAAK,EAED,OADAyZ,EAAGvZ,KAAKS,KAAK,CAAC,EAAG,EAAG,EAAG,IAChB,CAAC,EAAa2Y,EAAO7E,iBAAiBqE,IACjD,KAAK,EAED,OADAyB,EAAQd,EAAGxZ,OACJ,CAAC,EAAa,GACzB,KAAK,EAED,MADAua,EAAUf,EAAGxZ,OACP+X,GAAWwC,GACrB,KAAK,EAKD,OAJAtC,EAAKyB,EACLT,EAAK,CACDjL,KAAM,6BAEH,CAAC,EAAaqL,EAAOnE,WAChC,KAAK,EAGD,OAFA+C,EAAG3Z,WAAM,EAAQ,EAAE2a,EAAG3H,KAAOkI,EAAGxZ,OACxBiZ,KACD,CAAC,GACZ,KAAK,EAAG,MAAO,CAAC,EAAcqB,GAEtC,GACJ,GAAI,GAAG,CAACjB,IACJvC,GAA0B,IAAAqD,cAAY,SAAUtB,EAAMuB,GAAU,OAAO5b,OAAU,OAAQ,OAAQ,GAAQ,WACzG,IAAI8b,EAAOE,EAASvC,EAChBgB,EACJ,OAAOxZ,EAAYlB,MAAM,SAAUib,GAC/B,OAAQA,EAAGzZ,OACP,KAAK,EAED,OADAyZ,EAAGvZ,KAAKS,KAAK,CAAC,EAAG,EAAG,EAAG,IAChB,CAAC,EAAa2Y,EAAOoB,kBAAkB5B,EAAMuB,IACxD,KAAK,EAED,OADAE,EAAQd,EAAGxZ,OACJ,CAAC,EAAa,GACzB,KAAK,EAED,MADAwa,EAAUhB,EAAGxZ,OACP+X,GAAWyC,GACrB,KAAK,EAKD,OAJAvC,EAAKyB,EACLT,EAAK,CACDjL,KAAM,6BAEH,CAAC,EAAaqL,EAAOnE,WAChC,KAAK,EAGD,OAFA+C,EAAG3Z,WAAM,EAAQ,EAAE2a,EAAG3H,KAAOkI,EAAGxZ,OACxBiZ,KACD,CAAC,GACZ,KAAK,EAAG,MAAO,CAAC,EAAcqB,GAEtC,GACJ,GAAI,GAAG,CAACjB,IACJtC,GAAmB,IAAAoD,cAAY,WAAc,OAAOd,EAAOtC,kBAAoB,GAAG,CAACsC,IACnFpC,GAAyB,IAAAkD,cAAY,SAAUhH,GAAO,OAAO3U,OAAU,OAAQ,OAAQ,GAAQ,WAC/F,IAAIkc,EAASzC,EACTgB,EACJ,OAAOxZ,EAAYlB,MAAM,SAAUib,GAC/B,OAAQA,EAAGzZ,OACP,KAAK,EAED,OADAyZ,EAAGvZ,KAAKS,KAAK,CAAC,EAAG,EAAG,EAAG,IAChB,CAAC,EAAa2Y,EAAOpC,uBAAuB9D,IACvD,KAAK,EAAG,MAAO,CAAC,EAAcqG,EAAGxZ,QACjC,KAAK,EAED,MADA0a,EAAUlB,EAAGxZ,OACP+X,GAAW2C,GACrB,KAAK,EAKD,OAJAzC,EAAKyB,EACLT,EAAK,CACDjL,KAAM,4BAEH,CAAC,EAAaqL,EAAOnE,WAChC,KAAK,EAGD,OAFA+C,EAAG3Z,WAAM,EAAQ,EAAE2a,EAAG3H,KAAOkI,EAAGxZ,OACxBiZ,KACD,CAAC,GACZ,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GAAI,GAAG,CAACI,IACJsB,GAAe,IAAAC,UAAQ,WACvB,OAAO9c,EAASA,EAAS,CAAC,EAAGyI,GAAQ,CAAEsQ,uBAAwBA,EAAwBC,wBAAyBA,EAAyBC,iBAAkBA,EAAkBC,kBAAmBA,EAAmB/B,eAAgBA,EAAgBe,OAAQA,EAAQiB,uBAAwBA,GAC/R,GAAG,CACC1Q,EACAsQ,EACAC,EACAC,EACAC,EACA/B,EACAe,EACAiB,IAEJ,OAAO,gBAAoBiC,EAAQ2B,SAAU,CAAE5b,MAAO0b,GAAgB7B,EAC1E,EAwBIgC,GAAW,SAAU5B,GAErB,YADgB,IAAZA,IAAsBA,EAAUhC,KAC7B,IAAA6D,YAAW7B,EACtB,EA8BI8B,GAAuB,WAAc,OAAO,gBAAoB,WAAgB,KAAO,EAIvFC,GAAgC,WAAc,OAAOzc,OAAU,OAAQ,OAAQ,GAAQ,WAAc,OAAOiB,EAAYlB,MAAM,SAAU0Z,GACxI,MAAO,CAAC,EACZ,GAAI,GAAI,EAIJiD,GAAkB,WAClB,MAAO,GAAGC,OAAOla,OAAOkM,SAASwL,UAAUwC,OAAOla,OAAOkM,SAAS8M,OACtE,EASImB,GAA6B,SAAUC,EAAW7L,GAElD,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAC9B,SAAoC8L,GACvC,IAAIhE,EAAQ/Y,KACR0Z,EAAKzI,EAAQkJ,SAAUA,OAAkB,IAAPT,EAAgBiD,GAAkBjD,EAAIgB,EAAKzJ,EAAQ+L,cAAeA,OAAuB,IAAPtC,EAAgB+B,GAAuB/B,EAAIO,EAAKhK,EAAQgM,uBAAwBA,OAAgC,IAAPhC,EAAgByB,GAAgCzB,EAAIiC,EAAejM,EAAQiM,aAAcC,EAAKlM,EAAQ0J,QACnUyC,EAAKb,QADwV,IAAPY,EAAgBxE,GAAewE,GAC7VnF,EAAkBoF,EAAGpF,gBAAiBC,EAAYmF,EAAGnF,UAAWQ,EAAoB2E,EAAG3E,kBA2BnH,OA1BA,IAAA6C,YAAU,WACN,IAAIrD,IAAaD,EAAjB,CAGA,IAAIsC,EAAO/a,EAASA,EAAS,CAAC,EAAG2d,GAAe,CAAEjV,SAAU1I,EAASA,EAAS,CAAC,EAAI2d,GAAgBA,EAAajV,UAAY,CAAEkS,SAA8B,mBAAbA,EAA0BA,IAAaA,MAChKla,EAAU8Y,OAAO,OAAQ,GAAQ,WACnD,OAAO7X,EAAYlB,MAAM,SAAU0Z,GAC/B,OAAQA,EAAGlY,OACP,KAAK,EAAG,MAAO,CAAC,EAAayb,KAC7B,KAAK,EAED,OADAvD,EAAGjY,OACI,CAAC,EAAagX,EAAkB6B,IAC3C,KAAK,EAED,OADAZ,EAAGjY,OACI,CAAC,GAEpB,GACJ,GAdA,CAeJ,GAAG,CACCwW,EACAD,EACAS,EACAwE,EACAC,EACA/C,IAEGnC,EAAkB,gBAAoB8E,EAAWvd,EAAS,CAAC,EAAGwd,IAAUC,GACnF,CACJ,qCC7hBA,IAAIK,EAAWte,OAAOS,QAAU,SAAU8d,GAAU,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAI4X,EAAS1X,UAAUF,GAAI,IAAK,IAAIwE,KAAOoT,EAAcxY,OAAOK,UAAUC,eAAeC,KAAKiY,EAAQpT,KAAQmZ,EAAOnZ,GAAOoT,EAAOpT,GAAU,CAAE,OAAOmZ,CAAQ,EAE3PC,EAAc,SAAqBhG,GACrC,IAAIiG,EAAmBjG,EAAO3I,SAC1B8M,EAAS8B,EAAiB9B,OAC1B+B,EAAOD,EAAiBC,KACxBrI,EAAOoI,EAAiBpI,KACxBD,EAASqI,EAAiBrI,OAC1BtG,EAAW2O,EAAiB3O,SAC5B6O,EAAOF,EAAiBE,KACxBC,EAAWH,EAAiBG,SAC5BC,EAAOJ,EAAiBI,KACxBxD,EAAW7C,EAAO3I,SAASwL,UAG1BA,GAAYhF,GAAQyI,IAEvBzD,EADU,IAAI1K,IAAI0F,GACHgF,UAGjB,MAAO,CACLA,SAAU0D,UAAUC,UAAU3D,IAC9BsB,OAAQA,EACR+B,KAAMA,EACNrI,KAAMA,EACND,OAAQA,EACRtG,SAAUA,EACV6O,KAAMA,EACNC,SAAUA,EACVC,KAAMA,EACN5V,MAAOuP,EAAOyC,QAAQhS,MACtB7D,IAAKoT,EAAOyC,QAAQhS,OAASuP,EAAOyC,QAAQhS,MAAM7D,KAAO,UAE7D,EAEI6Z,EAAgB,SAAuBzG,EAAQtG,GACjD,IAAIgN,EAAY,GACZrP,EAAW2O,EAAYhG,GACvB2G,GAAgB,EAChBC,EAAoB,WAA8B,EAEtD,MAAO,CACDvP,eACF,OAAOA,CACT,EAEIsP,oBACF,OAAOA,CACT,EAEAE,sBAAuB,WACrBF,GAAgB,EAChBC,GACF,EACAE,OAAQ,SAAgBC,GACtBL,EAAU9b,KAAKmc,GAEf,IAAIC,EAAmB,WACrB3P,EAAW2O,EAAYhG,GACvB+G,EAAS,CAAE1P,SAAUA,EAAUiL,OAAQ,OACzC,EAIA,OAFAtC,EAAOvQ,iBAAiB,WAAYuX,GAE7B,WACLhH,EAAO1Q,oBAAoB,WAAY0X,GACvCN,EAAYA,EAAU9W,QAAO,SAAUqX,GACrC,OAAOA,IAAOF,CAChB,GACF,CACF,EACAG,SAAU,SAAkBC,GAC1B,IAAIC,EAAO9e,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5EmI,EAAQ2W,EAAK3W,MACb4W,EAAeD,EAAKnV,QACpBA,OAA2BsQ,IAAjB8E,GAAqCA,EAEnD,GAAkB,iBAAPF,EACTnH,EAAOyC,QAAQ6E,GAAGH,OACb,CACL1W,EAAQqV,EAAS,CAAC,EAAGrV,EAAO,CAAE7D,IAAKqB,KAAKC,MAAQ,KAEhD,IACMyY,GAAiB1U,EACnB+N,EAAOyC,QAAQC,aAAajS,EAAO,KAAM0W,GAEzCnH,EAAOyC,QAAQ8E,UAAU9W,EAAO,KAAM0W,EAI1C,CAFE,MAAO7d,GACP0W,EAAO3I,SAASpF,EAAU,UAAY,UAAUkV,EAClD,CACF,CAEA9P,EAAW2O,EAAYhG,GACvB2G,GAAgB,EAChB,IAAIa,EAAa,IAAIze,SAAQ,SAAU0e,GACrC,OAAOb,EAAoBa,CAC7B,IAIA,OAHAf,EAAU3W,SAAQ,SAAUgX,GAC1B,OAAOA,EAAS,CAAE1P,SAAUA,EAAUiL,OAAQ,QAChD,IACOkF,CACT,EAEJ,EAIIE,EAAqB,WACvB,IAAIC,EAAcrf,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,IAElFsf,EAAcD,EAAY7c,QAAQ,KAClC+c,EAAkB,CACpBhF,SAAU+E,GAAe,EAAID,EAAYG,OAAO,EAAGF,GAAeD,EAClExD,OAAQyD,GAAe,EAAID,EAAYG,OAAOF,GAAe,IAE3DG,EAAQ,EACRC,EAAQ,CAACH,GACTI,EAAS,CAAC,MAEd,MAAO,CACD5Q,eACF,OAAO2Q,EAAMD,EACf,EACAtY,iBAAkB,SAA0BS,EAAM+W,GAAK,EACvD3X,oBAAqB,SAA6BY,EAAM+W,GAAK,EAE7DxE,QAAS,CACHyF,cACF,OAAOF,CACT,EACID,YACF,OAAOA,CACT,EACItX,YACF,OAAOwX,EAAOF,EAChB,EACAR,UAAW,SAAmB9W,EAAOzG,EAAGme,GACtC,IAAIC,EAAaD,EAAItW,MAAM,KACvBgR,EAAWuF,EAAW,GACtBC,EAAcD,EAAW,GACzBjE,OAAyB5B,IAAhB8F,EAA4B,GAAKA,EAE9CN,IACAC,EAAMpd,KAAK,CAAEiY,SAAUA,EAAUsB,OAAQA,EAAO5b,OAAS,IAAM4b,EAASA,IACxE8D,EAAOrd,KAAK6F,EACd,EACAiS,aAAc,SAAsBjS,EAAOzG,EAAGme,GAC5C,IAAIG,EAAcH,EAAItW,MAAM,KACxBgR,EAAWyF,EAAY,GACvBC,EAAeD,EAAY,GAC3BnE,OAA0B5B,IAAjBgG,EAA6B,GAAKA,EAE/CP,EAAMD,GAAS,CAAElF,SAAUA,EAAUsB,OAAQA,GAC7C8D,EAAOF,GAAStX,CAClB,EACA6W,GAAI,SAAYH,GACd,IAAIqB,EAAWT,EAAQZ,EAEnBqB,EAAW,GAAKA,EAAWP,EAAO1f,OAAS,IAI/Cwf,EAAQS,EACV,GAGN,EAKIlC,IAAiC,oBAAXnb,SAA0BA,OAAO0L,WAAY1L,OAAO0L,SAAS6I,eAKnF+I,EAAgBhC,EAHXH,EAAYnb,OAASuc,KAI1BR,EAAWuB,EAAcvB,SAI7B3b,EAAQ,GAAgBkd,uCCvLqFld,EAAQ,QAA4BgX,EAEjJ,IAIgCmG,EAJ5BC,EAAa,EAAQ,QAErBC,GAE4BF,EAFSC,IAEYD,EAAIrd,WAAaqd,EAAM,CAAEpd,QAASod,GAIvF,IAAIjU,EAAa,SAAoBoU,EAAQ1E,GAC3C,OAAO0E,EAAOf,OAAO,EAAG3D,EAAO5b,UAAY4b,CAC7C,EAuBI2E,EAAO,SAAcC,EAAQZ,GAW/B,IAVA,IAAIa,OAAQ,EACRC,OAAW,EAGXC,EADaf,EAAItW,MAAM,KACE,GAEzBsX,EAAcC,EAAWF,GACzBG,EAA+B,KAAnBF,EAAY,GACxBG,EAASC,EAAWR,GAEf3gB,EAAI,EAAGwF,EAAI0b,EAAO/gB,OAAQH,EAAIwF,EAAGxF,IAAK,CAC7C,IAAIohB,GAAS,EACTC,EAAQH,EAAOlhB,GAAGqhB,MAEtB,GAAIA,EAAMne,QACR2d,EAAW,CACTQ,MAAOA,EACPC,OAAQ,CAAC,EACTvB,IAAKA,OAJT,CAcA,IALA,IAAIwB,EAAgBP,EAAWK,EAAMhT,MACjCiT,EAAS,CAAC,EACV/Z,EAAMlC,KAAKkC,IAAIwZ,EAAY5gB,OAAQohB,EAAcphB,QACjDwf,EAAQ,EAELA,EAAQpY,EAAKoY,IAAS,CAC3B,IAAI6B,EAAeD,EAAc5B,GAC7B8B,EAAaV,EAAYpB,GAE7B,GAAI+B,EAAQF,GAAe,CAKzBF,EADYE,EAAa9Z,MAAM,IAAM,KACrBqZ,EAAYrZ,MAAMiY,GAAOjW,IAAIH,oBAAoBK,KAAK,KACtE,KACF,CAEA,QAAmBuQ,IAAfsH,EAA0B,CAI5BL,GAAS,EACT,KACF,CAEA,IAAIO,EAAeC,EAAQC,KAAKL,GAEhC,GAAIG,IAAiBV,EAAW,EACuC,IAA5Ca,EAAcpf,QAAQif,EAAa,MAC4K,EAAInB,EAAYtd,UAAS,GACjQ,IAAInC,EAAQwI,mBAAmBkY,GAC/BH,EAAOK,EAAa,IAAM5gB,CAC5B,MAAO,GAAIygB,IAAiBC,EAAY,CAItCL,GAAS,EACT,KACF,CACF,CAEA,IAAKA,EAAQ,CACXR,EAAQ,CACNS,MAAOA,EACPC,OAAQA,EACRvB,IAAK,IAAMgB,EAAYrZ,MAAM,EAAGiY,GAAO/V,KAAK,MAE9C,KACF,CAnDA,CAoDF,CAEA,OAAOgX,GAASC,GAAY,IAC9B,EA+GIe,EAAU,SAWVG,EAAY,SAAmBC,GACjC,OAAOJ,EAAQrP,KAAKyP,EACtB,EACIN,EAAU,SAAiBM,GAC7B,OAAOA,GAA0B,MAAfA,EAAQ,EAC5B,EAEIC,EAAY,SAAmBZ,EAAO1B,GAMxC,MAAO,CAAE0B,MAAOA,EAAOa,MALXb,EAAMne,QAAU,EAAI8d,EAAWK,EAAMhT,MAAMhF,QAAO,SAAU6Y,EAAOF,GAG7E,OAFAE,GAlBiB,GAMD,SAAuBF,GACzC,MAAmB,KAAZA,CACT,CAWQG,CAAcH,GAAwCD,EAAUC,GAAUE,GAjB7D,EAiB8FR,EAAQM,GAAUE,GAASE,EAAoCF,GAlB9J,EAkBYA,GAfd,EAgBPA,CACT,GAAG,GACkCvC,MAAOA,EAC9C,EAEIwB,EAAa,SAAoBR,GACnC,OAAOA,EAAOjX,IAAIuY,GAAWI,MAAK,SAAUle,EAAGhF,GAC7C,OAAOgF,EAAE+d,MAAQ/iB,EAAE+iB,MAAQ,EAAI/d,EAAE+d,MAAQ/iB,EAAE+iB,OAAS,EAAI/d,EAAEwb,MAAQxgB,EAAEwgB,KACtE,GACF,EAEIqB,EAAa,SAAoBjB,GACnC,OAAOA,EAENlW,QAAQ,eAAgB,IAAIJ,MAAM,IACrC,EAEI6Y,EAAW,SAAkB7H,GAC/B,IAAK,IAAI8H,EAAOriB,UAAUC,OAAQqiB,EAAQjjB,MAAMgjB,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAC/FD,EAAMC,EAAO,GAAKviB,UAAUuiB,GAM9B,OAAOhI,IAHP+H,EAAQA,EAAMhb,QAAO,SAAUmJ,GAC7B,OAAOA,GAAKA,EAAExQ,OAAS,CACzB,MAC4BqiB,EAAMriB,OAAS,EAAI,IAAMqiB,EAAM5Y,KAAK,KAAO,GACzE,EAEIkY,EAAgB,CAAC,MAAO,QAgB5B3e,EAAQ,GAAOud,yLC9MXgC,EAAyB,cAAiB,SAAmBtF,EAAOuF,GACtE,IAAIC,EAAexF,EAAMxC,SACrBiI,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClBC,EAAwB3F,EAAM4F,gBAC9BA,OAA4C,IAA1BD,GAA2CA,EAC7DE,EAAkB7F,EAAM8F,SACxBA,OAA+B,IAApBD,GAAqCA,EAChDE,EAAe/F,EAAMgG,SACrBC,EAAWjG,EAAMiG,SACjBC,EAAgBlG,EAAMmG,OACtBA,OAA2B,IAAlBD,GAAmCA,EAC5CE,EAAwBpG,EAAMqG,oBAC9BA,OAAgD,IAA1BD,EAAmC,IAAWA,EACpEE,EAAkBtG,EAAMsG,gBACxBC,GAAQ,OAAyBvG,EAAO,CAAC,WAAY,UAAW,YAAa,kBAAmB,WAAY,WAAY,WAAY,SAAU,sBAAuB,oBAErKwG,GAAiB,OAAc,CACjCC,WAAYV,EACZjgB,QAAS8f,EACTlb,KAAM,YACNO,MAAO,aAELyb,GAAkB,OAAeF,EAAgB,GACjDR,EAAWU,EAAgB,GAC3BC,EAAmBD,EAAgB,GAEnCE,EAAe,eAAkB,SAAUC,GAC7CF,GAAkBX,GAEdC,GACFA,EAASY,GAAQb,EAErB,GAAG,CAACA,EAAUC,EAAUU,IAEpBG,EAAwB,mBAAuBtB,GAC/CuB,GAAyB,OAASD,GAClCE,EAAUD,EAAuB,GACjCvJ,EAAWuJ,EAAuBzc,MAAM,GAExC+U,EAAe,WAAc,WAC/B,MAAO,CACL2G,SAAUA,EACVF,SAAUA,EACVmB,OAAQL,EAEZ,GAAG,CAACZ,EAAUF,EAAUc,IACxB,OAAoB,gBAAoB,KAAO,OAAS,CACtDlB,WAAW,OAAKD,EAAQyB,KAAMxB,EAAWM,GAAYP,EAAQO,SAAUF,GAAYL,EAAQK,UAAWK,GAAUV,EAAQ0B,SACxH5B,IAAKA,EACLY,OAAQA,GACPI,GAAqB,gBAAoB,aAA2B,CACrE5iB,MAAO0b,GACN2H,GAAuB,gBAAoBX,GAAqB,OAAS,CAC1Ee,GAAIpB,EACJhZ,QAAS,QACRsZ,GAA+B,gBAAoB,MAAO,CAC3D,kBAAmBU,EAAQhH,MAAMxX,GACjCA,GAAIwe,EAAQhH,MAAM,iBAClBqH,KAAM,UACL7J,IACL,IA2EA,KAAe,QAhNK,SAAgB8J,GAClC,IAAItF,EAAa,CACfuF,SAAUD,EAAME,YAAYD,SAASE,UAEvC,MAAO,CAELP,KAAM,CACJQ,SAAU,WACV1F,WAAYsF,EAAME,YAAYnX,OAAO,CAAC,UAAW2R,GACjD,WAAY,CACV0F,SAAU,WACVC,KAAM,EACNC,KAAM,EACNC,MAAO,EACPC,OAAQ,EACRC,QAAS,KACTC,QAAS,EACTC,gBAAiBX,EAAMY,QAAQC,QAC/BnG,WAAYsF,EAAME,YAAYnX,OAAO,CAAC,UAAW,oBAAqB2R,IAExE,gBAAiB,CACf,WAAY,CACV3H,QAAS,SAGb,aAAc,CACZ+N,OAAQ,SACR,gBAAiB,CACfC,UAAW,GAEb,eAAgB,CACdC,aAAc,GAEhB,WAAY,CACVN,QAAS,IAGb,iBAAkB,CAChB,WAAY,CACV3N,QAAS,SAGb,aAAc,CACZ4N,gBAAiBX,EAAMY,QAAQpL,OAAOyL,qBAK1CpB,QAAS,CACPqB,aAAc,EACd,gBAAiB,CACfC,oBAAqBnB,EAAMoB,MAAMF,aACjCG,qBAAsBrB,EAAMoB,MAAMF,cAEpC,eAAgB,CACdI,uBAAwBtB,EAAMoB,MAAMF,aACpCK,wBAAyBvB,EAAMoB,MAAMF,aAErC,kCAAmC,CACjCI,uBAAwB,EACxBC,wBAAyB,KAM/B7C,SAAU,CAAC,EAGXF,SAAU,CAAC,EAEf,GAyIkC,CAChCpb,KAAM,gBADR,CAEG4a,4CC1NCwD,YAAmB,cAAoB,CAAC,GAM5C,2GCGIC,EAAgC,cAAiB,SAA0B/I,EAAOuF,GACpF,IAAIE,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClBa,GAAQ,OAAyBvG,EAAO,CAAC,UAAW,cAExD,OAAoB,gBAAoB,OAAO,OAAS,CACtD0F,WAAW,OAAKD,EAAQyB,KAAMxB,GAC9BH,IAAKA,GACJgB,GACL,IAuBA,KAAe,QAzCK,SAAgBe,GAClC,MAAO,CAELJ,KAAM,CACJ7M,QAAS,OACT2O,QAAS1B,EAAM2B,QAAQ,EAAG,EAAG,IAGnC,GAiCkC,CAChCve,KAAM,uBADR,CAEGqe,2IC2BCG,EAAgC,cAAiB,SAA0BlJ,EAAOuF,GACpF,IAAI/H,EAAWwC,EAAMxC,SACjBiI,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClByD,EAAanJ,EAAMmJ,WACnBC,EAAwBpJ,EAAMoJ,sBAC9BC,EAAwBrJ,EAAMsJ,gBAC9BA,OAA4C,IAA1BD,EAAmC,CAAC,EAAIA,EAC1DE,EAAUvJ,EAAMuJ,QAChBhD,GAAQ,OAAyBvG,EAAO,CAAC,WAAY,UAAW,YAAa,aAAc,wBAAyB,kBAAmB,YAEvIwJ,EAAoB,aAAiB,KACrCC,EAAwBD,EAAkB1D,SAC1CA,OAAqC,IAA1B2D,GAA2CA,EACtDzD,EAAWwD,EAAkBxD,SAC7BiB,EAASuC,EAAkBvC,OAY/B,OAAoB,gBAAoB,KAAY,OAAS,CAC3DyC,aAAa,EACbC,eAAe,EACf7D,SAAUA,EACV8D,UAAW,MACX,gBAAiB5D,EACjBN,WAAW,OAAKD,EAAQyB,KAAMxB,EAAWI,GAAYL,EAAQK,SAAUE,GAAYP,EAAQO,UAC3FoD,uBAAuB,OAAK3D,EAAQoE,aAAcpE,EAAQqE,QAASV,GACnEG,QAlBiB,SAAsB1C,GACnCI,GACFA,EAAOJ,GAGL0C,GACFA,EAAQ1C,EAEZ,EAWEtB,IAAKA,GACJgB,GAAqB,gBAAoB,MAAO,CACjDb,WAAW,OAAKD,EAAQsC,QAAS/B,GAAYP,EAAQO,WACpDxI,GAAW2L,GAA2B,gBAAoB,KAAY,OAAS,CAChFzD,WAAW,OAAKD,EAAQ0D,WAAYnD,GAAYP,EAAQO,UACxD+D,KAAM,MACNH,UAAW,MACXI,SAAU,KACV3C,KAAM,KACN,eAAe,GACdiC,GAAkBH,GACvB,IAwDA,KAAe,QAvKK,SAAgB7B,GAClC,IAAItF,EAAa,CACfuF,SAAUD,EAAME,YAAYD,SAASE,UAEvC,MAAO,CAELP,KAAM,CACJ7M,QAAS,OACT4P,UAAW,GACXjI,WAAYsF,EAAME,YAAYnX,OAAO,CAAC,aAAc,oBAAqB2R,GACzEgH,QAAS1B,EAAM2B,QAAQ,EAAG,GAC1B,yBAA0B,CACxBiB,OAAQ,WAEV,aAAc,CACZD,UAAW,IAEb,4BAA6B,CAC3BhC,gBAAiBX,EAAMY,QAAQpL,OAAOqN,OAExC,aAAc,CACZnC,QAASV,EAAMY,QAAQpL,OAAOsN,kBAKlCpE,SAAU,CAAC,EAGX8D,QAAS,CAAC,EAGVD,aAAc,CAAC,EAGf/D,SAAU,CAAC,EAGXiC,QAAS,CACP1N,QAAS,OACTgQ,SAAU,EACVrI,WAAYsF,EAAME,YAAYnX,OAAO,CAAC,UAAW2R,GACjDoG,OAAQ,SACR,aAAc,CACZA,OAAQ,WAKZe,WAAY,CACVmB,UAAW,eACXtI,WAAYsF,EAAME,YAAYnX,OAAO,YAAa2R,GAClD,UAAW,CAITiG,gBAAiB,eAEnB,aAAc,CACZqC,UAAW,mBAInB,GAwGkC,CAChC5f,KAAM,uBADR,CAEGwe,mHCxJCqB,EAAwB,cAAiB,SAAkBvK,EAAOuF,GACpE,IAAI/H,EAAWwC,EAAMxC,SACjBiI,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClB8E,EAAmBxK,EAAMyK,UACzBA,OAAiC,IAArBD,GAAsCA,EAClDtS,EAAO8H,EAAM9H,KACbwS,EAAqB1K,EAAM0K,mBAC3BtE,EAAwBpG,EAAMqG,oBAC9BA,OAAgD,IAA1BD,EAAmC,IAAOA,EAChEG,GAAQ,OAAyBvG,EAAO,CAAC,WAAY,UAAW,YAAa,YAAa,OAAQ,qBAAsB,wBAE5H,OAAoB,gBAAoBqG,GAAqB,OAAS,CACpEe,GAAIlP,EACJlL,QAAS0d,GACRnE,GAAqB,gBAAoB,MAAO,CACjDb,WAAW,OAAKD,EAAQyB,KAAMxB,EAAW+E,GAAahF,EAAQgF,WAC9D,eAAe,EACflF,IAAKA,GACJ/H,GACL,IA4CA,KAAe,OAtFK,CAElB0J,KAAM,CAEJyD,QAAS,EACTjD,SAAU,QACVrN,QAAS,OACTuQ,WAAY,SACZC,eAAgB,SAChBhD,MAAO,EACPiD,OAAQ,EACRlD,IAAK,EACLD,KAAM,EACNM,gBAAiB,qBACjB8C,wBAAyB,eAI3BN,UAAW,CACTxC,gBAAiB,gBAmEa,CAChCvd,KAAM,eADR,CAEG6f,iPCvFI,SAASS,EAAgBxN,EAAUyN,GACxC,IAIIjnB,EAAShC,OAAOqO,OAAO,MAO3B,OANImN,GAAU,EAAA0N,SAAA,IAAa1N,GAAU,SAAUvW,GAC7C,OAAOA,CACT,IAAGsD,SAAQ,SAAU4gB,GAEnBnnB,EAAOmnB,EAAM/jB,KATF,SAAgB+jB,GAC3B,OAAOF,IAAS,IAAAG,gBAAeD,GAASF,EAAME,GAASA,CACzD,CAOsBE,CAAOF,EAC7B,IACOnnB,CACT,CAiEA,SAASsnB,EAAQH,EAAOI,EAAMvL,GAC5B,OAAsB,MAAfA,EAAMuL,GAAgBvL,EAAMuL,GAAQJ,EAAMnL,MAAMuL,EACzD,CAaO,SAASC,EAAoBC,EAAWC,EAAkBC,GAC/D,IAAIC,EAAmBZ,EAAgBS,EAAUjO,UAC7CA,EA/DC,SAA4BqO,EAAMhoB,GAIvC,SAASioB,EAAe1kB,GACtB,OAAOA,KAAOvD,EAAOA,EAAKuD,GAAOykB,EAAKzkB,EACxC,CALAykB,EAAOA,GAAQ,CAAC,EAChBhoB,EAAOA,GAAQ,CAAC,EAQhB,IAcIjB,EAdAmpB,EAAkB/pB,OAAOqO,OAAO,MAChC2b,EAAc,GAElB,IAAK,IAAIC,KAAWJ,EACdI,KAAWpoB,EACTmoB,EAAYjpB,SACdgpB,EAAgBE,GAAWD,EAC3BA,EAAc,IAGhBA,EAAY5mB,KAAK6mB,GAKrB,IAAIC,EAAe,CAAC,EAEpB,IAAK,IAAIC,KAAWtoB,EAAM,CACxB,GAAIkoB,EAAgBI,GAClB,IAAKvpB,EAAI,EAAGA,EAAImpB,EAAgBI,GAASppB,OAAQH,IAAK,CACpD,IAAIwpB,EAAiBL,EAAgBI,GAASvpB,GAC9CspB,EAAaH,EAAgBI,GAASvpB,IAAMkpB,EAAeM,EAC7D,CAGFF,EAAaC,GAAWL,EAAeK,EACzC,CAGA,IAAKvpB,EAAI,EAAGA,EAAIopB,EAAYjpB,OAAQH,IAClCspB,EAAaF,EAAYppB,IAAMkpB,EAAeE,EAAYppB,IAG5D,OAAOspB,CACT,CAmBiBG,CAAmBX,EAAkBE,GAmCpD,OAlCA5pB,OAAOgK,KAAKwR,GAAUjT,SAAQ,SAAUnD,GACtC,IAAI+jB,EAAQ3N,EAASpW,GACrB,IAAK,IAAAgkB,gBAAeD,GAApB,CACA,IAAImB,EAAWllB,KAAOskB,EAClBa,EAAWnlB,KAAOwkB,EAClBY,EAAYd,EAAiBtkB,GAC7BqlB,GAAY,IAAArB,gBAAeoB,KAAeA,EAAUxM,MAAMoH,IAE1DmF,GAAaD,IAAWG,EAQhBF,IAAWD,GAAYG,EAMxBF,GAAWD,IAAW,IAAAlB,gBAAeoB,KAI9ChP,EAASpW,IAAO,IAAAslB,cAAavB,EAAO,CAClCQ,SAAUA,EAAS9iB,KAAK,KAAMsiB,GAC9B/D,GAAIoF,EAAUxM,MAAMoH,GACpBuF,KAAMrB,EAAQH,EAAO,OAAQM,GAC7BmB,MAAOtB,EAAQH,EAAO,QAASM,MAXjCjO,EAASpW,IAAO,IAAAslB,cAAavB,EAAO,CAClC/D,IAAI,IAVN5J,EAASpW,IAAO,IAAAslB,cAAavB,EAAO,CAClCQ,SAAUA,EAAS9iB,KAAK,KAAMsiB,GAC9B/D,IAAI,EACJuF,KAAMrB,EAAQH,EAAO,OAAQM,GAC7BmB,MAAOtB,EAAQH,EAAO,QAASM,IAZD,CA+BpC,IACOjO,CACT,CClIA,IAAIqP,EAAS7qB,OAAO6qB,QAAU,SAAU3J,GACtC,OAAOlhB,OAAOgK,KAAKkX,GAAK5W,KAAI,SAAUV,GACpC,OAAOsX,EAAItX,EACb,GACF,EAuBIkhB,EAA+B,SAAUC,GAG3C,SAASD,EAAgB9M,EAAOpC,GAC9B,IAAI5B,EAIAgR,GAFJhR,EAAQ+Q,EAAiBxqB,KAAKU,KAAM+c,EAAOpC,IAAY3a,MAE9B+pB,aAAankB,MAAK,OAAuBmT,IAUlE,OAPAA,EAAM/Q,MAAQ,CACZoU,aAAc,CACZ4N,YAAY,GAEdD,aAAcA,EACdE,aAAa,GAERlR,CACT,EAlBA,OAAe8Q,EAAiBC,GAoBhC,IAAII,EAASL,EAAgBzqB,UAqE7B,OAnEA8qB,EAAOC,kBAAoB,WACzBnqB,KAAKoqB,SAAU,EACfpqB,KAAKqqB,SAAS,CACZjO,aAAc,CACZ4N,YAAY,IAGlB,EAEAE,EAAOI,qBAAuB,WAC5BtqB,KAAKoqB,SAAU,CACjB,EAEAP,EAAgBU,yBAA2B,SAAkC/B,EAAW7J,GACtF,IDiBmC5B,EAAO2L,ECjBtCD,EAAmB9J,EAAKpE,SACxBwP,EAAepL,EAAKoL,aAExB,MAAO,CACLxP,SAFgBoE,EAAKsL,aDeYlN,ECbcyL,EDaPE,ECbkBqB,EDcvDhC,EAAgBhL,EAAMxC,UAAU,SAAU2N,GAC/C,OAAO,IAAAuB,cAAavB,EAAO,CACzBQ,SAAUA,EAAS9iB,KAAK,KAAMsiB,GAC9B/D,IAAI,EACJqG,OAAQnC,EAAQH,EAAO,SAAUnL,GACjC4M,MAAOtB,EAAQH,EAAO,QAASnL,GAC/B2M,KAAMrB,EAAQH,EAAO,OAAQnL,IAEjC,KCtB8EwL,EAAoBC,EAAWC,EAAkBsB,GAC3HE,aAAa,EAEjB,EAGAC,EAAOH,aAAe,SAAsB7B,EAAOuC,GACjD,IAAIC,EAAsB3C,EAAgB/nB,KAAK+c,MAAMxC,UACjD2N,EAAM/jB,OAAOumB,IAEbxC,EAAMnL,MAAM2L,UACdR,EAAMnL,MAAM2L,SAAS+B,GAGnBzqB,KAAKoqB,SACPpqB,KAAKqqB,UAAS,SAAUriB,GACtB,IAAIuS,GAAW,OAAS,CAAC,EAAGvS,EAAMuS,UAGlC,cADOA,EAAS2N,EAAM/jB,KACf,CACLoW,SAAUA,EAEd,IAEJ,EAEA2P,EAAOS,OAAS,WACd,IAAIC,EAAc5qB,KAAK+c,MACnBD,EAAY8N,EAAYjE,UACxBkE,EAAeD,EAAYC,aAC3B9N,GAAQ,OAA8B6N,EAAa,CAAC,YAAa,iBAEjExO,EAAepc,KAAKgI,MAAMoU,aAC1B7B,EAAWqP,EAAO5pB,KAAKgI,MAAMuS,UAAUlR,IAAIwhB,GAK/C,cAJO9N,EAAMyN,cACNzN,EAAM4M,aACN5M,EAAM2M,KAEK,OAAd5M,EACkB,gBAAoBgO,EAAA,WAAiC,CACvEpqB,MAAO0b,GACN7B,GAGe,gBAAoBuQ,EAAA,WAAiC,CACvEpqB,MAAO0b,GACO,gBAAoBU,EAAWC,EAAOxC,GACxD,EAEOsP,CACT,CA3FmC,CA2FjC,aAEFA,EAAgBkB,UAyDZ,CAAC,EACLlB,EAAgBmB,aA5KG,CACjBrE,UAAW,MACXkE,aAAc,SAAsB3C,GAClC,OAAOA,CACT,GAyKF,QCxLI+C,EAAsC,oBAAXvoB,OAAyB,YAAkB,kBA8F1E,MAzFA,SAAgBqa,GACd,IAAIyF,EAAUzF,EAAMyF,QAChB0I,EAAiBnO,EAAMoO,QACvBA,OAA6B,IAAnBD,GAAoCA,EAC9CE,EAAUrO,EAAMqO,QAChBC,EAAUtO,EAAMsO,QAChBC,EAAavO,EAAMuO,WACnBC,EAASxO,EAAMoH,GACfqH,EAAkBzO,EAAM2L,SACxBA,OAA+B,IAApB8C,EAA6B,WAAa,EAAIA,EACzDzhB,EAAUgT,EAAMhT,QAEhB0hB,EAAkB,YAAe,GACjCC,EAAUD,EAAgB,GAC1BE,EAAaF,EAAgB,GAE7BG,GAAkB,OAAKpJ,EAAQqJ,OAAQrJ,EAAQsJ,cAAeX,GAAW3I,EAAQuJ,eACjFC,EAAe,CACjBC,MAAOX,EACPzG,OAAQyG,EACR3G,KAAO2G,EAAa,EAAKD,EACzB3G,MAAQ4G,EAAa,EAAKF,GAExBc,GAAiB,OAAK1J,EAAQ0F,MAAOwD,GAAWlJ,EAAQ2J,aAAchB,GAAW3I,EAAQ4J,cACzFrC,GAAe,EAAAsC,EAAA,GAAiB3D,GAepC,OAbAuC,GAAkB,WAChB,IAAKM,EAAQ,CAEXI,GAAW,GAEX,IAAIW,EAAY5oB,WAAWqmB,EAAchgB,GACzC,OAAO,WACLhD,aAAaulB,EACf,CACF,CAGF,GAAG,CAACvC,EAAcwB,EAAQxhB,IACN,gBAAoB,OAAQ,CAC9C0Y,UAAWmJ,EACXzU,MAAO6U,GACO,gBAAoB,OAAQ,CAC1CvJ,UAAWyJ,IAEf,ECkDIK,EAA2B,cAAiB,SAAqBxP,EAAOuF,GAC1E,IAAIkK,EAAgBzP,EAAM0P,OACtBC,OAA+B,IAAlBF,GAAmCA,EAChDhK,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClBa,GAAQ,OAAyBvG,EAAO,CAAC,SAAU,UAAW,cAE9D0O,EAAkB,WAAe,IACjCkB,EAAUlB,EAAgB,GAC1BmB,EAAanB,EAAgB,GAE7BvC,EAAU,SAAa,GACvB2D,EAAiB,SAAa,MAClC,aAAgB,WACVA,EAAetR,UACjBsR,EAAetR,UACfsR,EAAetR,QAAU,KAE7B,GAAG,CAACoR,IAEJ,IAAIG,EAAoB,UAAa,GAGjCC,EAAa,SAAa,MAE1BC,EAAmB,SAAa,MAChCC,EAAY,SAAa,MAC7B,aAAgB,WACd,OAAO,WACLlmB,aAAagmB,EAAWxR,QAC1B,CACF,GAAG,IACH,IAAI2R,EAAc,eAAkB,SAAUjM,GAC5C,IAAIkK,EAAUlK,EAAOkK,QACjBC,EAAUnK,EAAOmK,QACjBC,EAAUpK,EAAOoK,QACjBC,EAAarK,EAAOqK,WACpB6B,EAAKlM,EAAOkM,GAChBP,GAAW,SAAUQ,GACnB,MAAO,GAAGxQ,QAAO,OAAmBwQ,GAAa,CAAc,gBAAoB,EAAQ,CACzFjpB,IAAK+kB,EAAQ3N,QACbiH,QAASA,EACTzY,QAzIO,IA0IPohB,QAASA,EACTC,QAASA,EACTC,QAASA,EACTC,WAAYA,KAEhB,IACApC,EAAQ3N,SAAW,EACnBsR,EAAetR,QAAU4R,CAC3B,GAAG,CAAC3K,IACA6K,EAAQ,eAAkB,WAC5B,IAAIzJ,EAAQ/jB,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7EoR,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EstB,EAAKttB,UAAUC,OAAS,EAAID,UAAU,QAAKia,EAC3CwT,EAAmBrc,EAAQka,QAC3BA,OAA+B,IAArBmC,GAAsCA,EAChDC,EAAkBtc,EAAQwb,OAC1BA,OAA6B,IAApBc,EAA6Bb,GAAczb,EAAQka,QAAUoC,EACtEC,EAAuBvc,EAAQwc,YAC/BA,OAAuC,IAAzBD,GAA0CA,EAE5D,GAAmB,cAAf5J,EAAMnU,MAAwBqd,EAAkBvR,QAClDuR,EAAkBvR,SAAU,MAD9B,CAKmB,eAAfqI,EAAMnU,OACRqd,EAAkBvR,SAAU,GAG9B,IAQI6P,EACAC,EACAC,EAVAoC,EAAUD,EAAc,KAAOR,EAAU1R,QACzCoS,EAAOD,EAAUA,EAAQE,wBAA0B,CACrD3B,MAAO,EACPpH,OAAQ,EACRH,KAAM,EACNC,IAAK,GAOP,GAAI8H,GAA4B,IAAlB7I,EAAMiK,SAAmC,IAAlBjK,EAAMkK,UAAkBlK,EAAMiK,UAAYjK,EAAMmK,QACnF3C,EAAUpmB,KAAKgpB,MAAML,EAAK1B,MAAQ,GAClCZ,EAAUrmB,KAAKgpB,MAAML,EAAK9I,OAAS,OAC9B,CACL,IAAIlG,EAAOiF,EAAMmK,QAAUnK,EAAMmK,QAAQ,GAAKnK,EAC1CiK,EAAUlP,EAAKkP,QACfC,EAAUnP,EAAKmP,QAEnB1C,EAAUpmB,KAAKgpB,MAAMH,EAAUF,EAAKjJ,MACpC2G,EAAUrmB,KAAKgpB,MAAMF,EAAUH,EAAKhJ,IACtC,CAEA,GAAI8H,GACFnB,EAAatmB,KAAKipB,MAAM,EAAIjpB,KAAKkpB,IAAIP,EAAK1B,MAAO,GAAKjnB,KAAKkpB,IAAIP,EAAK9I,OAAQ,IAAM,IAEjE,GAAM,IACrByG,GAAc,OAEX,CACL,IAAI6C,EAAqF,EAA7EnpB,KAAKkC,IAAIlC,KAAKopB,KAAKV,EAAUA,EAAQW,YAAc,GAAKjD,GAAUA,GAAe,EACzFkD,EAAsF,EAA9EtpB,KAAKkC,IAAIlC,KAAKopB,KAAKV,EAAUA,EAAQa,aAAe,GAAKlD,GAAUA,GAAe,EAC9FC,EAAatmB,KAAKipB,KAAKjpB,KAAKkpB,IAAIC,EAAO,GAAKnpB,KAAKkpB,IAAII,EAAO,GAC9D,CAGI1K,EAAMmK,QAIyB,OAA7Bf,EAAiBzR,UAEnByR,EAAiBzR,QAAU,WACzB2R,EAAY,CACV/B,QAASA,EACTC,QAASA,EACTC,QAASA,EACTC,WAAYA,EACZ6B,GAAIA,GAER,EAGAJ,EAAWxR,QAAU7X,YAAW,WAC1BspB,EAAiBzR,UACnByR,EAAiBzR,UACjByR,EAAiBzR,QAAU,KAE/B,GAjOkB,KAoOpB2R,EAAY,CACV/B,QAASA,EACTC,QAASA,EACTC,QAASA,EACTC,WAAYA,EACZ6B,GAAIA,GAzER,CA4EF,GAAG,CAACT,EAAYQ,IACZ/B,EAAU,eAAkB,WAC9BkC,EAAM,CAAC,EAAG,CACRlC,SAAS,GAEb,GAAG,CAACkC,IACAmB,EAAO,eAAkB,SAAU5K,EAAOuJ,GAI5C,GAHApmB,aAAagmB,EAAWxR,SAGL,aAAfqI,EAAMnU,MAAuBud,EAAiBzR,QAOhD,OANAqI,EAAM6K,UACNzB,EAAiBzR,UACjByR,EAAiBzR,QAAU,UAC3BwR,EAAWxR,QAAU7X,YAAW,WAC9B8qB,EAAK5K,EAAOuJ,EACd,KAIFH,EAAiBzR,QAAU,KAC3BqR,GAAW,SAAUQ,GACnB,OAAIA,EAAWttB,OAAS,EACfstB,EAAW/lB,MAAM,GAGnB+lB,CACT,IACAP,EAAetR,QAAU4R,CAC3B,GAAG,IAQH,OAPA,sBAA0B7K,GAAK,WAC7B,MAAO,CACL6I,QAASA,EACTkC,MAAOA,EACPmB,KAAMA,EAEV,GAAG,CAACrD,EAASkC,EAAOmB,IACA,gBAAoB,QAAQ,OAAS,CACvD/L,WAAW,OAAKD,EAAQyB,KAAMxB,GAC9BH,IAAK2K,GACJ3J,GAAqB,gBAAoB,EAAiB,CAC3DqD,UAAW,KACX+C,MAAM,GACLiD,GACL,IAmBA,GAAe,EAAA+B,EAAA,IA1SK,SAAgBrK,GAClC,MAAO,CAELJ,KAAM,CACJ0K,SAAU,SACVC,cAAe,OACfnK,SAAU,WACViD,OAAQ,EACR/C,IAAK,EACLC,MAAO,EACPiD,OAAQ,EACRnD,KAAM,EACNa,aAAc,WAIhBsG,OAAQ,CACN9G,QAAS,EACTN,SAAU,YAIZqH,cAAe,CACb/G,QAAS,GACTsC,UAAW,WACXwH,UAAW,UAAUjS,OA3BZ,IA2B6B,OAAOA,OAAOyH,EAAME,YAAYuK,OAAOC,YAI/EhD,cAAe,CACbiD,kBAAmB,GAAGpS,OAAOyH,EAAME,YAAYD,SAAS2K,QAAS,OAInE/G,MAAO,CACLnD,QAAS,EACT3N,QAAS,QACT6U,MAAO,OACPpH,OAAQ,OACRU,aAAc,MACdP,gBAAiB,gBAInBmH,aAAc,CACZpH,QAAS,EACT8J,UAAW,SAASjS,OAhDX,IAgD4B,OAAOA,OAAOyH,EAAME,YAAYuK,OAAOC,YAI9E3C,aAAc,CACZ3H,SAAU,WACVC,KAAM,EACNC,IAAK,EACLkK,UAAW,mBAAmBjS,OAAOyH,EAAME,YAAYuK,OAAOC,UAAW,oBAE3E,mBAAoB,CAClB,KAAM,CACJ1H,UAAW,WACXtC,QAAS,IAEX,OAAQ,CACNsC,UAAW,WACXtC,QAAS,KAGb,kBAAmB,CACjB,KAAM,CACJA,QAAS,GAEX,OAAQ,CACNA,QAAS,IAGb,qBAAsB,CACpB,KAAM,CACJsC,UAAW,YAEb,MAAO,CACLA,UAAW,eAEb,OAAQ,CACNA,UAAW,aAInB,GAoNkC,CAChC6H,MAAM,EACNznB,KAAM,kBAFR,CAGiB,OAAW8kB,ICrPxB4C,EAA0B,cAAiB,SAAoBpS,EAAOuF,GACxE,IAAIzI,EAASkD,EAAMlD,OACfuV,EAAgBrS,EAAMsS,UACtBC,EAAsBvS,EAAMwS,aAC5BA,OAAuC,IAAxBD,GAAyCA,EACxD/U,EAAWwC,EAAMxC,SACjBiI,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClB+M,EAAmBzS,EAAM4J,UACzBA,OAAiC,IAArB6I,EAA8B,SAAWA,EACrD5M,EAAkB7F,EAAM8F,SACxBA,OAA+B,IAApBD,GAAqCA,EAChD6M,EAAuB1S,EAAM2J,cAC7BA,OAAyC,IAAzB+I,GAA0CA,EAC1DC,EAAwB3S,EAAM4S,mBAC9BA,OAA+C,IAA1BD,GAA2CA,EAChEE,EAAqB7S,EAAM0J,YAC3BA,OAAqC,IAAvBmJ,GAAwCA,EACtDzJ,EAAwBpJ,EAAMoJ,sBAC9B0J,EAAS9S,EAAM8S,OACfvJ,EAAUvJ,EAAMuJ,QAChBwJ,EAAU/S,EAAM+S,QAChBC,EAAiBhT,EAAMgT,eACvBC,EAAYjT,EAAMiT,UAClBC,EAAUlT,EAAMkT,QAChBC,EAAcnT,EAAMmT,YACpBC,EAAepT,EAAMoT,aACrBC,EAAYrT,EAAMqT,UAClBC,EAAatT,EAAMsT,WACnBC,EAAcvT,EAAMuT,YACpBC,EAAexT,EAAMwT,aACrBC,EAAczT,EAAMyT,YACpBC,EAAkB1T,EAAMgK,SACxBA,OAA+B,IAApB0J,EAA6B,EAAIA,EAC5CC,EAAmB3T,EAAM2T,iBACzBC,EAAc5T,EAAMtN,KACpBA,OAAuB,IAAhBkhB,EAAyB,SAAWA,EAC3CrN,GAAQ,OAAyBvG,EAAO,CAAC,SAAU,YAAa,eAAgB,WAAY,UAAW,YAAa,YAAa,WAAY,gBAAiB,qBAAsB,cAAe,wBAAyB,SAAU,UAAW,UAAW,iBAAkB,YAAa,UAAW,cAAe,eAAgB,YAAa,aAAc,cAAe,eAAgB,cAAe,WAAY,mBAAoB,SAE9asS,EAAY,SAAa,MAO7B,IAAIuB,EAAY,SAAa,MAEzBnF,EAAkB,YAAe,GACjC7E,EAAe6E,EAAgB,GAC/BoF,EAAkBpF,EAAgB,GAElC5I,GAAY+D,GACdiK,GAAgB,GAGlB,IAAIC,GAAqB,EAAAC,EAAA,KACrBC,GAAiBF,EAAmBE,eACpCC,GAAgBH,EAAmBG,cACnCC,GAAkBJ,EAAmBxO,IAgBzC,SAAS6O,GAAiBC,EAAcC,GACtC,IAAIC,EAAmBzxB,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK8vB,EAC3F,OAAO,EAAAtD,EAAA,IAAiB,SAAUzI,GAWhC,OAVIyN,GACFA,EAAczN,IAGH0N,GAEEV,EAAUrV,SACvBqV,EAAUrV,QAAQ6V,GAAcxN,IAG3B,CACT,GACF,CA7BA,sBAA0B/J,GAAQ,WAChC,MAAO,CACL+M,aAAc,WACZiK,GAAgB,GAChBxB,EAAU9T,QAAQ2L,OACpB,EAEJ,GAAG,IACH,aAAgB,WACVN,GAAgBH,IAAgBC,GAClCkK,EAAUrV,QAAQ4P,SAEtB,GAAG,CAACzE,EAAeD,EAAaG,IAmBhC,IAAI2K,GAAkBJ,GAAiB,QAASjB,GAC5CsB,GAAkBL,GAAiB,OAAQX,GAC3CiB,GAAgBN,GAAiB,OAAQf,GACzCsB,GAAmBP,GAAiB,QAAQ,SAAUvN,GACpDgD,GACFhD,EAAM+N,iBAGJxB,GACFA,EAAavM,EAEjB,IACIgO,GAAmBT,GAAiB,QAASZ,GAC7CsB,GAAiBV,GAAiB,OAAQd,GAC1CyB,GAAkBX,GAAiB,OAAQb,GAC3CyB,GAAaZ,GAAiB,QAAQ,SAAUvN,GAC9CgD,IACFqK,GAAcrN,GACdiN,GAAgB,IAGdhB,GACFA,EAAOjM,EAEX,IAAG,GACCoO,IAAc,EAAA3F,EAAA,IAAiB,SAAUzI,GAEtCyL,EAAU9T,UACb8T,EAAU9T,QAAUqI,EAAMqO,eAGxBjB,GAAepN,KACjBiN,GAAgB,GAEZd,GACFA,EAAenM,IAIfkM,GACFA,EAAQlM,EAEZ,IAEIsO,GAAoB,WACtB,IAAIC,EA9FG,cAAqB9C,EAAU9T,SA+FtC,OAAOoL,GAA2B,WAAdA,KAA+C,MAAnBwL,EAAOC,SAAmBD,EAAO/c,KACnF,EAMIid,GAAa,UAAa,GAC1BC,IAAgB,EAAAjG,EAAA,IAAiB,SAAUzI,GAEzC6C,IAAgB4L,GAAW9W,SAAWqL,GAAgBgK,EAAUrV,SAAyB,MAAdqI,EAAMzf,MACnFkuB,GAAW9W,SAAU,EACrBqI,EAAM6K,UACNmC,EAAUrV,QAAQiT,KAAK5K,GAAO,WAC5BgN,EAAUrV,QAAQ8R,MAAMzJ,EAC1B,KAGEA,EAAMtG,SAAWsG,EAAMqO,eAAiBC,MAAqC,MAAdtO,EAAMzf,KACvEyf,EAAM+N,iBAGJ3B,GACFA,EAAUpM,GAIRA,EAAMtG,SAAWsG,EAAMqO,eAAiBC,MAAqC,UAAdtO,EAAMzf,MAAoB0e,IAC3Fe,EAAM+N,iBAEFrL,GACFA,EAAQ1C,GAGd,IACI2O,IAAc,EAAAlG,EAAA,IAAiB,SAAUzI,GAGvC6C,GAA6B,MAAd7C,EAAMzf,KAAeysB,EAAUrV,SAAWqL,IAAiBhD,EAAM4O,mBAClFH,GAAW9W,SAAU,EACrBqI,EAAM6K,UACNmC,EAAUrV,QAAQiT,KAAK5K,GAAO,WAC5BgN,EAAUrV,QAAQ4P,QAAQvH,EAC5B,KAGEqM,GACFA,EAAQrM,GAIN0C,GAAW1C,EAAMtG,SAAWsG,EAAMqO,eAAiBC,MAAqC,MAAdtO,EAAMzf,MAAgByf,EAAM4O,kBACxGlM,EAAQ1C,EAEZ,IACI6O,GAAgB9L,EAEE,WAAlB8L,IAA8BnP,EAAMlO,OACtCqd,GAAgB,KAGlB,IAAIC,GAAc,CAAC,EAEG,WAAlBD,IACFC,GAAYjjB,KAAOA,EACnBijB,GAAY7P,SAAWA,IAED,MAAlB4P,IAA0BnP,EAAMlO,OAClCsd,GAAYtO,KAAO,UAGrBsO,GAAY,iBAAmB7P,GAGjC,IAAI8P,IAAgB,EAAAC,EAAA,GAAWxD,EAAe9M,GAC1CuQ,IAAe,EAAAD,EAAA,GAAW1B,GAAiB7B,GAC3CyD,IAAY,EAAAF,EAAA,GAAWD,GAAeE,IAEtCE,GAAmB,YAAe,GAClCC,GAAeD,GAAiB,GAChCE,GAAkBF,GAAiB,GAEvC,aAAgB,WACdE,IAAgB,EAClB,GAAG,IACH,IAAIC,GAAoBF,KAAiBtM,IAAkB7D,EAW3D,OAAoB,gBAAoB4P,IAAe,OAAS,CAC9DhQ,WAAW,OAAKD,EAAQyB,KAAMxB,EAAWmE,GAAgB,CAACpE,EAAQoE,aAAcT,GAAwBtD,GAAYL,EAAQK,UAC5HgN,OAAQkC,GACRzL,QAASA,EACTwJ,QAASkC,GACThC,UAAWsC,GACXrC,QAASsC,GACTrC,YAAaqB,GACbpB,aAAcuB,GACdtB,UAAWqB,GACXjB,YAAagB,GACbnB,WAAYwB,GACZvB,YAAawB,GACbvB,aAAcqB,GACdtP,IAAKwQ,GACL/L,SAAUlE,GAAY,EAAIkE,GACzB2L,GAAapP,GAAQ/I,EAAU2Y,GAIlC,gBAAoB,GAAa,OAAS,CACxC5Q,IAAKsO,EACLnE,OAAQ8C,GACPmB,IAAqB,KAC1B,IAwKA,GAAe,EAAAhC,EAAA,GAheK,CAElBzK,KAAM,CACJ7M,QAAS,cACTuQ,WAAY,SACZC,eAAgB,SAChBnD,SAAU,WACVqD,wBAAyB,cACzB9C,gBAAiB,cAGjBmO,QAAS,EACTC,OAAQ,EACRjO,OAAQ,EAERI,aAAc,EACdQ,QAAS,EAETkB,OAAQ,UACRoM,WAAY,OACZC,cAAe,SACf,kBAAmB,OAEnB,qBAAsB,OAEtBC,eAAgB,OAEhBC,MAAO,UACP,sBAAuB,CACrBC,YAAa,QAGf,aAAc,CACZ7E,cAAe,OAEf3H,OAAQ,WAEV,eAAgB,CACdyM,YAAa,UAKjB7Q,SAAU,CAAC,EAGX+D,aAAc,CAAC,GAkbiB,CAChCnf,KAAM,iBADR,CAEG0nB,uGCveH,SAASwE,EAAoBC,GAC3B,OAAOA,EAAUrkB,UAAU,GAAGyE,aAChC,CA+KA,IApKA,SAA2B+I,GACzB,IAAIxC,EAAWwC,EAAMxC,SACjBsZ,EAAwB9W,EAAM+W,iBAC9BA,OAA6C,IAA1BD,GAA2CA,EAC9DE,EAAoBhX,EAAMiX,WAC1BA,OAAmC,IAAtBD,EAA+B,UAAYA,EACxDE,EAAclX,EAAMkX,YACpBC,EAAoBnX,EAAMoX,WAC1BA,OAAmC,IAAtBD,EAA+B,aAAeA,EAC3DE,EAAW,UAAa,GACxBC,EAAU,SAAa,MACvBC,EAAe,UAAa,GAC5BC,EAAoB,UAAa,GACrC,aAAgB,WAMd,OAHA7wB,YAAW,WACT4wB,EAAa/Y,SAAU,CACzB,GAAG,GACI,WACL+Y,EAAa/Y,SAAU,CACzB,CACF,GAAG,IAEH,IAAIsX,EAAe,eAAkB,SAAUhvB,GAE7CwwB,EAAQ9Y,QAAU,cAAqB1X,EACzC,GAAG,IACCivB,GAAY,OAAWvY,EAAS+H,IAAKuQ,GAOrC2B,GAAkB,QAAiB,SAAU5Q,GAG/C,IAAI6Q,EAAkBF,EAAkBhZ,QAKxC,GAJAgZ,EAAkBhZ,SAAU,EAIvB+Y,EAAa/Y,SAAY8Y,EAAQ9Y,UApD1C,SAA8BqI,GAC5B,OAAOxV,SAASsmB,gBAAgBrG,YAAczK,EAAMiK,SAAWzf,SAASsmB,gBAAgBnG,aAAe3K,EAAMkK,OAC/G,CAkDqD6G,CAAqB/Q,GAKtE,GAAIwQ,EAAS7Y,QACX6Y,EAAS7Y,SAAU,MADrB,CAKA,IAAIqZ,EAEJ,GAAIhR,EAAMiR,aACRD,EAAYhR,EAAMiR,eAAexyB,QAAQgyB,EAAQ9Y,UAAY,OAI7DqZ,IADU,OAAcP,EAAQ9Y,SACfmZ,gBAAgBrd,SAASuM,EAAMtG,SAAW+W,EAAQ9Y,QAAQlE,SAASuM,EAAMtG,QAGvFsX,IAAcd,GAAqBW,GACtCR,EAAYrQ,EAbd,CAeF,IAEIkR,EAAwB,SAA+BC,GACzD,OAAO,SAAUnR,GACf2Q,EAAkBhZ,SAAU,EAC5B,IAAIyZ,EAAuBza,EAASwC,MAAMgY,GAEtCC,GACFA,EAAqBpR,EAEzB,CACF,EAEIqR,EAAgB,CAClB3S,IAAKwQ,GA2CP,OAxCmB,IAAfqB,IACFc,EAAcd,GAAcW,EAAsBX,IAGpD,aAAgB,WACd,IAAmB,IAAfA,EAAsB,CACxB,IAAIe,EAAmBvB,EAAoBQ,GACvCgB,GAAM,OAAcd,EAAQ9Y,SAE5BuW,EAAkB,WACpBsC,EAAS7Y,SAAU,CACrB,EAIA,OAFA4Z,EAAInuB,iBAAiBkuB,EAAkBV,GACvCW,EAAInuB,iBAAiB,YAAa8qB,GAC3B,WACLqD,EAAItuB,oBAAoBquB,EAAkBV,GAC1CW,EAAItuB,oBAAoB,YAAairB,EACvC,CACF,CAGF,GAAG,CAAC0C,EAAiBL,KAEF,IAAfH,IACFiB,EAAcjB,GAAcc,EAAsBd,IAGpD,aAAgB,WACd,IAAmB,IAAfA,EAAsB,CACxB,IAAIoB,EAAmBzB,EAAoBK,GACvCmB,GAAM,OAAcd,EAAQ9Y,SAEhC,OADA4Z,EAAInuB,iBAAiBouB,EAAkBZ,GAChC,WACLW,EAAItuB,oBAAoBuuB,EAAkBZ,EAC5C,CACF,CAGF,GAAG,CAACA,EAAiBR,IACD,gBAAoB,WAAgB,KAAmB,eAAmBzZ,EAAU0a,GAC1G,8KC7FII,EAAwB,cAAiB,SAAkBtY,EAAOuF,GACpE,IAAI/H,EAAWwC,EAAMxC,SACjBiI,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClB6S,EAAkBvY,EAAMuY,gBACxBC,EAAuBxY,EAAMyY,cAC7BC,OAA6C,IAAzBF,EAAkC,MAAQA,EAC9D/F,EAAmBzS,EAAM4J,UACzB7J,OAAiC,IAArB0S,EAA8B,MAAQA,EAClDkG,EAAwB3Y,EAAM4Y,wBAC9BA,OAAoD,IAA1BD,GAA2CA,EACrEnK,EAASxO,EAAMoH,GACfyR,EAAU7Y,EAAM6Y,QAChBC,EAAY9Y,EAAM8Y,UAClBC,EAAa/Y,EAAM+Y,WACnBC,EAAShZ,EAAMgZ,OACfrN,EAAW3L,EAAM2L,SACjBsN,EAAYjZ,EAAMiZ,UAClB7e,EAAQ4F,EAAM5F,MACd8e,EAAiBlZ,EAAMhT,QACvBA,OAA6B,IAAnBksB,EAA4B,cAAoBA,EAC1D9S,EAAwBpG,EAAMqG,oBAC9BA,OAAgD,IAA1BD,EAAmC,KAAaA,EACtEG,GAAQ,OAAyBvG,EAAO,CAAC,WAAY,UAAW,YAAa,kBAAmB,gBAAiB,YAAa,0BAA2B,KAAM,UAAW,YAAa,aAAc,SAAU,WAAY,YAAa,QAAS,UAAW,wBAE5PsH,GAAQ,SACR6R,EAAQ,WACRC,EAAa,SAAa,MAC1BC,EAAyB,WACzBZ,EAAkE,iBAA1CF,GAAmBG,GAAkC,GAAG7Y,OAAO0Y,GAAmBG,EAAmB,MAAQH,GAAmBG,EAC5J,aAAgB,WACd,OAAO,WACL1uB,aAAamvB,EAAM3a,QACrB,CACF,GAAG,IACH,IAAI8a,EAAyBhS,EAAMiS,sBAAwBX,EACvDtB,EAAU,SAAa,MACvBvB,GAAY,OAAWxQ,EAAK+T,EAAyBhC,OAAUva,GAE/Dyc,EAA+B,SAAsCC,GACvE,OAAO,SAAUC,EAAiBC,GAChC,GAAIF,EAAU,CACZ,IAAI7X,EAAO0X,EAAyB,CAAChC,EAAQ9Y,QAASkb,GAAmB,CAACA,EAAiBC,GACvFC,GAAQ,OAAehY,EAAM,GAC7B8L,EAAOkM,EAAM,GACbC,EAAcD,EAAM,QAGJ7c,IAAhB8c,EACFJ,EAAS/L,GAET+L,EAAS/L,EAAMmM,EAEnB,CACF,CACF,EAEIC,EAAcN,GAA6B,SAAU9L,EAAMmM,GAC7DnM,EAAKtT,MAAM0N,OAAS2Q,EAEhBI,GACFA,EAAQnL,EAAMmM,EAElB,IACIE,EAAiBP,GAA6B,SAAU9L,EAAMmM,GAChE,IAAIG,EAAgBZ,EAAW5a,QAAU4a,EAAW5a,QAAQgT,aAAe,EAQvE9G,GANsB,OAAmB,CAC3CtQ,MAAOA,EACPpN,QAASA,GACR,CACDitB,KAAM,UAEqC1S,SAE7C,GAAgB,SAAZva,EAAoB,CACtB,IAAIktB,EAAY5S,EAAME,YAAY2S,sBAAsBH,GACxDtM,EAAKtT,MAAMsQ,mBAAqB,GAAG7K,OAAOqa,EAAW,MACrDb,EAAuB7a,QAAU0b,CACnC,MACExM,EAAKtT,MAAMsQ,mBAAmD,iBAAvBA,EAAkCA,EAAqB,GAAG7K,OAAO6K,EAAoB,MAG9HgD,EAAKtT,MAAM0N,OAAS,GAAGjI,OAAOma,EAAe,MAEzCjB,GACFA,EAAWrL,EAAMmM,EAErB,IACIO,EAAgBZ,GAA6B,SAAU9L,EAAMmM,GAC/DnM,EAAKtT,MAAM0N,OAAS,OAEhBgR,GACFA,EAAUpL,EAAMmM,EAEpB,IACIQ,EAAab,GAA6B,SAAU9L,GACtD,IAAIsM,EAAgBZ,EAAW5a,QAAU4a,EAAW5a,QAAQgT,aAAe,EAC3E9D,EAAKtT,MAAM0N,OAAS,GAAGjI,OAAOma,EAAe,MAEzChB,GACFA,EAAOtL,EAEX,IACIV,EAAewM,EAA6B7N,GAC5C2O,EAAgBd,GAA6B,SAAU9L,GACzD,IAAIsM,EAAgBZ,EAAW5a,QAAU4a,EAAW5a,QAAQgT,aAAe,EAQvE9G,GANuB,OAAmB,CAC5CtQ,MAAOA,EACPpN,QAASA,GACR,CACDitB,KAAM,SAEsC1S,SAE9C,GAAgB,SAAZva,EAAoB,CACtB,IAAIktB,EAAY5S,EAAME,YAAY2S,sBAAsBH,GACxDtM,EAAKtT,MAAMsQ,mBAAqB,GAAG7K,OAAOqa,EAAW,MACrDb,EAAuB7a,QAAU0b,CACnC,MACExM,EAAKtT,MAAMsQ,mBAAmD,iBAAvBA,EAAkCA,EAAqB,GAAG7K,OAAO6K,EAAoB,MAG9HgD,EAAKtT,MAAM0N,OAAS2Q,EAEhBQ,GACFA,EAAUvL,EAEd,IAUA,OAAoB,gBAAoBrH,GAAqB,OAAS,CACpEe,GAAIoH,EACJqK,QAASiB,EACThB,UAAWsB,EACXrB,WAAYgB,EACZf,OAAQqB,EACR1O,SAAUqB,EACViM,UAAWqB,EACXC,eAhBmB,SAAwBC,EAAYC,GACvD,IAAI52B,EAAOy1B,EAAyBkB,EAAaC,EAEjC,SAAZztB,IACFmsB,EAAM3a,QAAU7X,WAAW9C,EAAMw1B,EAAuB7a,SAAW,GAEvE,EAWE8Y,QAASgC,EAAyBhC,OAAUva,EAC5C/P,QAAqB,SAAZA,EAAqB,KAAOA,GACpCuZ,IAAQ,SAAUtb,EAAOyvB,GAC1B,OAAoB,gBAAoB3a,GAAW,OAAS,CAC1D2F,WAAW,OAAKD,EAAQyB,KAAMzB,EAAQyK,UAAWxK,EAAW,CAC1D,QAAWD,EAAQkV,QACnB,QAAWnM,GAA4B,QAAlBiK,GAA2BhT,EAAQmV,QACxD3vB,IACFmP,OAAO,OAAS,CACd6P,UAAWwO,GACVre,GACHmL,IAAKwQ,GACJ2E,GAA0B,gBAAoB,MAAO,CACtDhV,UAAWD,EAAQoV,QACnBtV,IAAK6T,GACS,gBAAoB,MAAO,CACzC1T,UAAWD,EAAQqV,cAClBtd,IACL,GACF,IA2GA8a,EAASyC,gBAAiB,EAC1B,KAAe,QAzTK,SAAgBzT,GAClC,MAAO,CAELJ,KAAM,CACJY,OAAQ,EACR8J,SAAU,SACV5P,WAAYsF,EAAME,YAAYnX,OAAO,WAIvCsqB,QAAS,CACP7S,OAAQ,OACR8J,SAAU,WAIZgJ,OAAQ,CACNI,WAAY,UAIdH,QAAS,CAEPxgB,QAAS,QAIXygB,aAAc,CACZ5L,MAAO,QAGb,GA0RkC,CAChCxkB,KAAM,eADR,CAEG4tB,yLCvOC2C,EAAoB,CACtBtT,KAAM,QACNE,MAAO,OACPD,IAAK,OACLkD,OAAQ,MAQV,IAAIoQ,EAA4B,CAC9BtO,MAAO,oBACPD,KAAM,oBAOJwO,EAAsB,cAAiB,SAAgBnb,EAAOuF,GAChE,IAAI6V,EAAgBpb,EAAMqb,OACtBC,OAA+B,IAAlBF,EAA2B,OAASA,EACjDG,EAAgBvb,EAAMub,cACtB/d,EAAWwC,EAAMxC,SACjBiI,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClB8V,EAAmBxb,EAAMyb,UACzBA,OAAiC,IAArBD,EAA8B,GAAKA,EAC/CE,EAAoB1b,EAAM2b,WAG1BC,GAFJF,OAA0C,IAAtBA,EAA+B,CAAC,EAAIA,GAEdH,cACtCI,GAAa,OAAyBD,EAAmB,CAAC,kBAC1DG,EAAU7b,EAAM6b,QAChBC,EAAc9b,EAAM9H,KACpBA,OAAuB,IAAhB4jB,GAAiCA,EACxCC,EAAoB/b,EAAMgc,WAC1BA,OAAmC,IAAtBD,EAA+B,CAAC,EAAIA,EACjDE,EAAajc,EAAMic,WACnB7V,EAAwBpG,EAAMqG,oBAC9BA,OAAgD,IAA1BD,EAAmC,IAAQA,EACjE8V,EAAwBlc,EAAM0K,mBAC9BA,OAA+C,IAA1BwR,EAAmChB,EAA4BgB,EACpFC,EAAiBnc,EAAMoc,QACvBA,OAA6B,IAAnBD,EAA4B,YAAcA,EACpD5V,GAAQ,OAAyBvG,EAAO,CAAC,SAAU,gBAAiB,WAAY,UAAW,YAAa,YAAa,aAAc,UAAW,OAAQ,aAAc,aAAc,sBAAuB,qBAAsB,YAE/NsH,GAAQ,SAIR+F,EAAU,UAAa,GAC3B,aAAgB,WACdA,EAAQ7O,SAAU,CACpB,GAAG,IACH,IAAI6c,EAhDC,SAAmB/T,EAAO+T,GAC/B,MAA2B,QAApB/T,EAAM+U,WAJR,SAAsBhB,GAC3B,OAA8C,IAAvC,CAAC,OAAQ,SAAS/1B,QAAQ+1B,EACnC,CAEsCiB,CAAajB,GAAUJ,EAAkBI,GAAUA,CACzF,CA8CekB,CAAUjV,EAAOgU,GAC1BkB,EAAsB,gBAAoB,KAAO,OAAS,CAC5Df,UAAuB,cAAZW,EAA0BX,EAAY,EACjDtV,QAAQ,GACP6V,EAAY,CACbtW,WAAW,OAAKD,EAAQgX,MAAOhX,EAAQ,cAAc5F,QAAO,OAAWwb,KAAWW,EAAWtW,UAAuB,cAAZ0W,GAA2B3W,EAAQ,oBAAoB5F,QAAO,OAAWwb,QAC/K7d,GAEJ,GAAgB,cAAZ4e,EACF,OAAoB,gBAAoB,OAAO,OAAS,CACtD1W,WAAW,OAAKD,EAAQyB,KAAMzB,EAAQiX,OAAQhX,GAC9CH,IAAKA,GACJgB,GAAQiW,GAGb,IAAIG,EAA6B,gBAAoBtW,GAAqB,OAAS,CACjFe,GAAIlP,EACJmkB,UAAWpB,EAAkBI,GAC7BruB,QAAS0d,EACT+C,OAAQJ,EAAQ7O,SACfyd,GAAaO,GAEhB,MAAgB,eAAZJ,EACkB,gBAAoB,OAAO,OAAS,CACtD1W,WAAW,OAAKD,EAAQyB,KAAMzB,EAAQiX,OAAQhX,GAC9CH,IAAKA,GACJgB,GAAQoW,GAIO,gBAAoB,KAAO,OAAS,CACtDpB,eAAe,OAAS,CAAC,EAAGA,EAAeK,EAAmB,CAC5DlR,mBAAoBA,IAEtBkS,kBAAmB,IACnBlX,WAAW,OAAKD,EAAQyB,KAAMzB,EAAQoX,MAAOnX,GAC7CxN,KAAMA,EACN2jB,QAASA,EACTtW,IAAKA,GACJgB,EAAOoV,GAAagB,EACzB,IAgFA,MAAe,QAtQK,SAAgBrV,GAClC,MAAO,CAELJ,KAAM,CAAC,EAGPwV,OAAQ,CACNI,KAAM,YAIRL,MAAO,CACLM,UAAW,OACX1iB,QAAS,OACT2iB,cAAe,SACflV,OAAQ,OACRgV,KAAM,WACNnS,OAAQrD,EAAMqD,OAAO6R,OACrBS,wBAAyB,QAGzBvV,SAAU,QACVE,IAAK,EAILwO,QAAS,GAIX8G,gBAAiB,CACfvV,KAAM,EACNE,MAAO,QAITsV,iBAAkB,CAChBxV,KAAM,OACNE,MAAO,GAITuV,eAAgB,CACdxV,IAAK,EACLD,KAAM,EACNmD,OAAQ,OACRjD,MAAO,EACPC,OAAQ,OACRuV,UAAW,QAIbC,kBAAmB,CACjB1V,IAAK,OACLD,KAAM,EACNmD,OAAQ,EACRjD,MAAO,EACPC,OAAQ,OACRuV,UAAW,QAIbE,sBAAuB,CACrBC,YAAa,aAAa3d,OAAOyH,EAAMY,QAAQC,UAIjDsV,qBAAsB,CACpBC,aAAc,aAAa7d,OAAOyH,EAAMY,QAAQC,UAIlDwV,uBAAwB,CACtBC,WAAY,aAAa/d,OAAOyH,EAAMY,QAAQC,UAIhD0V,wBAAyB,CACvBC,UAAW,aAAaje,OAAOyH,EAAMY,QAAQC,UAI/C0U,MAAO,CAAC,EAEZ,GAkLkC,CAChCnyB,KAAM,YACNynB,MAAM,GAFR,CAGGgJ,sJC5QC4C,EAAS,CACXC,SAAU,CACRhW,QAAS,GAEX2S,QAAS,CACP3S,QAAS,IAGTiW,EAAiB,CACnBrR,MAAO,oBACPD,KAAM,oBAOJuR,EAAoB,cAAiB,SAAcle,EAAOuF,GAC5D,IAAI/H,EAAWwC,EAAMxC,SACjBmb,EAAwB3Y,EAAM4Y,wBAC9BA,OAAoD,IAA1BD,GAA2CA,EACrEnK,EAASxO,EAAMoH,GACfyR,EAAU7Y,EAAM6Y,QAChBC,EAAY9Y,EAAM8Y,UAClBC,EAAa/Y,EAAM+Y,WACnBC,EAAShZ,EAAMgZ,OACfrN,EAAW3L,EAAM2L,SACjBsN,EAAYjZ,EAAMiZ,UAClB7e,EAAQ4F,EAAM5F,MACdgM,EAAwBpG,EAAMqG,oBAC9BA,OAAgD,IAA1BD,EAAmC,KAAaA,EACtE8S,EAAiBlZ,EAAMhT,QACvBA,OAA6B,IAAnBksB,EAA4B+E,EAAiB/E,EACvD3S,GAAQ,OAAyBvG,EAAO,CAAC,WAAY,0BAA2B,KAAM,UAAW,YAAa,aAAc,SAAU,WAAY,YAAa,QAAS,sBAAuB,YAE/LsH,GAAQ,SACRgS,EAAyBhS,EAAMiS,sBAAwBX,EACvDtB,EAAU,SAAa,MACvB6G,GAAa,OAAW3gB,EAAS+H,IAAKA,GACtCwQ,GAAY,OAAWuD,EAAyBhC,OAAUva,EAAWohB,GAErE3E,EAA+B,SAAsCC,GACvE,OAAO,SAAUC,EAAiBC,GAChC,GAAIF,EAAU,CACZ,IAAI7X,EAAO0X,EAAyB,CAAChC,EAAQ9Y,QAASkb,GAAmB,CAACA,EAAiBC,GACvFC,GAAQ,OAAehY,EAAM,GAC7B8L,EAAOkM,EAAM,GACbC,EAAcD,EAAM,QAGJ7c,IAAhB8c,EACFJ,EAAS/L,GAET+L,EAAS/L,EAAMmM,EAEnB,CACF,CACF,EAEIE,EAAiBP,EAA6BT,GAC9Ce,EAAcN,GAA6B,SAAU9L,EAAMmM,IAC7D,OAAOnM,GAEP,IAAI0Q,GAAkB,OAAmB,CACvChkB,MAAOA,EACPpN,QAASA,GACR,CACDitB,KAAM,UAERvM,EAAKtT,MAAMikB,iBAAmB/W,EAAME,YAAYnX,OAAO,UAAW+tB,GAClE1Q,EAAKtT,MAAM4H,WAAasF,EAAME,YAAYnX,OAAO,UAAW+tB,GAExDvF,GACFA,EAAQnL,EAAMmM,EAElB,IACIO,EAAgBZ,EAA6BV,GAC7CwB,EAAgBd,EAA6BP,GAC7CoB,EAAab,GAA6B,SAAU9L,GACtD,IAAI0Q,GAAkB,OAAmB,CACvChkB,MAAOA,EACPpN,QAASA,GACR,CACDitB,KAAM,SAERvM,EAAKtT,MAAMikB,iBAAmB/W,EAAME,YAAYnX,OAAO,UAAW+tB,GAClE1Q,EAAKtT,MAAM4H,WAAasF,EAAME,YAAYnX,OAAO,UAAW+tB,GAExDpF,GACFA,EAAOtL,EAEX,IACIV,EAAewM,EAA6B7N,GAChD,OAAoB,gBAAoBtF,GAAqB,OAAS,CACpEoH,QAAQ,EACRrG,GAAIoH,EACJ8I,QAASgC,EAAyBhC,OAAUva,EAC5C8b,QAASiB,EACThB,UAAWsB,EACXrB,WAAYgB,EACZf,OAAQqB,EACR1O,SAAUqB,EACViM,UAAWqB,EACXttB,QAASA,GACRuZ,IAAQ,SAAUtb,EAAOyvB,GAC1B,OAAoB,eAAmBld,GAAU,OAAS,CACxDpD,OAAO,OAAS,CACd4N,QAAS,EACTgT,WAAsB,WAAV/vB,GAAuBujB,OAAoBzR,EAAX,UAC3CghB,EAAO9yB,GAAQmP,EAAOoD,EAASwC,MAAM5F,OACxCmL,IAAKwQ,GACJ2E,GACL,GACF,IAqEA,6ICtLA,SAAS4D,EAAS36B,GAChB,MAAO,SAASkc,OAAOlc,EAAO,MAAMkc,OAAO5X,KAAKkpB,IAAIxtB,EAAO,GAAI,IACjE,CAEA,IAAIo6B,EAAS,CACXC,SAAU,CACRhW,QAAS,EACTsC,UAAWgU,EAAS,IAEtB3D,QAAS,CACP3S,QAAS,EACTsC,UAAW,SASXiU,EAAoB,cAAiB,SAAcve,EAAOuF,GAC5D,IAAI/H,EAAWwC,EAAMxC,SACjBmb,EAAwB3Y,EAAM4Y,wBAC9BA,OAAoD,IAA1BD,GAA2CA,EACrEnK,EAASxO,EAAMoH,GACfyR,EAAU7Y,EAAM6Y,QAChBC,EAAY9Y,EAAM8Y,UAClBC,EAAa/Y,EAAM+Y,WACnBC,EAAShZ,EAAMgZ,OACfrN,EAAW3L,EAAM2L,SACjBsN,EAAYjZ,EAAMiZ,UAClB7e,EAAQ4F,EAAM5F,MACd8e,EAAiBlZ,EAAMhT,QACvBA,OAA6B,IAAnBksB,EAA4B,OAASA,EAC/C9S,EAAwBpG,EAAMqG,oBAC9BA,OAAgD,IAA1BD,EAAmC,KAAaA,EACtEG,GAAQ,OAAyBvG,EAAO,CAAC,WAAY,0BAA2B,KAAM,UAAW,YAAa,aAAc,SAAU,WAAY,YAAa,QAAS,UAAW,wBAEnLmZ,EAAQ,WACRqF,EAAc,WACdlX,GAAQ,SACRgS,EAAyBhS,EAAMiS,sBAAwBX,EACvDtB,EAAU,SAAa,MACvB6G,GAAa,OAAW3gB,EAAS+H,IAAKA,GACtCwQ,GAAY,OAAWuD,EAAyBhC,OAAUva,EAAWohB,GAErE3E,EAA+B,SAAsCC,GACvE,OAAO,SAAUC,EAAiBC,GAChC,GAAIF,EAAU,CACZ,IAAI7X,EAAO0X,EAAyB,CAAChC,EAAQ9Y,QAASkb,GAAmB,CAACA,EAAiBC,GACvFC,GAAQ,OAAehY,EAAM,GAC7B8L,EAAOkM,EAAM,GACbC,EAAcD,EAAM,QAGJ7c,IAAhB8c,EACFJ,EAAS/L,GAET+L,EAAS/L,EAAMmM,EAEnB,CACF,CACF,EAEIE,EAAiBP,EAA6BT,GAC9Ce,EAAcN,GAA6B,SAAU9L,EAAMmM,IAC7D,OAAOnM,GAEP,IASInG,EATAkX,GAAsB,OAAmB,CAC3CrkB,MAAOA,EACPpN,QAASA,GACR,CACDitB,KAAM,UAEJvP,EAAqB+T,EAAoBlX,SACzCmX,EAAQD,EAAoBC,MAIhB,SAAZ1xB,GACFua,EAAWD,EAAME,YAAY2S,sBAAsBzM,EAAK8D,cACxDgN,EAAYhgB,QAAU+I,GAEtBA,EAAWmD,EAGbgD,EAAKtT,MAAM4H,WAAa,CAACsF,EAAME,YAAYnX,OAAO,UAAW,CAC3DkX,SAAUA,EACVmX,MAAOA,IACLpX,EAAME,YAAYnX,OAAO,YAAa,CACxCkX,SAAqB,KAAXA,EACVmX,MAAOA,KACLlyB,KAAK,KAELqsB,GACFA,EAAQnL,EAAMmM,EAElB,IACIO,EAAgBZ,EAA6BV,GAC7CwB,EAAgBd,EAA6BP,GAC7CoB,EAAab,GAA6B,SAAU9L,GACtD,IASInG,EATAoX,GAAuB,OAAmB,CAC5CvkB,MAAOA,EACPpN,QAASA,GACR,CACDitB,KAAM,SAEJvP,EAAqBiU,EAAqBpX,SAC1CmX,EAAQC,EAAqBD,MAIjB,SAAZ1xB,GACFua,EAAWD,EAAME,YAAY2S,sBAAsBzM,EAAK8D,cACxDgN,EAAYhgB,QAAU+I,GAEtBA,EAAWmD,EAGbgD,EAAKtT,MAAM4H,WAAa,CAACsF,EAAME,YAAYnX,OAAO,UAAW,CAC3DkX,SAAUA,EACVmX,MAAOA,IACLpX,EAAME,YAAYnX,OAAO,YAAa,CACxCkX,SAAqB,KAAXA,EACVmX,MAAOA,GAAoB,KAAXnX,KACd/a,KAAK,KACTkhB,EAAKtT,MAAM4N,QAAU,IACrB0F,EAAKtT,MAAMkQ,UAAYgU,EAAS,KAE5BtF,GACFA,EAAOtL,EAEX,IACIV,EAAewM,EAA6B7N,GAehD,OALA,aAAgB,WACd,OAAO,WACL3hB,aAAamvB,EAAM3a,QACrB,CACF,GAAG,IACiB,gBAAoB6H,GAAqB,OAAS,CACpEoH,QAAQ,EACRrG,GAAIoH,EACJ8I,QAASgC,EAAyBhC,OAAUva,EAC5C8b,QAASiB,EACThB,UAAWsB,EACXrB,WAAYgB,EACZf,OAAQqB,EACR1O,SAAUqB,EACViM,UAAWqB,EACXC,eAvBmB,SAAwBC,EAAYC,GACvD,IAAI52B,EAAOy1B,EAAyBkB,EAAaC,EAEjC,SAAZztB,IACFmsB,EAAM3a,QAAU7X,WAAW9C,EAAM26B,EAAYhgB,SAAW,GAE5D,EAkBExR,QAAqB,SAAZA,EAAqB,KAAOA,GACpCuZ,IAAQ,SAAUtb,EAAOyvB,GAC1B,OAAoB,eAAmBld,GAAU,OAAS,CACxDpD,OAAO,OAAS,CACd4N,QAAS,EACTsC,UAAWgU,EAAS,KACpBtD,WAAsB,WAAV/vB,GAAuBujB,OAAoBzR,EAAX,UAC3CghB,EAAO9yB,GAAQmP,EAAOoD,EAASwC,MAAM5F,OACxCmL,IAAKwQ,GACJ2E,GACL,GACF,IAuEA6D,EAAKxD,gBAAiB,EACtB,8IClJI6D,EAA0B,cAAiB,SAAoB5e,EAAOuF,GACxE,IAAIsZ,EAAc7e,EAAM+J,KACpBA,OAAuB,IAAhB8U,GAAiCA,EACxCrhB,EAAWwC,EAAMxC,SACjBiI,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClBoZ,EAAe9e,EAAMyW,MACrBA,OAAyB,IAAjBqI,EAA0B,UAAYA,EAC9CjZ,EAAkB7F,EAAM8F,SACxBA,OAA+B,IAApBD,GAAqCA,EAChDkZ,EAAwB/e,EAAMgf,mBAC9BA,OAA+C,IAA1BD,GAA2CA,EAChEE,EAAcjf,EAAM7M,KACpBA,OAAuB,IAAhB8rB,EAAyB,SAAWA,EAC3C1Y,GAAQ,OAAyBvG,EAAO,CAAC,OAAQ,WAAY,UAAW,YAAa,QAAS,WAAY,qBAAsB,SAEpI,OAAoB,gBAAoB,KAAY,OAAS,CAC3D0F,WAAW,OAAKD,EAAQyB,KAAMxB,EAAqB,YAAV+Q,GAAuBhR,EAAQ,QAAQ5F,QAAO,OAAW4W,KAAU3Q,GAAYL,EAAQK,SAAmB,UAAT3S,GAAoBsS,EAAQ,OAAO5F,QAAO,OAAW1M,KAAS,CACtM,MAASsS,EAAQyZ,UACjB,IAAOzZ,EAAQ0Z,SACfpV,IACFyI,cAAc,EACd9I,aAAcsV,EACdlZ,SAAUA,EACVP,IAAKA,GACJgB,GAAqB,gBAAoB,OAAQ,CAClDb,UAAWD,EAAQhhB,OAClB+Y,GACL,IA8DA,KAAe,QA1LK,SAAgB8J,GAClC,MAAO,CAELJ,KAAM,CACJkY,UAAW,SACXtC,KAAM,WACNuC,SAAU/X,EAAMgY,WAAWC,QAAQ,IACnCvW,QAAS,GACTR,aAAc,MACdoJ,SAAU,UAEV6E,MAAOnP,EAAMY,QAAQpL,OAAO0iB,OAC5Bxd,WAAYsF,EAAME,YAAYnX,OAAO,mBAAoB,CACvDkX,SAAUD,EAAME,YAAYD,SAASE,WAEvC,UAAW,CACTQ,iBAAiB,QAAMX,EAAMY,QAAQpL,OAAO0iB,OAAQlY,EAAMY,QAAQpL,OAAO2iB,cAEzE,uBAAwB,CACtBxX,gBAAiB,gBAGrB,aAAc,CACZA,gBAAiB,cACjBwO,MAAOnP,EAAMY,QAAQpL,OAAOgJ,WAKhCoZ,UAAW,CACTQ,YAAa,GACb,cAAe,CACbA,YAAa,IAKjBP,QAAS,CACPQ,aAAc,GACd,cAAe,CACbA,aAAc,IAKlBC,aAAc,CACZnJ,MAAO,WAIToJ,aAAc,CACZpJ,MAAOnP,EAAMY,QAAQ4X,QAAQC,KAC7B,UAAW,CACT9X,iBAAiB,QAAMX,EAAMY,QAAQ4X,QAAQC,KAAMzY,EAAMY,QAAQpL,OAAO2iB,cAExE,uBAAwB,CACtBxX,gBAAiB,iBAMvB+X,eAAgB,CACdvJ,MAAOnP,EAAMY,QAAQ+X,UAAUF,KAC/B,UAAW,CACT9X,iBAAiB,QAAMX,EAAMY,QAAQ+X,UAAUF,KAAMzY,EAAMY,QAAQpL,OAAO2iB,cAE1E,uBAAwB,CACtBxX,gBAAiB,iBAMvBnC,SAAU,CAAC,EAGXoa,UAAW,CACTlX,QAAS,EACTqW,SAAU/X,EAAMgY,WAAWC,QAAQ,KAIrC96B,MAAO,CACLyqB,MAAO,OACP7U,QAAS,OACTuQ,WAAY,UACZC,eAAgB,WAGtB,GAgGkC,CAChCngB,KAAM,iBADR,CAEGk0B,uJCnICuB,EAAoB,cAAiB,SAAcngB,EAAOuF,GAC5D,IAAIE,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClBoZ,EAAe9e,EAAMyW,MACrBA,OAAyB,IAAjBqI,EAA0B,UAAYA,EAC9CrM,EAAmBzS,EAAM4J,UACzBA,OAAiC,IAArB6I,EAA8B,IAAMA,EAChDK,EAAS9S,EAAM8S,OACfC,EAAU/S,EAAM+S,QAChBqN,EAAoBpgB,EAAMogB,kBAC1BC,EAAmBrgB,EAAMsgB,UACzBA,OAAiC,IAArBD,EAA8B,QAAUA,EACpDlE,EAAiBnc,EAAMoc,QACvBA,OAA6B,IAAnBD,EAA4B,UAAYA,EAClD5V,GAAQ,OAAyBvG,EAAO,CAAC,UAAW,YAAa,QAAS,YAAa,SAAU,UAAW,oBAAqB,YAAa,YAE9I+T,GAAqB,SACrBE,EAAiBF,EAAmBE,eACpCC,EAAgBH,EAAmBG,cACnCC,EAAkBJ,EAAmBxO,IAErCmJ,EAAkB,YAAe,GACjC7E,EAAe6E,EAAgB,GAC/BoF,EAAkBpF,EAAgB,GAElC6R,GAAa,OAAWhb,EAAK4O,GAuBjC,OAAoB,gBAAoB,KAAY,OAAS,CAC3DzO,WAAW,OAAKD,EAAQyB,KAAMzB,EAAQ,YAAY5F,QAAO,OAAWygB,KAAc5a,EAAWmE,GAAgBpE,EAAQoE,aAA4B,WAAdD,GAA0BnE,EAAQ2P,QACrK3P,QAAS2a,EACT3J,MAAOA,EACP7M,UAAWA,EACXkJ,OA1Be,SAAoBjM,GAC/BgD,IACFqK,IACAJ,GAAgB,IAGdhB,GACFA,EAAOjM,EAEX,EAkBEkM,QAhBgB,SAAqBlM,GACjCoN,EAAepN,IACjBiN,GAAgB,GAGdf,GACFA,EAAQlM,EAEZ,EASEtB,IAAKgb,EACLnE,QAASA,GACR7V,GACL,IAsDA,KAAe,OAxKK,CAElBW,KAAM,CAAC,EAGPsZ,cAAe,CACbhK,eAAgB,QAIlBiK,eAAgB,CACdjK,eAAgB,OAChB,UAAW,CACTA,eAAgB,cAKpBkK,gBAAiB,CACflK,eAAgB,aAKlBpB,OAAQ,CACN1N,SAAU,WACVqD,wBAAyB,cACzB9C,gBAAiB,cAGjBmO,QAAS,EACTC,OAAQ,EACRjO,OAAQ,EAERI,aAAc,EACdQ,QAAS,EAETkB,OAAQ,UACRoM,WAAY,OACZC,cAAe,SACf,kBAAmB,OAEnB,qBAAsB,OAEtB,sBAAuB,CACrBG,YAAa,QAGf,iBAAkB,CAChBN,QAAS,SAKbvM,aAAc,CAAC,GAkHiB,CAChCnf,KAAM,WADR,CAEGy1B,mHCvJCQ,EAAoB,cAAiB,SAAc3gB,EAAOuF,GAC5D,IAAI/H,EAAWwC,EAAMxC,SACjBiI,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClB+M,EAAmBzS,EAAM4J,UACzB7J,OAAiC,IAArB0S,EAA8B,KAAOA,EACjDmO,EAAe5gB,EAAM6gB,MACrBA,OAAyB,IAAjBD,GAAkCA,EAC1CE,EAAwB9gB,EAAM+gB,eAC9BA,OAA2C,IAA1BD,GAA2CA,EAC5DE,EAAYhhB,EAAMghB,UAClBza,GAAQ,OAAyBvG,EAAO,CAAC,WAAY,UAAW,YAAa,YAAa,QAAS,iBAAkB,cAErHpC,EAAU,WAAc,WAC1B,MAAO,CACLijB,MAAOA,EAEX,GAAG,CAACA,IACJ,OAAoB,gBAAoB,aAAsB,CAC5Dl9B,MAAOia,GACO,gBAAoBmC,GAAW,OAAS,CACtD2F,WAAW,OAAKD,EAAQyB,KAAMxB,EAAWmb,GAASpb,EAAQob,OAAQE,GAAkBtb,EAAQuD,QAASgY,GAAavb,EAAQub,WAC1Hzb,IAAKA,GACJgB,GAAQya,EAAWxjB,GACxB,IA2CA,KAAe,OA1FK,CAElB0J,KAAM,CACJ+Z,UAAW,OACX7Y,OAAQ,EACRY,QAAS,EACTtB,SAAU,YAIZsB,QAAS,CACPkY,WAAY,EACZC,cAAe,GAIjBN,MAAO,CAAC,EAGRG,UAAW,CACTE,WAAY,IAsEkB,CAChCx2B,KAAM,WADR,CAEGi2B,2CC9FCS,YAAc,cAAoB,CAAC,GAMvC,oKCsFIlT,EAAsC,oBAAXvoB,OAAyB,YAAkB,kBAKtE07B,EAAwB,cAAiB,SAAkBrhB,EAAOuF,GACpE,IAAI+b,EAAoBthB,EAAM4K,WAC1BA,OAAmC,IAAtB0W,EAA+B,SAAWA,EACvDC,EAAmBvhB,EAAMwhB,UACzBA,OAAiC,IAArBD,GAAsCA,EAClDE,EAAgBzhB,EAAMoV,OACtBA,OAA2B,IAAlBqM,GAAmCA,EAC5Cjc,EAAexF,EAAMxC,SACrBiI,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClBgc,EAAgB1hB,EAAM4J,UACtB+X,EAAwB3hB,EAAM4hB,mBAC9BA,OAA+C,IAA1BD,EAAmC,KAAOA,EAC/DE,EAAwB7hB,EAAM8hB,eAG9BC,GAFJF,OAAkD,IAA1BA,EAAmC,CAAC,EAAIA,GAEjBnc,UAC3Coc,GAAiB,OAAyBD,EAAuB,CAAC,cAClEjB,EAAe5gB,EAAM6gB,MACrBA,OAAyB,IAAjBD,GAAkCA,EAC1C/a,EAAkB7F,EAAM8F,SACxBA,OAA+B,IAApBD,GAAqCA,EAChDmc,EAAwBhiB,EAAMiiB,eAC9BA,OAA2C,IAA1BD,GAA2CA,EAC5DE,EAAiBliB,EAAMmI,QACvBA,OAA6B,IAAnB+Z,GAAoCA,EAC9C9Y,EAAwBpJ,EAAMoJ,sBAC9B+Y,EAAkBniB,EAAMoiB,SACxBA,OAA+B,IAApBD,GAAqCA,EAChD5b,GAAQ,OAAyBvG,EAAO,CAAC,aAAc,YAAa,SAAU,WAAY,UAAW,YAAa,YAAa,qBAAsB,iBAAkB,QAAS,WAAY,iBAAkB,UAAW,wBAAyB,aAElPpC,EAAU,aAAiB,KAC3BykB,EAAe,CACjBxB,MAAOA,GAASjjB,EAAQijB,QAAS,EACjCjW,WAAYA,GAEV0X,EAAc,SAAa,MAC/BpU,GAAkB,WACZsT,GACEc,EAAY9jB,SACd8jB,EAAY9jB,QAAQ2L,OAK1B,GAAG,CAACqX,IACJ,IAAIhkB,EAAW,mBAAuBgI,GAClC+c,EAAqB/kB,EAASza,SAAU,OAAaya,EAASA,EAASza,OAAS,GAAI,CAAC,4BACrF+yB,EAAe,eAAkB,SAAUhvB,GAE7Cw7B,EAAY9jB,QAAU,cAAqB1X,EAC7C,GAAG,IACCivB,GAAY,OAAWD,EAAcvQ,GAErCid,GAAiB,OAAS,CAC5B9c,WAAW,OAAKD,EAAQyB,KAAMxB,EAAW2c,EAAaxB,OAASpb,EAAQob,OAAQoB,GAAkBxc,EAAQgd,QAASta,GAAW1C,EAAQ0C,QAASrC,GAAYL,EAAQK,SAAUsP,GAAU3P,EAAQ2P,OAAuB,WAAfxK,GAA2BnF,EAAQid,oBAAqBH,GAAsB9c,EAAQkd,gBAAiBP,GAAY3c,EAAQ2c,UACjUtc,SAAUA,GACTS,GAECxG,EAAY2hB,GAAiB,KAQjC,OANItM,IACFoN,EAAe5Y,UAAY8X,GAAiB,MAC5Cc,EAAepZ,uBAAwB,OAAK3D,EAAQoE,aAAcT,GAClErJ,EAAY,KAGVwiB,GAEFxiB,EAAayiB,EAAe5Y,WAAc8X,EAAwB3hB,EAAR,MAE/B,OAAvB6hB,IACgB,OAAd7hB,EACFA,EAAY,MAC0B,OAA7ByiB,EAAe5Y,YACxB4Y,EAAe5Y,UAAY,QAIX,gBAAoB,aAAsB,CAC5DjmB,MAAO0+B,GACO,gBAAoBT,GAAoB,OAAS,CAC/Dlc,WAAW,OAAKD,EAAQyK,UAAW6R,GACnCxc,IAAKwQ,GACJ+L,GAA8B,gBAAoB/hB,EAAWyiB,EAAgBhlB,GAAWA,EAASrY,SAGlF,gBAAoB,aAAsB,CAC5DxB,MAAO0+B,GACO,gBAAoBtiB,GAAW,OAAS,CACtDwF,IAAKwQ,GACJyM,GAAiBhlB,GACtB,IAyGA,KAAe,QA/RK,SAAgB8J,GAClC,MAAO,CAELJ,KAAM,CACJ7M,QAAS,OACTwQ,eAAgB,aAChBD,WAAY,SACZlD,SAAU,WACV8O,eAAgB,OAChBtH,MAAO,OACP0T,UAAW,aACXxD,UAAW,OACX8B,WAAY,EACZC,cAAe,EACf,iBAAkB,CAChBlZ,gBAAiBX,EAAMY,QAAQpL,OAAOslB,UAExC,+BAAgC,CAC9Bna,gBAAiBX,EAAMY,QAAQpL,OAAOslB,UAExC,aAAc,CACZpa,QAAS,KAKbkI,UAAW,CACTxI,SAAU,YAIZmC,aAAc,CAAC,EAGfgX,MAAO,CACLK,WAAY,EACZC,cAAe,GAIjBuB,oBAAqB,CACnB9X,WAAY,cAId9E,SAAU,CAAC,EAGXqC,QAAS,CACPuV,aAAc,aAAa7d,OAAOyH,EAAMY,QAAQC,SAChD0a,eAAgB,eAIlBJ,QAAS,CACPK,YAAa,GACbC,aAAc,IAIhB3N,OAAQ,CACNpT,WAAYsF,EAAME,YAAYnX,OAAO,mBAAoB,CACvDkX,SAAUD,EAAME,YAAYD,SAASE,WAEvC,UAAW,CACT+O,eAAgB,OAChBvO,gBAAiBX,EAAMY,QAAQpL,OAAOkmB,MAEtC,uBAAwB,CACtB/a,gBAAiB,iBAMvB0a,gBAAiB,CAGfI,aAAc,IAIhBX,SAAU,CAAC,EAEf,GA2MkC,CAChC13B,KAAM,eADR,CAEG22B,mRC5RI,SAAS4B,EAAWvV,EAAMwV,GAC3BA,EACFxV,EAAKvT,aAAa,cAAe,QAEjCuT,EAAKyV,gBAAgB,cAEzB,CAEA,SAASC,EAAgB1V,GACvB,OAAO5W,SAASnR,OAAO09B,iBAAiB3V,GAAM,iBAAkB,KAAO,CACzE,CAEA,SAAS4V,EAAmBpT,EAAWqT,EAAWC,GAChD,IAAIC,EAAiB3gC,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,GACrFogC,EAAOpgC,UAAUC,OAAS,EAAID,UAAU,QAAKia,EAC7C2mB,EAAY,CAACH,EAAWC,GAAa3jB,QAAO,OAAmB4jB,IAC/DE,EAAoB,CAAC,WAAY,SAAU,SAC/C,GAAGp5B,QAAQhI,KAAK2tB,EAAU1S,UAAU,SAAUkQ,GACtB,IAAlBA,EAAKkW,WAA+C,IAA7BF,EAAUp+B,QAAQooB,KAA6D,IAA7CiW,EAAkBr+B,QAAQooB,EAAK2H,UAC1F4N,EAAWvV,EAAMwV,EAErB,GACF,CAEA,SAASW,EAAYC,EAAerK,GAClC,IAAIsK,GAAO,EASX,OARAD,EAAcE,MAAK,SAAUC,EAAM1hB,GACjC,QAAIkX,EAASwK,KACXF,EAAMxhB,GACC,EAIX,IACOwhB,CACT,CAEA,SAASG,EAAgBJ,EAAe9jB,GACtC,IAGImkB,EAHAC,EAAe,GACfC,EAAkB,GAClBnU,EAAY4T,EAAc5T,UAG9B,IAAKlQ,EAAMskB,kBAAmB,CAC5B,GAtDJ,SAAuBpU,GACrB,IAAIkI,GAAM,EAAAmM,EAAA,GAAcrU,GAExB,OAAIkI,EAAIh0B,OAAS8rB,GACR,EAAAsU,EAAA,GAAYpM,GAAKrgB,WAAaqgB,EAAIT,gBAAgBrG,YAGpDpB,EAAUuU,aAAevU,EAAUsB,YAC5C,CA8CQkT,CAAcxU,GAAY,CAE5B,IAAIyU,GAAgB,EAAAC,EAAA,KACpBR,EAAah/B,KAAK,CAChBzB,MAAOusB,EAAU9V,MAAM2oB,aACvB37B,IAAK,gBACLy9B,GAAI3U,IAGNA,EAAU9V,MAAM,iBAAmB,GAAGyF,OAAOujB,EAAgBlT,GAAayU,EAAe,MAEzFR,GAAa,EAAAI,EAAA,GAAcrU,GAAW4U,iBAAiB,cACvD,GAAGv6B,QAAQhI,KAAK4hC,GAAY,SAAUzW,GACpC2W,EAAgBj/B,KAAKsoB,EAAKtT,MAAM2oB,cAChCrV,EAAKtT,MAAM2oB,aAAe,GAAGljB,OAAOujB,EAAgB1V,GAAQiX,EAAe,KAC7E,GACF,CAIA,IAAII,EAAS7U,EAAU8U,cACnBC,EAAsC,SAApBF,EAAOG,UAAyE,WAAlDv/B,OAAO09B,iBAAiB0B,GAAQ,cAA6BA,EAAS7U,EAG1HkU,EAAah/B,KAAK,CAChBzB,MAAOshC,EAAgB7qB,MAAMwX,SAC7BxqB,IAAK,WACLy9B,GAAII,IAENA,EAAgB7qB,MAAMwX,SAAW,QACnC,CA0BA,OAxBc,WACRuS,GACF,GAAG55B,QAAQhI,KAAK4hC,GAAY,SAAUzW,EAAM9qB,GACtCyhC,EAAgBzhC,GAClB8qB,EAAKtT,MAAM2oB,aAAesB,EAAgBzhC,GAE1C8qB,EAAKtT,MAAM+qB,eAAe,gBAE9B,IAGFf,EAAa75B,SAAQ,SAAUqX,GAC7B,IAAIje,EAAQie,EAAKje,MACbkhC,EAAKjjB,EAAKijB,GACVz9B,EAAMwa,EAAKxa,IAEXzD,EACFkhC,EAAGzqB,MAAMgrB,YAAYh+B,EAAKzD,GAE1BkhC,EAAGzqB,MAAM+qB,eAAe/9B,EAE5B,GACF,CAGF,CAoBA,IAAIi+B,EAA4B,WAC9B,SAASA,KACP,OAAgBpiC,KAAMoiC,GAGtBpiC,KAAKqiC,OAAS,GAMdriC,KAAKsiC,WAAa,EACpB,CAkGA,OAhGA,OAAaF,EAAc,CAAC,CAC1Bj+B,IAAK,MACLzD,MAAO,SAAak5B,EAAO3M,GACzB,IAAIsV,EAAaviC,KAAKqiC,OAAOhgC,QAAQu3B,GAErC,IAAoB,IAAhB2I,EACF,OAAOA,EAGTA,EAAaviC,KAAKqiC,OAAOviC,OACzBE,KAAKqiC,OAAOlgC,KAAKy3B,GAEbA,EAAM4I,UACRxC,EAAWpG,EAAM4I,UAAU,GAG7B,IAAIC,EAhDV,SAA2BxV,GACzB,IAAIyV,EAAiB,GAMrB,MALA,GAAGp7B,QAAQhI,KAAK2tB,EAAU1S,UAAU,SAAUkQ,GACxCA,EAAKkY,cAAqD,SAArClY,EAAKkY,aAAa,gBACzCD,EAAevgC,KAAKsoB,EAExB,IACOiY,CACT,CAwC+BE,CAAkB3V,GAC3CoT,EAAmBpT,EAAW2M,EAAM0G,UAAW1G,EAAM4I,SAAUC,GAAoB,GACnF,IAAII,EAAiBjC,EAAY5gC,KAAKsiC,YAAY,SAAUtB,GAC1D,OAAOA,EAAK/T,YAAcA,CAC5B,IAEA,OAAwB,IAApB4V,GACF7iC,KAAKsiC,WAAWO,GAAgBR,OAAOlgC,KAAKy3B,GACrC2I,IAGTviC,KAAKsiC,WAAWngC,KAAK,CACnBkgC,OAAQ,CAACzI,GACT3M,UAAWA,EACX6V,QAAS,KACTL,mBAAoBA,IAEfF,EACT,GACC,CACDp+B,IAAK,QACLzD,MAAO,SAAek5B,EAAO7c,GAC3B,IAAI8lB,EAAiBjC,EAAY5gC,KAAKsiC,YAAY,SAAUtB,GAC1D,OAAuC,IAAhCA,EAAKqB,OAAOhgC,QAAQu3B,EAC7B,IACIiH,EAAgB7gC,KAAKsiC,WAAWO,GAE/BhC,EAAciC,UACjBjC,EAAciC,QAAU7B,EAAgBJ,EAAe9jB,GAE3D,GACC,CACD5Y,IAAK,SACLzD,MAAO,SAAgBk5B,GACrB,IAAI2I,EAAaviC,KAAKqiC,OAAOhgC,QAAQu3B,GAErC,IAAoB,IAAhB2I,EACF,OAAOA,EAGT,IAAIM,EAAiBjC,EAAY5gC,KAAKsiC,YAAY,SAAUtB,GAC1D,OAAuC,IAAhCA,EAAKqB,OAAOhgC,QAAQu3B,EAC7B,IACIiH,EAAgB7gC,KAAKsiC,WAAWO,GAIpC,GAHAhC,EAAcwB,OAAOU,OAAOlC,EAAcwB,OAAOhgC,QAAQu3B,GAAQ,GACjE55B,KAAKqiC,OAAOU,OAAOR,EAAY,GAEK,IAAhC1B,EAAcwB,OAAOviC,OAEnB+gC,EAAciC,SAChBjC,EAAciC,UAGZlJ,EAAM4I,UAERxC,EAAWpG,EAAM4I,UAAU,GAG7BnC,EAAmBQ,EAAc5T,UAAW2M,EAAM0G,UAAW1G,EAAM4I,SAAU3B,EAAc4B,oBAAoB,GAC/GziC,KAAKsiC,WAAWS,OAAOF,EAAgB,OAClC,CAEL,IAAIG,EAAUnC,EAAcwB,OAAOxB,EAAcwB,OAAOviC,OAAS,GAI7DkjC,EAAQR,UACVxC,EAAWgD,EAAQR,UAAU,EAEjC,CAEA,OAAOD,CACT,GACC,CACDp+B,IAAK,aACLzD,MAAO,SAAoBk5B,GACzB,OAAO55B,KAAKqiC,OAAOviC,OAAS,GAAKE,KAAKqiC,OAAOriC,KAAKqiC,OAAOviC,OAAS,KAAO85B,CAC3E,KAGKwI,CACT,CA/GgC,GCoEhC,MAnMA,SAA4BrlB,GAC1B,IAAIxC,EAAWwC,EAAMxC,SACjB0oB,EAAwBlmB,EAAMmmB,iBAC9BA,OAA6C,IAA1BD,GAA2CA,EAC9DE,EAAwBpmB,EAAMqmB,oBAC9BA,OAAgD,IAA1BD,GAA2CA,EACjEE,EAAwBtmB,EAAMumB,oBAC9BA,OAAgD,IAA1BD,GAA2CA,EACjEE,EAASxmB,EAAMwmB,OACfC,EAAYzmB,EAAMymB,UAClBvuB,EAAO8H,EAAM9H,KACbwuB,EAAyB,WACzBC,EAAgB,SAAa,MAC7BC,EAAc,SAAa,MAC3BC,EAAgB,WAChBC,EAAU,SAAa,MAEvBhR,EAAe,eAAkB,SAAUhvB,GAE7CggC,EAAQtoB,QAAU,cAAqB1X,EACzC,GAAG,IACCivB,GAAY,EAAAF,EAAA,GAAWrY,EAAS+H,IAAKuQ,GACrCiR,EAAc,WAsGlB,OArGA,aAAgB,WACdA,EAAYvoB,QAAUtG,CACxB,GAAG,CAACA,KAEC6uB,EAAYvoB,SAAWtG,GAA0B,oBAAXvS,SASzCkhC,EAAcroB,QAAUgoB,IAASQ,eAGnC,aAAgB,WACd,GAAK9uB,EAAL,CAIA,IAAIkgB,GAAM,EAAAmM,EAAA,GAAcuC,EAAQtoB,SAE3B2nB,IAAoBW,EAAQtoB,SAAYsoB,EAAQtoB,QAAQlE,SAAS8d,EAAI4O,iBACnEF,EAAQtoB,QAAQyoB,aAAa,aAKhCH,EAAQtoB,QAAQrE,aAAa,YAAa,GAG5C2sB,EAAQtoB,QAAQ2L,SAGlB,IAAI+c,EAAU,WAIQ,OAHFJ,EAAQtoB,UAOrB4Z,EAAI+O,aAAcd,GAAwBI,MAAeC,EAAuBloB,QAKjFsoB,EAAQtoB,UAAYsoB,EAAQtoB,QAAQlE,SAAS8d,EAAI4O,gBACnDF,EAAQtoB,QAAQ2L,QALhBuc,EAAuBloB,SAAU,EAOrC,EAEI4oB,EAAY,SAAmBvgB,IAE7Bwf,GAAwBI,KAAiC,IAAlB5f,EAAMwgB,SAK7CjP,EAAI4O,gBAAkBF,EAAQtoB,UAGhCkoB,EAAuBloB,SAAU,EAE7BqI,EAAMygB,SACRV,EAAYpoB,QAAQ2L,QAEpBwc,EAAcnoB,QAAQ2L,QAG5B,EAEAiO,EAAInuB,iBAAiB,QAASi9B,GAAS,GACvC9O,EAAInuB,iBAAiB,UAAWm9B,GAAW,GAM3C,IAAIG,EAAWjvB,aAAY,WACzB4uB,GACF,GAAG,IACH,OAAO,WACL1uB,cAAc+uB,GACdnP,EAAItuB,oBAAoB,QAASo9B,GAAS,GAC1C9O,EAAItuB,oBAAoB,UAAWs9B,GAAW,GAEzCb,IAKCM,EAAcroB,SAAWqoB,EAAcroB,QAAQ2L,OACjD0c,EAAcroB,QAAQ2L,QAGxB0c,EAAcroB,QAAU,KAE5B,CAhFA,CAiFF,GAAG,CAAC2nB,EAAkBE,EAAqBE,EAAqBE,EAAWvuB,IACvD,gBAAoB,WAAgB,KAAmB,gBAAoB,MAAO,CACpG8R,SAAU,EACVzE,IAAKohB,EACL,YAAa,kBACE,eAAmBnpB,EAAU,CAC5C+H,IAAKwQ,IACU,gBAAoB,MAAO,CAC1C/L,SAAU,EACVzE,IAAKqhB,EACL,YAAa,gBAEjB,EC9IW7I,EAAS,CAElB7W,KAAM,CACJyD,QAAS,EACTjD,SAAU,QACVG,MAAO,EACPiD,OAAQ,EACRlD,IAAK,EACLD,KAAM,EACNM,gBAAiB,qBACjB8C,wBAAyB,eAI3BN,UAAW,CACTxC,gBAAiB,gBAgCrB,EAzBkC,cAAiB,SAAwBjI,EAAOuF,GAChF,IAAIiF,EAAmBxK,EAAMyK,UACzBA,OAAiC,IAArBD,GAAsCA,EAClDtS,EAAO8H,EAAM9H,KACbqO,GAAQ,OAAyBvG,EAAO,CAAC,YAAa,SAE1D,OAAO9H,EAAoB,gBAAoB,OAAO,OAAS,CAC7D,eAAe,EACfqN,IAAKA,GACJgB,EAAO,CACRnM,OAAO,OAAS,CAAC,EAAG2jB,EAAO7W,KAAMuD,EAAYsT,EAAOtT,UAAY,CAAC,EAAGlE,EAAMnM,UACtE,IACR,ICTA,IAAIotB,EAAiB,IAAInC,EA8WzB,EA7UyB,cAAiB,SAAeoC,EAASliB,GAChE,IAAI+B,GAAQ,EAAAogB,EAAA,KACR1nB,GAAQ,EAAA2nB,EAAA,GAAc,CACxBj9B,KAAM,WACNsV,OAAO,OAAS,CAAC,EAAGynB,GACpBngB,MAAOA,IAGLsgB,EAAwB5nB,EAAM4c,kBAC9BA,OAA8C,IAA1BgL,EAAmC,EAAiBA,EACxErM,EAAgBvb,EAAMub,cACtB/d,EAAWwC,EAAMxC,SACjBqqB,EAAwB7nB,EAAM8nB,qBAC9BA,OAAiD,IAA1BD,GAA2CA,EAClE3X,EAAYlQ,EAAMkQ,UAClBgW,EAAwBlmB,EAAMmmB,iBAC9BA,OAA6C,IAA1BD,GAA2CA,EAC9D6B,EAAwB/nB,EAAMgoB,qBAC9BA,OAAiD,IAA1BD,GAA2CA,EAClE3B,EAAwBpmB,EAAMqmB,oBAC9BA,OAAgD,IAA1BD,GAA2CA,EACjE6B,EAAwBjoB,EAAMkoB,qBAC9BA,OAAiD,IAA1BD,GAA2CA,EAClEE,EAAuBnoB,EAAMooB,cAC7BA,OAAyC,IAAzBD,GAA0CA,EAC1D7B,EAAwBtmB,EAAMumB,oBAC9BA,OAAgD,IAA1BD,GAA2CA,EACjE+B,EAAwBroB,EAAMskB,kBAC9BA,OAA8C,IAA1B+D,GAA2CA,EAC/DC,EAAsBtoB,EAAMuoB,aAC5BA,OAAuC,IAAxBD,GAAyCA,EACxDE,EAAqBxoB,EAAMyoB,YAC3BA,OAAqC,IAAvBD,GAAwCA,EACtDE,EAAiB1oB,EAAM2oB,QACvBA,OAA6B,IAAnBD,EAA4BlB,EAAiBkB,EACvDE,EAAkB5oB,EAAM4oB,gBACxB/M,EAAU7b,EAAM6b,QAChBgN,EAAkB7oB,EAAM6oB,gBACxBC,EAAa9oB,EAAM8oB,WACnB5wB,EAAO8H,EAAM9H,KACbqO,GAAQ,OAAyBvG,EAAO,CAAC,oBAAqB,gBAAiB,WAAY,uBAAwB,YAAa,mBAAoB,uBAAwB,sBAAuB,uBAAwB,gBAAiB,sBAAuB,oBAAqB,eAAgB,cAAe,UAAW,kBAAmB,UAAW,kBAAmB,aAAc,SAEjY0O,EAAkB,YAAe,GACjCqa,GAASra,EAAgB,GACzBsa,GAAYta,EAAgB,GAE5BmO,GAAQ,SAAa,CAAC,GACtBoM,GAAe,SAAa,MAC5BxD,GAAW,SAAa,MACxB1P,IAAY,EAAAF,EAAA,GAAW4P,GAAUlgB,GACjC2jB,GAzFN,SAA0BlpB,GACxB,QAAOA,EAAMxC,UAAWwC,EAAMxC,SAASwC,MAAM1d,eAAe,KAC9D,CAuFsB6mC,CAAiBnpB,GAEjCwmB,GAAS,WACX,OAAO,EAAAjC,EAAA,GAAc0E,GAAazqB,QACpC,EAEI4qB,GAAW,WAGb,OAFAvM,GAAMre,QAAQinB,SAAWA,GAASjnB,QAClCqe,GAAMre,QAAQ+kB,UAAY0F,GAAazqB,QAChCqe,GAAMre,OACf,EAEI6qB,GAAgB,WAClBV,EAAQW,MAAMF,KAAY,CACxB9E,kBAAmBA,IAGrBmB,GAASjnB,QAAQ+qB,UAAY,CAC/B,EAEIC,IAAa,EAAAla,EAAA,IAAiB,WAChC,IAAIma,EAnHR,SAAsBvZ,GAEpB,OADAA,EAAiC,mBAAdA,EAA2BA,IAAcA,EACrD,cAAqBA,EAC9B,CAgH4BwZ,CAAaxZ,IAAcsW,KAASpiC,KAC5DukC,EAAQ/+B,IAAIw/B,KAAYK,GAEpBhE,GAASjnB,SACX6qB,IAEJ,IACIM,GAAa,eAAkB,WACjC,OAAOhB,EAAQgB,WAAWP,KAC5B,GAAG,CAACT,IACAiB,IAAkB,EAAAta,EAAA,IAAiB,SAAU5B,GAC/Cub,GAAazqB,QAAUkP,EAElBA,IAIDob,GACFA,IAGE5wB,GAAQyxB,KACVN,KAEApG,EAAWwC,GAASjnB,SAAS,GAEjC,IACIqrB,GAAc,eAAkB,WAClClB,EAAQ55B,OAAOq6B,KACjB,GAAG,CAACT,IAcJ,GAbA,aAAgB,WACd,OAAO,WACLkB,IACF,CACF,GAAG,CAACA,KACJ,aAAgB,WACV3xB,EACFsxB,KACUN,IAAkBpB,GAC5B+B,IAEJ,GAAG,CAAC3xB,EAAM2xB,GAAaX,GAAepB,EAAsB0B,MAEvDf,IAAgBvwB,KAAUgxB,IAAiBH,IAC9C,OAAO,KAGT,IAmDIe,GAzMc,SAAgBxiB,GAClC,MAAO,CAELJ,KAAM,CACJQ,SAAU,QACViD,OAAQrD,EAAMqD,OAAOkS,MACrBhV,MAAO,EACPiD,OAAQ,EACRlD,IAAK,EACLD,KAAM,GAIRiT,OAAQ,CACNI,WAAY,UAGlB,CAwLoB,CAAO1T,GAAS,CAChCqD,OAAQA,EAAA,IAEN+P,GAAa,CAAC,EAYlB,YAVgC3d,IAA5BS,EAASwC,MAAMgK,WACjB0Q,GAAW1Q,SAAWxM,EAASwC,MAAMgK,UAAY,MAI/Ckf,KACFxO,GAAW7B,SAAU,EAAAkR,EAAA,IA9DL,WAChBf,IAAU,EACZ,GA4D0DxrB,EAASwC,MAAM6Y,SACvE6B,GAAW/O,UAAW,EAAAoe,EAAA,IA3DL,WACjBf,IAAU,GAENlB,GACF+B,IAEJ,GAqD4DrsB,EAASwC,MAAM2L,WAGvD,gBAAoBqe,EAAA,EAAQ,CAC9CzkB,IAAKqkB,GACL1Z,UAAWA,EACXkY,cAAeA,GACD,gBAAoB,OAAO,OAAS,CAClD7iB,IAAKwQ,GACL9C,UA9CkB,SAAuBpM,GAOvB,WAAdA,EAAMzf,KAAqBuiC,OAI3Bd,GACFA,EAAgBhiB,GAGbqhB,IAEHrhB,EAAMojB,kBAEFpO,GACFA,EAAQhV,EAAO,kBAGrB,EAwBEQ,KAAM,gBACLd,EAAO,CACRnM,OAAO,OAAS,CAAC,EAAG0vB,GAAY5iB,MAAOhP,GAAQ6wB,GAASe,GAAYlP,OAAS,CAAC,EAAGrU,EAAMnM,SACrFmuB,EAAe,KAAoB,gBAAoB3L,GAAmB,OAAS,CACrF1kB,KAAMA,EACNqR,QAlEwB,SAA6B1C,GACjDA,EAAMtG,SAAWsG,EAAMqO,gBAIvB0T,GACFA,EAAgB/hB,IAGbmhB,GAAwBnM,GAC3BA,EAAQhV,EAAO,iBAEnB,GAuDG0U,IAA8B,gBAAoB,EAAW,CAC9D8K,oBAAqBA,EACrBF,iBAAkBA,EAClBI,oBAAqBA,EACrBC,OAAQA,GACRC,UAAWkD,GACXzxB,KAAMA,GACQ,eAAmBsF,EAAUkd,MAC/C,wGC1OIwP,EAAqB,cAAiB,SAAelqB,EAAOuF,GAC9D,IAAIE,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClB+M,EAAmBzS,EAAM4J,UACzB7J,OAAiC,IAArB0S,EAA8B,MAAQA,EAClDvM,EAAgBlG,EAAMmG,OACtBA,OAA2B,IAAlBD,GAAmCA,EAC5CsV,EAAmBxb,EAAMyb,UACzBA,OAAiC,IAArBD,EAA8B,EAAIA,EAC9CW,EAAiBnc,EAAMoc,QACvBA,OAA6B,IAAnBD,EAA4B,YAAcA,EACpD5V,GAAQ,OAAyBvG,EAAO,CAAC,UAAW,YAAa,YAAa,SAAU,YAAa,YAEzG,OAAoB,gBAAoBD,GAAW,OAAS,CAC1D2F,WAAW,OAAKD,EAAQyB,KAAMxB,EAAuB,aAAZ0W,EAAyB3W,EAAQ0kB,SAAW1kB,EAAQ,YAAY5F,OAAO4b,KAActV,GAAUV,EAAQ0B,SAChJ5B,IAAKA,GACJgB,GACL,IA4DA,KAAe,QAvGK,SAAgBe,GAClC,IAAI8iB,EAAa,CAAC,EAMlB,OALA9iB,EAAM+iB,QAAQ9/B,SAAQ,SAAU+/B,EAAQ/nB,GACtC6nB,EAAW,YAAYvqB,OAAO0C,IAAU,CACtCgoB,UAAWD,EAEf,KACO,OAAS,CAEdpjB,KAAM,CACJe,gBAAiBX,EAAMY,QAAQsiB,WAAW/N,MAC1ChG,MAAOnP,EAAMY,QAAQuiB,KAAK3K,QAC1B9d,WAAYsF,EAAME,YAAYnX,OAAO,eAIvC8W,QAAS,CACPqB,aAAclB,EAAMoB,MAAMF,cAI5B2hB,SAAU,CACR9T,OAAQ,aAAaxW,OAAOyH,EAAMY,QAAQC,WAE3CiiB,EACL,GA8EkC,CAChC1/B,KAAM,YADR,CAEGw/B,2FClGH,IAAIhc,EAAsC,oBAAXvoB,OAAyB,kBAAwB,YAM5EqkC,EAAsB,cAAiB,SAAgBhqB,EAAOuF,GAChE,IAAI/H,EAAWwC,EAAMxC,SACjB0S,EAAYlQ,EAAMkQ,UAClBiY,EAAuBnoB,EAAMooB,cAC7BA,OAAyC,IAAzBD,GAA0CA,EAC1DW,EAAa9oB,EAAM8oB,WAEnBpa,EAAkB,WAAe,MACjC6U,EAAY7U,EAAgB,GAC5Bgc,EAAehc,EAAgB,GAE/BqH,GAAY,OAAyB,iBAAqBvY,GAAYA,EAAS+H,IAAM,KAAMA,GAsB/F,OArBA2I,GAAkB,WACXka,GACHsC,EA1BN,SAAsBxa,GAGpB,OAFAA,EAAiC,mBAAdA,EAA2BA,IAAcA,EAErD,cAAqBA,EAC9B,CAsBmBwZ,CAAaxZ,IAAc7e,SAASjN,KAErD,GAAG,CAAC8rB,EAAWkY,IACfla,GAAkB,WAChB,GAAIqV,IAAc6E,EAEhB,OADA,OAAO7iB,EAAKge,GACL,YACL,OAAOhe,EAAK,KACd,CAIJ,GAAG,CAACA,EAAKge,EAAW6E,IACpBla,GAAkB,WACZ4a,IAAevF,GAAa6E,IAC9BU,GAEJ,GAAG,CAACA,EAAYvF,EAAW6E,IAEvBA,EACgB,iBAAqB5qB,GACjB,eAAmBA,EAAU,CAC/C+H,IAAKwQ,IAIFvY,EAGF+lB,EAAyB,eAAsB/lB,EAAU+lB,GAAaA,CAC/E,IA2CA,qKCxDO,SAASoH,EAAkBtO,EAAW3O,GAC3C,IAAIpD,EArCN,SAA2B+R,EAAW3O,GACpC,IACIpD,EADAsG,EAAOlD,EAAKmD,wBAGhB,GAAInD,EAAKkd,cACPtgB,EAAYoD,EAAKkd,kBACZ,CACL,IAAIC,EAAgBllC,OAAO09B,iBAAiB3V,GAC5CpD,EAAYugB,EAAcC,iBAAiB,sBAAwBD,EAAcC,iBAAiB,YACpG,CAEA,IAAIC,EAAU,EACVC,EAAU,EAEd,GAAI1gB,GAA2B,SAAdA,GAA6C,iBAAdA,EAAwB,CACtE,IAAI2gB,EAAkB3gB,EAAUje,MAAM,KAAK,GAAGA,MAAM,KAAK,GAAGA,MAAM,KAClE0+B,EAAUj0B,SAASm0B,EAAgB,GAAI,IACvCD,EAAUl0B,SAASm0B,EAAgB,GAAI,GACzC,CAEA,MAAkB,SAAd5O,EACK,cAAcxc,OAAOla,OAAOoS,WAAY,mBAAmB8H,OAAOkrB,EAAUna,EAAKjJ,KAAM,OAG9E,UAAd0U,EACK,eAAexc,OAAO+Q,EAAKjJ,KAAOiJ,EAAK1B,MAAQ6b,EAAS,OAG/C,OAAd1O,EACK,cAAcxc,OAAOla,OAAOsS,YAAa,mBAAmB4H,OAAOmrB,EAAUpa,EAAKhJ,IAAK,OAIzF,eAAe/H,OAAO+Q,EAAKhJ,IAAMgJ,EAAK9I,OAASkjB,EAAS,MACjE,CAGkBE,CAAkB7O,EAAW3O,GAEzCpD,IACFoD,EAAKtT,MAAM+wB,gBAAkB7gB,EAC7BoD,EAAKtT,MAAMkQ,UAAYA,EAE3B,CACA,IAAI2T,EAAiB,CACnBrR,MAAO,oBACPD,KAAM,oBAOJye,EAAqB,cAAiB,SAAeprB,EAAOuF,GAC9D,IAAI/H,EAAWwC,EAAMxC,SACjB6tB,EAAmBrrB,EAAMqc,UACzBA,OAAiC,IAArBgP,EAA8B,OAASA,EACnD7c,EAASxO,EAAMoH,GACfyR,EAAU7Y,EAAM6Y,QAChBC,EAAY9Y,EAAM8Y,UAClBC,EAAa/Y,EAAM+Y,WACnBC,EAAShZ,EAAMgZ,OACfrN,EAAW3L,EAAM2L,SACjBsN,EAAYjZ,EAAMiZ,UAClB7e,EAAQ4F,EAAM5F,MACd8e,EAAiBlZ,EAAMhT,QACvBA,OAA6B,IAAnBksB,EAA4B+E,EAAiB/E,EACvD9S,EAAwBpG,EAAMqG,oBAC9BA,OAAgD,IAA1BD,EAAmC,KAAaA,EACtEG,GAAQ,OAAyBvG,EAAO,CAAC,WAAY,YAAa,KAAM,UAAW,YAAa,aAAc,SAAU,WAAY,YAAa,QAAS,UAAW,wBAErKsH,GAAQ,SACRgkB,EAAc,SAAa,MAK3BxV,EAAe,eAAkB,SAAUhvB,GAE7CwkC,EAAY9sB,QAAU,cAAqB1X,EAC7C,GAAG,IACCykC,GAAwB,OAAW/tB,EAAS+H,IAAKuQ,GACjDC,GAAY,OAAWwV,EAAuBhmB,GAE9CiU,EAA+B,SAAsCC,GACvE,OAAO,SAAUI,GACXJ,SAEkB1c,IAAhB8c,EACFJ,EAAS6R,EAAY9sB,SAErBib,EAAS6R,EAAY9sB,QAASqb,GAGpC,CACF,EAEIC,EAAcN,GAA6B,SAAU9L,EAAMmM,GAC7D8Q,EAAkBtO,EAAW3O,IAC7B,OAAOA,GAEHmL,GACFA,EAAQnL,EAAMmM,EAElB,IACIE,EAAiBP,GAA6B,SAAU9L,EAAMmM,GAChE,IAAIuE,GAAkB,OAAmB,CACvCpxB,QAASA,EACToN,MAAOA,GACN,CACD6f,KAAM,UAERvM,EAAKtT,MAAMikB,iBAAmB/W,EAAME,YAAYnX,OAAO,qBAAqB,OAAS,CAAC,EAAG+tB,EAAiB,CACxGrM,OAAQzK,EAAME,YAAYuK,OAAOyZ,WAEnC9d,EAAKtT,MAAM4H,WAAasF,EAAME,YAAYnX,OAAO,aAAa,OAAS,CAAC,EAAG+tB,EAAiB,CAC1FrM,OAAQzK,EAAME,YAAYuK,OAAOyZ,WAEnC9d,EAAKtT,MAAM+wB,gBAAkB,OAC7Bzd,EAAKtT,MAAMkQ,UAAY,OAEnByO,GACFA,EAAWrL,EAAMmM,EAErB,IACIO,EAAgBZ,EAA6BV,GAC7CwB,EAAgBd,EAA6BP,GAC7CoB,EAAab,GAA6B,SAAU9L,GACtD,IAAI0Q,GAAkB,OAAmB,CACvCpxB,QAASA,EACToN,MAAOA,GACN,CACD6f,KAAM,SAERvM,EAAKtT,MAAMikB,iBAAmB/W,EAAME,YAAYnX,OAAO,qBAAqB,OAAS,CAAC,EAAG+tB,EAAiB,CACxGrM,OAAQzK,EAAME,YAAYuK,OAAO0Z,SAEnC/d,EAAKtT,MAAM4H,WAAasF,EAAME,YAAYnX,OAAO,aAAa,OAAS,CAAC,EAAG+tB,EAAiB,CAC1FrM,OAAQzK,EAAME,YAAYuK,OAAO0Z,SAEnCd,EAAkBtO,EAAW3O,GAEzBsL,GACFA,EAAOtL,EAEX,IACIV,EAAewM,GAA6B,SAAU9L,GAExDA,EAAKtT,MAAMikB,iBAAmB,GAC9B3Q,EAAKtT,MAAM4H,WAAa,GAEpB2J,GACFA,EAAS+B,EAEb,IACIge,EAAiB,eAAkB,WACjCJ,EAAY9sB,SACdmsB,EAAkBtO,EAAWiP,EAAY9sB,QAE7C,GAAG,CAAC6d,IAyBJ,OAxBA,aAAgB,WAEd,IAAI7N,GAAwB,SAAd6N,GAAsC,UAAdA,EAAtC,CAIA,IAAIsP,GAAe,QAAS,WACtBL,EAAY9sB,SACdmsB,EAAkBtO,EAAWiP,EAAY9sB,QAE7C,IAEA,OADA7Y,OAAOsE,iBAAiB,SAAU0hC,GAC3B,WACLA,EAAapkC,QACb5B,OAAOmE,oBAAoB,SAAU6hC,EACvC,CAXA,CAYF,GAAG,CAACtP,EAAW7N,IACf,aAAgB,WACTA,GAGHkd,GAEJ,GAAG,CAACld,EAAQkd,IACQ,gBAAoBrlB,GAAqB,OAAS,CACpEiR,QAASgU,EACTzS,QAASiB,EACThB,UAAWsB,EACXrB,WAAYgB,EACZf,OAAQqB,EACR1O,SAAUqB,EACViM,UAAWqB,EACX7M,QAAQ,EACRrG,GAAIoH,EACJxhB,QAASA,GACRuZ,IAAQ,SAAUtb,EAAOyvB,GAC1B,OAAoB,eAAmBld,GAAU,OAAS,CACxD+H,IAAKwQ,EACL3b,OAAO,OAAS,CACd4gB,WAAsB,WAAV/vB,GAAuBujB,OAAoBzR,EAAX,UAC3C3C,EAAOoD,EAASwC,MAAM5F,QACxBsgB,GACL,GACF,IAmEA,uHC3PIkR,EAAuB,cAAiB,SAAiB5rB,EAAOuF,GAClE,IAAIE,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClB+M,EAAmBzS,EAAM4J,UACzB7J,OAAiC,IAArB0S,EAA8B,MAAQA,EAClDuP,EAAwBhiB,EAAMiiB,eAC9BA,OAA2C,IAA1BD,GAA2CA,EAC5D7F,EAAiBnc,EAAMoc,QACvBA,OAA6B,IAAnBD,EAA4B,UAAYA,EAClD5V,GAAQ,OAAyBvG,EAAO,CAAC,UAAW,YAAa,YAAa,iBAAkB,YAEpG,OAAoB,gBAAoBD,GAAW,OAAS,CAC1D2F,WAAW,OAAKD,EAAQyB,KAAMzB,EAAQ2W,GAAU1W,GAAYuc,GAAkBxc,EAAQgd,SACtFld,IAAKA,GACJgB,GACL,IAoCA,KAAe,QA9EK,SAAgBe,GAClC,MAAO,CAELJ,KAAM,CACJQ,SAAU,WACVrN,QAAS,OACTuQ,WAAY,UAId6X,SAAS,OAAgB,CACvBK,YAAaxb,EAAM2B,QAAQ,GAC3B8Z,aAAczb,EAAM2B,QAAQ,IAC3B3B,EAAMukB,YAAYC,GAAG,MAAO,CAC7BhJ,YAAaxb,EAAM2B,QAAQ,GAC3B8Z,aAAczb,EAAM2B,QAAQ,KAI9B8iB,QAASzkB,EAAM0kB,OAAOC,QAGtBpL,MAAO,CACL5W,UAAW,IAGjB,GAoDkC,CAChCvf,KAAM,cADR,CAEGkhC,oHCoDCM,EAAwB,CAC1BC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,UAAW,KACXC,UAAW,KACXC,MAAO,IACPC,MAAO,KAELC,EAA0B,cAAiB,SAAoB7sB,EAAOuF,GACxE,IAAIunB,EAAe9sB,EAAM+sB,MACrBA,OAAyB,IAAjBD,EAA0B,UAAYA,EAC9CrnB,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClBoZ,EAAe9e,EAAMyW,MACrBA,OAAyB,IAAjBqI,EAA0B,UAAYA,EAC9ClV,EAAY5J,EAAM4J,UAClBojB,EAAiBhtB,EAAM3F,QACvBA,OAA6B,IAAnB2yB,EAA4B,UAAYA,EAClDC,EAAsBjtB,EAAMktB,aAC5BA,OAAuC,IAAxBD,GAAyCA,EACxDE,EAAgBntB,EAAMotB,OACtBA,OAA2B,IAAlBD,GAAmCA,EAC5CE,EAAmBrtB,EAAMstB,UACzBA,OAAiC,IAArBD,GAAsCA,EAClDlR,EAAiBnc,EAAMoc,QACvBA,OAA6B,IAAnBD,EAA4B,QAAUA,EAChDoR,EAAwBvtB,EAAMwtB,eAC9BA,OAA2C,IAA1BD,EAAmCrB,EAAwBqB,EAC5EhnB,GAAQ,OAAyBvG,EAAO,CAAC,QAAS,UAAW,YAAa,QAAS,YAAa,UAAW,eAAgB,SAAU,YAAa,UAAW,mBAE7JD,EAAY6J,IAAc0jB,EAAY,IAAME,EAAepR,IAAY8P,EAAsB9P,KAAa,OAC9G,OAAoB,gBAAoBrc,GAAW,OAAS,CAC1D2F,WAAW,OAAKD,EAAQyB,KAAMxB,EAAuB,YAAZ0W,GAAyB3W,EAAQ2W,GAAoB,YAAV3F,GAAuBhR,EAAQ,QAAQ5F,QAAO,OAAW4W,KAAU2W,GAAU3nB,EAAQ2nB,OAAQF,GAAgBznB,EAAQynB,aAAcI,GAAa7nB,EAAQ6nB,UAAqB,YAAVP,GAAuBtnB,EAAQ,QAAQ5F,QAAO,OAAWktB,KAAsB,YAAZ1yB,GAAyBoL,EAAQ,UAAU5F,QAAO,OAAWxF,MACvXkL,IAAKA,GACJgB,GACL,IAyEA,KAAe,QApPK,SAAgBe,GAClC,MAAO,CAELJ,KAAM,CACJkB,OAAQ,GAIVwkB,MAAOtlB,EAAMgY,WAAWsN,MAGxBD,MAAOrlB,EAAMgY,WAAWqN,MAGxBc,QAASnmB,EAAMgY,WAAWmO,QAG1BrY,OAAQ9N,EAAMgY,WAAWlK,OAGzB+W,GAAI7kB,EAAMgY,WAAW6M,GAGrBC,GAAI9kB,EAAMgY,WAAW8M,GAGrBC,GAAI/kB,EAAMgY,WAAW+M,GAGrBC,GAAIhlB,EAAMgY,WAAWgN,GAGrBC,GAAIjlB,EAAMgY,WAAWiN,GAGrBC,GAAIllB,EAAMgY,WAAWkN,GAGrBC,UAAWnlB,EAAMgY,WAAWmN,UAG5BC,UAAWplB,EAAMgY,WAAWoN,UAG5BgB,SAAUpmB,EAAMgY,WAAWoO,SAG3BC,OAAQ,CACNjmB,SAAU,WACVI,OAAQ,EACRoH,MAAO,EACP0C,SAAU,UAIZgc,UAAW,CACTxO,UAAW,QAIbyO,YAAa,CACXzO,UAAW,UAIb0O,WAAY,CACV1O,UAAW,SAIb2O,aAAc,CACZ3O,UAAW,WAIbgO,OAAQ,CACNxb,SAAU,SACVoc,aAAc,WACdC,WAAY,UAIdf,aAAc,CACZ5kB,aAAc,UAIhBglB,UAAW,CACThlB,aAAc,IAIhBsX,aAAc,CACZnJ,MAAO,WAIToJ,aAAc,CACZpJ,MAAOnP,EAAMY,QAAQ4X,QAAQC,MAI/BC,eAAgB,CACdvJ,MAAOnP,EAAMY,QAAQ+X,UAAUF,MAIjCmO,iBAAkB,CAChBzX,MAAOnP,EAAMY,QAAQuiB,KAAK3K,SAI5BqO,mBAAoB,CAClB1X,MAAOnP,EAAMY,QAAQuiB,KAAKxK,WAI5BmO,WAAY,CACV3X,MAAOnP,EAAMY,QAAQpd,MAAMi1B,MAI7BsO,cAAe,CACbh0B,QAAS,UAIXi0B,aAAc,CACZj0B,QAAS,SAGf,GAiHkC,CAChC3P,KAAM,iBADR,CAEGmiC,yLCjPH,SAAS0B,EAAM5qC,GACb,IAAI6qC,EAAM1rC,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,EAC1EqH,EAAMrH,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,EAQ9E,OAAOmF,KAAKumC,IAAIvmC,KAAKkC,IAAIqkC,EAAK7qC,GAAQwG,EACxC,CA6FO,SAASskC,EAAehY,GAE7B,GAAIA,EAAM/jB,KACR,OAAO+jB,EAGT,GAAwB,MAApBA,EAAMrlB,OAAO,GACf,OAAOq9B,EA3FJ,SAAkBhY,GACvBA,EAAQA,EAAMnU,OAAO,GACrB,IAAIosB,EAAK,IAAIC,OAAO,OAAO9uB,OAAO4W,EAAM1zB,QAAU,EAAI,EAAI,EAAG,KAAM,KAC/D6rC,EAASnY,EAAMjT,MAAMkrB,GAQzB,OANIE,GAA+B,IAArBA,EAAO,GAAG7rC,SACtB6rC,EAASA,EAAOtiC,KAAI,SAAUzJ,GAC5B,OAAOA,EAAIA,CACb,KAGK+rC,EAAS,MAAM/uB,OAAyB,IAAlB+uB,EAAO7rC,OAAe,IAAM,GAAI,KAAK8c,OAAO+uB,EAAOtiC,KAAI,SAAUzJ,EAAG0f,GAC/F,OAAOA,EAAQ,EAAIzL,SAASjU,EAAG,IAAMoF,KAAKgpB,MAAMna,SAASjU,EAAG,IAAM,IAAM,KAAQ,GAClF,IAAG2J,KAAK,MAAO,KAAO,EACxB,CA6E0BqiC,CAASpY,IAGjC,IAAIqY,EAASrY,EAAMnxB,QAAQ,KACvBoN,EAAO+jB,EAAMjkB,UAAU,EAAGs8B,GAE9B,IAAsD,IAAlD,CAAC,MAAO,OAAQ,MAAO,QAAQxpC,QAAQoN,GACzC,MAAM,IAAIrL,OAAuL,OAAuB,EAAGovB,IAG7N,IAAI5J,EAAS4J,EAAMjkB,UAAUs8B,EAAS,EAAGrY,EAAM1zB,OAAS,GAAGsJ,MAAM,KAIjE,MAAO,CACLqG,KAAMA,EACNma,OALFA,EAASA,EAAOvgB,KAAI,SAAU3I,GAC5B,OAAOorC,WAAWprC,EACpB,IAKF,CAUO,SAASqrC,EAAevY,GAC7B,IAAI/jB,EAAO+jB,EAAM/jB,KACbma,EAAS4J,EAAM5J,OAYnB,OAV6B,IAAzBna,EAAKpN,QAAQ,OAEfunB,EAASA,EAAOvgB,KAAI,SAAUzJ,EAAGD,GAC/B,OAAOA,EAAI,EAAIkU,SAASjU,EAAG,IAAMA,CACnC,KACkC,IAAzB6P,EAAKpN,QAAQ,SACtBunB,EAAO,GAAK,GAAGhN,OAAOgN,EAAO,GAAI,KACjCA,EAAO,GAAK,GAAGhN,OAAOgN,EAAO,GAAI,MAG5B,GAAGhN,OAAOnN,EAAM,KAAKmN,OAAOgN,EAAOrgB,KAAK,MAAO,IACxD,CAWO,SAASyiC,EAAiBC,EAAY1E,GAC3C,IAAI2E,EAAOC,EAAaF,GACpBG,EAAOD,EAAa5E,GACxB,OAAQviC,KAAKkC,IAAIglC,EAAME,GAAQ,MAASpnC,KAAKumC,IAAIW,EAAME,GAAQ,IACjE,CAWO,SAASD,EAAa3Y,GAE3B,IAAI6Y,EAAqB,SADzB7Y,EAAQgY,EAAehY,IACP/jB,KAAiB+7B,EAlH5B,SAAkBhY,GAEvB,IACI5J,GAFJ4J,EAAQgY,EAAehY,IAEH5J,OAChB1jB,EAAI0jB,EAAO,GACXlqB,EAAIkqB,EAAO,GAAK,IAChBzkB,EAAIykB,EAAO,GAAK,IAChB9lB,EAAIpE,EAAIsF,KAAKumC,IAAIpmC,EAAG,EAAIA,GAExB/D,EAAI,SAAWxB,GACjB,IAAI+I,EAAI9I,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,IAAMD,EAAIsG,EAAI,IAAM,GAC3F,OAAOf,EAAIrB,EAAIkB,KAAKkC,IAAIlC,KAAKumC,IAAI5iC,EAAI,EAAG,EAAIA,EAAG,IAAK,EACtD,EAEI8G,EAAO,MACP48B,EAAM,CAACrnC,KAAKgpB,MAAa,IAAP5sB,EAAE,IAAW4D,KAAKgpB,MAAa,IAAP5sB,EAAE,IAAW4D,KAAKgpB,MAAa,IAAP5sB,EAAE,KAOxE,MALmB,SAAfoyB,EAAM/jB,OACRA,GAAQ,IACR48B,EAAIlqC,KAAKynB,EAAO,KAGXmiB,EAAe,CACpBt8B,KAAMA,EACNma,OAAQyiB,GAEZ,CAwFkDC,CAAS9Y,IAAQ5J,OAAS4J,EAAM5J,OAOhF,OANAyiB,EAAMA,EAAIhjC,KAAI,SAAUkjC,GAGtB,OAFAA,GAAO,MAEO,OAAUA,EAAM,MAAQvnC,KAAKkpB,KAAKqe,EAAM,MAAS,MAAO,IACxE,IAEOC,QAAQ,MAASH,EAAI,GAAK,MAASA,EAAI,GAAK,MAASA,EAAI,IAAII,QAAQ,GAC9E,CAUO,SAASC,EAAUlZ,GACxB,IAAImZ,EAAc9sC,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,IACtF,OAAOssC,EAAa3Y,GAAS,GAAMoZ,EAAOpZ,EAAOmZ,GAAeE,EAAQrZ,EAAOmZ,EACjF,CAiCO,SAASG,EAAMtZ,EAAO9yB,GAS3B,OARA8yB,EAAQgY,EAAehY,GACvB9yB,EAAQ4qC,EAAM5qC,GAEK,QAAf8yB,EAAM/jB,MAAiC,QAAf+jB,EAAM/jB,OAChC+jB,EAAM/jB,MAAQ,KAGhB+jB,EAAM5J,OAAO,GAAKlpB,EACXqrC,EAAevY,EACxB,CASO,SAASoZ,EAAOpZ,EAAOmZ,GAI5B,GAHAnZ,EAAQgY,EAAehY,GACvBmZ,EAAcrB,EAAMqB,IAEe,IAA/BnZ,EAAM/jB,KAAKpN,QAAQ,OACrBmxB,EAAM5J,OAAO,IAAM,EAAI+iB,OAClB,IAAmC,IAA/BnZ,EAAM/jB,KAAKpN,QAAQ,OAC5B,IAAK,IAAI1C,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAC1B6zB,EAAM5J,OAAOjqB,IAAM,EAAIgtC,EAI3B,OAAOZ,EAAevY,EACxB,CASO,SAASqZ,EAAQrZ,EAAOmZ,GAI7B,GAHAnZ,EAAQgY,EAAehY,GACvBmZ,EAAcrB,EAAMqB,IAEe,IAA/BnZ,EAAM/jB,KAAKpN,QAAQ,OACrBmxB,EAAM5J,OAAO,KAAO,IAAM4J,EAAM5J,OAAO,IAAM+iB,OACxC,IAAmC,IAA/BnZ,EAAM/jB,KAAKpN,QAAQ,OAC5B,IAAK,IAAI1C,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAC1B6zB,EAAM5J,OAAOjqB,KAAO,IAAM6zB,EAAM5J,OAAOjqB,IAAMgtC,EAIjD,OAAOZ,EAAevY,EACxB,+GC1SWzqB,EAAO,CAAC,KAAM,KAAM,KAAM,KAAM,MAE5B,SAASgkC,EAAkBnE,GACxC,IAAIoE,EAAsBpE,EAAYhf,OAClCA,OAAiC,IAAxBojB,EAAiC,CAC5CC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MACFL,EACAM,EAAoB1E,EAAY2E,KAChCA,OAA6B,IAAtBD,EAA+B,KAAOA,EAC7CE,EAAoB5E,EAAYjoC,KAChCA,OAA6B,IAAtB6sC,EAA+B,EAAIA,EAC1ClqB,GAAQ,OAAyBslB,EAAa,CAAC,SAAU,OAAQ,SAErE,SAASC,EAAG1kC,GACV,IAAIzD,EAA+B,iBAAhBkpB,EAAOzlB,GAAoBylB,EAAOzlB,GAAOA,EAC5D,MAAO,qBAAqByY,OAAOlc,GAAOkc,OAAO2wB,EAAM,IACzD,CAeA,SAASE,EAAQpgB,EAAOqgB,GACtB,IAAIC,EAAW5kC,EAAK1G,QAAQqrC,GAE5B,OAAIC,IAAa5kC,EAAKjJ,OAAS,EACtB+oC,EAAGxb,GAGL,qBAAqBzQ,OAAgC,iBAAlBgN,EAAOyD,GAAsBzD,EAAOyD,GAASA,GAAOzQ,OAAO2wB,EAAM,UAAY,cAAc3wB,SAAsB,IAAd+wB,GAAyD,iBAA/B/jB,EAAO7gB,EAAK4kC,EAAW,IAAmB/jB,EAAO7gB,EAAK4kC,EAAW,IAAMD,GAAO/sC,EAAO,KAAKic,OAAO2wB,EAAM,IAChR,CAmBA,OAAO,OAAS,CACdxkC,KAAMA,EACN6gB,OAAQA,EACRif,GAAIA,EACJ+E,KA5CF,SAAczpC,GACZ,IAAIwpC,EAAW5kC,EAAK1G,QAAQ8B,GAAO,EAC/B0pC,EAAajkB,EAAO7gB,EAAK4kC,IAE7B,OAAIA,IAAa5kC,EAAKjJ,OAEb+oC,EAAG,MAIL,qBAAqBjsB,QADM,iBAAfixB,GAA2BF,EAAW,EAAIE,EAAa1pC,GAC/BxD,EAAO,KAAKic,OAAO2wB,EAAM,IACtE,EAkCEE,QAASA,EACTK,KAvBF,SAAc3pC,GACZ,OAAOspC,EAAQtpC,EAAKA,EACtB,EAsBE8nB,MAlBF,SAAe9nB,GAQb,OAAOylB,EAAOzlB,EAChB,GAUGmf,EACL,iBCzEe,SAASyqB,EAAanF,EAAa5iB,EAAS+iB,GACzD,IAAIiF,EAEJ,OAAO,OAAS,CACdxO,QAAS,WACP,IAAI1E,EAASj7B,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAElF,OADAuR,QAAQC,KAAK,CAAC,qDAAsD,gDAAiD,2NAA2N9H,KAAK,QAC9U,OAAS,CACds2B,YAAa7Z,EAAQ,GACrB8Z,aAAc9Z,EAAQ,IACrB8U,GAAQ,OAAgB,CAAC,EAAG8N,EAAYC,GAAG,OAAO,OAAS,CAC5DhJ,YAAa7Z,EAAQ,GACrB8Z,aAAc9Z,EAAQ,IACrB8U,EAAO8N,EAAYC,GAAG,SAC3B,EACAG,SAAUgF,EAAW,CACnBhnB,UAAW,KACV,OAAgBgnB,EAAU,GAAGpxB,OAAOgsB,EAAYC,GAAG,MAAO,iCAAkC,CAC7F7hB,UAAW,MACT,OAAgBgnB,EAAUpF,EAAYC,GAAG,MAAO,CAClD7hB,UAAW,KACTgnB,IACHjF,EACL,iBCrBA,EAJa,CACXkF,MAAO,OACPC,MAAO,QCcT,EAhBW,CACT,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLC,KAAM,UACNC,KAAM,UACNC,KAAM,UACNC,KAAM,WCER,EAhBa,CACX,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLH,KAAM,UACNC,KAAM,UACNC,KAAM,UACNC,KAAM,WCER,EAhBW,CACT,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLH,KAAM,UACNC,KAAM,UACNC,KAAM,UACNC,KAAM,WCER,EAhBU,CACR,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLH,KAAM,UACNC,KAAM,UACNC,KAAM,UACNC,KAAM,WCER,EAhBa,CACX,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLH,KAAM,UACNC,KAAM,UACNC,KAAM,UACNC,KAAM,WCER,EAhBW,CACT,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLH,KAAM,UACNC,KAAM,UACNC,KAAM,UACNC,KAAM,WCER,EAhBY,CACV,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLH,KAAM,UACNC,KAAM,UACNC,KAAM,UACNC,KAAM,uBCDGC,EAAQ,CAEjB/G,KAAM,CAEJ3K,QAAS,sBAETG,UAAW,sBAEXna,SAAU,sBAEV2rB,KAAM,uBAGRtpB,QAAS,sBAGTqiB,WAAY,CACV/N,MAAO,QACP32B,QAAS,OAGXgX,OAAQ,CAEN0iB,OAAQ,sBAERwD,MAAO,sBACPvD,aAAc,IAEd2C,SAAU,sBACVsP,gBAAiB,IAEjB5rB,SAAU,sBAEVyC,mBAAoB,sBACpB6B,gBAAiB,IACjBD,MAAO,sBACPwnB,aAAc,IACdC,iBAAkB,MAGXC,EAAO,CAChBpH,KAAM,CACJ3K,QAAS,QACTG,UAAW,2BACXna,SAAU,2BACV2rB,KAAM,2BACNK,KAAM,4BAER3pB,QAAS,4BACTqiB,WAAY,CACV/N,MAAO,OACP32B,QAAS,WAEXgX,OAAQ,CACN0iB,OAAQ,QACRwD,MAAO,4BACPvD,aAAc,IACd2C,SAAU,4BACVsP,gBAAiB,IACjB5rB,SAAU,2BACVyC,mBAAoB,4BACpB6B,gBAAiB,IACjBD,MAAO,4BACPwnB,aAAc,IACdC,iBAAkB,MAItB,SAASG,EAAeC,EAAQ3V,EAAW4V,EAAOC,GAChD,IAAIC,EAAmBD,EAAYV,OAASU,EACxCE,EAAkBF,EAAYL,MAAsB,IAAdK,EAErCF,EAAO3V,KACN2V,EAAO1vC,eAAe2vC,GACxBD,EAAO3V,GAAa2V,EAAOC,GACJ,UAAd5V,EACT2V,EAAOR,OAAQ,QAAQQ,EAAOjS,KAAMoS,GACb,SAAd9V,IACT2V,EAAOH,MAAO,QAAOG,EAAOjS,KAAMqS,IAGxC,CAEe,SAASC,EAAcnqB,GACpC,IAAIoqB,EAAmBpqB,EAAQ4X,QAC3BA,OAA+B,IAArBwS,EAA8B,CAC1Cd,MAAO,OACPzR,KAAM,OACN8R,KAAM,QACJS,EACAC,EAAqBrqB,EAAQ+X,UAC7BA,OAAmC,IAAvBsS,EAAgC,CAC9Cf,MAAO,OACPzR,KAAM,OACN8R,KAAM,QACJU,EACAC,EAAiBtqB,EAAQpd,MACzBA,OAA2B,IAAnB0nC,EAA4B,CACtChB,MAAO,OACPzR,KAAM,OACN8R,KAAM,QACJW,EACAC,EAAmBvqB,EAAQwqB,QAC3BA,OAA+B,IAArBD,EAA8B,CAC1CjB,MAAO,OACPzR,KAAM,OACN8R,KAAM,QACJY,EACAE,EAAgBzqB,EAAQ0qB,KACxBA,OAAyB,IAAlBD,EAA2B,CACpCnB,MAAO,OACPzR,KAAM,OACN8R,KAAM,QACJc,EACAE,EAAmB3qB,EAAQ4qB,QAC3BA,OAA+B,IAArBD,EAA8B,CAC1CrB,MAAO,OACPzR,KAAM,OACN8R,KAAM,QACJgB,EACAE,EAAgB7qB,EAAQxV,KACxBA,OAAyB,IAAlBqgC,EAA2B,QAAUA,EAC5CC,EAAwB9qB,EAAQ+qB,kBAChCA,OAA8C,IAA1BD,EAAmC,EAAIA,EAC3DE,EAAuBhrB,EAAQgqB,YAC/BA,OAAuC,IAAzBgB,EAAkC,GAAMA,EACtD3sB,GAAQ,OAAyB2B,EAAS,CAAC,UAAW,YAAa,QAAS,UAAW,OAAQ,UAAW,OAAQ,oBAAqB,gBAK3I,SAASirB,EAAgB3I,GAWvB,OAVmB,QAAiBA,EAAYqH,EAAKpH,KAAK3K,UAAYmT,EAAoBpB,EAAKpH,KAAK3K,QAAU0R,EAAM/G,KAAK3K,OAW3H,CAEA,IAAIsT,EAAe,SAAsB3c,GACvC,IAAI4c,EAAYvwC,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,IAChFwwC,EAAaxwC,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,IACjFywC,EAAYzwC,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,IAOpF,KANA2zB,GAAQ,OAAS,CAAC,EAAGA,IAEVsJ,MAAQtJ,EAAM4c,KACvB5c,EAAMsJ,KAAOtJ,EAAM4c,KAGhB5c,EAAMsJ,KACT,MAAM,IAAI14B,OAA+M,OAAuB,EAAGgsC,IAGrP,GAA0B,iBAAf5c,EAAMsJ,KACf,MAAM,IAAI14B,OAAwe,OAAuB,EAAGgC,KAAKC,UAAUmtB,EAAMsJ,QAUniB,OAPAgS,EAAetb,EAAO,QAAS6c,EAAYpB,GAC3CH,EAAetb,EAAO,OAAQ8c,EAAWrB,GAEpCzb,EAAM+c,eACT/c,EAAM+c,aAAeL,EAAgB1c,EAAMsJ,OAGtCtJ,CACT,EAEIgd,EAAQ,CACV5B,KAAMA,EACNL,MAAOA,GAwCT,OA/BoB,EAAAkC,EAAA,IAAU,OAAS,CAErCC,OAAQ,EAERjhC,KAAMA,EAENotB,QAASsT,EAAatT,GAEtBG,UAAWmT,EAAanT,EAAW,OAAQ,OAAQ,QAEnDn1B,MAAOsoC,EAAatoC,GAEpB4nC,QAASU,EAAaV,GAEtBE,KAAMQ,EAAaR,GAEnBE,QAASM,EAAaN,GAEtBc,KAAM,EAGNX,kBAAmBA,EAEnBE,gBAAiBA,EAEjBC,aAAcA,EAIdlB,YAAaA,GACZuB,EAAM/gC,IAAQ6T,EAEnB,CCjOA,SAAS0K,EAAMttB,GACb,OAAOsE,KAAKgpB,MAAc,IAARttB,GAAe,GACnC,CAIA,SAASkwC,EAA4BlwC,GAQnC,OAAOstB,EAAMttB,EACf,CAEA,IAAImwC,EAAc,CAChBC,cAAe,aAEbC,EAAoB,6CAMT,SAASC,EAAiB/rB,EAASoX,GAChD,IAAI1d,EAA6B,mBAAf0d,EAA4BA,EAAWpX,GAAWoX,EAChE4U,EAAkBtyB,EAAKuyB,WACvBA,OAAiC,IAApBD,EAA6BF,EAAoBE,EAC9DE,EAAgBxyB,EAAKyd,SACrBA,OAA6B,IAAlB+U,EAA2B,GAAKA,EAC3CC,EAAuBzyB,EAAK0yB,gBAC5BA,OAA2C,IAAzBD,EAAkC,IAAMA,EAC1DE,EAAwB3yB,EAAK4yB,kBAC7BA,OAA8C,IAA1BD,EAAmC,IAAMA,EAC7DE,EAAwB7yB,EAAK8yB,iBAC7BA,OAA6C,IAA1BD,EAAmC,IAAMA,EAC5DE,EAAsB/yB,EAAKgzB,eAC3BA,OAAyC,IAAxBD,EAAiC,IAAMA,EACxDE,EAAoBjzB,EAAKkzB,aACzBA,OAAqC,IAAtBD,EAA+B,GAAKA,EACnDE,EAAcnzB,EAAKmzB,YACnBC,EAAWpzB,EAAK2d,QAChBhZ,GAAQ,OAAyB3E,EAAM,CAAC,aAAc,WAAY,kBAAmB,oBAAqB,mBAAoB,iBAAkB,eAAgB,cAAe,YAYnL,IAAIqzB,EAAO5V,EAAW,GAElBE,EAAUyV,GAAY,SAAU7hC,GAClC,MAAO,GAAG0M,OAAO1M,EAAO2hC,EAAeG,EAAM,MAC/C,EAEIC,EAAe,SAAsBC,EAAYhiC,EAAMiiC,EAAYC,EAAeC,GACpF,OAAO,OAAS,CACdnB,WAAYA,EACZgB,WAAYA,EACZ9V,SAAUE,EAAQpsB,GAElBiiC,WAAYA,GACXjB,IAAeH,EAAoB,CACpCqB,cAAe,GAAGx1B,OAAOoR,EAAMokB,EAAgBliC,GAAO,OACpD,CAAC,EAAGmiC,EAAQP,EAClB,EAEIQ,EAAW,CACbpJ,GAAI+I,EAAaZ,EAAiB,GAAI,OAAQ,KAC9ClI,GAAI8I,EAAaZ,EAAiB,GAAI,KAAM,IAC5CjI,GAAI6I,EAAaV,EAAmB,GAAI,MAAO,GAC/ClI,GAAI4I,EAAaV,EAAmB,GAAI,MAAO,KAC/CjI,GAAI2I,EAAaV,EAAmB,GAAI,MAAO,GAC/ChI,GAAI0I,EAAaR,EAAkB,GAAI,IAAK,KAC5CjI,UAAWyI,EAAaV,EAAmB,GAAI,KAAM,KACrD9H,UAAWwI,EAAaR,EAAkB,GAAI,KAAM,IACpD/H,MAAOuI,EAAaV,EAAmB,GAAI,IAAK,KAChD5H,MAAOsI,EAAaV,EAAmB,GAAI,KAAM,KACjDpf,OAAQ8f,EAAaR,EAAkB,GAAI,KAAM,GAAKZ,GACtDrG,QAASyH,EAAaV,EAAmB,GAAI,KAAM,IACnD9G,SAAUwH,EAAaV,EAAmB,GAAI,KAAM,EAAGV,IAEzD,OAAO,EAAAJ,EAAA,IAAU,OAAS,CACxBoB,aAAcA,EACdvV,QAASA,EACTtO,MAAO4iB,EAEPM,WAAYA,EACZ9U,SAAUA,EACViV,gBAAiBA,EACjBE,kBAAmBA,EACnBE,iBAAkBA,EAClBE,eAAgBA,GACfW,GAAWhvB,EAAO,CACnBivB,OAAO,GAGX,CCxGA,SAASC,IACP,MAAO,CAAC,GAAG51B,OAAO/c,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GAAI,OAAO+c,OAAO/c,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GAAI,OAAO+c,OAAO/c,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GAAI,OAAO+c,OAAO/c,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GAAI,kBAAkB+c,OAL5P,GAK0R,KAAM,GAAGA,OAAO/c,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GAAI,OAAO+c,OAAO/c,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GAAI,OAAO+c,OAAO/c,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GAAI,OAAO+c,OAAO/c,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GAAI,kBAAkB+c,OAJ3iB,IAI4kB,KAAM,GAAGA,OAAO/c,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GAAI,OAAO+c,OAAO/c,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GAAI,OAAO+c,OAAO/c,UAAUC,QAAU,QAAKga,EAAYja,UAAU,IAAK,OAAO+c,OAAO/c,UAAUC,QAAU,QAAKga,EAAYja,UAAU,IAAK,kBAAkB+c,OAHl2B,IAGq4B,MAAMrT,KAAK,IACj7B,CAGA,IACA,EADc,CAAC,OAAQipC,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,ICNhyC,EAHY,CACVjtB,aAAc,eCCD,SAASktB,IACtB,IAAIC,EAAe7yC,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,EAGvF,GAAI6yC,EAAaC,IACf,OAAOD,EAMT,IAAIrrB,GAAY,OAAmB,CACjCrB,QAAS0sB,IAGP1sB,EAAU,WACZ,IAAK,IAAI9D,EAAOriB,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMgjB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EwwB,EAAKxwB,GAAQviB,UAAUuiB,GASzB,OAAoB,IAAhBwwB,EAAK9yC,OACAunB,EAAU,GAGC,IAAhBurB,EAAK9yC,OACAunB,EAAUurB,EAAK,IAGjBA,EAAKvpC,KAAI,SAAUwpC,GACxB,GAAwB,iBAAbA,EACT,OAAOA,EAGT,IAAIC,EAASzrB,EAAUwrB,GACvB,MAAyB,iBAAXC,EAAsB,GAAGl2B,OAAOk2B,EAAQ,MAAQA,CAChE,IAAGvpC,KAAK,IACV,EAiBA,OAdAxK,OAAOgE,eAAeijB,EAAS,OAAQ,CACrC7iB,IAAK,WASH,OAAOuvC,CACT,IAEF1sB,EAAQ2sB,KAAM,EACP3sB,CACT,6BCjDA,SAAS+sB,IAkCP,IAjCA,IAAI9hC,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE/EmzC,EAAuB/hC,EAAQ23B,YAC/BqK,OAA4C,IAAzBD,EAAkC,CAAC,EAAIA,EAC1DE,EAAkBjiC,EAAQ83B,OAC1BoK,OAAkC,IAApBD,EAA6B,CAAC,EAAIA,EAChDE,EAAmBniC,EAAQgU,QAC3BouB,OAAoC,IAArBD,EAA8B,CAAC,EAAIA,EAClDV,EAAezhC,EAAQ+U,QACvBstB,EAAsBriC,EAAQorB,WAC9BkX,OAA0C,IAAxBD,EAAiC,CAAC,EAAIA,EACxDhwB,GAAQ,OAAyBrS,EAAS,CAAC,cAAe,SAAU,UAAW,UAAW,eAE1FgU,EAAUmqB,EAAciE,GACxBzK,EAAcmE,EAAkBkG,GAChCjtB,EAAUysB,EAAcC,GACxBc,GAAW,EAAA/C,EAAA,GAAU,CACvB7H,YAAaA,EACbxP,UAAW,MACX2P,OAAQgF,EAAanF,EAAa5iB,EAASmtB,GAC3CM,UAAW,CAAC,EAEZxuB,QAASA,EACTlI,MAAO,CAAC,EAERqqB,QAAS,EACT/K,WAAY2U,EAAiB/rB,EAASsuB,GACtCvtB,QAASA,EACTP,MAAO,EACPlB,YAAaA,EAAA,GACbmD,OAAQA,EAAA,GACPpE,GAEMpB,EAAOriB,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMgjB,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClGwwB,EAAKxwB,EAAO,GAAKviB,UAAUuiB,GAqC7B,OAlCAoxB,EAAWZ,EAAK5pC,QAAO,SAAU0qC,EAAKb,GACpC,OAAO,EAAApC,EAAA,GAAUiD,EAAKb,EACxB,GAAGW,EAiCL,CAaA,iDClGIG,GAAe,iBACnB,4FCCW7kB,EAAS,CAElBC,UAAW,+BAGXwZ,QAAS,+BAETqL,OAAQ,6BAERpL,MAAO,gCAIElkB,EAAW,CACpBE,SAAU,IACVyK,QAAS,IACT4kB,MAAO,IAEPC,SAAU,IAEVC,QAAS,IAETC,eAAgB,IAEhBC,cAAe,KAGjB,SAASC,EAASC,GAChB,MAAO,GAAGv3B,OAAO5X,KAAKgpB,MAAMmmB,GAAe,KAC7C,CAWA,MACErlB,OAAQA,EACRxK,SAAUA,EACVlX,OAAQ,WACN,IAAI2P,EAAQld,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,OAC7EoR,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE/Eu0C,EAAoBnjC,EAAQqT,SAC5B+vB,OAAuC,IAAtBD,EAA+B9vB,EAASwvB,SAAWM,EACpEE,EAAkBrjC,EAAQ6d,OAC1BylB,OAAmC,IAApBD,EAA6BxlB,EAAOC,UAAYulB,EAC/DE,EAAiBvjC,EAAQwqB,MACzBA,OAA2B,IAAnB+Y,EAA4B,EAAIA,GAChC,OAAyBvjC,EAAS,CAAC,WAAY,SAAU,UAgCrE,OAAQ/R,MAAMkU,QAAQ2J,GAASA,EAAQ,CAACA,IAAQ1T,KAAI,SAAUorC,GAC5D,MAAO,GAAG73B,OAAO63B,EAAc,KAAK73B,OAAiC,iBAAnBy3B,EAA8BA,EAAiBH,EAASG,GAAiB,KAAKz3B,OAAO23B,EAAc,KAAK33B,OAAwB,iBAAV6e,EAAqBA,EAAQyY,EAASzY,GAChN,IAAGlyB,KAAK,IACV,EACA2tB,sBAAuB,SAA+BrS,GACpD,IAAKA,EACH,OAAO,EAGT,IAAI6vB,EAAW7vB,EAAS,GAExB,OAAO7f,KAAKgpB,MAA2D,IAApD,EAAI,GAAKhpB,KAAKkpB,IAAIwmB,EAAU,KAAQA,EAAW,GACpE,gHCjGa,SAASjQ,IAQtB,OAPY,UAA4B,GAQ1C,+ECFA,IANA,SAAoBkQ,EAAiB1jC,GACnC,OAAO,OAAyB0jC,GAAiB,OAAS,CACxDhB,aAAc,KACb1iC,GACL,qCCGA,IATa,CACX2jC,cAAe,IACfC,UAAW,KACXC,OAAQ,KACRvb,OAAQ,KACRK,MAAO,KACPmb,SAAU,KACVC,QAAS,kGCTJ,IAAIC,EAAS,SAAgBxqB,GAClC,OAAOA,EAAK6b,SACd,EACO,SAAS4O,EAAmBn4B,EAAO9L,GACxC,IAAIlH,EAAUgT,EAAMhT,QAChBorC,EAAep4B,EAAM5F,MACrBA,OAAyB,IAAjBg+B,EAA0B,CAAC,EAAIA,EAC3C,MAAO,CACL7wB,SAAUnN,EAAMsQ,oBAAyC,iBAAZ1d,EAAuBA,EAAUA,EAAQkH,EAAQ+lB,OAAS,EACvGyE,MAAOtkB,EAAMi+B,gBAEjB,uFCNe,SAASC,EAAWj1B,GACjC,GAAsB,iBAAXA,EACT,MAAM,IAAIhc,OAA6G,OAAuB,IAGhJ,OAAOgc,EAAOjS,OAAO,GAAGmnC,cAAgBl1B,EAAO/Y,MAAM,EACvD,uCCFe,SAASy/B,IACtB,IAAK,IAAI5kB,EAAOriB,UAAUC,OAAQy1C,EAAQ,IAAIr2C,MAAMgjB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAChFmzB,EAAMnzB,GAAQviB,UAAUuiB,GAG1B,OAAOmzB,EAAMvsC,QAAO,SAAU0qC,EAAK8B,GACjC,OAAY,MAARA,EACK9B,EASF,WACL,IAAK,IAAI+B,EAAQ51C,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMu2C,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF9C,EAAK8C,GAAS71C,UAAU61C,GAG1BhC,EAAI3zC,MAAMC,KAAM4yC,GAChB4C,EAAKz1C,MAAMC,KAAM4yC,EACnB,CACF,IAAG,WAAa,GAClB,kLC+BI+C,EAAuB,cAAiB,SAAiB54B,EAAOuF,GAClE,IAAI/H,EAAWwC,EAAMxC,SACjBiI,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClBoZ,EAAe9e,EAAMyW,MACrBA,OAAyB,IAAjBqI,EAA0B,UAAYA,EAC9CrM,EAAmBzS,EAAM4J,UACzB7J,OAAiC,IAArB0S,EAA8B,MAAQA,EAClDomB,EAAkB74B,EAAMqf,SACxBA,OAA+B,IAApBwZ,EAA6B,SAAWA,EACnDC,EAAY94B,EAAM84B,UAClBC,EAAc/4B,EAAM+4B,YACpBC,EAAiBh5B,EAAMi5B,QACvBA,OAA6B,IAAnBD,EAA4B,YAAcA,EACpDzyB,GAAQ,OAAyBvG,EAAO,CAAC,WAAY,UAAW,YAAa,QAAS,YAAa,WAAY,YAAa,cAAe,YAE/I,OAAoB,gBAAoBD,GAAW,OAAS,CAC1D2F,WAAW,OAAKD,EAAQyB,KAAMxB,EAAqB,YAAV+Q,GAAuBhR,EAAQ,QAAQ5F,QAAO,EAAAy4B,EAAA,GAAW7hB,KAAuB,YAAb4I,GAAuC,WAAbA,GAAyB5Z,EAAQ,WAAW5F,QAAO,EAAAy4B,EAAA,GAAWjZ,MACpM6Z,UAAW,QACXD,QAASA,EACTxiB,MAAOqiB,EACP,eAAeC,QAAch8B,EAC7BsK,KAAM0xB,EAAc,WAAQh8B,EAC5BwI,IAAKA,GACJgB,GAAQ/I,EAAUu7B,EAA2B,gBAAoB,QAAS,KAAMA,GAAe,KACpG,IA6EAH,EAAQO,QAAU,UAClB,OAAe,EAAAxnB,EAAA,IAhKK,SAAgBrK,GAClC,MAAO,CAELJ,KAAM,CACJoP,WAAY,OACZpH,MAAO,MACPpH,OAAQ,MACRzN,QAAS,eACT++B,KAAM,eACNC,WAAY,EACZha,SAAU/X,EAAMgY,WAAWC,QAAQ,IACnCvd,WAAYsF,EAAME,YAAYnX,OAAO,OAAQ,CAC3CkX,SAAUD,EAAME,YAAYD,SAAS2K,WAKzC2N,aAAc,CACZpJ,MAAOnP,EAAMY,QAAQ4X,QAAQC,MAI/BC,eAAgB,CACdvJ,MAAOnP,EAAMY,QAAQ+X,UAAUF,MAIjCuZ,YAAa,CACX7iB,MAAOnP,EAAMY,QAAQpL,OAAO0iB,QAI9B4O,WAAY,CACV3X,MAAOnP,EAAMY,QAAQpd,MAAMi1B,MAI7BwZ,cAAe,CACb9iB,MAAOnP,EAAMY,QAAQpL,OAAOgJ,UAI9B0zB,gBAAiB,CACfna,SAAU,WAIZoa,cAAe,CACbpa,SAAU/X,EAAMgY,WAAWC,QAAQ,KAIrCma,cAAe,CACbra,SAAU/X,EAAMgY,WAAWC,QAAQ,KAGzC,GAwGkC,CAChC70B,KAAM,cADR,CAEGkuC,GCnKY,SAASe,EAAc1oC,EAAM2oC,GAC1C,IAAI75B,EAAY,SAAmBC,EAAOuF,GACxC,OAAoB,gBAAoB,GAAS,OAAS,CACxDA,IAAKA,GACJvF,GAAQ/O,EACb,EASA,OADA8O,EAAUo5B,QAAU,UACA,OAAyB,aAAiBp5B,GAChE,sCCpBe,SAAS85B,EAASpB,GAC/B,IACIzrC,EADA8sC,EAAOh3C,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,IAG/E,SAASi3C,IACP,IAAK,IAAI50B,EAAOriB,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMgjB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EwwB,EAAKxwB,GAAQviB,UAAUuiB,GAIzB,IAAI20B,EAAO/2C,KAEPg3C,EAAQ,WACVxB,EAAKz1C,MAAMg3C,EAAMnE,EACnB,EAEA7rC,aAAagD,GACbA,EAAUrG,WAAWszC,EAAOH,EAC9B,CAMA,OAJAC,EAAUxyC,MAAQ,WAChByC,aAAagD,EACf,EAEO+sC,CACT,sECzBe,SAASnV,IACtB,IAAIsV,EAAY7oC,SAAS6I,cAAc,OACvCggC,EAAU9/B,MAAM8U,MAAQ,OACxBgrB,EAAU9/B,MAAM0N,OAAS,OACzBoyB,EAAU9/B,MAAMsN,SAAW,WAC3BwyB,EAAU9/B,MAAMwN,IAAM,UACtBsyB,EAAU9/B,MAAMwX,SAAW,SAC3BvgB,SAASjN,KAAKqW,YAAYy/B,GAC1B,IAAIvV,EAAgBuV,EAAUC,YAAcD,EAAU5oB,YAEtD,OADAjgB,SAASjN,KAAKmW,YAAY2/B,GACnBvV,CACT,0tBCbe,SAASyV,EAAmBC,EAAWC,GAElD,OAAO,WACL,OAAO,IACT,CAaJ,wCCjBe,SAASC,EAAmBC,GAEvC,OAAO,WACL,OAAO,IACT,CAgBJ,iBCpBe,SAASC,EAAgBz6B,EAAO06B,EAAUC,EAAe9oC,EAAU+oC,GAE9E,OAAO,IAUX,qJCXe,SAASC,EAAalqB,EAASmqB,GAC5C,OAAoB,iBAAqBnqB,KAAwD,IAA5CmqB,EAASx1C,QAAQqrB,EAAQje,KAAKymC,QACrF,uCCHe,SAAS5U,EAAc7W,GACpC,OAAOA,GAAQA,EAAK6W,eAAiBlzB,QACvC,qHCDe,SAASmzB,EAAY9W,GAElC,OADU,OAAcA,GACbqtB,aAAep1C,MAC5B,uCCHe,SAASq1C,EAAOz1B,EAAK5hB,GACf,mBAAR4hB,EACTA,EAAI5hB,GACK4hB,IACTA,EAAI/G,QAAU7a,EAElB,sHCFe,SAASs3C,EAAMC,GAC5B,IAAIxsB,EAAkB,WAAewsB,GACjCC,EAAYzsB,EAAgB,GAC5B0sB,EAAe1sB,EAAgB,GAE/BlmB,EAAK0yC,GAAcC,EASvB,OARA,aAAgB,WACG,MAAbA,GAIFC,EAAa,OAAOv7B,OAAO5X,KAAKgpB,MAAsB,IAAhBhpB,KAAKE,WAE/C,GAAG,CAACgzC,IACG3yC,CACT,uFClBe,SAAS6yC,EAAcz5B,GACpC,IAAI6E,EAAa7E,EAAK6E,WAClB60B,EAAc15B,EAAK9b,QAMnBy1C,GALO35B,EAAKlX,KACCkX,EAAK3W,MAGF,cAA4B8R,IAAf0J,GACAjI,SAE7BkQ,EAAkB,WAAe4sB,GACjCE,EAAa9sB,EAAgB,GAC7B+sB,EAAW/sB,EAAgB,GA0B/B,MAAO,CAxBK6sB,EAAe90B,EAAa+0B,EAmBX,eAAkB,SAAUE,GAClDH,GACHE,EAASC,EAEb,GAAG,IAEL,uFCxCIxtB,EAAsC,oBAAXvoB,OAAyB,kBAAwB,YAOjE,SAAS2pB,EAAiB7N,GACvC,IAAI8D,EAAM,SAAa9D,GAIvB,OAHAyM,GAAkB,WAChB3I,EAAI/G,QAAUiD,CAChB,IACO,eAAkB,WACvB,OAAW8D,EAAI/G,QAASxb,WAAM,EAAQF,UACxC,GAAG,GACL,kGCde,SAAS+yB,EAAW8lB,EAAMC,GAMvC,OAAO,WAAc,WACnB,OAAY,MAARD,GAAwB,MAARC,EACX,KAGF,SAAUC,IACf,OAAOF,EAAME,IACb,OAAOD,EAAMC,EACf,CACF,GAAG,CAACF,EAAMC,GACZ,mGCfIE,GAAmB,EACnBC,GAA0B,EAC1BC,EAAiC,KACjCC,EAAsB,CACxBxR,MAAM,EACN9rB,QAAQ,EACR9G,KAAK,EACLqkC,KAAK,EACLC,OAAO,EACPC,UAAU,EACVC,QAAQ,EACRC,MAAM,EACNC,OAAO,EACPC,MAAM,EACNC,MAAM,EACNC,UAAU,EACV,kBAAkB,GAqCpB,SAASnnB,EAAc1O,GACjBA,EAAM81B,SAAW91B,EAAM+1B,QAAU/1B,EAAMg2B,UAI3Cf,GAAmB,EACrB,CAUA,SAASgB,IACPhB,GAAmB,CACrB,CAEA,SAASiB,IACsB,WAAzB95C,KAAK+5C,iBAKHjB,IACFD,GAAmB,EAGzB,CAkBA,SAAS7nB,EAAepN,GACtB,IA5EqC6G,EACjChb,EACA2iB,EA0EA9U,EAASsG,EAAMtG,OAEnB,IACE,OAAOA,EAAO08B,QAAQ,iBACP,CAAf,MAAOnyC,GAAQ,CAQjB,OAAOgxC,IAvFHppC,GADiCgb,EAwFoBnN,GAvFzC7N,OAGA,WAFZ2iB,EAAU3H,EAAK2H,WAEQ4mB,EAAoBvpC,IAAUgb,EAAKwvB,WAI9C,aAAZ7nB,IAA2B3H,EAAKwvB,YAIhCxvB,EAAKyvB,kBA6EX,CAMA,SAASC,IAKPrB,GAA0B,EAC1Bp2C,OAAOqE,aAAagyC,GACpBA,EAAiCr2C,OAAOgB,YAAW,WACjDo1C,GAA0B,CAC5B,GAAG,IACL,CAEe,SAAS/nB,IActB,MAAO,CACLC,eAAgBA,EAChBC,cAAekpB,EACf73B,IAhBQ,eAAkB,SAAUze,GACpC,IAlDasxB,EAkDT1K,EAAO,cAAqB5mB,GAEpB,MAAR4mB,KApDS0K,EAqDH1K,EAAK6W,eApDbt6B,iBAAiB,UAAWsrB,GAAe,GAC/C6C,EAAInuB,iBAAiB,YAAa6yC,GAAmB,GACrD1kB,EAAInuB,iBAAiB,cAAe6yC,GAAmB,GACvD1kB,EAAInuB,iBAAiB,aAAc6yC,GAAmB,GACtD1kB,EAAInuB,iBAAiB,mBAAoB8yC,GAAwB,GAkDjE,GAAG,IAYL,2CCzJIM,EAAyB,EAAQ,QAEjCC,EAA0B,EAAQ,QAKtCv3C,EAAQ,OAAU,EAElB,IAAIw3C,EAAQD,EAAwB,EAAQ,SAIxCE,GAAW,EAFMH,EAAuB,EAAQ,SAElBv3C,SAAuBy3C,EAAMrjC,cAAc,OAAQ,CACnFpY,EAAG,sDACD,SAEJiE,EAAQ,EAAUy3C,2CCjBdH,EAAyB,EAAQ,QAEjCC,EAA0B,EAAQ,QAKtCv3C,EAAQ,OAAU,EAElB,IAAIw3C,EAAQD,EAAwB,EAAQ,SAIxCE,GAAW,EAFMH,EAAuB,EAAQ,SAElBv3C,SAAuBy3C,EAAMrjC,cAAc,OAAQ,CACnFpY,EAAG,iDACD,cAEJiE,EAAQ,EAAUy3C,2CCjBdH,EAAyB,EAAQ,QAEjCC,EAA0B,EAAQ,QAKtCv3C,EAAQ,OAAU,EAElB,IAAIw3C,EAAQD,EAAwB,EAAQ,SAIxCE,GAAW,EAFMH,EAAuB,EAAQ,SAElBv3C,SAAuBy3C,EAAMrjC,cAAc,OAAQ,CACnFpY,EAAG,6DACD,qBAEJiE,EAAQ,EAAUy3C,2CCjBdH,EAAyB,EAAQ,QAEjCC,EAA0B,EAAQ,QAKtCv3C,EAAQ,OAAU,EAElB,IAAIw3C,EAAQD,EAAwB,EAAQ,SAIxCE,GAAW,EAFMH,EAAuB,EAAQ,SAElBv3C,SAAuBy3C,EAAMrjC,cAAc,OAAQ,CACnFpY,EAAG,2DACD,sBAEJiE,EAAQ,EAAUy3C,2CCjBdH,EAAyB,EAAQ,QAEjCC,EAA0B,EAAQ,QAKtCv3C,EAAQ,OAAU,EAElB,IAAIw3C,EAAQD,EAAwB,EAAQ,SAIxCE,GAAW,EAFMH,EAAuB,EAAQ,SAElBv3C,SAAuBy3C,EAAMrjC,cAAc,OAAQ,CACnFpY,EAAG,qFACD,yBAEJiE,EAAQ,EAAUy3C,mECjBlB,KAAe,OAA4B,gBAAoB,OAAQ,CACrE17C,EAAG,0JACD,oFCFJ,KAAe,OAA4B,gBAAoB,OAAQ,CACrEA,EAAG,0GACD,8CCFJE,OAAOgE,eAAeD,EAAS,aAAc,CAC3CpC,OAAO,IAET3B,OAAOgE,eAAeD,EAAS,UAAW,CACxC03C,YAAY,EACZr3C,IAAK,WACH,OAAOs3C,EAAO/D,aAChB,IAGF,IAAI+D,EAAS,EAAQ,kICmBjBC,0EAtBAC,GAAM,SAAO,UAKbC,GAAoB,SAEbC,EAAgB,IAAI53C,IAC3B4N,EAAiB,CACnBiqC,mBAAmB,EACnBF,kBAAmBA,EACnBD,IAAKA,EACLI,YAAa,KACbF,cAAeA,EACfG,eAAgB,MAEPC,EAAgB,gBAAoBpqC,GAOhC,SAASqqC,EAAen+B,GACrC,IAAIxC,EAAWwC,EAAMxC,SACjB4gC,EAAqBp+B,EAAMq+B,YAC3BA,OAAqC,IAAvBD,GAAwCA,EACtDE,EAAwBt+B,EAAM+9B,kBAC9BA,OAA8C,IAA1BO,GAA2CA,EAC/DC,GAAe,OAAyBv+B,EAAO,CAAC,WAAY,cAAe,sBAE3Ew+B,EAAe,aAAiBN,GAEhCtgC,GAAU,OAAS,CAAC,EAAG4gC,EAAc,CACvCT,kBAAmBA,GAClBQ,GAoBH,IAAK3gC,EAAQggC,IAAI1pC,QAAQuqC,gBAAkBJ,GAAiC,oBAAX14C,OAAwB,CACvF,IAAKg4C,EAAiB,CACpB,IAAIe,EAAOrtC,SAASqtC,KACpBf,EAAkBtsC,SAASstC,cAAc,oBACzCD,EAAKE,aAAajB,EAAiBe,EAAKG,WAC1C,CAEAjhC,EAAQggC,KAAM,QAAO,CACnBkB,SAAS,SAAYA,QACrBL,eAAgBd,GAEpB,CAEA,OAAoB,gBAAoBO,EAAc3+B,SAAU,CAC9D5b,MAAOia,GACNJ,EACL,uGCTA,IAzCA,SAAuBwC,GACrB,IAAIxC,EAAWwC,EAAMxC,SACjBuhC,EAAa/+B,EAAMsH,MACnB03B,GAAa,SAQb13B,EAAQ,WAAc,WACxB,IAAIyuB,EAAwB,OAAfiJ,EAAsBD,EAlCvC,SAA8BC,EAAYD,GACxC,MAA0B,mBAAfA,EACSA,EAAWC,IAWxB,OAAS,CAAC,EAAGA,EAAYD,EAClC,CAoBoDE,CAAqBD,EAAYD,GAMjF,OAJc,MAAVhJ,IACFA,EAAO,KAAyB,OAAfiJ,GAGZjJ,CACT,GAAG,CAACgJ,EAAYC,IAChB,OAAoB,gBAAoB,aAAuB,CAC7Dr7C,MAAO2jB,GACN9J,EACL,qCCrDA,IAAI0hC,EAA8B,mBAAXp6C,QAAyBA,OAAOq6C,IACvD,IAAeD,EAAYp6C,OAAOq6C,IAAI,cAAgB,wGCUlDC,EAAgB,CAAC,UAAW,WAAY,QAAS,UAAW,eAAgB,WAAY,WAAY,YAOzF,SAASC,IACtB,IAAInrC,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/Ew8C,EAAwBprC,EAAQqrC,cAChCA,OAA0C,IAA1BD,GAA2CA,EAC3DE,EAAwBtrC,EAAQurC,iBAChCA,OAA6C,IAA1BD,EAAmC,MAAQA,EAC9DE,EAAgBxrC,EAAQyrC,KACxBA,OAAyB,IAAlBD,EAA2B,GAAKA,EACvCE,EAAsB,KAATD,EAAc,GAAK,GAAG9/B,OAAO8/B,EAAM,KAChDE,EAAc,EAEdC,EAAmB,WASrB,OARAD,GAAe,CASjB,EAEA,OAAO,SAAUE,EAAMC,GACrB,IAAIt1C,EAAOs1C,EAAW9rC,QAAQxJ,KAE9B,GAAIA,GAAgC,IAAxBA,EAAKpF,QAAQ,SAAiB06C,EAAW9rC,QAAQ+rC,OAASV,EAAe,CAEnF,IAAyC,IAArCH,EAAc95C,QAAQy6C,EAAK34C,KAC7B,MAAO,OAAOyY,OAAOkgC,EAAK34C,KAG5B,IAAIuH,EAAS,GAAGkR,OAAO+/B,GAAY//B,OAAOnV,EAAM,KAAKmV,OAAOkgC,EAAK34C,KAEjE,OAAK44C,EAAW9rC,QAAQoT,MAAM,MAAoB,KAATq4B,EAIlC,GAAG9/B,OAAOlR,EAAQ,KAAKkR,OAAOigC,KAH5BnxC,CAIX,CAGE,MAAO,GAAGkR,OAAO+/B,GAAY//B,OAAO4/B,GAAkB5/B,OAAOigC,IAUjE,CACF,uCCtEe,SAASnY,EAAczjB,GACpC,IAAIoD,EAAQpD,EAAOoD,MACf5c,EAAOwZ,EAAOxZ,KACdsV,EAAQkE,EAAOlE,MAEnB,IAAKsH,IAAUA,EAAMtH,QAAUsH,EAAMtH,MAAMtV,GACzC,OAAOsV,EAKT,IACI06B,EADAzsB,EAAe3G,EAAMtH,MAAMtV,GAG/B,IAAKgwC,KAAYzsB,OACSlR,IAApBiD,EAAM06B,KACR16B,EAAM06B,GAAYzsB,EAAaysB,IAInC,OAAO16B,CACT,uqBCtBe,SAASkgC,EAAaniB,GACnC,OAAOA,CACT,6HCMIoiB,EAAiC,WACnC,SAASA,IACP,IAAIjsC,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAEnF,OAAgBG,KAAMk9C,GAEtBl9C,KAAKiR,QAAUA,CACjB,CAmCA,OAjCA,OAAaisC,EAAmB,CAAC,CAC/B/4C,IAAK,UACLzD,MAAO,SAAiB6Z,GAEtB,IAAIsgC,EAAgB,IAAI53C,IAExBjD,KAAKg7C,eAAiB,IAAI,KAE1B,IAAIJ,GAAoB,EAAAwB,EAAA,KACxB,OAAoB,gBAAoBlB,EAAA,IAAgB,OAAS,CAC/DL,cAAeA,EACfsC,wBAAyBvC,EACzBI,eAAgBh7C,KAAKg7C,gBACpBh7C,KAAKiR,SAAUsJ,EACpB,GACC,CACDpW,IAAK,WACLzD,MAAO,WACL,OAAOV,KAAKg7C,eAAiBh7C,KAAKg7C,eAAet1C,WAAa,EAChE,GACC,CACDvB,IAAK,kBACLzD,MAAO,SAAyBqc,GAC9B,OAAoB,gBAAoB,SAAS,OAAS,CACxDxX,GAAI,kBACJpB,IAAK,kBACLi5C,wBAAyB,CACvBC,OAAQr9C,KAAK0F,aAEdqX,GACL,KAGKmgC,CACT,CA3CqC,oFCD9B,SAASI,IACd,IAAIrsC,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E8zC,EAAe1iC,EAAQ0iC,aAEvB4J,EAAY,SAAmBzgC,GAOjC,IAAI0gC,EAAyB,cAAiB,SAAmBzgC,EAAOuF,GACtE,IAAIm7B,EAAW1gC,EAAM0gC,SACjBn6B,GAAQ,OAAyBvG,EAAO,CAAC,aAEzCsH,GAAQ,EAAAogB,EAAA,MAAckP,EAC1B,OAAoB,gBAAoB72B,GAAW,OAAS,CAC1DuH,MAAOA,EACP/B,IAAKm7B,GAAYn7B,GAChBgB,GACL,IA0BA,OAPA,IAAqBk6B,EAAW1gC,GAOzB0gC,CACT,EAEA,OAAOD,CACT,CAIA,IACA,EADgBD,0FC1DZ73C,EAAMD,KAAKC,MACXi4C,EAAa,WAAaj4C,EAC1Bk4C,EAAW,aAAcl4C,EA2D7B,EAzDqB,WACnB,MAAO,CACLm4C,aAAc,SAAsBn2C,EAAMo2C,EAAM5sC,GAC9C,GAAoB,mBAAT4sC,EAAqB,OAAO,KACvC,IAAIf,GAAO,QAAWr1C,EAAM,CAAC,EAAGwJ,GAEhC,OADA6rC,EAAKa,GAAYE,EACVf,CACT,EACAgB,eAAgB,SAAwB3mC,EAAO2lC,GAK7C,GAAIY,KAAcZ,GAAQa,KAAYb,EAAM,OAAO3lC,EACnD,IAAI4mC,EAAW,CAAC,EAEhB,IAAK,IAAIz1B,KAAQnR,EAAO,CACtB,IAAIzW,EAAQyW,EAAMmR,GACG,mBAAV5nB,WACJyW,EAAMmR,GACby1B,EAASz1B,GAAQ5nB,EACnB,CAGA,OADAo8C,EAAKY,GAAcK,EACZ5mC,CACT,EACA6mC,SAAU,SAAkB1zC,EAAMwyC,EAAMmB,EAAOhtC,GAC7C,IAAIitC,EAAYpB,EACZqB,EAASD,EAAUP,GAGnBQ,IAGFD,EAAU/mC,MAAQgnC,EAAO7zC,IAAS,CAAC,GAYrC,IAAIyzC,EAAWG,EAAUR,GAEzB,GAAIK,EACF,IAAK,IAAIK,KAASL,EAChBG,EAAU51B,KAAK81B,EAAOL,EAASK,GAAO9zC,GAAO2G,EAGnD,EAEJ,cC3DIotC,EAAK,UACLC,EAAW,WAEXC,EAEJ,WACE,SAASA,EAAoBp6C,EAAK22B,EAAQ7pB,GAUxC,IAAK,IAAIutC,KATTx+C,KAAKyP,KAAO,SACZzP,KAAKq+C,GAAKA,EACVr+C,KAAKy+C,aAAc,EACnBz+C,KAAKmE,IAAMA,EACXnE,KAAKiR,QAAUA,EACfjR,KAAK0+C,MAAQ,IAAI,MAAS,OAAS,CAAC,EAAGztC,EAAS,CAC9C6wB,OAAQ9hC,QAGW86B,EACnB96B,KAAK0+C,MAAM/3C,IAAI63C,EAAU1jB,EAAO0jB,IAGlCx+C,KAAK0+C,MAAMC,SACb,CAMA,IAAIz0B,EAASq0B,EAAoBn/C,UA0CjC,OAxCA8qB,EAAO00B,QAAU,SAAiBn3C,GAChC,OAAOzH,KAAK0+C,MAAMv7C,IAAIsE,EACxB,EAMAyiB,EAAO20B,QAAU,SAAiBp3C,EAAM0P,EAAOlG,GAC7C,IAAI6rC,EAAO98C,KAAK0+C,MAAM/3C,IAAIc,EAAM0P,EAAOlG,GAEvC,OADI6rC,GAAM98C,KAAKiR,QAAQ0pC,IAAIkB,QAAQiD,cAAchC,GAC1CA,CACT,EAMA5yB,EAAO60B,YAAc,SAAqBt3C,EAAM0P,EAAOlG,GACrD,IAAI+tC,EAAUh/C,KAAK0+C,MAAMl1C,QAAQ/B,EAAM0P,EAAOlG,GAE9C,OADI+tC,GAASh/C,KAAKiR,QAAQ0pC,IAAIkB,QAAQiD,cAAcE,GAC7CA,CACT,EAMA90B,EAAO7nB,QAAU,SAAiBy6C,GAChC,OAAO98C,KAAK0+C,MAAMr8C,QAAQy6C,EAC5B,EAMA5yB,EAAOxkB,SAAW,SAAkBuL,GAClC,OAAOjR,KAAK0+C,MAAMh5C,SAASuL,EAC7B,EAEOstC,CACT,CAjEA,GAmEIU,EAEJ,WACE,SAASA,EAAmB96C,EAAKgT,EAAOlG,GACtCjR,KAAKyP,KAAO,SACZzP,KAAKq+C,GAAKA,EACVr+C,KAAKy+C,aAAc,EACnBz+C,KAAKmE,IAAMA,EACXnE,KAAKiR,QAAUA,EACf,IAAIutC,EAAWr6C,EAAIkb,OAAOi/B,EAASx+C,QACnCE,KAAK88C,KAAO7rC,EAAQ0pC,IAAIuE,WAAWV,EAAUrnC,GAAO,OAAS,CAAC,EAAGlG,EAAS,CACxE6wB,OAAQ9hC,OAEZ,CAQA,OANci/C,EAAmB7/C,UAEzBsG,SAAW,SAAkBuL,GACnC,OAAOjR,KAAK88C,KAAO98C,KAAK88C,KAAKp3C,SAASuL,GAAW,EACnD,EAEOguC,CACT,CApBA,GAsBIE,EAAkB,WAEtB,SAASC,EAASZ,EAAUn2C,GAI1B,IAHA,IAAIg3C,EAAQb,EAASp1C,MAAM+1C,GACvBG,EAAS,GAEJ3/C,EAAI,EAAGA,EAAI0/C,EAAMv/C,OAAQH,IAChC2/C,GAAUj3C,EAAQ,IAAMg3C,EAAM1/C,GAAG6L,OAC7B6zC,EAAM1/C,EAAI,KAAI2/C,GAAU,MAG9B,OAAOA,CACT,CA0EA,MAvCA,WAiCE,MAAO,CACL1B,aAjCF,SAAsBn2C,EAAMqzB,EAAQ7pB,GAClC,IAAKxJ,EAAM,OAAO,KAElB,GAAIA,IAAS42C,EACX,OAAO,IAAIE,EAAoB92C,EAAMqzB,EAAQ7pB,GAG/C,GAAgB,MAAZxJ,EAAK,IAAcA,EAAK4X,OAAO,EAAGi/B,EAASx+C,UAAYw+C,EACzD,OAAO,IAAIW,EAAmBx3C,EAAMqzB,EAAQ7pB,GAG9C,IAAI6wB,EAAS7wB,EAAQ6wB,OAYrB,OAVIA,IACkB,WAAhBA,EAAOryB,MAAqBqyB,EAAO7wB,QAAQ6wB,QAAyC,WAA/BA,EAAO7wB,QAAQ6wB,OAAOryB,QAC7EwB,EAAQquC,QAAS,GAIhBruC,EAAQutC,WAA+B,IAAnBvtC,EAAQquC,SAC/BruC,EAAQutC,SAAW/2C,GAGd,IACT,EAUEq3C,cARF,SAAuBhC,EAAMmB,GACT,UAAdnB,EAAKrtC,MAAqBwuC,IA7DlC,SAAyCnB,EAAMmB,GAC7C,IAAIhtC,EAAU6rC,EAAK7rC,QACfkG,EAAQ2lC,EAAK3lC,MACbunC,EAAQvnC,EAAQA,EAAMknC,GAAM,KAChC,GAAKK,EAAL,CAEA,IAAK,IAAIj3C,KAAQi3C,EACfT,EAAMY,QAAQp3C,EAAMi3C,EAAMj3C,IAAO,OAAS,CAAC,EAAGwJ,EAAS,CACrDutC,SAAUY,EAAS33C,EAAMq1C,EAAK0B,oBAI3BrnC,EAAMknC,EARK,CASpB,CAiDIkB,CAAgCzC,EAAMmB,GA/C1C,SAAkCnB,EAAMmB,GACtC,IAAIhtC,EAAU6rC,EAAK7rC,QACfkG,EAAQ2lC,EAAK3lC,MAEjB,IAAK,IAAImR,KAAQnR,EACf,GAAgB,MAAZmR,EAAK,IAAcA,EAAKjJ,OAAO,EAAGg/B,EAAGv+C,UAAYu+C,EAArD,CACA,IAAIG,EAAWY,EAAS92B,EAAKjJ,OAAOg/B,EAAGv+C,QAASg9C,EAAK0B,UACrDP,EAAMY,QAAQL,EAAUrnC,EAAMmR,IAAO,OAAS,CAAC,EAAGrX,EAAS,CACzDutC,SAAUA,YAELrnC,EAAMmR,EALoD,CAOrE,CAoCIk3B,CAAyB1C,EAAMmB,GACjC,EAMF,ECpLI,EAAkB,WAClBwB,EAAe,KACfC,EAAY,cA2GhB,MAtGA,WAEE,SAASC,EAAc1yB,EAAWgxB,GAChC,OAAO,SAAU19B,EAAOpc,GACtB,IAAI24C,EAAO7vB,EAAU2xB,QAAQz6C,IAAQ85C,GAASA,EAAMW,QAAQz6C,GAE5D,OAAI24C,EACKA,EAAK0B,SAIPr6C,CACT,CACF,CAEA,SAASy7C,EAAkBC,EAAYC,GAKrC,IAJA,IAAIC,EAAkBD,EAAW12C,MAAM,GACnC42C,EAAkBH,EAAWz2C,MAAM,GACnCrI,EAAS,GAEJpB,EAAI,EAAGA,EAAIogD,EAAgBjgD,OAAQH,IAG1C,IAFA,IAAImiC,EAASie,EAAgBpgD,GAEpB2L,EAAI,EAAGA,EAAI00C,EAAgBlgD,OAAQwL,IAAK,CAC/C,IAAI20C,EAASD,EAAgB10C,GACzBvK,IAAQA,GAAU,MAEtBA,IAAmC,IAAzBk/C,EAAO59C,QAAQ,KAAc49C,EAAOz2C,QAAQi2C,EAAc3d,GAAUA,EAAS,IAAMme,CAC/F,CAGF,OAAOl/C,CACT,CAEA,SAASm/C,EAAWpD,EAAM7vB,EAAWkzB,GAEnC,GAAIA,EAAa,OAAO,OAAS,CAAC,EAAGA,EAAa,CAChD7gC,MAAO6gC,EAAY7gC,MAAQ,IAE7B,IAAI8gC,EAAetD,EAAK7rC,QAAQmvC,aAChCA,OAAgCtmC,IAAjBsmC,EAA6B,EAAIA,EAAe,EAE/D,IAAInvC,GAAU,OAAS,CAAC,EAAG6rC,EAAK7rC,QAAS,CACvCmvC,aAAcA,EACd9gC,MAAO2N,EAAU5qB,QAAQy6C,GAAQ,IAKnC,cADO7rC,EAAQxJ,KACRwJ,CACT,CA+CA,MAAO,CACL6sC,eA9CF,SAAwB3mC,EAAO2lC,EAAMmB,GACnC,GAAkB,UAAdnB,EAAKrtC,KAAkB,OAAO0H,EAClC,IAEIlG,EACAovC,EAHAnC,EAAYpB,EACZ7vB,EAAYixB,EAAUjtC,QAAQ6wB,OAIlC,IAAK,IAAIxZ,KAAQnR,EAAO,CACtB,IAAImpC,GAAkC,IAAvBh4B,EAAKjmB,QAAQ,KACxBk+C,EAAkC,MAAZj4B,EAAK,GAC/B,GAAKg4B,GAAaC,EAAlB,CAGA,GAFAtvC,EAAUivC,EAAWhC,EAAWjxB,EAAWhc,GAEvCqvC,EAAU,CACZ,IAAI9B,EAAWoB,EAAkBt3B,EAAM41B,EAAUM,UAG5C6B,IAAYA,EAAaV,EAAc1yB,EAAWgxB,IAEvDO,EAAWA,EAASh1C,QAAQk2C,EAAWW,GACvC,IAAI54C,EAAOy2C,EAAU/5C,IAAM,IAAMmkB,EAE7B,gBAAiB2E,EAEnBA,EAAU8xB,YAAYt3C,EAAM0P,EAAMmR,IAAO,OAAS,CAAC,EAAGrX,EAAS,CAC7DutC,SAAUA,KAGZvxB,EAAU4xB,QAAQp3C,EAAM0P,EAAMmR,IAAO,OAAS,CAAC,EAAGrX,EAAS,CACzDutC,SAAUA,IAGhB,MAAW+B,GAETtzB,EAAU4xB,QAAQv2B,EAAM,CAAC,EAAGrX,GAAS4tC,QAAQX,EAAU/5C,IAAKgT,EAAMmR,GAAO,CACvEk2B,SAAUN,EAAUM,kBAIjBrnC,EAAMmR,EA7BkC,CA8BjD,CAEA,OAAOnR,CACT,EAKF,EC7GIqpC,EAAmB,SACnBC,EAAY,OACZt0C,EAAQ,CAAC,EAEb,SAASu0C,EAAcngC,GACrB,MAAO,IAAMA,EAAMvM,aACrB,CAWA,MATA,SAA4BvM,GAC1B,GAAI0E,EAAM9M,eAAeoI,GACvB,OAAO0E,EAAM1E,GAGf,IAAIk5C,EAAQl5C,EAAK+B,QAAQg3C,EAAkBE,GAC3C,OAAQv0C,EAAM1E,GAAQg5C,EAAUvuC,KAAKyuC,GAAS,IAAMA,EAAQA,CAC9D,ECVA,SAASC,EAAYzpC,GACnB,IAAI0pC,EAAY,CAAC,EAEjB,IAAK,IAAIv4B,KAAQnR,EAAO,CAEtB0pC,EADiC,IAAvBv4B,EAAKjmB,QAAQ,MAAcimB,EAAO,EAAUA,IACrCnR,EAAMmR,EACzB,CAMA,OAJInR,EAAM2pC,YACJ5hD,MAAMkU,QAAQ+D,EAAM2pC,WAAYD,EAAUC,UAAY3pC,EAAM2pC,UAAUz3C,IAAIu3C,GAAkBC,EAAUC,UAAYF,EAAYzpC,EAAM2pC,YAGnID,CACT,CAuCA,MAjCA,WA2BE,MAAO,CACL/C,eA3BF,SAAwB3mC,GACtB,GAAIjY,MAAMkU,QAAQ+D,GAAQ,CAExB,IAAK,IAAImI,EAAQ,EAAGA,EAAQnI,EAAMrX,OAAQwf,IACxCnI,EAAMmI,GAASshC,EAAYzpC,EAAMmI,IAGnC,OAAOnI,CACT,CAEA,OAAOypC,EAAYzpC,EACrB,EAiBE4pC,cAfF,SAAuBrgD,EAAO4nB,EAAMw0B,GAClC,GAA2B,IAAvBx0B,EAAKjmB,QAAQ,MACf,OAAO3B,EAGT,IAAIsgD,EAAiB,EAAU14B,GAE/B,OAAIA,IAAS04B,EAAuBtgD,GACpCo8C,EAAKx0B,KAAK04B,EAAgBtgD,GAEnB,KACT,EAMF,ECtDIugD,EAAK,MAAoBC,IAAMA,IAAID,GAAK,KACxCE,EAAK,MAAoBD,IAAMA,IAAIC,GAAK,KACxCC,EAAU,MAAoBF,IAAMA,IAAIE,QAAU,IAkKtD,SAASC,EAAqBphC,GAC5B,IAAIqhC,EAAS,YAET93C,EAAU,SAAiB+3C,GAC7B,OAAOA,EAAI,GAAGjM,aAChB,EAEIkM,EAAS,CAAC,EAEd,IAAK,IAAIr9C,KAAO8b,EACduhC,EAAOr9C,GAAO8b,EAAI9b,GAClBq9C,EAAOr9C,EAAIqF,QAAQ83C,EAAQ93C,IAAYyW,EAAI9b,GAG7C,OAAOq9C,CACT,CAEA,IAAIC,EAAQJ,EA9KO,CAEjB,kBAAmBF,EACnB,qBAAsBA,EAEtB,sBAAuBF,EACvB,wBAAyBA,EACzB,wBAAyBA,EACzB,kBAAmBA,EAEnB7tB,OAAQ6tB,EACR,gBAAiBA,EACjB,4BAA6BA,EAC7B,6BAA8BA,EAC9B,sBAAuBA,EACvB,cAAeA,EACf,oBAAqBA,EACrB,gBAAiBA,EACjB,eAAgBA,EAChB,qBAAsBA,EACtB,aAAcA,EACd,yBAA0BA,EAC1B,0BAA2BA,EAC3B,mBAAoBA,EACpB,eAAgBA,EAChB,eAAgBA,EAChB,mBAAoBA,EACpB,yBAA0BA,EAC1B,qBAAsBA,EACtB,2BAA4BA,EAC5B,qBAAsBA,EACtB,gBAAiBA,EACjB,oBAAqBA,EACrB,0BAA2BA,EAC3B,sBAAuBA,EACvB,4BAA6BA,EAC7B,sBAAuBA,EACvB,4BAA6BA,EAC7B,0BAA2BA,EAC3B,0BAA2BA,EAC3B,wBAAyBA,EAEzB97B,OAAQ87B,EACR,gBAAiBA,EACjB,cAAeA,EACf,eAAgBA,EAChB,aAAcA,EACd,eAAgBA,EAChB,mBAAoBA,EACpB,qBAAsBA,EACtB,gBAAiBA,EACjB,oBAAqBA,EACrB,sBAAuBA,EAEvBl7B,QAASk7B,EACT,iBAAkBA,EAClB,eAAgBA,EAChB,gBAAiBA,EACjB,cAAeA,EACf,gBAAiBA,EACjB,oBAAqBA,EACrB,sBAAuBA,EACvB,iBAAkBA,EAClB,qBAAsBA,EACtB,uBAAwBA,EAExB,kBAAmBA,EACnB,kBAAmBA,EACnB,YAAaA,EAEbp8B,OAAQo8B,EACRh1B,MAAOg1B,EACP,aAAcA,EACd,aAAcA,EACd,YAAaA,EACb,YAAaA,EAEbp5B,OAAQo5B,EACRv8B,KAAMu8B,EACNt8B,IAAKs8B,EACLr8B,MAAOq8B,EACPS,MAAOT,EACP,cAAeA,EACf,kBAAmBA,EACnB,oBAAqBA,EACrB,eAAgBA,EAChB,mBAAoBA,EACpB,qBAAsBA,EAEtB,aAAcA,EACd,cAAeA,EAEf,aAAcA,EACd,cAAeA,EACf,oBAAqBA,EACrB,eAAgBA,EAEhB,YAAaA,EACb,kBAAmBA,EACnB,iBAAkBA,EAClB,4BAA6BA,EAC7B,cAAeA,EACf,cAAeA,EACf,oBAAqBA,EACrB,eAAgBA,EAEhBU,OAAQV,EACR,gBAAiBA,EAEjB9tB,QAAS8tB,EACT,iBAAkBA,EAClB,gBAAiBA,EAEjBW,YAAaX,EACb,uBAAwBG,EACxB,uBAAwBA,EAExB,mBAAoBA,EACpB,qBAAsBA,EACtB,qBAAsBA,EACtB,qBAAsBA,EAEtB,mBAAoBD,EACpB,sBAAuBA,EAEvB,iBAAkBF,EAClB,aAAcA,EAEd,eAAgBA,EAChB/wC,KAAM+wC,EACNY,IAAKZ,EAELa,KAAMb,EACN,WAAYA,EACZ,UAAWA,EACX,eAAgBA,EAChB,kBAAmBA,EACnB,qBAAsBA,EACtB,wBAAyBA,EACzB,iBAAkBA,EAClB,oBAAqBA,EAGrB,eAAgBA,EAChB,eAAgBA,EAChB,kBAAmBA,EACnB,oBAAqBA,EACrB,mBAAoBA,EACpB,gBAAiBA,EACjB,gBAAiBA,EACjB,mBAAoBA,IA6BtB,SAASc,EAAQz5B,EAAM5nB,EAAOuQ,GAC5B,GAAa,MAATvQ,EAAe,OAAOA,EAE1B,GAAIxB,MAAMkU,QAAQ1S,GAChB,IAAK,IAAIf,EAAI,EAAGA,EAAIe,EAAMZ,OAAQH,IAChCe,EAAMf,GAAKoiD,EAAQz5B,EAAM5nB,EAAMf,GAAIsR,QAEhC,GAAqB,iBAAVvQ,EAChB,GAAa,cAAT4nB,EACF,IAAK,IAAI05B,KAAathD,EACpBA,EAAMshD,GAAaD,EAAQC,EAAWthD,EAAMshD,GAAY/wC,QAG1D,IAAK,IAAIgxC,KAAcvhD,EACrBA,EAAMuhD,GAAcF,EAAQz5B,EAAO,IAAM25B,EAAYvhD,EAAMuhD,GAAahxC,QAIvE,GAAqB,iBAAVvQ,IAAuC,IAAjBwhD,MAAMxhD,GAAkB,CAC9D,IAAI6sC,EAAOt8B,EAAQqX,IAASm5B,EAAMn5B,GAElC,OAAIilB,GAAoB,IAAV7sC,GAAe6sC,IAAS0T,EAI/BvgD,EAAMgF,WAHY,mBAAT6nC,EAAsBA,EAAK7sC,GAAOgF,WAAa,GAAKhF,EAAQ6sC,CAI9E,CAEA,OAAO7sC,CACT,CAiCA,MA3BA,SAAqBuQ,QACH,IAAZA,IACFA,EAAU,CAAC,GAGb,IAAIkxC,EAAoBd,EAAqBpwC,GAgB7C,MAAO,CACL6sC,eAfF,SAAwB3mC,EAAO2lC,GAC7B,GAAkB,UAAdA,EAAKrtC,KAAkB,OAAO0H,EAElC,IAAK,IAAImR,KAAQnR,EACfA,EAAMmR,GAAQy5B,EAAQz5B,EAAMnR,EAAMmR,GAAO65B,GAG3C,OAAOhrC,CACT,EAQE4pC,cANF,SAAuBrgD,EAAO4nB,GAC5B,OAAOy5B,EAAQz5B,EAAM5nB,EAAOyhD,EAC9B,EAMF,yBCpPIC,EAAK,GACLC,EAAM,GACNC,EAAS,GACTC,EAAU,GACVC,EAAU,KAAe,iBAAkBp0C,SAASsmB,gBAExD,GAAI,IAAa,CAGf,IAAI+tB,EAAW,CACbC,IAAK,QACLvB,GAAI,OACJt3C,EAAG,MACH84C,OAAQ,YAINxrC,EADwB/I,SAAS6I,cAAc,KACjBE,MAIlC,IAAK,IAAIhT,KAAOs+C,EACd,GAAIt+C,EAHS,cAGSgT,EAAO,CAC3BirC,EAAKj+C,EACLk+C,EAAMI,EAASt+C,GACf,KACF,CAIS,WAAPi+C,GAAmB,cAAejrC,IACpCirC,EAAK,KACLC,EAAMI,EAAStB,GACfoB,EAAU,QAID,WAAPH,GAAmB,yBAA0BjrC,IAC/CmrC,EAAS,QAEb,CASA,IAAI52C,EACE02C,EADF12C,EAEG22C,EAFH32C,EAGM42C,EAHN52C,EAIO62C,EAJP72C,EAKO82C,EAsBX,IAAII,EAAa,CACfC,UAAW,CAAC,cACZC,kBAAmB,SAA2Bx6B,GAC5C,MAAa,eAATA,IACc,OAAd5c,EAA2B,WAAa4c,EACrC5c,EAAa4c,EACtB,GAKEoL,EAAc,CAChBmvB,UAAW,CAAC,gBACZC,kBAAmB,SAA2Bx6B,GAC5C,MAAa,iBAATA,IACc,WAAd5c,EAA+BA,EAAa,SAAW4c,EACpDA,EACT,GAGEg5B,EAAS,cAUb,SAASyB,EAAQxiC,EAAOvc,GACtB,OAAOA,EAAIA,EAAEsxC,cAAgB,EAC/B,CAUA,SAAS0N,EAASzB,GAChB,OAAOA,EAAI/3C,QAAQ83C,EAAQyB,EAC7B,CAUA,SAASE,GAAU1B,GACjB,OAAOyB,EAAS,IAAMzB,EACxB,CAKA,IA8QI3f,GA9QAshB,GAAO,CACTL,UAAW,CAAC,QACZC,kBAAmB,SAA2Bx6B,EAAMnR,GAClD,IAAK,QAAQjF,KAAKoW,GAAO,OAAO,EAEhC,GAAkB,WAAd5c,EAAwB,CAC1B,IAAIy3C,EAAW,aAEf,GAAIH,EAASG,KAAahsC,EACxB,OAAOmR,EAGT,GAAI5c,EAAYu3C,GAAUE,KAAahsC,EACrC,OAAOzL,EAAa4c,CAExB,CAEA,OAAOA,CACT,GAKE86B,GAAkB,CACpBP,UAAW,CAAC,oBACZC,kBAAmB,SAA2Bx6B,GAC5C,MAAa,qBAATA,IAEkB,UAAlB5c,GAA8BA,EAI3B4c,EAHE5c,EAAa4c,EAIxB,GAKEjB,GAAY,CACdw7B,UAAW,CAAC,aACZC,kBAAmB,SAA2Bx6B,EAAMnR,EAAOlG,GACzD,MAAa,cAATqX,IAEArX,EAAQoW,UACHiB,EAGF5c,EAAa4c,EACtB,GAKEvJ,GAAa,CACf8jC,UAAW,CAAC,cACZC,kBAAmB,SAA2Bx6B,EAAMnR,EAAOlG,GACzD,MAAa,eAATqX,IAEArX,EAAQ8N,WACHuJ,EAGF5c,EAAa4c,EACtB,GAKE+6B,GAAc,CAChBR,UAAW,CAAC,gBACZC,kBAAmB,SAA2Bx6B,GAC5C,MAAa,iBAATA,IAEc,WAAd5c,GAAwC,OAAdA,GAAyC,SAAnBA,EAC3CA,EAAa4c,EAGfA,EACT,GAKE+K,GAAa,CACfwvB,UAAW,CAAC,eACZC,kBAAmB,SAA2Bx6B,GAC5C,MAAa,gBAATA,IAEc,QAAd5c,GAAqC,OAAdA,GAAwC,UAAlBA,EACxCA,EAAa4c,EAGfA,EACT,GAOEg7B,GAAgB,CAClBR,kBAAmB,SAA2Bx6B,EAAMnR,GAClD,QAAK,UAAUjF,KAAKoW,KAEF,WAAd5c,EACW,eAAiBu3C,GAAU36B,KACvBnR,GAAQzL,EAAa,UAAY4c,EAGlC,QAAd5c,IACY,OAASu3C,GAAU36B,KAEfnR,GAAQ,QAAUmR,GAIxC,GAKEi7B,GAAmB,CACrBT,kBAAmB,SAA2Bx6B,EAAMnR,GAClD,IAAK,kCAAkCjF,KAAKoW,GAAO,OAAO,EAC1D,GAAkB,QAAd5c,EAAqB,OAAO4c,EAChC,IAAIk7B,EAAUl7B,EAAK9e,QAAQ,UAAW,IACtC,OAAOkC,EAAYu3C,GAAUO,KAAYrsC,GAAQzL,EAAa83C,CAChE,GAMEC,GAAa,CACfX,kBAAmB,SAA2Bx6B,EAAMnR,GAClD,OAAO6rC,EAAS16B,KAASnR,GAAQmR,CACnC,GAGEo7B,GAAW,CACbZ,kBAAmB,SAA2Bx6B,EAAMnR,GAClD,IAAIwsC,EAAaV,GAAU36B,GAE3B,MAAgB,MAAZA,EAAK,IAEO,MAAZA,EAAK,IAA0B,MAAZA,EAAK,GAFAA,EAGxB5c,EAAYi4C,KAAcxsC,EAAczL,EAAa4c,EAEvC,WAAd5c,GAA0B,SAAWi4C,KAAcxsC,GAAc,WAAamR,CAEpF,GAKEs7B,GAAa,CACfd,kBAAmB,SAA2Bx6B,GAC5C,MAA8B,gBAA1BA,EAAK/Y,UAAU,EAAG,MAEJ,OAAd7D,EACK,GAAKA,EAAa4c,EAGpBA,EACT,GAKEu7B,GAAqB,CACvBf,kBAAmB,SAA2Bx6B,GAC5C,MAAa,wBAATA,IAEc,OAAd5c,EACKA,EAAa,kBAGf4c,EACT,GAGEw7B,GAAU,CACZ,YAAa,gBACb,cAAe,gBACf,aAAc,sBACd,kBAAmB,YACnBC,MAAO,aACP,cAAe,aACf,gBAAiB,kBAIfC,GAAW,CACblB,kBAAmB,SAA2Bx6B,EAAMnR,GAClD,IAAIqsC,EAAUM,GAAQx7B,GACtB,QAAKk7B,IACE93C,EAAYu3C,GAAUO,KAAYrsC,GAAQzL,EAAa83C,EAChE,GAGES,GAAY,CACdpqB,KAAM,WACN,YAAa,WACb,iBAAkB,CAAC,aAAc,iBACjCkqB,MAAO,oBACP,cAAe,YACf,YAAa,CAAC,aAAc,iBAC5B,kBAAmB,YAEjBG,GAAWnlD,OAAOgK,KAAKk7C,IAEvBE,GAAY,SAAmBhlD,GACjC,OAAOuM,EAAavM,CACtB,EAGIilD,GAAW,CACbtB,kBAAmB,SAA2Bx6B,EAAMnR,EAAOwH,GACzD,IAAI0lC,EAAW1lC,EAAK0lC,SAEpB,GAAIH,GAAS7hD,QAAQimB,IAAS,EAAG,CAC/B,IAAIk7B,EAAUS,GAAU37B,GAExB,IAAKppB,MAAMkU,QAAQowC,GACjB,OAAO93C,EAAYu3C,GAAUO,KAAYrsC,GAAQzL,EAAa83C,EAGhE,IAAKa,EAAU,OAAO,EAEtB,IAAK,IAAI1kD,EAAI,EAAGA,EAAI6jD,EAAQ1jD,OAAQH,IAClC,KAAM+L,EAAYu3C,GAAUO,EAAQ,MAAOrsC,GACzC,OAAO,EAIX,OAAOqsC,EAAQn6C,IAAI86C,GACrB,CAEA,OAAO,CACT,GAkBEtI,GAAU,CAAC+G,EAAYlvB,EAAawvB,GAAME,GAAiB/7B,GAAWtI,GAAYskC,GAAahwB,GAAYiwB,GAAeC,GAAkBE,GAAYC,GAAUE,GAAYC,GAAoBG,GAAUI,IAC5ME,GAAoBzI,GAAQ10C,QAAO,SAAUhI,GAC/C,OAAOA,EAAE2jD,iBACX,IAAGz5C,KAAI,SAAUlK,GACf,OAAOA,EAAE2jD,iBACX,IACID,GAAYhH,GAAQ10C,QAAO,SAAUhI,GACvC,OAAOA,EAAE0jD,SACX,IAAG75C,QAAO,SAAUlF,EAAG3E,GAErB,OADA2E,EAAE3B,KAAKpC,MAAM+D,GAAG,OAAmB3E,EAAE0jD,YAC9B/+C,CACT,GAAG,IAGC,GAAQ,CAAC,EAEb,GAAI,IAAa,CACf89B,GAAKxzB,SAAS6I,cAAc,KAQ5B,IAAIstC,GAAW7hD,OAAO09B,iBAAiBhyB,SAASsmB,gBAAiB,IAEjE,IAAK,IAAI8vB,MAASD,GAEXrC,MAAMsC,MAAQ,GAAMD,GAASC,KAAUD,GAASC,KAKvD3B,GAAUv7C,SAAQ,SAAU4E,GAC1B,cAAc,GAAMA,EACtB,GACF,CAYA,SAAS42C,GAAkBx6B,EAAMrX,GAM/B,QALgB,IAAZA,IACFA,EAAU,CAAC,IAIR2wB,GAAI,OAAOtZ,EAEhB,GAA2D,MAAf,GAAMA,GAChD,OAAO,GAAMA,GAIF,eAATA,GAAkC,cAATA,IAC3BrX,EAAQqX,GAAQA,KAAQsZ,GAAGzqB,OAI7B,IAAK,IAAIxX,EAAI,EAAGA,EAAI2kD,GAAkBxkD,SACpC,GAAMwoB,GAAQg8B,GAAkB3kD,GAAG2oB,EAAMsZ,GAAGzqB,MAAOlG,IAE/C,GAAMqX,IAHkC3oB,KAQ9C,IACEiiC,GAAGzqB,MAAMmR,GAAQ,EAGnB,CAFE,MAAOm8B,GACP,OAAO,CACT,CAEA,OAAO,GAAMn8B,EACf,CAEA,IAQIo8B,GARAC,GAAU,CAAC,EACXC,GAAuB,CACzB7lC,WAAY,EACZ,sBAAuB,EACvB,qBAAsB,EACtB,8BAA+B,GAE7B8lC,GAAmB,0CAYvB,SAASC,GAAyBvkC,EAAOwkC,EAAIC,GAC3C,GAAW,QAAPD,EAAc,MAAO,MACzB,GAAW,QAAPA,EAAc,MAAO,MACzB,GAAW,QAAPC,EAAc,MAAO,QACzB,IAAIC,EAAgBF,EAAKjC,GAAkBiC,GAAM,KAAOjC,GAAkBkC,GAC1E,OAAKC,IAAsBF,GAAMC,EAEnC,CAYA,SAASE,GAAeC,EAAUzkD,GAEhC,IAAIukD,EAAgBvkD,EACpB,IAAKgkD,IAAqB,YAAbS,EAAwB,OAAOzkD,EAI5C,GAA6B,iBAAlBukD,IAA+B/C,MAAMruC,SAASoxC,EAAe,KACtE,OAAOA,EAIT,IAAIG,EAAWD,EAAWF,EAE1B,GAAiE,MAArBN,GAAQS,GAClD,OAAOT,GAAQS,GAIjB,IAEEV,GAAKvtC,MAAMguC,GAAYF,CAKzB,CAJE,MAAOR,GAGP,OADAE,GAAQS,IAAY,GACb,CACT,CAGA,GAAIR,GAAqBO,GACvBF,EAAgBA,EAAcz7C,QAAQq7C,GAAkBC,SACnD,GAA6B,KAAzBJ,GAAKvtC,MAAMguC,KAIE,cAFtBF,EAAgBv5C,EAAau5C,KAEKP,GAAKvtC,MAAMguC,GAAY,eAEzDT,GAAKvtC,MAAMguC,GAAYF,EAEM,KAAzBP,GAAKvtC,MAAMguC,IAEb,OADAR,GAAQS,IAAY,GACb,EAQX,OAHAV,GAAKvtC,MAAMguC,GAAY,GAEvBR,GAAQS,GAAYH,EACbN,GAAQS,EACjB,CA5DI,MAAaV,GAAOt2C,SAAS6I,cAAc,MCtc/C,OAjDA,WAQE,SAASouC,EAAYluC,GACnB,IAAK,IAAImR,KAAQnR,EAAO,CACtB,IAAIzW,EAAQyW,EAAMmR,GAElB,GAAa,cAATA,GAAwBppB,MAAMkU,QAAQ1S,GACxCyW,EAAMmR,GAAQ5nB,EAAM2I,IAAIg8C,OAD1B,CAKA,IAAIC,GAAa,EACbC,EAAgBzC,GAAkBx6B,GAClCi9B,GAAiBA,IAAkBj9B,IAAMg9B,GAAa,GAC1D,IAAIE,GAAc,EACdC,EAAmBP,GAAeK,GAAe,QAAW7kD,IAC5D+kD,GAAoBA,IAAqB/kD,IAAO8kD,GAAc,IAE9DF,GAAcE,KACZF,UAAmBnuC,EAAMmR,GAC7BnR,EAAMouC,GAAiBj9B,GAAQm9B,GAAoB/kD,EAXrD,CAaF,CAEA,OAAOyW,CACT,CAWA,MAAO,CACL2nC,cA1CF,SAAuBhC,GACrB,GAAkB,cAAdA,EAAKrtC,KAAsB,CAC7B,IAAIi2C,EAAS5I,EACb4I,EAAOrH,GD0Db,SAA4Bl6C,GAE1B,MAAe,MAAXA,EAAI,IAGU,OAAduH,EAHuBvH,EAIpB,IAAMuH,EAAa,YAAcvH,EAAIkb,OAAO,GACrD,CCjEkBsmC,CAAmBD,EAAOrH,GACxC,CACF,EAsCEP,eAXF,SAAwB3mC,EAAO2lC,GAC7B,MAAkB,UAAdA,EAAKrtC,KAAyB0H,EAC3BkuC,EAAYluC,EACrB,EASE4pC,cAPF,SAAuBrgD,EAAO4nB,GAC5B,OAAO48B,GAAe58B,GAAM,QAAW5nB,KAAWA,CACpD,EAOF,EC3BA,OAxBA,WACE,IAAIshB,EAAO,SAAc4jC,EAAOC,GAC9B,OAAID,EAAM9lD,SAAW+lD,EAAM/lD,OAClB8lD,EAAQC,EAAQ,GAAK,EAGvBD,EAAM9lD,OAAS+lD,EAAM/lD,MAC9B,EAEA,MAAO,CACLg+C,eAAgB,SAAwB3mC,EAAO2lC,GAC7C,GAAkB,UAAdA,EAAKrtC,KAAkB,OAAO0H,EAIlC,IAHA,IAAI2uC,EAAW,CAAC,EACZ/oC,EAAQhe,OAAOgK,KAAKoO,GAAO6K,KAAKA,GAE3BriB,EAAI,EAAGA,EAAIod,EAAMjd,OAAQH,IAChCmmD,EAAS/oC,EAAMpd,IAAMwX,EAAM4F,EAAMpd,IAGnC,OAAOmmD,CACT,EAEJ,ECjBe,SAASC,KACtB,MAAO,CACLlK,QAAS,CAAC,IAAa,IAAU,IAAU,IAAa,IAGtC,oBAAXn5C,OAAyB,KAAO,KAAkB,MAE7D,uICMA,EApBoB,CAClBU,IAAK,SAAa+I,EAAO65C,EAAMC,EAAMvlD,GACnC,IAAIwlD,EAAW/5C,EAAMhJ,IAAI6iD,GAEpBE,IACHA,EAAW,IAAIjjD,IACfkJ,EAAM/I,IAAI4iD,EAAME,IAGlBA,EAAS9iD,IAAI6iD,EAAMvlD,EACrB,EACAyC,IAAK,SAAagJ,EAAO65C,EAAMC,GAC7B,IAAIC,EAAW/5C,EAAMhJ,IAAI6iD,GACzB,OAAOE,EAAWA,EAAS/iD,IAAI8iD,QAAQnsC,CACzC,EACAnW,OAAQ,SAAiBwI,EAAO65C,EAAMC,GACrB95C,EAAMhJ,IAAI6iD,GAChBriD,OAAOsiD,EAClB,2BCVEE,GAAgB,IACb,SAASC,IASd,OARAD,GAAgB,CASlB,iBChBe,SAASE,EAAiB1R,GACvC,IAAI2R,EAA4C,mBAApB3R,EAQ5B,MAAO,CACLvnC,OAAQ,SAAgBiX,EAAO5c,GAC7B,IAAIqzB,EAEJ,IACEA,EAASwrB,EAAiB3R,EAAgBtwB,GAASswB,CAUrD,CATE,MAAO8P,GAQP,MAAMA,CACR,CAEA,IAAKh9C,IAAS4c,EAAMovB,YAAcpvB,EAAMovB,UAAUhsC,GAChD,OAAOqzB,EAGT,IAAI2Y,EAAYpvB,EAAMovB,UAAUhsC,GAE5B8+C,GAAsB,OAAS,CAAC,EAAGzrB,GAWvC,OATA/7B,OAAOgK,KAAK0qC,GAAWnsC,SAAQ,SAAUnD,GAOvCoiD,EAAoBpiD,IAAO,EAAAssC,EAAA,GAAU8V,EAAoBpiD,GAAMsvC,EAAUtvC,GAC3E,IACOoiD,CACT,EACAt1C,QAAS,CAAC,EAEd,CClDA,IACA,EADgB,CAAC,ECWjB,SAASu1C,EAAW7nC,EAAM6D,EAAS1F,GACjC,IAAI9U,EAAQ2W,EAAK3W,MAGjB,GAFoB2W,EAAK8nC,cAEP3L,kBAChB,OAAOt4B,GAAW,CAAC,EAGhBxa,EAAM0+C,eACT1+C,EAAM0+C,aAAe,CAEnBhmD,MAAO,KAEPimD,SAAU,KAEVC,QAAS,CAAC,IAMd,IAAIC,GAAW,EAoBf,OAlBI7+C,EAAMwa,UAAYxa,EAAM0+C,aAAaE,UACvC5+C,EAAM0+C,aAAaE,QAAU5+C,EAAMwa,QACnCqkC,GAAW,GAGTrkC,IAAYxa,EAAM0+C,aAAaC,WACjC3+C,EAAM0+C,aAAaC,SAAWnkC,EAC9BqkC,GAAW,GAGTA,IACF7+C,EAAM0+C,aAAahmD,OAAQ,EAAAomD,EAAA,GAAa,CACtCC,YAAa/+C,EAAM0+C,aAAaE,QAChCI,WAAYxkC,EACZ1F,UAAWA,KAIR9U,EAAM0+C,aAAahmD,KAC5B,CAEA,SAASumD,EAAOtwB,EAAO5Z,GACrB,IAAI/U,EAAQ2uB,EAAM3uB,MACdqc,EAAQsS,EAAMtS,MACdoiC,EAAgB9vB,EAAM8vB,cACtBS,EAAgBvwB,EAAMuwB,cACtBz/C,EAAOkvB,EAAMlvB,KAEjB,IAAIg/C,EAAc3L,kBAAlB,CAIA,IAAIqM,EAAe,MAAkBV,EAAc5L,cAAeqM,EAAe7iC,GAE5E8iC,IACHA,EAAe,CACbC,KAAM,EACNC,YAAa,KACbC,cAAe,MAEjB,MAAkBb,EAAc5L,cAAeqM,EAAe7iC,EAAO8iC,IAGvE,IAAIl2C,GAAU,OAAS,CAAC,EAAGi2C,EAAcj2C,QAASw1C,EAAe,CAC/DpiC,MAAOA,EACP6K,KAAoC,kBAAvBu3B,EAAcv3B,KAAqBu3B,EAAcv3B,KAA2B,QAApB7K,EAAM+U,YAG7EnoB,EAAQs2C,WAAat2C,EAAQksC,yBAA2BlsC,EAAQ2pC,kBAChE,IAAII,EAAiByL,EAAczL,eAEnC,GAA0B,IAAtBmM,EAAaC,KAAY,CAC3B,IAAIC,EAEAZ,EAAc1L,cAChBsM,EAAc,MAAkBZ,EAAc1L,YAAamM,EAAe7iC,IAG5E,IAAIyW,EAASosB,EAAc95C,OAAOiX,EAAO5c,GAEpC4/C,KACHA,EAAcZ,EAAc9L,IAAI6M,iBAAiB1sB,GAAQ,OAAS,CAChEkiB,MAAM,GACL/rC,KACSg2C,SAERR,EAAc1L,aAChB,MAAkB0L,EAAc1L,YAAamM,EAAe7iC,EAAOgjC,IAInErM,GACFA,EAAer0C,IAAI0gD,GAGrBF,EAAaE,YAAcA,EAC3BF,EAAaG,eAAgB,QAAiBxsB,EAChD,CAEA,GAAIqsB,EAAaG,cAAe,CAC9B,IAAIG,EAAehB,EAAc9L,IAAI6M,iBAAiBL,EAAaG,eAAe,OAAS,CACzFtK,MAAM,GACL/rC,IACHw2C,EAAaC,OAAO3qC,GACpB0qC,EAAaR,SACbj/C,EAAMy/C,aAAeA,EACrBz/C,EAAMwa,SAAU,EAAAskC,EAAA,GAAa,CAC3BC,YAAaI,EAAaE,YAAY7kC,QACtCwkC,WAAYS,EAAajlC,UAGvBw4B,GACFA,EAAer0C,IAAI8gD,EAEvB,MACEz/C,EAAMwa,QAAU2kC,EAAaE,YAAY7kC,QAG3C2kC,EAAaC,MAAQ,CApErB,CAqEF,CAEA,SAASM,EAAOC,EAAO5qC,GACrB,IAAI/U,EAAQ2/C,EAAM3/C,MAEdA,EAAMy/C,cACRz/C,EAAMy/C,aAAaC,OAAO3qC,EAE9B,CAEA,SAAS6qC,EAAOC,GACd,IAAI7/C,EAAQ6/C,EAAM7/C,MACdqc,EAAQwjC,EAAMxjC,MACdoiC,EAAgBoB,EAAMpB,cACtBS,EAAgBW,EAAMX,cAE1B,IAAIT,EAAc3L,kBAAlB,CAIA,IAAIqM,EAAe,MAAkBV,EAAc5L,cAAeqM,EAAe7iC,GACjF8iC,EAAaC,MAAQ,EACrB,IAAIpM,EAAiByL,EAAczL,eAET,IAAtBmM,EAAaC,OACf,SAAqBX,EAAc5L,cAAeqM,EAAe7iC,GACjEoiC,EAAc9L,IAAImN,iBAAiBX,EAAaE,aAE5CrM,GACFA,EAAelvC,OAAOq7C,EAAaE,cAInCr/C,EAAMy/C,eACRhB,EAAc9L,IAAImN,iBAAiB9/C,EAAMy/C,cAErCzM,GACFA,EAAelvC,OAAO9D,EAAMy/C,cAnBhC,CAsBF,CAEA,SAASM,EAAqBvS,EAAM5rB,GAClC,IACIkpB,EADA3uC,EAAM,SAAa,IAGnB6jD,EAAa,WAAc,WAC7B,MAAO,CAAC,CACV,GAAGp+B,GAGCzlB,EAAIoX,UAAYysC,IAClB7jD,EAAIoX,QAAUysC,EACdlV,EAAS0C,KAGX,aAAgB,WACd,OAAO,WACD1C,GACFA,GAEJ,CACF,GAAG,CAACkV,GAEN,CAEe,SAASC,EAAWtT,GACjC,IAAI1jC,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE/E4H,EAAOwJ,EAAQxJ,KACfygD,EAAwBj3C,EAAQk3C,gBAChCrrC,EAAY7L,EAAQ6L,UACpBsrC,EAAwBn3C,EAAQ0iC,aAChCA,OAAyC,IAA1ByU,EAAmC,EAAYA,EAC9DC,GAAiB,OAAyBp3C,EAAS,CAAC,OAAQ,kBAAmB,YAAa,iBAE5Fi2C,EAAgBb,EAAiB1R,GACjCwT,EAAkB1gD,GAAQygD,GAAyB,aACvDhB,EAAcj2C,QAAU,CACtBqO,MAAO8mC,IACP3+C,KAAMA,EACN6gD,KAAMH,EACNA,gBAAiBA,GAGnB,IAAII,EAAY,WACd,IAAIxrC,EAAQld,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7EwkB,GAAQ,EAAAogB,EAAA,MAAckP,EAEtB8S,GAAgB,OAAS,CAAC,EAAG,aAAiB,MAAgB4B,GAE9DxkD,EAAW,WACX2kD,EAAe,WACnBT,GAAqB,WACnB,IAAIxsC,EAAU,CACZ9T,KAAMA,EACNO,MAAO,CAAC,EACRk/C,cAAeA,EACfT,cAAeA,EACfpiC,MAAOA,GAKT,OAHA4iC,EAAO1rC,EAASwB,GAChByrC,EAAajtC,SAAU,EACvB1X,EAAS0X,QAAUA,EACZ,WACLqsC,EAAOrsC,EACT,CACF,GAAG,CAAC8I,EAAO6iC,IACX,aAAgB,WACVsB,EAAajtC,SACfmsC,EAAO7jD,EAAS0X,QAASwB,GAG3ByrC,EAAajtC,SAAU,CACzB,IACA,IAAIiH,EAAUgkC,EAAW3iD,EAAS0X,QAASwB,EAAMyF,QAAS1F,GAO1D,OAAO0F,CACT,EAEA,OAAO+lC,CACT,uFClQe,SAASzB,IACtB,IAAI71C,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EknD,EAAc91C,EAAQ81C,YACtBC,EAAa/1C,EAAQ+1C,WACT/1C,EAAQ6L,UAExB,IAAKkqC,EACH,OAAOD,EAGT,IAAI0B,GAAc,OAAS,CAAC,EAAG1B,GAwB/B,OAfAhoD,OAAOgK,KAAKi+C,GAAY1/C,SAAQ,SAAUnD,GAWpC6iD,EAAW7iD,KACbskD,EAAYtkD,GAAO,GAAGyY,OAAOmqC,EAAY5iD,GAAM,KAAKyY,OAAOoqC,EAAW7iD,IAE1E,IACOskD,CACT,4JC5BA,SAASC,EAAKC,EAAOC,GACnB,IAAI9V,EAAS,CAAC,EAMd,OALA/zC,OAAOgK,KAAK4/C,GAAOrhD,SAAQ,SAAUghB,IACL,IAA1BsgC,EAAOvmD,QAAQimB,KACjBwqB,EAAOxqB,GAAQqgC,EAAMrgC,GAEzB,IACOwqB,CACT,CAIe,SAAS+V,EAAO/rC,GAoI7B,OAnIuB,SAA0B3F,GAC/C,IAAIlG,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE/E4H,EAAOwJ,EAAQxJ,KACfg/C,GAAgB,OAAyBx1C,EAAS,CAAC,SAMvD,IA6BI63C,EA7BAX,EAAkB1gD,EAalBktC,EAAmC,mBAAVx9B,EAAuB,SAAUkN,GAC5D,MAAO,CACLJ,KAAM,SAAclH,GAClB,OAAO5F,GAAM,OAAS,CACpBkN,MAAOA,GACNtH,GACL,EAEJ,EAAI,CACFkH,KAAM9M,GAEJoxC,GAAY,OAAW5T,GAAiB,OAAS,CACnD73B,UAAWA,EACXrV,KAAMA,GAAQqV,EAAU65B,YACxBwR,gBAAiBA,GAChB1B,IAICtvC,EAAM2xC,cACRA,EAAc3xC,EAAM2xC,mBACb3xC,EAAM2xC,aAKX3xC,EAAM4T,YACI5T,EAAM4T,iBACX5T,EAAM4T,WAKf,IAAIg+B,EAA+B,cAAiB,SAAyBhsC,EAAOuF,GAClF,IAAI/H,EAAWwC,EAAMxC,SACjByuC,EAAgBjsC,EAAM0F,UACtB8vB,EAAQx1B,EAAMw1B,MACd9f,EAAgB1V,EAAM4J,UACtBrD,GAAQ,OAAyBvG,EAAO,CAAC,WAAY,YAAa,QAAS,cAE3EyF,EAAU+lC,EAAUxrC,GACpB0F,GAAY,OAAKD,EAAQyB,KAAM+kC,GAC/BC,EAAS3lC,EAMb,GAJIwlC,IACFG,EAASP,EAAKO,EAAQH,IAGpBvW,EACF,OAAoB,eAAmBh4B,GAAU,OAAS,CACxDkI,WAAW,OAAKlI,EAASwC,MAAM0F,UAAWA,IACzCwmC,IAGL,GAAwB,mBAAb1uC,EACT,OAAOA,GAAS,OAAS,CACvBkI,UAAWA,GACVwmC,IAGL,IAAIC,EAAiBz2B,GAAiB3V,EACtC,OAAoB,gBAAoBosC,GAAgB,OAAS,CAC/D5mC,IAAKA,EACLG,UAAWA,GACVwmC,GAAS1uC,EACd,IAwCA,OADA,IAAqBwuC,EAAiBjsC,GAC/BisC,CACT,CAGF,2CCzJII,YAAe,cAAoB,MAMvC,uGCLe,SAAS1kB,IAQtB,OAPY,aAAiB,IAQ/B,wIC+GA,IA9GiB,SAAoBkQ,GACnC,IAAI1jC,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAO,SAAUid,GACf,IAAI62B,EAAe1iC,EAAQ0iC,aACvByV,EAAqBn4C,EAAQssC,UAC7BA,OAAmC,IAAvB6L,GAAwCA,EACpD3hD,EAAOwJ,EAAQxJ,KACfg/C,GAAgB,OAAyBx1C,EAAS,CAAC,eAAgB,YAAa,SAQpF,IAAIk3C,EAAkB1gD,EAalB8gD,GAAY,OAAW5T,GAAiB,OAAS,CACnDhB,aAAcA,EACd72B,UAAWA,EACXrV,KAAMA,GAAQqV,EAAU65B,YACxBwR,gBAAiBA,GAChB1B,IACC4C,EAA0B,cAAiB,SAAoBtsC,EAAOuF,GACtDvF,EAAMyF,QAAxB,IAQI6B,EAPAo5B,EAAW1gC,EAAM0gC,SACjBn6B,GAAQ,OAAyBvG,EAAO,CAAC,UAAW,aAKpDyF,EAAU+lC,GAAU,OAAS,CAAC,EAAGzrC,EAAUkO,aAAcjO,IAEzDusC,EAAOhmC,EAsBX,OApBoB,iBAAT7b,GAAqB81C,KAG9Bl5B,GAAQ,UAAcsvB,EAElBlsC,IACF6hD,GAAO,OAAc,CACnBjlC,MAAOA,EACP5c,KAAMA,EACNsV,MAAOuG,KAMPi6B,IAAc+L,EAAKjlC,QACrBilC,EAAKjlC,MAAQA,IAIG,gBAAoBvH,GAAW,OAAS,CAC1DwF,IAAKm7B,GAAYn7B,EACjBE,QAASA,GACR8mC,GACL,IAoCA,OATA,IAAqBD,EAAYvsC,GAS1BusC,CACT,CACF,uFCjHIz/B,EAAS,CACXqjB,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MAEFkc,EAAqB,CAGvBxgD,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,MAC/B8/B,GAAI,SAAY1kC,GACd,MAAO,qBAAqByY,OAAOgN,EAAOzlB,GAAM,MAClD,GAEK,SAASqlD,EAAkBzsC,EAAO0sC,EAAWC,GAOlD,GAAIxqD,MAAMkU,QAAQq2C,GAAY,CAC5B,IAAIE,EAAmB5sC,EAAMsH,MAAMukB,aAAe2gB,EAClD,OAAOE,EAAUzgD,QAAO,SAAU0qC,EAAK1S,EAAM1hB,GAE3C,OADAo0B,EAAIiW,EAAiB9gB,GAAG8gB,EAAiB5gD,KAAKuW,KAAWoqC,EAAmBD,EAAUnqC,IAC/Eo0B,CACT,GAAG,CAAC,EACN,CAEA,GAA2B,YAAvB,OAAQ+V,GAAyB,CACnC,IAAIG,EAAoB7sC,EAAMsH,MAAMukB,aAAe2gB,EAEnD,OAAOxqD,OAAOgK,KAAK0gD,GAAWzgD,QAAO,SAAU0qC,EAAKmW,GAElD,OADAnW,EAAIkW,EAAkB/gB,GAAGghB,IAAeH,EAAmBD,EAAUI,IAC9DnW,CACT,GAAG,CAAC,EACN,CAGA,OADagW,EAAmBD,EAElC,uDCnCA,IAXA,SAAe/V,EAAK1S,GAClB,OAAKA,GAIE,OAAU0S,EAAK1S,EAAM,CAC1BuR,OAAO,IAJAmB,CAOX,sICNA,ICLgCl1B,EAC1BrS,EDIF29C,EAAa,CACf3jD,EAAG,SACHhH,EAAG,WAED4qD,EAAa,CACftqD,EAAG,MACHsE,EAAG,QACHjF,EAAG,SACHqG,EAAG,OACH+G,EAAG,CAAC,OAAQ,SACZ7K,EAAG,CAAC,MAAO,WAET2oD,EAAU,CACZC,QAAS,KACTC,QAAS,KACTC,SAAU,KACVC,SAAU,MAKRC,GC1B4B7rC,ED0BD,SAAU8J,GAEvC,GAAIA,EAAKxoB,OAAS,EAAG,CACnB,IAAIkqD,EAAQ1hC,GAGV,MAAO,CAACA,GAFRA,EAAO0hC,EAAQ1hC,EAInB,CAEA,IAAIgiC,EAAchiC,EAAKlf,MAAM,IACzBmhD,GAAe,OAAeD,EAAa,GAC3CxmD,EAAIymD,EAAa,GACjBzrD,EAAIyrD,EAAa,GAEjBpF,EAAW2E,EAAWhmD,GACtBs1B,EAAY2wB,EAAWjrD,IAAM,GACjC,OAAOI,MAAMkU,QAAQgmB,GAAaA,EAAU/vB,KAAI,SAAUmhD,GACxD,OAAOrF,EAAWqF,CACpB,IAAK,CAACrF,EAAW/rB,EACnB,EC7CMjtB,EAAQ,CAAC,EACN,SAAUs+C,GAKf,YAJmB3wC,IAAf3N,EAAMs+C,KACRt+C,EAAMs+C,GAAOjsC,EAAGisC,IAGXt+C,EAAMs+C,EACf,GDuCEC,EAAc,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,YAAa,cAAe,eAAgB,aAAc,UAAW,UAAW,UAAW,aAAc,eAAgB,gBAAiB,cAAe,WAAY,YAC7Q,SAASC,EAAmBtmC,GACjC,IAAIumC,EAAevmC,EAAM2B,SAAW,EAEpC,MAA4B,iBAAjB4kC,EACF,SAAUx8B,GAOf,OAAOw8B,EAAex8B,CACxB,EAGElvB,MAAMkU,QAAQw3C,GACT,SAAUx8B,GAOf,OAAOw8B,EAAax8B,EACtB,EAG0B,mBAAjBw8B,EACFA,EAOF,WAEP,CACF,CAqBA,SAASC,EAAsBC,EAAeC,GAC5C,OAAO,SAAUtB,GACf,OAAOqB,EAAc9hD,QAAO,SAAU0qC,EAAKsX,GAEzC,OADAtX,EAAIsX,GAtBV,SAAkBD,EAAatB,GAC7B,GAAyB,iBAAdA,GAAuC,MAAbA,EACnC,OAAOA,EAGT,IACIwB,EAAcF,EADR/lD,KAAKopB,IAAIq7B,IAGnB,OAAIA,GAAa,EACRwB,EAGkB,iBAAhBA,GACDA,EAGH,IAAIruC,OAAOquC,EACpB,CAKyBC,CAASH,EAAatB,GAClC/V,CACT,GAAG,CAAC,EACN,CACF,CAEA,SAAS1tB,EAAQjJ,GACf,IACIguC,EAAcJ,EADN5tC,EAAMsH,OAElB,OAAOtlB,OAAOgK,KAAKgU,GAAO1T,KAAI,SAAUif,GAGtC,IAAmC,IAA/BoiC,EAAYroD,QAAQimB,GACtB,OAAO,KAGT,IACIohC,EAAqBmB,EADLR,EAAiB/hC,GACyByiC,GAC1DtB,EAAY1sC,EAAMuL,GACtB,OAAO,OAAkBvL,EAAO0sC,EAAWC,EAC7C,IAAG1gD,OAAOmiD,EAAA,EAAO,CAAC,EACpB,CAEAnlC,EAAQ+E,UAGC,CAAC,EACV/E,EAAQ8iC,YAAc4B,EACtB,yGExIO,SAASU,EAAcpqB,GAC5B,OAAOA,GAA0B,YAAlB,OAAQA,IAAsBA,EAAKr5B,cAAgB5I,MACpE,CACe,SAAS0xC,EAAUnzB,EAAQ/F,GACxC,IAAItG,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAChF0yC,OAAO,GAELO,EAAS7hC,EAAQshC,OAAQ,OAAS,CAAC,EAAGj1B,GAAUA,EAiBpD,OAfI8tC,EAAc9tC,IAAW8tC,EAAc7zC,IACzCxY,OAAOgK,KAAKwO,GAAQjQ,SAAQ,SAAUnD,GAExB,cAARA,IAIAinD,EAAc7zC,EAAOpT,KAASA,KAAOmZ,EACvCw1B,EAAO3uC,GAAOssC,EAAUnzB,EAAOnZ,GAAMoT,EAAOpT,GAAM8M,GAElD6hC,EAAO3uC,GAAOoT,EAAOpT,GAEzB,IAGK2uC,CACT,uCCtBe,SAASuY,EAAsBx1C,GAQ5C,IAFA,IAAIjB,EAAM,0CAA4CiB,EAE7ClW,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,GAAK,EAGzCiV,GAAO,WAAalH,mBAAmB7N,UAAUF,IAGnD,MAAO,+BAAiCkW,EAAO,WAAajB,EAAM,wBAEpE,yDCrBA02C,EAAOxoD,QAAU,EAAjB,6CCEA,IAAIyoD,EAAQ,EAAQ,QAChBC,EAAS,EAAQ,QACjBC,EAAU,EAAQ,QAClBC,EAAW,EAAQ,QACnBC,EAAgB,EAAQ,QACxBC,EAAe,EAAQ,QACvBC,EAAkB,EAAQ,QAC1BC,EAAc,EAAQ,OACtBC,EAAW,EAAQ,QACnBC,EAAS,EAAQ,OAErBV,EAAOxoD,QAAU,SAAoB+Y,GACnC,OAAO,IAAIvb,SAAQ,SAA4BC,EAASC,GACtD,IAGIyrD,EAHAC,EAAcrwC,EAAOvR,KACrB6hD,EAAiBtwC,EAAOxQ,QACxB+gD,EAAevwC,EAAOuwC,aAE1B,SAASprD,IACH6a,EAAOwwC,aACTxwC,EAAOwwC,YAAYC,YAAYL,GAG7BpwC,EAAOjR,QACTiR,EAAOjR,OAAO/D,oBAAoB,QAASolD,EAE/C,CAEIV,EAAMgB,WAAWL,WACZC,EAAe,gBAGxB,IAAIK,EAAU,IAAIC,eAGlB,GAAI5wC,EAAO/R,KAAM,CACf,IAAI4iD,EAAW7wC,EAAO/R,KAAK4iD,UAAY,GACnCvT,EAAWt9B,EAAO/R,KAAKqvC,SAAWwT,SAASj/C,mBAAmBmO,EAAO/R,KAAKqvC,WAAa,GAC3FgT,EAAeS,cAAgB,SAAWhkD,KAAK8jD,EAAW,IAAMvT,EAClE,CAEA,IAAI0T,EAAWlB,EAAc9vC,EAAOixC,QAASjxC,EAAOjH,KAMpD,SAASm4C,IACP,GAAKP,EAAL,CAIA,IAAIQ,EAAkB,0BAA2BR,EAAUZ,EAAaY,EAAQS,yBAA2B,KAGvGz3C,EAAW,CACblL,KAHkB8hD,GAAiC,SAAjBA,GAA6C,SAAjBA,EACvCI,EAAQh3C,SAA/Bg3C,EAAQU,aAGRC,OAAQX,EAAQW,OAChBC,WAAYZ,EAAQY,WACpB/hD,QAAS2hD,EACTnxC,OAAQA,EACR2wC,QAASA,GAGXhB,GAAO,SAAkB9qD,GACvBH,EAAQG,GACRM,GACF,IAAG,SAAiByjD,GAClBjkD,EAAOikD,GACPzjD,GACF,GAAGwU,GAGHg3C,EAAU,IAvBV,CAwBF,CAmEA,GAnGAA,EAAQv3C,KAAK4G,EAAOzQ,OAAOkqC,cAAeoW,EAASmB,EAAUhxC,EAAOoF,OAAQpF,EAAOwxC,mBAAmB,GAGtGb,EAAQziD,QAAU8R,EAAO9R,QA+BrB,cAAeyiD,EAEjBA,EAAQO,UAAYA,EAGpBP,EAAQc,mBAAqB,WACtBd,GAAkC,IAAvBA,EAAQe,aAQD,IAAnBf,EAAQW,QAAkBX,EAAQgB,aAAwD,IAAzChB,EAAQgB,YAAYnrD,QAAQ,WAKjFqB,WAAWqpD,EACb,EAIFP,EAAQiB,QAAU,WACXjB,IAILhsD,EAAOsrD,EAAY,kBAAmBjwC,EAAQ,eAAgB2wC,IAG9DA,EAAU,KACZ,EAGAA,EAAQkB,QAAU,WAGhBltD,EAAOsrD,EAAY,gBAAiBjwC,EAAQ,KAAM2wC,IAGlDA,EAAU,IACZ,EAGAA,EAAQmB,UAAY,WAClB,IAAIC,EAAsB/xC,EAAO9R,QAAU,cAAgB8R,EAAO9R,QAAU,cAAgB,mBACxF8jD,EAAehyC,EAAOgyC,cAAgB9B,EAAS8B,aAC/ChyC,EAAO+xC,sBACTA,EAAsB/xC,EAAO+xC,qBAE/BptD,EAAOsrD,EACL8B,EACA/xC,EACAgyC,EAAaC,oBAAsB,YAAc,eACjDtB,IAGFA,EAAU,IACZ,EAKIjB,EAAMwC,uBAAwB,CAEhC,IAAIC,GAAanyC,EAAOoyC,iBAAmBpC,EAAgBgB,KAAchxC,EAAOqyC,eAC9EzC,EAAQ0C,KAAKtyC,EAAOqyC,qBACpBp0C,EAEEk0C,IACF7B,EAAetwC,EAAOuyC,gBAAkBJ,EAE5C,CAGI,qBAAsBxB,GACxBjB,EAAMjkD,QAAQ6kD,GAAgB,SAA0B5f,EAAKpoC,QAChC,IAAhB+nD,GAAqD,iBAAtB/nD,EAAI6P,qBAErCm4C,EAAehoD,GAGtBqoD,EAAQ6B,iBAAiBlqD,EAAKooC,EAElC,IAIGgf,EAAM+C,YAAYzyC,EAAOoyC,mBAC5BzB,EAAQyB,kBAAoBpyC,EAAOoyC,iBAIjC7B,GAAiC,SAAjBA,IAClBI,EAAQJ,aAAevwC,EAAOuwC,cAIS,mBAA9BvwC,EAAO0yC,oBAChB/B,EAAQxlD,iBAAiB,WAAY6U,EAAO0yC,oBAIP,mBAA5B1yC,EAAO2yC,kBAAmChC,EAAQiC,QAC3DjC,EAAQiC,OAAOznD,iBAAiB,WAAY6U,EAAO2yC,mBAGjD3yC,EAAOwwC,aAAexwC,EAAOjR,UAG/BqhD,EAAa,SAASyC,GACflC,IAGLhsD,GAAQkuD,GAAWA,GAAUA,EAAOj/C,KAAQ,IAAIu8C,EAAO,YAAc0C,GACrElC,EAAQ1hD,QACR0hD,EAAU,KACZ,EAEA3wC,EAAOwwC,aAAexwC,EAAOwwC,YAAYsC,UAAU1C,GAC/CpwC,EAAOjR,SACTiR,EAAOjR,OAAOgkD,QAAU3C,IAAepwC,EAAOjR,OAAO5D,iBAAiB,QAASilD,KAI9EC,IACHA,EAAc,MAIhBM,EAAQqC,KAAK3C,EACf,GACF,uCCjNA,IAAIX,EAAQ,EAAQ,QAChB3lD,EAAO,EAAQ,QACfkpD,EAAQ,EAAQ,QAChBC,EAAc,EAAQ,QA4B1B,IAAIC,EAnBJ,SAASC,EAAeC,GACtB,IAAIv0C,EAAU,IAAIm0C,EAAMI,GACpBrrD,EAAW+B,EAAKkpD,EAAM1vD,UAAUotD,QAAS7xC,GAa7C,OAVA4wC,EAAM4D,OAAOtrD,EAAUirD,EAAM1vD,UAAWub,GAGxC4wC,EAAM4D,OAAOtrD,EAAU8W,GAGvB9W,EAASuJ,OAAS,SAAgBgiD,GAChC,OAAOH,EAAeF,EAAYG,EAAeE,GACnD,EAEOvrD,CACT,CAGYorD,CA3BG,EAAQ,SA8BvBD,EAAMF,MAAQA,EAGdE,EAAMhD,OAAS,EAAQ,OACvBgD,EAAMK,YAAc,EAAQ,QAC5BL,EAAMM,SAAW,EAAQ,QACzBN,EAAMO,QAAU,kBAGhBP,EAAMQ,IAAM,SAAaC,GACvB,OAAOnvD,QAAQkvD,IAAIC,EACrB,EACAT,EAAM/F,OAAS,EAAQ,QAGvB+F,EAAMU,aAAe,EAAQ,OAE7BpE,EAAOxoD,QAAUksD,EAGjB1D,EAAOxoD,QAAP,QAAyBksD,kCChDzB,SAAShD,EAAOt0C,GACd1X,KAAK0X,QAAUA,CACjB,CAEAs0C,EAAO5sD,UAAUsG,SAAW,WAC1B,MAAO,UAAY1F,KAAK0X,QAAU,KAAO1X,KAAK0X,QAAU,GAC1D,EAEAs0C,EAAO5sD,UAAUuwD,YAAa,EAE9BrE,EAAOxoD,QAAUkpD,uCChBjB,IAAIA,EAAS,EAAQ,OAQrB,SAASqD,EAAYO,GACnB,GAAwB,mBAAbA,EACT,MAAM,IAAI3tD,UAAU,gCAGtB,IAAI4tD,EAEJ7vD,KAAK8vD,QAAU,IAAIxvD,SAAQ,SAAyBC,GAClDsvD,EAAiBtvD,CACnB,IAEA,IAAIwb,EAAQ/b,KAGZA,KAAK8vD,QAAQ7uD,MAAK,SAASytD,GACzB,GAAK3yC,EAAMg0C,WAAX,CAEA,IAAIpwD,EACAwF,EAAI4W,EAAMg0C,WAAWjwD,OAEzB,IAAKH,EAAI,EAAGA,EAAIwF,EAAGxF,IACjBoc,EAAMg0C,WAAWpwD,GAAG+uD,GAEtB3yC,EAAMg0C,WAAa,IARU,CAS/B,IAGA/vD,KAAK8vD,QAAQ7uD,KAAO,SAAS+uD,GAC3B,IAAIC,EAEAH,EAAU,IAAIxvD,SAAQ,SAASC,GACjCwb,EAAM4yC,UAAUpuD,GAChB0vD,EAAW1vD,CACb,IAAGU,KAAK+uD,GAMR,OAJAF,EAAQpB,OAAS,WACf3yC,EAAMuwC,YAAY2D,EACpB,EAEOH,CACT,EAEAF,GAAS,SAAgBl4C,GACnBqE,EAAMs7B,SAKVt7B,EAAMs7B,OAAS,IAAI2U,EAAOt0C,GAC1Bm4C,EAAe9zC,EAAMs7B,QACvB,GACF,CAKAgY,EAAYjwD,UAAU8wD,iBAAmB,WACvC,GAAIlwD,KAAKq3C,OACP,MAAMr3C,KAAKq3C,MAEf,EAMAgY,EAAYjwD,UAAUuvD,UAAY,SAAmBrwC,GAC/Cte,KAAKq3C,OACP/4B,EAASte,KAAKq3C,QAIZr3C,KAAK+vD,WACP/vD,KAAK+vD,WAAW5tD,KAAKmc,GAErBte,KAAK+vD,WAAa,CAACzxC,EAEvB,EAMA+wC,EAAYjwD,UAAUktD,YAAc,SAAqBhuC,GACvD,GAAKte,KAAK+vD,WAAV,CAGA,IAAIzwC,EAAQtf,KAAK+vD,WAAW1tD,QAAQic,IACrB,IAAXgB,GACFtf,KAAK+vD,WAAWhtB,OAAOzjB,EAAO,EAHhC,CAKF,EAMA+vC,EAAY93C,OAAS,WACnB,IAAIm3C,EAIJ,MAAO,CACL3yC,MAJU,IAAIszC,GAAY,SAAkBrrD,GAC5C0qD,EAAS1qD,CACX,IAGE0qD,OAAQA,EAEZ,EAEApD,EAAOxoD,QAAUusD,mCCpHjB/D,EAAOxoD,QAAU,SAAkBpC,GACjC,SAAUA,IAASA,EAAMivD,WAC3B,uCCFA,IAAIpE,EAAQ,EAAQ,QAChBG,EAAW,EAAQ,QACnByE,EAAqB,EAAQ,QAC7BC,EAAkB,EAAQ,QAC1BrB,EAAc,EAAQ,QACtB3X,EAAY,EAAQ,QAEpBiZ,EAAajZ,EAAUiZ,WAM3B,SAASvB,EAAMM,GACbpvD,KAAK+rD,SAAWqD,EAChBpvD,KAAKswD,aAAe,CAClB9D,QAAS,IAAI2D,EACb36C,SAAU,IAAI26C,EAElB,CAOArB,EAAM1vD,UAAUotD,QAAU,SAAiB3wC,GAGnB,iBAAXA,GACTA,EAAShc,UAAU,IAAM,CAAC,GACnB+U,IAAM/U,UAAU,GAEvBgc,EAASA,GAAU,CAAC,GAGtBA,EAASkzC,EAAY/uD,KAAK+rD,SAAUlwC,IAGzBzQ,OACTyQ,EAAOzQ,OAASyQ,EAAOzQ,OAAO4I,cACrBhU,KAAK+rD,SAAS3gD,OACvByQ,EAAOzQ,OAASpL,KAAK+rD,SAAS3gD,OAAO4I,cAErC6H,EAAOzQ,OAAS,MAGlB,IAAIyiD,EAAehyC,EAAOgyC,kBAEL/zC,IAAjB+zC,GACFzW,EAAUmZ,cAAc1C,EAAc,CACpC2C,kBAAmBH,EAAWxC,aAAawC,EAAWI,SACtDC,kBAAmBL,EAAWxC,aAAawC,EAAWI,SACtD3C,oBAAqBuC,EAAWxC,aAAawC,EAAWI,WACvD,GAIL,IAAIE,EAA0B,GAC1BC,GAAiC,EACrC5wD,KAAKswD,aAAa9D,QAAQllD,SAAQ,SAAoCupD,GACjC,mBAAxBA,EAAYC,UAA0D,IAAhCD,EAAYC,QAAQj1C,KAIrE+0C,EAAiCA,GAAkCC,EAAYE,YAE/EJ,EAAwBttD,QAAQwtD,EAAYpwD,UAAWowD,EAAY/vD,UACrE,IAEA,IAKIgvD,EALAkB,EAA2B,GAO/B,GANAhxD,KAAKswD,aAAa96C,SAASlO,SAAQ,SAAkCupD,GACnEG,EAAyB7uD,KAAK0uD,EAAYpwD,UAAWowD,EAAY/vD,SACnE,KAIK8vD,EAAgC,CACnC,IAAIK,EAAQ,CAACb,OAAiBt2C,GAM9B,IAJA5a,MAAME,UAAUiE,QAAQtD,MAAMkxD,EAAON,GACrCM,EAAQA,EAAMr0C,OAAOo0C,GAErBlB,EAAUxvD,QAAQC,QAAQsb,GACnBo1C,EAAMnxD,QACXgwD,EAAUA,EAAQ7uD,KAAKgwD,EAAMC,QAASD,EAAMC,SAG9C,OAAOpB,CACT,CAIA,IADA,IAAIqB,EAAYt1C,EACT80C,EAAwB7wD,QAAQ,CACrC,IAAIsxD,EAAcT,EAAwBO,QACtCG,EAAaV,EAAwBO,QACzC,IACEC,EAAYC,EAAYD,EAI1B,CAHE,MAAOtpD,GACPwpD,EAAWxpD,GACX,KACF,CACF,CAEA,IACEioD,EAAUM,EAAgBe,EAG5B,CAFE,MAAOtpD,GACP,OAAOvH,QAAQE,OAAOqH,EACxB,CAEA,KAAOmpD,EAAyBlxD,QAC9BgwD,EAAUA,EAAQ7uD,KAAK+vD,EAAyBE,QAASF,EAAyBE,SAGpF,OAAOpB,CACT,EAEAhB,EAAM1vD,UAAUkyD,OAAS,SAAgBz1C,GAEvC,OADAA,EAASkzC,EAAY/uD,KAAK+rD,SAAUlwC,GAC7B6vC,EAAS7vC,EAAOjH,IAAKiH,EAAOoF,OAAQpF,EAAOwxC,kBAAkB7jD,QAAQ,MAAO,GACrF,EAGA+hD,EAAMjkD,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6B8D,GAE/E0jD,EAAM1vD,UAAUgM,GAAU,SAASwJ,EAAKiH,GACtC,OAAO7b,KAAKwsD,QAAQuC,EAAYlzC,GAAU,CAAC,EAAG,CAC5CzQ,OAAQA,EACRwJ,IAAKA,EACLtK,MAAOuR,GAAU,CAAC,GAAGvR,OAEzB,CACF,IAEAihD,EAAMjkD,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+B8D,GAErE0jD,EAAM1vD,UAAUgM,GAAU,SAASwJ,EAAKtK,EAAMuR,GAC5C,OAAO7b,KAAKwsD,QAAQuC,EAAYlzC,GAAU,CAAC,EAAG,CAC5CzQ,OAAQA,EACRwJ,IAAKA,EACLtK,KAAMA,IAEV,CACF,IAEAghD,EAAOxoD,QAAUgsD,uCCjJjB,IAAIvD,EAAQ,EAAQ,QAEpB,SAAS4E,IACPnwD,KAAKuxD,SAAW,EAClB,CAUApB,EAAmB/wD,UAAUoyD,IAAM,SAAa/wD,EAAWK,EAAUmQ,GAOnE,OANAjR,KAAKuxD,SAASpvD,KAAK,CACjB1B,UAAWA,EACXK,SAAUA,EACViwD,cAAa9/C,GAAUA,EAAQ8/C,YAC/BD,QAAS7/C,EAAUA,EAAQ6/C,QAAU,OAEhC9wD,KAAKuxD,SAASzxD,OAAS,CAChC,EAOAqwD,EAAmB/wD,UAAUqyD,MAAQ,SAAelsD,GAC9CvF,KAAKuxD,SAAShsD,KAChBvF,KAAKuxD,SAAShsD,GAAM,KAExB,EAUA4qD,EAAmB/wD,UAAUkI,QAAU,SAAiBkX,GACtD+sC,EAAMjkD,QAAQtH,KAAKuxD,UAAU,SAAwBrrD,GACzC,OAANA,GACFsY,EAAGtY,EAEP,GACF,EAEAolD,EAAOxoD,QAAUqtD,uCCnDjB,IAAIuB,EAAgB,EAAQ,QACxBC,EAAc,EAAQ,QAW1BrG,EAAOxoD,QAAU,SAAuBgqD,EAAS8E,GAC/C,OAAI9E,IAAY4E,EAAcE,GACrBD,EAAY7E,EAAS8E,GAEvBA,CACT,sCCjBA,IAAIC,EAAe,EAAQ,QAY3BvG,EAAOxoD,QAAU,SAAqB4U,EAASmE,EAAQhG,EAAM22C,EAASh3C,GACpE,IAAI3N,EAAQ,IAAIzD,MAAMsT,GACtB,OAAOm6C,EAAahqD,EAAOgU,EAAQhG,EAAM22C,EAASh3C,EACpD,uCCfA,IAAI+1C,EAAQ,EAAQ,QAChBuG,EAAgB,EAAQ,QACxBxC,EAAW,EAAQ,QACnBvD,EAAW,EAAQ,QACnBC,EAAS,EAAQ,OAKrB,SAAS+F,EAA6Bl2C,GAKpC,GAJIA,EAAOwwC,aACTxwC,EAAOwwC,YAAY6D,mBAGjBr0C,EAAOjR,QAAUiR,EAAOjR,OAAOgkD,QACjC,MAAM,IAAI5C,EAAO,WAErB,CAQAV,EAAOxoD,QAAU,SAAyB+Y,GA8BxC,OA7BAk2C,EAA6Bl2C,GAG7BA,EAAOxQ,QAAUwQ,EAAOxQ,SAAW,CAAC,EAGpCwQ,EAAOvR,KAAOwnD,EAAcxyD,KAC1Buc,EACAA,EAAOvR,KACPuR,EAAOxQ,QACPwQ,EAAOm2C,kBAITn2C,EAAOxQ,QAAUkgD,EAAMJ,MACrBtvC,EAAOxQ,QAAQqlC,QAAU,CAAC,EAC1B70B,EAAOxQ,QAAQwQ,EAAOzQ,SAAW,CAAC,EAClCyQ,EAAOxQ,SAGTkgD,EAAMjkD,QACJ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WAClD,SAA2B8D,UAClByQ,EAAOxQ,QAAQD,EACxB,KAGYyQ,EAAOo2C,SAAWlG,EAASkG,SAE1Bp2C,GAAQ5a,MAAK,SAA6BuU,GAWvD,OAVAu8C,EAA6Bl2C,GAG7BrG,EAASlL,KAAOwnD,EAAcxyD,KAC5Buc,EACArG,EAASlL,KACTkL,EAASnK,QACTwQ,EAAOq2C,mBAGF18C,CACT,IAAG,SAA4B6hC,GAe7B,OAdKiY,EAASjY,KACZ0a,EAA6Bl2C,GAGzBw7B,GAAUA,EAAO7hC,WACnB6hC,EAAO7hC,SAASlL,KAAOwnD,EAAcxyD,KACnCuc,EACAw7B,EAAO7hC,SAASlL,KAChB+sC,EAAO7hC,SAASnK,QAChBwQ,EAAOq2C,qBAKN5xD,QAAQE,OAAO62C,EACxB,GACF,mCC1EAiU,EAAOxoD,QAAU,SAAsB+E,EAAOgU,EAAQhG,EAAM22C,EAASh3C,GA6BnE,OA5BA3N,EAAMgU,OAASA,EACXhG,IACFhO,EAAMgO,KAAOA,GAGfhO,EAAM2kD,QAAUA,EAChB3kD,EAAM2N,SAAWA,EACjB3N,EAAM6nD,cAAe,EAErB7nD,EAAMsqD,OAAS,WACb,MAAO,CAELz6C,QAAS1X,KAAK0X,QACdjQ,KAAMzH,KAAKyH,KAEX2qD,YAAapyD,KAAKoyD,YAClBhZ,OAAQp5C,KAAKo5C,OAEbiZ,SAAUryD,KAAKqyD,SACfC,WAAYtyD,KAAKsyD,WACjBC,aAAcvyD,KAAKuyD,aACnBhzC,MAAOvf,KAAKuf,MAEZ1D,OAAQ7b,KAAK6b,OACbhG,KAAM7V,KAAK6V,KACXs3C,OAAQntD,KAAKwV,UAAYxV,KAAKwV,SAAS23C,OAASntD,KAAKwV,SAAS23C,OAAS,KAE3E,EACOtlD,CACT,uCCxCA,IAAI0jD,EAAQ,EAAQ,QAUpBD,EAAOxoD,QAAU,SAAqB0vD,EAASC,GAE7CA,EAAUA,GAAW,CAAC,EACtB,IAAI52C,EAAS,CAAC,EAEd,SAAS62C,EAAep1C,EAAQ/F,GAC9B,OAAIg0C,EAAMH,cAAc9tC,IAAWiuC,EAAMH,cAAc7zC,GAC9Cg0C,EAAMJ,MAAM7tC,EAAQ/F,GAClBg0C,EAAMH,cAAc7zC,GACtBg0C,EAAMJ,MAAM,CAAC,EAAG5zC,GACdg0C,EAAMn4C,QAAQmE,GAChBA,EAAOlQ,QAETkQ,CACT,CAGA,SAASo7C,EAAoBrqC,GAC3B,OAAKijC,EAAM+C,YAAYmE,EAAQnqC,IAEnBijC,EAAM+C,YAAYkE,EAAQlqC,SAA/B,EACEoqC,OAAe54C,EAAW04C,EAAQlqC,IAFlCoqC,EAAeF,EAAQlqC,GAAOmqC,EAAQnqC,GAIjD,CAGA,SAASsqC,EAAiBtqC,GACxB,IAAKijC,EAAM+C,YAAYmE,EAAQnqC,IAC7B,OAAOoqC,OAAe54C,EAAW24C,EAAQnqC,GAE7C,CAGA,SAASuqC,EAAiBvqC,GACxB,OAAKijC,EAAM+C,YAAYmE,EAAQnqC,IAEnBijC,EAAM+C,YAAYkE,EAAQlqC,SAA/B,EACEoqC,OAAe54C,EAAW04C,EAAQlqC,IAFlCoqC,OAAe54C,EAAW24C,EAAQnqC,GAI7C,CAGA,SAASwqC,EAAgBxqC,GACvB,OAAIA,KAAQmqC,EACHC,EAAeF,EAAQlqC,GAAOmqC,EAAQnqC,IACpCA,KAAQkqC,EACVE,OAAe54C,EAAW04C,EAAQlqC,SADpC,CAGT,CAEA,IAAIyqC,EAAW,CACb,IAAOH,EACP,OAAUA,EACV,KAAQA,EACR,QAAWC,EACX,iBAAoBA,EACpB,kBAAqBA,EACrB,iBAAoBA,EACpB,QAAWA,EACX,eAAkBA,EAClB,gBAAmBA,EACnB,QAAWA,EACX,aAAgBA,EAChB,eAAkBA,EAClB,eAAkBA,EAClB,iBAAoBA,EACpB,mBAAsBA,EACtB,WAAcA,EACd,iBAAoBA,EACpB,cAAiBA,EACjB,UAAaA,EACb,UAAaA,EACb,WAAcA,EACd,YAAeA,EACf,WAAcA,EACd,iBAAoBA,EACpB,eAAkBC,GASpB,OANAvH,EAAMjkD,QAAQvI,OAAOgK,KAAKypD,GAAS51C,OAAO7d,OAAOgK,KAAK0pD,KAAW,SAA4BnqC,GAC3F,IAAI6iC,EAAQ4H,EAASzqC,IAASqqC,EAC1BK,EAAc7H,EAAM7iC,GACvBijC,EAAM+C,YAAY0E,IAAgB7H,IAAU2H,IAAqBj3C,EAAOyM,GAAQ0qC,EACnF,IAEOn3C,CACT,uCChGA,IAAIiwC,EAAc,EAAQ,OAS1BR,EAAOxoD,QAAU,SAAgBvC,EAASC,EAAQgV,GAChD,IAAIy9C,EAAiBz9C,EAASqG,OAAOo3C,eAChCz9C,EAAS23C,QAAW8F,IAAkBA,EAAez9C,EAAS23C,QAGjE3sD,EAAOsrD,EACL,mCAAqCt2C,EAAS23C,OAC9C33C,EAASqG,OACT,KACArG,EAASg3C,QACTh3C,IAPFjV,EAAQiV,EAUZ,uCCtBA,IAAI+1C,EAAQ,EAAQ,QAChBQ,EAAW,EAAQ,QAUvBT,EAAOxoD,QAAU,SAAuBwH,EAAMe,EAAS6nD,GACrD,IAAIv4C,EAAU3a,MAAQ+rD,EAMtB,OAJAR,EAAMjkD,QAAQ4rD,GAAK,SAAmB10C,GACpClU,EAAOkU,EAAGlf,KAAKqb,EAASrQ,EAAMe,EAChC,IAEOf,CACT,uCCnBA,IAAIihD,EAAQ,EAAQ,QAChB4H,EAAsB,EAAQ,QAC9BtB,EAAe,EAAQ,QAEvBuB,EAAuB,CACzB,eAAgB,qCAGlB,SAASC,EAAsBhoD,EAAS3K,IACjC6qD,EAAM+C,YAAYjjD,IAAYkgD,EAAM+C,YAAYjjD,EAAQ,mBAC3DA,EAAQ,gBAAkB3K,EAE9B,CA6BA,IA1BMuxD,EA0BFlG,EAAW,CAEb8B,aAAc,CACZ2C,mBAAmB,EACnBE,mBAAmB,EACnB5C,qBAAqB,GAGvBmE,UAjC8B,oBAAnBxF,gBAGmB,oBAAZ9N,SAAuE,qBAA5C5/C,OAAOK,UAAUsG,SAASpG,KAAKq/C,YAD1EsT,EAAU,EAAQ,SAKbA,GA4BPD,iBAAkB,CAAC,SAA0B1nD,EAAMe,GAIjD,OAHA8nD,EAAoB9nD,EAAS,UAC7B8nD,EAAoB9nD,EAAS,gBAEzBkgD,EAAMgB,WAAWjiD,IACnBihD,EAAM+H,cAAchpD,IACpBihD,EAAMgI,SAASjpD,IACfihD,EAAMiI,SAASlpD,IACfihD,EAAMkI,OAAOnpD,IACbihD,EAAMmI,OAAOppD,GAENA,EAELihD,EAAMoI,kBAAkBrpD,GACnBA,EAAKgF,OAEVi8C,EAAMqI,kBAAkBtpD,IAC1B+oD,EAAsBhoD,EAAS,mDACxBf,EAAK5E,YAEV6lD,EAAMsI,SAASvpD,IAAUe,GAAuC,qBAA5BA,EAAQ,iBAC9CgoD,EAAsBhoD,EAAS,oBA9CrC,SAAyByoD,EAAUC,EAAQC,GACzC,GAAIzI,EAAM0I,SAASH,GACjB,IAEE,OADCC,GAAU3tD,KAAKM,OAAOotD,GAChBvI,EAAM//C,KAAKsoD,EAKpB,CAJE,MAAOjzD,GACP,GAAe,gBAAXA,EAAE4G,KACJ,MAAM5G,CAEV,CAGF,OAAQmzD,GAAW5tD,KAAKC,WAAWytD,EACrC,CAkCaI,CAAgB5pD,IAElBA,CACT,GAEA4nD,kBAAmB,CAAC,SAA2B5nD,GAC7C,IAAIujD,EAAe7tD,KAAK6tD,cAAgB9B,EAAS8B,aAC7C2C,EAAoB3C,GAAgBA,EAAa2C,kBACjDE,EAAoB7C,GAAgBA,EAAa6C,kBACjDyD,GAAqB3D,GAA2C,SAAtBxwD,KAAKosD,aAEnD,GAAI+H,GAAsBzD,GAAqBnF,EAAM0I,SAAS3pD,IAASA,EAAKxK,OAC1E,IACE,OAAOsG,KAAKM,MAAM4D,EAQpB,CAPE,MAAOzJ,GACP,GAAIszD,EAAmB,CACrB,GAAe,gBAAXtzD,EAAE4G,KACJ,MAAMoqD,EAAahxD,EAAGb,KAAM,gBAE9B,MAAMa,CACR,CACF,CAGF,OAAOyJ,CACT,GAMAP,QAAS,EAETmkD,eAAgB,aAChBE,eAAgB,eAEhBgG,kBAAmB,EACnBC,eAAgB,EAEhBpB,eAAgB,SAAwB9F,GACtC,OAAOA,GAAU,KAAOA,EAAS,GACnC,EAEA9hD,QAAS,CACPqlC,OAAQ,CACN,OAAU,uCAKhB6a,EAAMjkD,QAAQ,CAAC,SAAU,MAAO,SAAS,SAA6B8D,GACpE2gD,EAAS1gD,QAAQD,GAAU,CAAC,CAC9B,IAEAmgD,EAAMjkD,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+B8D,GACrE2gD,EAAS1gD,QAAQD,GAAUmgD,EAAMJ,MAAMiI,EACzC,IAEA9H,EAAOxoD,QAAUipD,sBCrIjBT,EAAOxoD,QAAU,CACf,QAAW,2CCCbwoD,EAAOxoD,QAAU,SAAc0b,EAAIte,GACjC,OAAO,WAEL,IADA,IAAI0yC,EAAO,IAAI1zC,MAAMW,UAAUC,QACtBH,EAAI,EAAGA,EAAIizC,EAAK9yC,OAAQH,IAC/BizC,EAAKjzC,GAAKE,UAAUF,GAEtB,OAAO6e,EAAGze,MAAMG,EAAS0yC,EAC3B,CACF,uCCRA,IAAI2Y,EAAQ,EAAQ,QAEpB,SAASj9C,EAAOi+B,GACd,OAAO7+B,mBAAmB6+B,GACxB/iC,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,IACrB,CASA8hD,EAAOxoD,QAAU,SAAkB8R,EAAKqM,EAAQosC,GAE9C,IAAKpsC,EACH,OAAOrM,EAGT,IAAI0/C,EACJ,GAAIjH,EACFiH,EAAmBjH,EAAiBpsC,QAC/B,GAAIsqC,EAAMqI,kBAAkB3yC,GACjCqzC,EAAmBrzC,EAAOvb,eACrB,CACL,IAAI25C,EAAQ,GAEZkM,EAAMjkD,QAAQ2Z,GAAQ,SAAmBsrB,EAAKpoC,GACxCooC,UAIAgf,EAAMn4C,QAAQm5B,GAChBpoC,GAAY,KAEZooC,EAAM,CAACA,GAGTgf,EAAMjkD,QAAQilC,GAAK,SAAoBxqC,GACjCwpD,EAAMgJ,OAAOxyD,GACfA,EAAIA,EAAEyyD,cACGjJ,EAAMsI,SAAS9xD,KACxBA,EAAIqE,KAAKC,UAAUtE,IAErBs9C,EAAMl9C,KAAKmM,EAAOnK,GAAO,IAAMmK,EAAOvM,GACxC,IACF,IAEAuyD,EAAmBjV,EAAM91C,KAAK,IAChC,CAEA,GAAI+qD,EAAkB,CACpB,IAAIG,EAAgB7/C,EAAIvS,QAAQ,MACT,IAAnBoyD,IACF7/C,EAAMA,EAAIvN,MAAM,EAAGotD,IAGrB7/C,KAA8B,IAAtBA,EAAIvS,QAAQ,KAAc,IAAM,KAAOiyD,CACjD,CAEA,OAAO1/C,CACT,mCC5DA02C,EAAOxoD,QAAU,SAAqBgqD,EAAS4H,GAC7C,OAAOA,EACH5H,EAAQtjD,QAAQ,OAAQ,IAAM,IAAMkrD,EAAYlrD,QAAQ,OAAQ,IAChEsjD,CACN,uCCXA,IAAIvB,EAAQ,EAAQ,QAEpBD,EAAOxoD,QACLyoD,EAAMwC,uBAIK,CACL4G,MAAO,SAAeltD,EAAM/G,EAAOiN,EAASK,EAAMD,EAAQE,GACxD,IAAII,EAAS,GACbA,EAAOlM,KAAKsF,EAAO,IAAMiG,mBAAmBhN,IAExC6qD,EAAMqJ,SAASjnD,IACjBU,EAAOlM,KAAK,WAAa,IAAIqD,KAAKmI,GAASknD,eAGzCtJ,EAAM0I,SAASjmD,IACjBK,EAAOlM,KAAK,QAAU6L,GAGpBu9C,EAAM0I,SAASlmD,IACjBM,EAAOlM,KAAK,UAAY4L,IAGX,IAAXE,GACFI,EAAOlM,KAAK,UAGdiM,SAASC,OAASA,EAAO9E,KAAK,KAChC,EAEA4kD,KAAM,SAAc1mD,GAClB,IAAI8Y,EAAQnS,SAASC,OAAOkS,MAAM,IAAImrB,OAAO,aAAejkC,EAAO,cACnE,OAAQ8Y,EAAQrX,mBAAmBqX,EAAM,IAAM,IACjD,EAEAzU,OAAQ,SAAgBrE,GACtBzH,KAAK20D,MAAMltD,EAAM,GAAIjC,KAAKC,MAAQ,MACpC,GAMK,CACLkvD,MAAO,WAAkB,EACzBxG,KAAM,WAAkB,OAAO,IAAM,EACrCriD,OAAQ,WAAmB,oCCzCnCw/C,EAAOxoD,QAAU,SAAuB8R,GAItC,MAAO,gCAAgC1C,KAAK0C,EAC9C,kCCLA02C,EAAOxoD,QAAU,SAAsB8P,GACrC,MAA2B,iBAAZA,IAAmD,IAAzBA,EAAQ88C,YACnD,uCCRA,IAAInE,EAAQ,EAAQ,QAEpBD,EAAOxoD,QACLyoD,EAAMwC,uBAIJ,WACE,IAEI+G,EAFAC,EAAO,kBAAkB7iD,KAAK8iD,UAAUC,WACxCC,EAAiB9mD,SAAS6I,cAAc,KAS5C,SAASk+C,EAAWvgD,GAClB,IAAIQ,EAAOR,EAWX,OATImgD,IAEFG,EAAeh+C,aAAa,OAAQ9B,GACpCA,EAAO8/C,EAAe9/C,MAGxB8/C,EAAeh+C,aAAa,OAAQ9B,GAG7B,CACLA,KAAM8/C,EAAe9/C,KACrBvG,SAAUqmD,EAAermD,SAAWqmD,EAAermD,SAASrF,QAAQ,KAAM,IAAM,GAChFkU,KAAMw3C,EAAex3C,KACrBhC,OAAQw5C,EAAex5C,OAASw5C,EAAex5C,OAAOlS,QAAQ,MAAO,IAAM,GAC3EiU,KAAMy3C,EAAez3C,KAAOy3C,EAAez3C,KAAKjU,QAAQ,KAAM,IAAM,GACpEmU,SAAUu3C,EAAev3C,SACzBC,KAAMs3C,EAAet3C,KACrBxD,SAAiD,MAAtC86C,EAAe96C,SAASjM,OAAO,GACxC+mD,EAAe96C,SACf,IAAM86C,EAAe96C,SAE3B,CAUA,OARA06C,EAAYK,EAAWzyD,OAAOkM,SAASwG,MAQhC,SAAyBggD,GAC9B,IAAIC,EAAU9J,EAAM0I,SAASmB,GAAeD,EAAWC,GAAcA,EACrE,OAAQC,EAAOxmD,WAAaimD,EAAUjmD,UAClCwmD,EAAO33C,OAASo3C,EAAUp3C,IAChC,CACD,CAlDD,GAsDS,WACL,OAAO,CACT,uCC/DN,IAAI6tC,EAAQ,EAAQ,QAEpBD,EAAOxoD,QAAU,SAA6BuI,EAASiqD,GACrD/J,EAAMjkD,QAAQ+D,GAAS,SAAuB3K,EAAO+G,GAC/CA,IAAS6tD,GAAkB7tD,EAAK6tC,gBAAkBggB,EAAehgB,gBACnEjqC,EAAQiqD,GAAkB50D,SACnB2K,EAAQ5D,GAEnB,GACF,uCCTA,IAAI8jD,EAAQ,EAAQ,QAIhBgK,EAAoB,CACtB,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,cAgB5BjK,EAAOxoD,QAAU,SAAsBuI,GACrC,IACIlH,EACAooC,EACA5sC,EAHA01D,EAAS,CAAC,EAKd,OAAKhqD,GAELkgD,EAAMjkD,QAAQ+D,EAAQjC,MAAM,OAAO,SAAgBosD,GAKjD,GAJA71D,EAAI61D,EAAKnzD,QAAQ,KACjB8B,EAAMonD,EAAM//C,KAAKgqD,EAAKn2C,OAAO,EAAG1f,IAAIqU,cACpCu4B,EAAMgf,EAAM//C,KAAKgqD,EAAKn2C,OAAO1f,EAAI,IAE7BwE,EAAK,CACP,GAAIkxD,EAAOlxD,IAAQoxD,EAAkBlzD,QAAQ8B,IAAQ,EACnD,OAGAkxD,EAAOlxD,GADG,eAARA,GACakxD,EAAOlxD,GAAOkxD,EAAOlxD,GAAO,IAAIyY,OAAO,CAAC2vB,IAEzC8oB,EAAOlxD,GAAOkxD,EAAOlxD,GAAO,KAAOooC,EAAMA,CAE3D,CACF,IAEO8oB,GAnBgBA,CAoBzB,mCC9BA/J,EAAOxoD,QAAU,SAAgB0zB,GAC/B,OAAO,SAAci/B,GACnB,OAAOj/B,EAASz2B,MAAM,KAAM01D,EAC9B,CACF,uCCxBA,IAAIlG,EAAU,kBAEVc,EAAa,CAAC,EAGlB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAU/oD,SAAQ,SAASmI,EAAM9P,GACrF0wD,EAAW5gD,GAAQ,SAAmBimD,GACpC,cAAcA,IAAUjmD,GAAQ,KAAO9P,EAAI,EAAI,KAAO,KAAO8P,CAC/D,CACF,IAEA,IAAIkmD,EAAqB,CAAC,EAS1BtF,EAAWxC,aAAe,SAAsBzW,EAAW1vC,EAASgQ,GAClE,SAASk+C,EAAcC,EAAKC,GAC1B,MAAO,WAAavG,EAAU,0BAA6BsG,EAAM,IAAOC,GAAQp+C,EAAU,KAAOA,EAAU,GAC7G,CAGA,OAAO,SAAShX,EAAOm1D,EAAKv7C,GAC1B,IAAkB,IAAd88B,EACF,MAAM,IAAIhzC,MAAMwxD,EAAcC,EAAK,qBAAuBnuD,EAAU,OAASA,EAAU,MAczF,OAXIA,IAAYiuD,EAAmBE,KACjCF,EAAmBE,IAAO,EAE1BzkD,QAAQC,KACNukD,EACEC,EACA,+BAAiCnuD,EAAU,8CAK1C0vC,GAAYA,EAAU12C,EAAOm1D,EAAKv7C,EAC3C,CACF,EAgCAgxC,EAAOxoD,QAAU,CACfytD,cAxBF,SAAuBt/C,EAAS8kD,EAAQC,GACtC,GAAuB,iBAAZ/kD,EACT,MAAM,IAAIhP,UAAU,6BAItB,IAFA,IAAI8G,EAAOhK,OAAOgK,KAAKkI,GACnBtR,EAAIoJ,EAAKjJ,OACNH,KAAM,GAAG,CACd,IAAIk2D,EAAM9sD,EAAKpJ,GACXy3C,EAAY2e,EAAOF,GACvB,GAAIze,EAAJ,CACE,IAAI12C,EAAQuQ,EAAQ4kD,GAChB90D,OAAmB+Y,IAAVpZ,GAAuB02C,EAAU12C,EAAOm1D,EAAK5kD,GAC1D,IAAe,IAAXlQ,EACF,MAAM,IAAIkB,UAAU,UAAY4zD,EAAM,YAAc90D,EAGxD,MACA,IAAqB,IAAjBi1D,EACF,MAAM5xD,MAAM,kBAAoByxD,EAEpC,CACF,EAIExF,WAAYA,wCC9Ed,IAAIzqD,EAAO,EAAQ,QAIfF,EAAW3G,OAAOK,UAAUsG,SAQhC,SAAS0N,EAAQm5B,GACf,MAA8B,mBAAvB7mC,EAASpG,KAAKitC,EACvB,CAQA,SAAS+hB,EAAY/hB,GACnB,YAAsB,IAARA,CAChB,CA2EA,SAASsnB,EAAStnB,GAChB,OAAe,OAARA,GAA+B,iBAARA,CAChC,CAQA,SAAS6e,EAAc7e,GACrB,GAA2B,oBAAvB7mC,EAASpG,KAAKitC,GAChB,OAAO,EAGT,IAAIntC,EAAYL,OAAOk3D,eAAe1pB,GACtC,OAAqB,OAAdntC,GAAsBA,IAAcL,OAAOK,SACpD,CAsCA,SAAS82D,EAAW3pB,GAClB,MAA8B,sBAAvB7mC,EAASpG,KAAKitC,EACvB,CAuEA,SAASjlC,EAAQ2Y,EAAKzB,GAEpB,GAAIyB,QAUJ,GALmB,iBAARA,IAETA,EAAM,CAACA,IAGL7M,EAAQ6M,GAEV,IAAK,IAAItgB,EAAI,EAAGwF,EAAI8a,EAAIngB,OAAQH,EAAIwF,EAAGxF,IACrC6e,EAAGlf,KAAK,KAAM2gB,EAAItgB,GAAIA,EAAGsgB,QAI3B,IAAK,IAAI9b,KAAO8b,EACVlhB,OAAOK,UAAUC,eAAeC,KAAK2gB,EAAK9b,IAC5Cqa,EAAGlf,KAAK,KAAM2gB,EAAI9b,GAAMA,EAAK8b,EAIrC,CAuEAqrC,EAAOxoD,QAAU,CACfsQ,QAASA,EACTkgD,cA1RF,SAAuB/mB,GACrB,MAA8B,yBAAvB7mC,EAASpG,KAAKitC,EACvB,EAyREgnB,SAtSF,SAAkBhnB,GAChB,OAAe,OAARA,IAAiB+hB,EAAY/hB,IAA4B,OAApBA,EAAI5kC,cAAyB2mD,EAAY/hB,EAAI5kC,cAChD,mBAA7B4kC,EAAI5kC,YAAY4rD,UAA2BhnB,EAAI5kC,YAAY4rD,SAAShnB,EAClF,EAoSEggB,WAlRF,SAAoBhgB,GAClB,MAA4B,oBAAb4pB,UAA8B5pB,aAAe4pB,QAC9D,EAiRExC,kBAzQF,SAA2BpnB,GAOzB,MAL4B,oBAAhB6pB,aAAiCA,YAAkB,OACpDA,YAAYC,OAAO9pB,GAEnB,GAAUA,EAAU,QAAMA,EAAIj9B,kBAAkB8mD,WAG7D,EAkQEnC,SA1PF,SAAkB1nB,GAChB,MAAsB,iBAARA,CAChB,EAyPEqoB,SAjPF,SAAkBroB,GAChB,MAAsB,iBAARA,CAChB,EAgPEsnB,SAAUA,EACVzI,cAAeA,EACfkD,YAAaA,EACbiG,OAlNF,SAAgBhoB,GACd,MAA8B,kBAAvB7mC,EAASpG,KAAKitC,EACvB,EAiNEknB,OAzMF,SAAgBlnB,GACd,MAA8B,kBAAvB7mC,EAASpG,KAAKitC,EACvB,EAwMEmnB,OAhMF,SAAgBnnB,GACd,MAA8B,kBAAvB7mC,EAASpG,KAAKitC,EACvB,EA+LE2pB,WAAYA,EACZ1C,SA9KF,SAAkBjnB,GAChB,OAAOsnB,EAAStnB,IAAQ2pB,EAAW3pB,EAAI+pB,KACzC,EA6KE1C,kBArKF,SAA2BrnB,GACzB,MAAkC,oBAApBzjC,iBAAmCyjC,aAAezjC,eAClE,EAoKEilD,qBAzIF,WACE,OAAyB,oBAAdiH,WAAoD,gBAAtBA,UAAUuB,SACY,iBAAtBvB,UAAUuB,SACY,OAAtBvB,UAAUuB,WAI/B,oBAAX7zD,QACa,oBAAb0L,SAEX,EAgIE9G,QAASA,EACT6jD,MAvEF,SAASA,IACP,IAAIpqD,EAAS,CAAC,EACd,SAASy1D,EAAYjqB,EAAKpoC,GACpBinD,EAAcrqD,EAAOoD,KAASinD,EAAc7e,GAC9CxrC,EAAOoD,GAAOgnD,EAAMpqD,EAAOoD,GAAMooC,GACxB6e,EAAc7e,GACvBxrC,EAAOoD,GAAOgnD,EAAM,CAAC,EAAG5e,GACfn5B,EAAQm5B,GACjBxrC,EAAOoD,GAAOooC,EAAIllC,QAElBtG,EAAOoD,GAAOooC,CAElB,CAEA,IAAK,IAAI5sC,EAAI,EAAGwF,EAAItF,UAAUC,OAAQH,EAAIwF,EAAGxF,IAC3C2H,EAAQzH,UAAUF,GAAI62D,GAExB,OAAOz1D,CACT,EAsDEouD,OA5CF,SAAgBrrD,EAAGhF,EAAGoB,GAQpB,OAPAoH,EAAQxI,GAAG,SAAqBytC,EAAKpoC,GAEjCL,EAAEK,GADAjE,GAA0B,mBAARqsC,EACX3mC,EAAK2mC,EAAKrsC,GAEVqsC,CAEb,IACOzoC,CACT,EAoCE0H,KAhKF,SAAc+1C,GACZ,OAAOA,EAAI/1C,KAAO+1C,EAAI/1C,OAAS+1C,EAAI/3C,QAAQ,aAAc,GAC3D,EA+JEitD,SA7BF,SAAkB3xC,GAIhB,OAH8B,QAA1BA,EAAQxb,WAAW,KACrBwb,EAAUA,EAAQzd,MAAM,IAEnByd,CACT,wCCnUA,SAAS/gB,EAAElD,GAAG,IAAIpB,EAAE2B,EAAExB,EAAE,GAAG,GAAG,iBAAiBiB,GAAG,iBAAiBA,EAAEjB,GAAGiB,OAAO,GAAG,iBAAiBA,EAAE,GAAG3B,MAAMkU,QAAQvS,GAAG,IAAIpB,EAAE,EAAEA,EAAEoB,EAAEf,OAAOL,IAAIoB,EAAEpB,KAAK2B,EAAE2C,EAAElD,EAAEpB,OAAOG,IAAIA,GAAG,KAAKA,GAAGwB,QAAQ,IAAI3B,KAAKoB,EAAEA,EAAEpB,KAAKG,IAAIA,GAAG,KAAKA,GAAGH,GAAG,OAAOG,CAAC,CAA2H,IAAnH,WAAgB,IAAI,IAAIiB,EAAEpB,EAAE2B,EAAE,EAAExB,EAAE,GAAGwB,EAAEvB,UAAUC,SAASe,EAAEhB,UAAUuB,QAAQ3B,EAAEsE,EAAElD,MAAMjB,IAAIA,GAAG,KAAKA,GAAGH,GAAG,OAAOG,CAAC,qCCcjWkD,EAAQ,EAiCR,SAAey+C,EAAKtwC,GAClB,GAAmB,iBAARswC,EACT,MAAM,IAAIt/C,UAAU,iCAQtB,IALA,IAAIge,EAAM,CAAC,EACP41C,EAAM5kD,GAAW,CAAC,EAClBylD,EAAQnV,EAAIn4C,MAAM,KAClButD,EAAMd,EAAIe,QAAUA,EAEfj3D,EAAI,EAAGA,EAAI+2D,EAAM52D,OAAQH,IAAK,CACrC,IAAIk3D,EAAOH,EAAM/2D,GACb2f,EAAQu3C,EAAKx0D,QAAQ,KAGzB,KAAIid,EAAQ,GAAZ,CAIA,IAAInb,EAAM0yD,EAAKtnD,UAAU,EAAG+P,GAAO9T,OAGnC,GAAIsO,MAAamG,EAAI9b,GAAM,CACzB,IAAIooC,EAAMsqB,EAAKtnD,UAAU+P,EAAQ,EAAGu3C,EAAK/2D,QAAQ0L,OAGlC,MAAX+gC,EAAI,KACNA,EAAMA,EAAIllC,MAAM,GAAI,IAGtB4Y,EAAI9b,GAAO2yD,EAAUvqB,EAAKoqB,EAC5B,CAdA,CAeF,CAEA,OAAO12C,CACT,EAnEAnd,EAAQ,EAqFR,SAAmB2E,EAAM8kC,EAAKt7B,GAC5B,IAAI4kD,EAAM5kD,GAAW,CAAC,EAClB8lD,EAAMlB,EAAIvnD,QAAUA,EAExB,GAAmB,mBAARyoD,EACT,MAAM,IAAI90D,UAAU,4BAGtB,IAAK+0D,EAAmB9kD,KAAKzK,GAC3B,MAAM,IAAIxF,UAAU,4BAGtB,IAAIvB,EAAQq2D,EAAIxqB,GAEhB,GAAI7rC,IAAUs2D,EAAmB9kD,KAAKxR,GACpC,MAAM,IAAIuB,UAAU,2BAGtB,IAAIs/C,EAAM95C,EAAO,IAAM/G,EAEvB,GAAI,MAAQm1D,EAAIoB,OAAQ,CACtB,IAAIA,EAASpB,EAAIoB,OAAS,EAE1B,GAAI/U,MAAM+U,KAAYC,SAASD,GAC7B,MAAM,IAAIh1D,UAAU,4BAGtBs/C,GAAO,aAAev8C,KAAKC,MAAMgyD,EACnC,CAEA,GAAIpB,EAAI9nD,OAAQ,CACd,IAAKipD,EAAmB9kD,KAAK2jD,EAAI9nD,QAC/B,MAAM,IAAI9L,UAAU,4BAGtBs/C,GAAO,YAAcsU,EAAI9nD,MAC3B,CAEA,GAAI8nD,EAAI7nD,KAAM,CACZ,IAAKgpD,EAAmB9kD,KAAK2jD,EAAI7nD,MAC/B,MAAM,IAAI/L,UAAU,0BAGtBs/C,GAAO,UAAYsU,EAAI7nD,IACzB,CAEA,GAAI6nD,EAAIloD,QAAS,CACf,GAAuC,mBAA5BkoD,EAAIloD,QAAQG,YACrB,MAAM,IAAI7L,UAAU,6BAGtBs/C,GAAO,aAAesU,EAAIloD,QAAQG,aACpC,CAEI+nD,EAAIsB,WACN5V,GAAO,cAGLsU,EAAI5nD,SACNszC,GAAO,YAGT,GAAIsU,EAAI3nD,SAAU,CAIhB,OAHuC,iBAAjB2nD,EAAI3nD,SACtB2nD,EAAI3nD,SAAS8F,cAAgB6hD,EAAI3nD,UAGnC,KAAK,EACHqzC,GAAO,oBACP,MACF,IAAK,MACHA,GAAO,iBACP,MACF,IAAK,SACHA,GAAO,oBACP,MACF,IAAK,OACHA,GAAO,kBACP,MACF,QACE,MAAM,IAAIt/C,UAAU,8BAE1B,CAEA,OAAOs/C,CACT,EAnKA,IAAIqV,EAAS1tD,mBACToF,EAASZ,mBAUTspD,EAAqB,wCAkKzB,SAASF,EAAUvV,EAAKqV,GACtB,IACE,OAAOA,EAAOrV,EAGhB,CAFE,MAAO1gD,GACP,OAAO0gD,CACT,CACF,qCCtMAz+C,EAAQ,OAA2B,EAwBnCA,EAAQ,EArByB,CAAC6lD,EAAOyO,EAAS,YAChD,MAAMC,EAAgB1O,EAAM2O,SAAS,SAC/BC,EAAe5O,EAAM2O,SAAS,QAC9BE,EAAe7O,EAAM2O,SAAS,QACpC,MAAc,MAAV3O,EAAsBA,IAEtB0O,GAAiBE,GAAgBC,KACnCJ,EAAS,SAGI,WAAXA,EACKzO,EAAM2O,SAAS,KAAO3O,EAAQ,GAAGA,KAG3B,UAAXyO,GACKzO,EAAM2O,SAAS,KAAO3O,EAAMthD,MAAM,GAAI,GAGxCshD,EAAK,uCCrBd7lD,EAAQ,GAAuBA,EAAQ,QAAgB,EAEvD,IAAI20D,EAAiB,EAAQ,QAE7B30D,EAAQ,GAAgB20D,EAAeC,cAEvC,IAAIC,EAAwB,EAAQ,QAEpC70D,EAAQ,GAAuB60D,EAAsBC,0DCTrD,IAAIxd,EAAyB,EAAQ,QAErCt3C,EAAQF,YAAa,EACrBE,EAAQ40D,cAAgB50D,EAAQ+0D,mBAAgB,EAEhD,IAAIC,EAA0B1d,EAAuB,EAAQ,SAEzD2d,EAAkB3d,EAAuB,EAAQ,SAEjDE,EAQJ,SAAiCr6B,EAAK+3C,GAAe,IAAKA,GAAe/3C,GAAOA,EAAIrd,WAAc,OAAOqd,EAAO,GAAY,OAARA,GAA+B,iBAARA,GAAmC,mBAARA,EAAsB,MAAO,CAAEpd,QAASod,GAAS,IAAI9T,EAAQ8rD,EAAyBD,GAAc,GAAI7rD,GAASA,EAAM5I,IAAI0c,GAAQ,OAAO9T,EAAMhJ,IAAI8c,GAAQ,IAAIuhC,EAAS,CAAC,EAAO0W,EAAwBn5D,OAAOgE,gBAAkBhE,OAAOo5D,yBAA0B,IAAK,IAAIh0D,KAAO8b,EAAO,GAAY,YAAR9b,GAAqBpF,OAAOK,UAAUC,eAAeC,KAAK2gB,EAAK9b,GAAM,CAAE,IAAI2xD,EAAOoC,EAAwBn5D,OAAOo5D,yBAAyBl4C,EAAK9b,GAAO,KAAU2xD,IAASA,EAAK3yD,KAAO2yD,EAAK1yD,KAAQrE,OAAOgE,eAAey+C,EAAQr9C,EAAK2xD,GAAgBtU,EAAOr9C,GAAO8b,EAAI9b,EAAQ,CAAIq9C,EAAO3+C,QAAUod,EAAS9T,GAASA,EAAM/I,IAAI6c,EAAKuhC,GAAW,OAAOA,CAAQ,CARvxBnH,CAAwB,EAAQ,SAExC+d,EAAahe,EAAuB,EAAQ,QAE5Cie,EAAkB,EAAQ,QAE9B,SAASJ,EAAyBD,GAAe,GAAuB,mBAAZM,QAAwB,OAAO,KAAM,IAAIC,EAAoB,IAAID,QAAeE,EAAmB,IAAIF,QAAW,OAAQL,EAA2B,SAAkCD,GAAe,OAAOA,EAAcQ,EAAmBD,CAAmB,GAAGP,EAAc,CAI9U,IAAIH,EAA6Bvd,EAAM1hC,cAAc,IAAIy/C,EAAgBI,gBACzE31D,EAAQ+0D,cAAgBA,EACxBA,EAAclhB,YAAc,sBAE5B,IAAI+gB,EAA6B,SAAU5tC,GAGzC,SAAS4tC,IAGP,IAFA,IAAI3+C,EAEKmJ,EAAOriB,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMgjB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EwwB,EAAKxwB,GAAQviB,UAAUuiB,GA0CzB,OAvCArJ,EAAQ+Q,EAAiBxqB,KAAKS,MAAM+pB,EAAkB,CAAC9pB,MAAM4c,OAAOg2B,KAAU5yC,MACxE04D,cAAgB,IAAIL,EAAgBI,eAC1C1/C,EAAM4/C,YAAa,EACnB5/C,EAAM6/C,oBAAsB,EAE5B7/C,EAAM8/C,eAAiB,WACrB9/C,EAAM6/C,oBAAsBl2D,OAAOo2D,QAE9B//C,EAAM4/C,aACT5/C,EAAM4/C,YAAa,EACnBI,sBAAsBhgD,EAAMigD,YAAYpzD,MAAK,EAAIkyD,EAAwBj1D,SAASkW,KAEtF,EAEAA,EAAMkgD,aAAe,SAAUx0C,EAAUy0C,GACnCngD,EAAMogD,mBAAmBD,EAAWngD,EAAMgE,QAC5Cra,OAAO02D,SAAS,EAAG30C,EAEvB,EAEA1L,EAAMsgD,aAAe,SAAU57C,EAAMy7C,GACnC,IAAIzuC,EAAOrc,SAASkrD,eAAe77C,EAAKlO,UAAU,IAE9Ckb,GAAQ1R,EAAMogD,mBAAmBD,EAAWngD,EAAMgE,QACpD0N,EAAK8uC,gBAET,EAEAxgD,EAAMogD,mBAAqB,SAAUK,EAAiBC,GACpD,IAAIN,EAAqBpgD,EAAMgE,MAAMo8C,mBAErC,OAAKA,GAKEA,EAAmB75D,MAAK,EAAIw4D,EAAwBj1D,SAASkW,GAAQygD,EAAiBC,EAC/F,EAEO1gD,CACT,EAjDA,EAAIg/C,EAAgBl1D,SAAS60D,EAAe5tC,GAmD5C,IAAII,EAASwtC,EAAct4D,UAkE3B,OAhEA8qB,EAAO8uC,YAAc,WACnB,IAAI70D,EAAMnE,KAAK+c,MAAMnO,SAASzK,KAAO,KAEjCA,GACFnE,KAAK04D,cAAcrrD,KAAKrN,KAAK+c,MAAMnO,SAAUzK,EAAKnE,KAAK44D,qBAGzD54D,KAAK24D,YAAa,CACpB,EAEAzuC,EAAOC,kBAAoB,WAEzB,IAAIuvC,EADJh3D,OAAOsE,iBAAiB,SAAUhH,KAAK64D,gBAEvC,IAAIc,EAAuB35D,KAAK+c,MAAMnO,SAClCzK,EAAMw1D,EAAqBx1D,IAC3BsZ,EAAOk8C,EAAqBl8C,KAE5BtZ,IACFu1D,EAAiB15D,KAAK04D,cAAcvK,KAAKnuD,KAAK+c,MAAMnO,SAAUzK,IAG5Du1D,EACF15D,KAAKi5D,aAAaS,OAAgB5/C,GACzB2D,GACTzd,KAAKq5D,aAAat7C,UAAUN,QAAO3D,EAEvC,EAEAoQ,EAAOI,qBAAuB,WAC5B5nB,OAAOmE,oBAAoB,SAAU7G,KAAK64D,eAC5C,EAEA3uC,EAAO0vC,mBAAqB,SAA4BV,GACtD,IAGIQ,EAHAG,EAAwB75D,KAAK+c,MAAMnO,SACnC6O,EAAOo8C,EAAsBp8C,KAC7BtZ,EAAM01D,EAAsB11D,IAG5BA,IACFu1D,EAAiB15D,KAAK04D,cAAcvK,KAAKnuD,KAAK+c,MAAMnO,SAAUzK,IAY5DsZ,EACFzd,KAAKq5D,aAAat7C,UAAUN,GAAOy7C,GAEnCl5D,KAAKi5D,aAAaS,EAAgBR,EAEtC,EAEAhvC,EAAOS,OAAS,WACd,OAAoB2vB,EAAMrjC,cAAc4gD,EAAcv7C,SAAU,CAC9D5b,MAAOV,KAAK04D,eACX14D,KAAK+c,MAAMxC,SAChB,EAEOm9C,CACT,CAvHiC,CAuH/Bpd,EAAMx9B,WAERha,EAAQ40D,cAAgBA,EACxBA,EAAc3sC,UAAY,CACxBouC,mBAAoBf,EAAWv1D,QAAQ2yC,KACvCj7B,SAAU69C,EAAWv1D,QAAQ6qB,QAAQosC,WACrClrD,SAAUwpD,EAAWv1D,QAAQk3D,OAAOD,+CCpJtCh3D,EAAQF,YAAa,EACrBE,EAAQ21D,oBAAiB,EACzB,IACIuB,EAA6B,gCAE7BvB,EAA8B,WAChC,SAASA,IAAkB,CAE3B,IAAIvuC,EAASuuC,EAAer5D,UA8C5B,OA5CA8qB,EAAOikC,KAAO,SAAcv/C,EAAUzK,GACpC,IAAI81D,EAAWj6D,KAAKk6D,YAAYtrD,EAAUzK,GAE1C,IACE,IAAIzD,EAAQgC,OAAOsM,eAAe3K,QAAQ41D,GAC1C,OAAOv5D,EAAQ0F,KAAKM,MAAMhG,GAAS,CAWrC,CAVE,MAAOG,GAKP,OAAI6B,QAAUA,OAAOs3D,IAA+Bt3D,OAAOs3D,GAA4BC,GAC9Ev3D,OAAOs3D,GAA4BC,GAGrC,CACT,CACF,EAEA/vC,EAAO7c,KAAO,SAAcuB,EAAUzK,EAAKzD,GACzC,IAAIu5D,EAAWj6D,KAAKk6D,YAAYtrD,EAAUzK,GACtCg2D,EAAc/zD,KAAKC,UAAU3F,GAEjC,IACEgC,OAAOsM,eAAevK,QAAQw1D,EAAUE,EAY1C,CAXE,MAAOt5D,GACH6B,QAAUA,OAAOs3D,KAGnBt3D,OAAOs3D,GAA8B,CAAC,GAFtCt3D,OAAOs3D,GAA4BC,GAAY7zD,KAAKM,MAAMyzD,EAS9D,CACF,EAEAjwC,EAAOgwC,YAAc,SAAqBtrD,EAAUzK,GAClD,IAAIi2D,EAhDe,YAgDwBxrD,EAASwL,SACpD,OAAOjW,QAA6Ci2D,EAAeA,EAAe,IAAMj2D,CAC1F,EAEOs0D,CACT,CAlDkC,GAoDlC31D,EAAQ21D,eAAiBA,uCCzDzB31D,EAAQF,YAAa,EACrBE,EAAQ80D,qBAQR,SAA8ByC,GAC5B,IAAIzrD,GAAW,EAAI0rD,EAAaC,eAC5BvyD,GAAQ,EAAIwyD,EAAOh+C,YAAYi7C,EAAeI,eAC9Cv1C,GAAM,EAAIk4C,EAAOn/C,QAAQ,MAO7B,OANA,EAAIm/C,EAAOC,kBAAiB,WAC1B,GAAIn4C,EAAI/G,QAAS,CACf,IAAIkJ,EAAWzc,EAAMmmD,KAAKv/C,EAAUyrD,GACpC/3C,EAAI/G,QAAQ69C,SAAS,EAAG30C,GAAY,EACtC,CACF,GAAG,CAAC7V,EAASzK,MACN,CACLme,IAAKA,EACLo4C,SAAU,WACJp4C,EAAI/G,SACNvT,EAAMqF,KAAKuB,EAAUyrD,EAAY/3C,EAAI/G,QAAQ+qB,UAEjD,EAEJ,EAxBA,IAAImxB,EAAiB,EAAQ,QAEzB+C,EAAS,EAAQ,QAEjBF,EAAe,EAAQ,yCCP3BhP,EAAOxoD,QAAU/D,OAAOS,4CCAxBsD,EAAQF,YAAa,EACrBE,EAAQ63D,2BAAwB,EAEZ,EAAQ,QAEE,EAAQ,QAiBtC73D,EAAQ63D,sBAdsB,KAOyC,qCCfvE73D,EAAQF,YAAa,EACrBE,EAAQ83D,YAER,SAAqBC,GACnB,OAAOA,aAA2D,EAASA,EAAiBC,SAAQC,IAAWA,aAAuC,EAASA,EAAOC,UAAY,IACpL,uCCLAl4D,EAAQF,YAAa,EACrBE,EAAQm4D,uBAOR,SAAgCJ,GAC9B,IAAKA,EAAiB/6D,OACpB,OAGF,MAAMo7D,EAAkB9sD,SAAS+sD,cAAc,0BACzCC,EAAkBhtD,SAAS+sD,cAAc,kDAE3CD,GACFA,EAAgBpvD,SAGdsvD,GACFA,EAAgBtvD,SAGlB,MAAMuvD,GAAW,EAAIC,EAAaV,aAAaC,GACzCU,EAAUntD,SAAS6I,cAAc,UACvCskD,EAAQC,QAAQC,UAAY,GAC5BF,EAAQG,WAAY,EAAIC,EAAaC,kBAAkB,CACrDZ,QAASK,IAEXjtD,SAASqtC,KAAKjkC,YAAY+jD,EAC5B,EA5BA,IAAII,EAAe,EAAQ,QAEvBL,EAAe,EAAQ,gCCP3Bx4D,EAAQ+4D,WAAa,CACnB,4DAA6D,IAAM,qGACnE,2DAA4D,IAAM,4FAClE,yDAA0D,IAAM,4FAChE,4DAA6D,IAAM,4FACnE,2DAA4D,IAAM,mFAClE,2DAA4D,IAAM,4FAClE,0DAA2D,IAAM,oHCPnEvQ,EAAOxoD,QAAU,CAAC,CACZg5D,OAAQC,EAAQ,QAChB9qD,QAAS,CAAC,QAAU,KACpB,CACA6qD,OAAQC,EAAQ,OAChB9qD,QAAS,CAAC,QAAU,KACpB,CACA6qD,OAAQC,EAAQ,QAChB9qD,QAAS,CAAC,QAAU,GAAG,sBAAuB,IAC9C,CACA6qD,OAAQC,EAAQ,MAChB9qD,QAAS,CAAC,QAAU,GAAG,gBAAkB,OACzC,CACA6qD,OAAQC,EAAQ,QAChB9qD,QAAS,CAAC,QAAU,GAAG,KAAO,WAAW,WAAa,WAAW,UAAY,IAAI,iBAAmB,UAAU,YAAc,UAAU,KAAO,kCAAkC,iBAAkB,EAAM,QAAU,aAAa,QAAS,EAAK,qBAAsB,EAAK,mBAAqB,QAAQ,YAAc,YAAY,YAAc,qCAC5U,CACA6qD,OAAQC,EAAQ,QAChB9qD,QAAS,CAAC,QAAU,8BCjB1B,MAAM4qC,EAAUkgB,EAAS,SACnB,2BAAEC,EAAF,SAA8BC,EAA9B,aAAwCC,GAC5CH,EAAAA,QAAAA,GAEFj5D,EAAQ,EAAY,SAACq5D,EAAKvpB,EAAWwpB,EAAeC,QAAiB,IAA3CzpB,IAAAA,EAAO,CAAC,GAYhC,IAAI0pB,EAAUzgB,EAAQxyC,KAAIyyD,IACxB,IAAKA,EAAOA,OAAOK,GACjB,OAGFvpB,EAAKopB,2BAA6BA,EAClCppB,EAAKqpB,SAAWA,EAChBrpB,EAAKspB,aAAeA,EAEpB,MAAMn7D,EAAS+6D,EAAOA,OAAOK,GAAKvpB,EAAMkpB,EAAO7qD,SAI/C,OAHIlQ,GAAUs7D,IACZzpB,EAAOypB,EAAa,CAAEzpB,OAAM7xC,SAAQ+6D,YAE/B/6D,CAAP,IAMF,OAFAu7D,EAAUA,EAAQn1D,QAAOpG,QAA6B,IAAZA,IAEtCu7D,EAAQx8D,OAAS,EACZw8D,EACEF,EACF,CAACA,GAED,EAEV,EAEDt5D,EAAQ,EAAiB,CAACq5D,EAAKvpB,EAAMwpB,IACnCvgB,EAAQ7yC,QACN,CAACuzD,EAAU37D,IACTA,EAAKk7D,OAAOK,GACRI,EAASt7D,MAAK,IAAML,EAAKk7D,OAAOK,GAAKvpB,EAAMhyC,EAAKqQ,WAChDsrD,GACNj8D,QAAQC,+BClDZ+qD,EAAOxoD,QAAU,0ECGjB,MCgBA,SAAc0sD,GAGb,OAFAA,EAAMA,GAAOzwD,OAAOqO,OAAO,MAEpB,CAQNovD,GAAI,SAAY/sD,EAAcgtD,IAC5BjN,EAAI//C,KAAU+/C,EAAI//C,GAAQ,KAAKtN,KAAKs6D,EACtC,EASAC,IAAK,SAAajtD,EAAcgtD,GAC3BjN,EAAI//C,IACP+/C,EAAI//C,GAAMszB,OAAOysB,EAAI//C,GAAMpN,QAAQo6D,KAAa,EAAG,EAErD,EAUAE,KAAM,SAAcltD,EAAcmtD,IAChCpN,EAAI//C,IAAS,IAAIpI,QAAQgC,KAAI,SAAUozD,GAAWA,EAAQG,EAAM,KAChEpN,EAAI,MAAQ,IAAInoD,QAAQgC,KAAI,SAAUozD,GAAWA,EAAQhtD,EAAMmtD,EAAM,GACvE,EAEF,CD1DgBC,6KEFhB,EAAeC,IACb,QAAsBhjD,IAAlBgjD,EACF,OAAOA,EAET,IAAK9uD,EAAM0N,EAAU,IAAKohD,EAAc1zD,MAAO,KAK/C,OAJIsS,IACFA,EAAU,IAAKA,GAGH,MAAV1N,EACM,IAAK0N,EAEuB,MAAlC1N,EAAKG,OAAOH,EAAKlO,OAAS,GACrBkO,EAAK3G,MAAM,GAAI,GAAKqU,EAEtB1N,EAAO0N,CAfhB,cCKA,MAAMqhD,EAAY,IAAI95D,IACtB,IAAI+5D,EAAa,GAEjB,MAAMC,EAAeC,IACnB,IAAIC,EAAiBD,EAGrB,IAAoB,IAFDA,EAAY76D,QAAS,KAEjB,CACrB,MAAO2L,EAAMovD,GAAMF,EAAY9zD,MAAO,KACtC+zD,EAAkB,GAAEnvD,KAAQN,mBAAmB0vD,IAChD,CAED,MAAMhjD,EAAWlR,mBAAmBi0D,GAUpC,OAPwBE,EAAAA,EAAAA,GACtBjjD,EACAlR,mBAAmBo0D,KAGlBl0D,MAAO,KAAI,EAEd,EAGF,SAASm0D,EAAWvvD,GAElB,OACEA,EAAKhC,WAAY,MACjBgC,EAAKhC,WAAY,aACjBgC,EAAKhC,WAAY,WAEVgC,EAIF,IAAI0B,IACT1B,EACAtL,OAAOkM,SAASwG,MAAQ1S,OAAOkM,SAASwG,KAAKkiD,SAAU,KAAO,GAAK,MACnEl9C,QACH,CAOM,MAAMojD,EAAgB98D,IAC3Bs8D,EAAat8D,CAAb,EAWW+8D,EAAgBP,IAC3B,MAAMQ,EAAkBC,EAAUT,GAE5BU,EAAYZ,EAAW3zD,KAAI,IAA0B,IAAzB,KAAE2E,EAAF,UAAQ6vD,GAAgB,EACxD,MAAO,CACL7vD,KAAM6vD,EACNC,aAAc9vD,EAFhB,IAMIA,GAAOqS,EAAAA,EAAAA,IAAKu9C,EAAWF,GAE7B,OAAI1vD,EACK+vD,EAAkB/vD,EAAKgT,MAAM88C,cAG/B,IAAP,EAYWE,EAAkBd,IAC7B,MAAMQ,EAAkBC,EAAUT,GAE5BU,EAAYZ,EAAW3zD,KAAI,IAA0B,IAAzB,KAAE2E,EAAF,UAAQ6vD,GAAgB,EACxD,MAAO,CACL7vD,KAAM6vD,EACNC,aAAc9vD,EAFhB,IAMIA,GAAOqS,EAAAA,EAAAA,IAAKu9C,EAAWF,GAE7B,OAAI1vD,EACKA,EAAKiT,OAGP,CAAC,CAAR,EAWWg9C,EAAWf,IACtB,MAAMQ,EAAkBT,EAAaM,EAAWL,IAChD,GAAIH,EAAUx5D,IAAIm6D,GAChB,OAAOX,EAAU55D,IAAIu6D,GAGvB,MAAMQ,GAAWC,EAAAA,EAAAA,GAAwBjB,GACzC,GAAIgB,EACF,OAAOD,EAASC,EAASE,QAG3B,IAAIC,EAAYZ,EAAcC,GAQ9B,OANKW,IACHA,EAAYV,EAAUT,IAGxBH,EAAU35D,IAAIs6D,EAAiBW,GAExBA,CAAP,EAUWV,EAAYT,IAGvB,IAAImB,EAFoBpB,EAAaM,EAAWL,IAShD,MANmB,gBAAfmB,IACFA,EAAa,KAGfA,EAAYN,EAAkBM,GAEvBA,CAAP,61BC3JF,MAAMC,EAAqBhkB,EAAAA,cAAoB,CAAC,GAChD,IAAIikB,EAA2B,KAK/B,SAASC,EAAT,GAA4E,IAA3C,gBAAEC,EAAF,KAAmBn0D,EAAnB,MAAyB6X,EAAzB,OAAgCwI,GAAU,EACzE,MAAM+zC,EAAYp0D,EACdA,EAAKA,KACLm0D,EAAgBt8C,IAAUs8C,EAAgBt8C,GAAO7X,KAErD,OACE,gBAAC,WAAD,KACGo0D,GAAa/zC,EAAO+zC,IACnBA,GAAa,oDAGpB,CAfGpkB,EAAAA,sBACFikB,EAA2BjkB,EAAAA,oBAA2B,cAAc,CAAC,IAiBvE,MAAMqkB,EAAc5hD,IAClB,MAAM,KAAEzS,EAAF,MAAQ6X,EAAR,OAAewI,EAAf,SAAuBpQ,GAAawC,EAE1C,OACE,gBAACuhD,EAAmBM,SAApB,MACGH,GACC,gBAACD,EAAD,CACEl0D,KAAMA,EACN6X,MAAOA,EACPwI,OAAQA,GAAUpQ,EAClBkkD,gBAAiBA,KAPzB,EAqBII,EAAiB18C,IAAU,IAAD,EAW9B,IAAIxH,EAeJ,GAxBS2/B,EAAAA,WAgBP3/B,EAHA4jD,GACAx/D,OAAOgK,KAAKw1D,EAAyBO,eAAeh/D,OAE1Cw6C,EAAAA,WAAiBikB,GAEjBjkB,EAAAA,WAAiBgkB,GAMzBpc,MAAM1V,OAAOrqB,IACf,MAAM,IAAI/d,MAAO,iLAIK+d,WAIxB,aAAIxH,EAAQwH,UAAZ,OAAI,EAAgB7X,KAClB,OAAOqQ,EAAQwH,GAAO7X,KAEtB,MAAM,IAAIlG,MACP,uMAIJ,kBCxFH,MAAM26D,EAAmBC,EAAAA,GAAAA,QAEzB,SAASC,IACP,MAAM,IAAI76D,MACP,6UAKJ,2NCXD,MAyDM86D,EAzDU,SAAUC,GACxB,GAAyB,oBAAd/wD,SACT,OAAO,EAET,MAAMgxD,EAAWhxD,SAAS6I,cAAe,QACzC,IACE,GAAImoD,EAASC,SAAiD,mBAA/BD,EAASC,QAAQC,SAC9C,OAAOF,EAASC,QAAQC,SAASH,EAIpC,CAFC,MAAO1a,GACP,OAAO,CACR,CACD,OAAO,CACR,CA4CiC8a,CAAS,YA1Cd,SAAU3qD,EAAK3D,GAC1C,OAAO,IAAI3Q,SAAQ,CAACC,EAASC,KAC3B,GAAyB,oBAAd4N,SAET,YADA5N,IAIF,MAAMw8C,EAAO5uC,SAAS6I,cAAe,QACrC+lC,EAAK9lC,aAAc,MAAO,YAC1B8lC,EAAK9lC,aAAc,OAAOtC,GAE1B7V,OAAOgK,KAAKkI,GAAS3J,SAAQnD,IAC3B64C,EAAK9lC,aAAa/S,EAAK8M,EAAQ9M,GAA/B,IAGF64C,EAAKwiB,OAASj/D,EACdy8C,EAAK0Q,QAAUltD,GAGb4N,SAASqxD,qBAAsB,QAAO,IACtCrxD,SAASsxD,kBAAmB,UAAS,GAAGC,YAC5BnoD,YAAYwlC,EAA1B,GAEH,EAE2B,SAAUpoC,GACpC,OAAO,IAAItU,SAAQ,CAACC,EAASC,KAC3B,MAAMo/D,EAAM,IAAInT,eAChBmT,EAAI3qD,KAAM,MAAML,GAAK,GAErBgrD,EAAIJ,OAAS,KACQ,MAAfI,EAAIzS,OACN5sD,IAEAC,GACD,EAGHo/D,EAAI/Q,KAAK,KAAT,GAEH,EAMKgR,EAAa,CAAC,EAkBpB,MAhBiB,SAAUjrD,EAAK3D,GAC9B,OAAO,IAAI3Q,SAAQC,IACbs/D,EAAWjrD,GACbrU,IAIF2+D,EAA0BtqD,EAAK3D,GAC5BhQ,MAAK,KACJV,IACAs/D,EAAWjrD,IAAO,CAAlB,IAEDkrD,OAAM,QALT,GAOH,0BCrEM,MAAMC,EAAqB,CAIhC37D,MAAQ,QAIR47D,QAAU,WASNC,EAAoBC,IACxB,MAAOlyD,EAAMmyD,GAAeD,EAAQ92D,MAAO,KAPb1J,MAS9B,MAAQ,cADoB,MAAVsO,EAAgB,SAPlCtO,EAAc,OADgBA,EAQqCsO,GAP7D,GAAatO,EAAE2H,MAAM,GAAK3H,GAC1B43D,SAAU,KAAM53D,EAAE2H,MAAM,GAAI,GAAK3H,mBAQrCygE,EAAe,IAAGA,IAAiB,IADrC,EAKF,SAASC,EAAQxrD,EAAKxJ,GACpB,YADoC,IAAhBA,IAAAA,EAAU,OACvB,IAAI9K,SAAQC,IACjB,MAAMq/D,EAAM,IAAInT,eAChBmT,EAAI3qD,KAAK7J,EAAQwJ,GAAK,GACtBgrD,EAAItS,mBAAqB,KACD,GAAlBsS,EAAIrS,YACNhtD,EAAQq/D,EACT,EAEHA,EAAI/Q,KAAK,KAAT,GAEH,CAED,MAgBMwR,EAAY,+BAEZC,EAAkB,SAACC,EAAU55C,EAAkB80B,QAAS,IAA3B90B,IAAAA,EAAY,MAC7C,MAAM65C,EAAO,CACXC,mBAAoBF,EAASE,mBAC7BzyD,KAAMuyD,EAASvyD,KACf0yD,uBAAwBH,EAASG,uBACjC7C,UAAW0C,EAAS1C,UACpB8C,kBAAmBJ,EAASI,kBAC5BC,mBAAoBL,EAASK,oBAG/B,MAAO,CACLj6C,YACA80B,OACA7xC,KAAM22D,EAASx/D,OACfy/D,OAEH,EAsBM,IAAMK,EAAb,WACE,WAAYC,EAAe9D,GAAa,KA6BxC+D,wBAA0B,IAAI99D,IAb5BjD,KAAKghE,OAAS,IAAI/9D,IAClBjD,KAAKihE,WAAa,IAAIh+D,IACtBjD,KAAKkhE,cAAgB,CAAC,EACtBlhE,KAAKmhE,WAAa,IAAIl+D,IACtBjD,KAAKohE,mBAAqB,IAAIn+D,IAC9BjD,KAAKqhE,wBAAyB,EAC9BrhE,KAAKshE,eAAiB,GACtBthE,KAAKuhE,kBAAoB,IAAIl8D,IAC7BrF,KAAKwhE,kBAAoB,IAAIn8D,IAC7BrF,KAAK8gE,cAAgBA,GACrBtD,EAAAA,EAAAA,IAAcR,EACf,CA5BH,2BAgCEyE,YAAA,SAAY7sD,GACV,IAAI8sD,EAAkB1hE,KAAK+gE,wBAAwB59D,IAAIyR,GAQvD,OANK8sD,IACHA,EAAkBtB,EAAQxrD,EAAM,OAChC5U,KAAK+gE,wBAAwB39D,IAAIwR,EAAK8sD,IAIjCA,EACJzgE,MAAKuU,IACJxV,KAAK+gE,wBAAwBp9D,OAAOiR,GAC7BY,KAERsqD,OAAMrb,IAEL,MADAzkD,KAAK+gE,wBAAwBp9D,OAAOiR,GAC9B6vC,CAAN,GAEL,EAlDH,EAoDEkd,aAAA,SAAaC,GACX5hE,KAAK4hE,UAAYA,EACjB5hE,KAAK6hE,iBAAmBD,EAAW,0BAAyB7gC,MAAKj9B,GAAKA,GACvE,EAvDH,EAyDEg+D,kBAAA,SAAkBC,GAChB,MAAM,SAAEC,EAAF,QAAYC,EAAU,GAAMF,EAC5BntD,EAAMqrD,EAAkB+B,GAC9B,OAAOhiE,KAAKyhE,YAAY7sD,GAAK3T,MAAK2+D,IAChC,MAAM,OAAEzS,EAAF,aAAUD,GAAiB0S,EAGjC,GAAe,MAAXzS,EACF,IACE,MAAM+U,EAAc97D,KAAKM,MAAMwmD,GAC/B,QAAyBpzC,IAArBooD,EAAYl0D,KACd,MAAM,IAAI5J,MAAO,iCAGnB,MAAM+7D,EAAc6B,EAAS54D,MAAO,KAAI,GAKxC,OAJI+2D,IAAgB+B,EAAYl0D,KAAKzG,SAAS44D,KAC5C+B,EAAYl0D,MAAS,IAAGmyD,KAGnBphE,OAAOS,OAAOuiE,EAAS,CAC5B5U,OAAQ4S,EAAmBC,QAC3BptD,QAASsvD,GAIZ,CAFC,MAAOzd,GAER,CAIH,OAAe,MAAX0I,GAA6B,MAAXA,EAEF,cAAd6U,GAA0C,cAAdA,EACvBjjE,OAAOS,OAAOuiE,EAAS,CAC5B5U,OAAQ4S,EAAmB37D,QAMxBpE,KAAK8hE,kBACV/iE,OAAOS,OAAOuiE,EAAS,CAAEC,SAAW,YAAYG,UAAU,KAK/C,MAAXhV,EACKntD,KAAK8hE,kBACV/iE,OAAOS,OAAOuiE,EAAS,CACrBC,SAAW,YACXI,qBAAqB,KAMvBH,EAAU,EACLjiE,KAAK8hE,kBACV/iE,OAAOS,OAAOuiE,EAAS,CAAEE,QAASA,EAAU,KAKzCljE,OAAOS,OAAOuiE,EAAS,CAC5B5U,OAAQ4S,EAAmB37D,OAD7B,GAIH,EA3HH,EA6HEi+D,0BAAA,SAA0BN,GACxB,MAAM,SAAEC,EAAF,QAAYC,EAAU,GAAMF,EAC5BntD,EAAMqrD,EAAkB+B,GAAUx4D,QAAS,QAAS,aAC1D,OAAOxJ,KAAKyhE,YAAY7sD,GAAK3T,MAAK2+D,IAChC,MAAM,OAAEzS,EAAF,aAAUD,GAAiB0S,EAGjC,GAAe,MAAXzS,EACF,IACE,OAAOpuD,OAAOS,OAAOuiE,EAAS,CAC5B5U,OAAQ4S,EAAmBC,QAC3BptD,QAASs6C,GAIZ,CAFC,MAAOzI,GAER,CAIH,OAAe,MAAX0I,GAA6B,MAAXA,EAEF,cAAd6U,GAA0C,cAAdA,EACvBjjE,OAAOS,OAAOuiE,EAAS,CAC5B5U,OAAQ4S,EAAmB37D,QAMxBpE,KAAKqiE,0BACVtjE,OAAOS,OAAOuiE,EAAS,CAAEC,SAAW,YAAYG,UAAU,KAK/C,MAAXhV,EACKntD,KAAKqiE,0BACVtjE,OAAOS,OAAOuiE,EAAS,CACrBC,SAAW,YACXI,qBAAqB,KAMvBH,EAAU,EACLjiE,KAAKqiE,0BACVtjE,OAAOS,OAAOuiE,EAAS,CAAEE,QAASA,EAAU,KAKzCljE,OAAOS,OAAOuiE,EAAS,CAC5B5U,OAAQ4S,EAAmB37D,OAD7B,GAIH,EArLH,EAuLEk+D,iBAAA,SAAiBpC,GACf,MAAM8B,GAAW/D,EAAAA,EAAAA,IAASiC,GAC1B,GAAIlgE,KAAKmhE,WAAW59D,IAAIy+D,GAAW,CACjC,MAAMzB,EAAWvgE,KAAKmhE,WAAWh+D,IAAI6+D,GAEnC,OAAO1hE,QAAQC,QAAQggE,EAE1B,CAED,OAAOvgE,KAAK8hE,kBAAkB,CAAEE,aAAY/gE,MAAKs/D,IAC/CvgE,KAAKmhE,WAAW/9D,IAAI4+D,EAAUzB,GAEvBA,IAEV,EArMH,EAuMEgC,yBAAA,SAAyBrC,GACvB,MAAM8B,GAAW/D,EAAAA,EAAAA,IAASiC,GAC1B,GAAIlgE,KAAKohE,mBAAmB79D,IAAIy+D,GAAW,CACzC,MAAMzB,EAAWvgE,KAAKohE,mBAAmBj+D,IAAI6+D,GAE3C,OAAO1hE,QAAQC,QAAQggE,EAE1B,CAED,OAAOvgE,KAAKqiE,0BAA0B,CAAEL,aAAY/gE,MAAKs/D,IACvDvgE,KAAKohE,mBAAmBh+D,IAAI4+D,EAAUzB,GAE/BA,IAEV,EArNH,EAuNE9C,cAAA,SAAcyC,GACZ,OAAOzC,EAAAA,EAAAA,IAAcyC,EACtB,EAzNH,EA4NEjE,SAAA,SAASiE,GACP,MAAM8B,GAAW/D,EAAAA,EAAAA,IAASiC,GAC1B,GAAIlgE,KAAKghE,OAAOz9D,IAAIy+D,GAAW,CAC7B,MAAMxB,EAAOxgE,KAAKghE,OAAO79D,IAAI6+D,GAE3B,OAAIxB,EAAK34D,MACA,CACLA,MAAO24D,EAAK34D,MACZslD,OAAQqT,EAAKrT,QAIV7sD,QAAQC,QAAQigE,EAAK5tD,QAE/B,CAED,GAAI5S,KAAKihE,WAAW19D,IAAIy+D,GACtB,OAAOhiE,KAAKihE,WAAW99D,IAAI6+D,GAG7B,IAAIN,EAmQJ,OA5HEA,EAAkBphE,QAAQkvD,IAAI,CAC5BxvD,KAAKwiE,cACLxiE,KAAKsiE,iBAAiBN,KACrB/gE,MAAKwhE,IACN,MAAM1hE,EAAS0hE,EAAQ,GACvB,GAAI1hE,EAAOosD,SAAW4S,EAAmB37D,MACvC,MAAO,CACL+oD,OAAQ4S,EAAmB37D,OAI/B,IAAIm8D,EAAWx/D,EAAO6R,QACtB,MAAM,mBAAE6tD,EAAF,kBAAsBE,EAAoB,IAAOJ,EAEjDmC,EAAc,CAAC,EAOfC,EAAwBriE,QAAQkvD,IAAI,CACxCxvD,KAAK8gE,cAAcL,GACnBzgE,KAAK8gE,cAAcL,EAAqB,UACvCx/D,MAAK,IAAwB,IAE1B2hE,GAFIj8C,EAAW80B,GAAU,EAmB7B,OAlBAinB,EAAYG,UAAY,IAAIr9D,MAEvBmhB,GAAaA,aAAqBviB,OACrCs+D,EAAYvV,OAAS4S,EAAmB37D,MACxCs+D,EAAY76D,MAAQ8e,IAEpB+7C,EAAYvV,OAAS4S,EAAmBC,SAChB,IAApBj/D,EAAOohE,WACTO,EAAYP,UAAW,GAEzB5B,EAAWxhE,OAAOS,OAAO+gE,EAAU,CACjCG,uBAAwB+B,EAAQ,GAC5BA,EAAQ,GAAG/B,uBACV,KAEPkC,EAAgBtC,EAAgBC,EAAU55C,EAAW80B,IAGhDmnB,CAAP,IAGIE,EAA0BxiE,QAAQkvD,IACtCmR,EAAkBt3D,KAAI05D,IAEpB,GAAI/iE,KAAKkhE,cAAc6B,GAAkB,CACvC,MAAMb,EAAcliE,KAAKkhE,cAAc6B,GACvC,MAAO,CAAEA,kBAAiBb,cAC3B,CAED,OAAOliE,KAAKyhE,YACT,mBAAoCsB,UAEpC9hE,MAAK2+D,IACJ,MAAMsC,EAAc97D,KAAKM,MAAMk5D,EAAI1S,cACnC,MAAO,CAAE6V,kBAAiBb,cAA1B,IAEDpC,OAAM,KACL,MAAM,IAAI17D,MACP,qCAAsD2+D,UADzD,GARJ,KAaF9hE,MAAK+hE,IACL,MAAMC,EAAwB,CAAC,EAO/B,OALAD,EAAmB17D,SAAQ,IAAuC,IAAtC,gBAAEy7D,EAAF,YAAmBb,GAAkB,EAC/De,EAAsBF,GAAmBb,EACzCliE,KAAKkhE,cAAc6B,GAAmBb,CAAtC,IAGKe,CAAP,IAGF,OACE3iE,QAAQkvD,IAAI,CAACmT,EAAuBG,IACjC7hE,MAAK,IAA0C,IAC1C2R,GADEgwD,EAAeI,GAAwB,EAa7C,OAXIJ,IACFhwD,EAAU,IAAKgwD,EAAeI,sBAC9BN,EAAY9vD,QAAUA,EACtBswD,EAAAA,EAAAA,KAAc,0BAA0B,CACtC1C,KAAM5tD,EACNgwD,cAAehwD,KAInB5S,KAAKghE,OAAO59D,IAAI4+D,EAAUU,GAEtBA,EAAY76D,MACP,CACLA,MAAO66D,EAAY76D,MACnBslD,OAAQuV,EAAYvV,QAIjBv6C,CAAP,IAGDktD,OAAMrb,IACE,CACL58C,MAAO48C,EACP0I,OAAQ4S,EAAmB37D,SA5BnC,IAmCJs9D,EACGzgE,MAAK,KACJjB,KAAKihE,WAAWt9D,OAAOq+D,EAAvB,IAEDlC,OAAMj4D,IAEL,MADA7H,KAAKihE,WAAWt9D,OAAOq+D,GACjBn6D,CAAN,IAGJ7H,KAAKihE,WAAW79D,IAAI4+D,EAAUN,GAEvBA,CACR,EApfH,EAufExF,aAAA,SAAagE,EAASjvD,QAAc,IAAdA,IAAAA,EAAU,CAAC,GAC/B,MAAM+wD,GAAW/D,EAAAA,EAAAA,IAASiC,GAC1B,GAAIlgE,KAAKghE,OAAOz9D,IAAIy+D,GAAW,CAAC,IAAD,EAC7B,MAAMzB,EAAWvgE,KAAKghE,OAAO79D,IAAI6+D,GAEjC,GAAIzB,EAAS3tD,QACX,OAAO2tD,EAAS3tD,QAGlB,aAAI3B,SAAJ,OAAI,EAASkyD,iBACX,MAAO,CACLt7D,MAAO04D,EAAS14D,MAChBslD,OAAQoT,EAASpT,OAGtB,CAEF,EAxgBH,EA0gBEiW,eAAA,SAAepB,GAEb,QApkBkC,MACpC,GACG,eAAehN,gBACiB,IAA1BA,UAAUqO,WACjB,CACA,IAAKrO,UAAUqO,WAAWC,eAAkB,IAAG/7D,SAAU,MACvD,OAAO,EAET,GAAIytD,UAAUqO,WAAWE,SACvB,OAAO,CAEV,CACD,OAAO,CAAP,EAwjBOC,OAKDxO,UAAUC,YAAaoL,EAAUnuD,KAAK8iD,UAAUC,cAKhDj1D,KAAKghE,OAAOz9D,IAAIy+D,GAKrB,EA3hBH,EA6hBEyB,SAAA,SAASzB,GACP,IAAKhiE,KAAKojE,eAAepB,GACvB,MAAO,CACL/gE,KAAMV,GAAWA,GAAQ,GACzBuK,MAAO,QAGX,GAAI9K,KAAKuhE,kBAAkBh+D,IAAIy+D,GAC7B,MAAO,CACL/gE,KAAMV,GAAWA,GAAQ,GACzBuK,MAAO,QAIX,MAAM44D,EAAQ,CACZnjE,QAAS,KACTC,OAAQ,KACRsvD,QAAS,MAEX4T,EAAM5T,QAAU,IAAIxvD,SAAQ,CAACC,EAASC,KACpCkjE,EAAMnjE,QAAUA,EAChBmjE,EAAMljE,OAASA,CAAf,IAEFR,KAAKshE,eAAen/D,KAAK,CAAC6/D,EAAU0B,IACpC,MAAMC,EAAS,IAAIh5D,gBAgBnB,OAfAg5D,EAAO/4D,OAAO5D,iBAAkB,SAAQ,KACtC,MAAMsY,EAAQtf,KAAKshE,eAAesC,WAAU,QAAEzkE,GAAF,SAASA,IAAM6iE,CAAf,KAE7B,IAAX1iD,GACFtf,KAAKshE,eAAev+B,OAAOzjB,EAAO,EACnC,IAGEtf,KAAKqhE,yBACRrhE,KAAKqhE,wBAAyB,EAC9B39D,YAAW,KACT1D,KAAK6jE,2BAAL,GACC,MAGE,CACL5iE,KAAM,CAACV,EAASC,IAAWkjE,EAAM5T,QAAQ7uD,KAAKV,EAASC,GACvDsK,MAAO64D,EAAO74D,MAAMlF,KAAK+9D,GAE5B,EAzkBH,EA2kBEE,0BAAA,YACuBnhE,OAAOohE,qBAAP,CAA+B32C,GAAMzpB,WAAWypB,EAAI,MAE5D,KACX,MAAM42C,EAAa/jE,KAAKshE,eAAev+B,OAAO,EAAG,GAC3CihC,EAAa1jE,QAAQkvD,IACzBuU,EAAW16D,KAAI,IAA2B,IAAzB24D,EAAUiC,GAAc,EASvC,OANKjkE,KAAKuhE,kBAAkBh+D,IAAIy+D,KAC9BhiE,KAAK4hE,UAAW,qBAAqB,CAAExnD,SAAU4nD,IACjDhiE,KAAKuhE,kBAAkB56D,IAAIq7D,IAIzBhiE,KAAK6hE,iBACAoC,EAAS1jE,SAAQ,GAGnBP,KAAKkkE,YAAWjG,EAAAA,EAAAA,IAAS+D,IAAW/gE,MAAK,KACzCjB,KAAKwhE,kBAAkBj+D,IAAIy+D,KAC9BhiE,KAAK4hE,UAAW,yBAAyB,CAAExnD,SAAU4nD,IACrDhiE,KAAKwhE,kBAAkB76D,IAAIq7D,IAG7BiC,EAAS1jE,SAAQ,EAAjB,GANF,KAWAP,KAAKshE,eAAexhE,OACtBkkE,EAAW/iE,MAAK,KACdyC,YAAW,KACT1D,KAAK6jE,2BAAL,GACC,IAFH,IAKF7jE,KAAKqhE,wBAAyB,CAC/B,GAEJ,EAnnBH,EAqnBE6C,WAAA,SAAWlC,GACT,MAAMmC,EAAclE,EAAkB+B,GAsBpC,OAAOoC,EAAeD,EAAa,CACjCE,YAAc,YACdC,GAAK,UACJrjE,MAAK,IAGNjB,KAAKsiE,iBAAiBN,IAG3B,EArpBH,EAupBEuC,SAAA,SAASrE,GACPlgE,KAAKi8D,SAASiE,EACf,EAzpBH,EA2pBElE,2BAAA,SAA2BkE,GACzB,MAAM8B,GAAW/D,EAAAA,EAAAA,IAASiC,GACpBM,EAAOxgE,KAAKmhE,WAAWh+D,IAAI6+D,GACjC,GAAIxB,EAAM,CACR,MAAMoC,EAAgBtC,EAAgBE,EAAK5tD,SAE3C,MAAM,GAAN,eACK4xD,EAAoB5B,EAAcpC,KAAKC,qBAD5C,CAEER,EAAkB+B,IAErB,CACC,OAAO,IAEV,EAxqBH,EA0qBEyC,eAAA,SAAevE,GACb,MAAM8B,GAAW/D,EAAAA,EAAAA,IAASiC,GACpBM,EAAOxgE,KAAKghE,OAAO79D,IAAI6+D,GAC7B,OAAQxB,GAAQA,EAAK2B,QACtB,EA9qBH,EAgrBEK,YAAA,SAAYP,GACV,YADuB,IAAbA,IAAAA,EAAU,GACbjiE,KAAKyhE,YAAa,4BAA6CxgE,MACpE2+D,IACE,MAAM,OAAEzS,EAAF,aAAUD,GAAiB0S,EAEjC,IAAI8E,EAEJ,GAAe,MAAXvX,GAAkB8U,EAAU,EAE9B,OAAOjiE,KAAKwiE,YAAYP,EAAU,GAIpC,GAAe,MAAX9U,EACF,IACE,MAAM+U,EAAc97D,KAAKM,MAAMwmD,GAC/B,QAA2CpzC,IAAvCooD,EAAYxB,uBACd,MAAM,IAAIt8D,MAAO,iCAGnBsgE,EAAUxC,CAGX,CAFC,MAAOzd,GAER,CAGH,OAAOigB,CAAP,GAGL,EA7sBH,KAgtBA,MAAMF,EAAsB/D,IACzB/9D,OAAOiiE,gBAAgBlE,IAAuB,IAAIp3D,KACjDu7D,GAASC,GAAkBD,IAGxB,IA6FH/gE,EA7FSihE,EAAb,YACE,WAAYC,EAAe/H,EAAYuD,GAAW,IAAD,SAmB/C,eAlBsB,SAACyE,EAAWC,GAKhC,QAL8D,IAA9BA,IAAAA,EAAc,eAKzCF,EAHHE,EAAc,cAGeD,GAC7B,MAAM,IAAI5gE,MACP,+DAA8D4gE,MAInE,OACED,EAAcE,GAAYD,KAEvBlF,OAAMrb,GAAOA,GAEnB,GAEoBuY,IAArB,KAEIuD,GACF,EAAKY,WAAW/9D,KAAI66D,EAAAA,EAAAA,IAASsC,EAASvyD,MAAO,CAC3Cg0D,SAAUzB,EAASvyD,KACnB4E,QAAS2tD,EACTpT,OAAS,YAzBkC,CA4BhD,EA7BH,uCA+BE+W,WAAA,SAAWlC,GACT,OAAO,YAAMkC,WAAN,UAAiBlC,GAAU/gE,MAAKF,IACrC,GAAIA,EAAOosD,SAAW4S,EAAmBC,QACvC,OAAO1/D,QAAQC,UAEjB6Q,QAAQ8zD,IAAI,CAAEnkE,WACd,MAAMw/D,EAAWx/D,EAAO6R,QAClBoyD,EAAYzE,EAASE,mBACrB0E,EAAgBX,EAAoBQ,GAC1C,OAAO1kE,QAAQkvD,IAAI2V,EAAc97D,IAAI+6D,IAAiBnjE,MAAK,IAAMs/D,GAAjE,GAEH,EA1CH,EA4CE+B,iBAAA,SAAiBpC,GACf,OAAO,YAAMoC,iBAAN,UAAuBpC,GAASj/D,MAAKqJ,GACtCA,EAAK63D,SAGA/B,EAAQF,EAAU,QAAOj/D,MAAK2+D,GAChB,MAAfA,EAAIzS,OAIC,CACLA,OAAQ4S,EAAmB37D,OAMxBkG,IAGJA,GAEV,EAlEH,EAoEEi4D,yBAAA,SAAyBrC,GACvB,OAAO,YAAMqC,yBAAN,UAA+BrC,GAASj/D,MAAKqJ,GAC9CA,EAAK63D,SAGA/B,EAAQF,EAAU,QAAOj/D,MAAK2+D,GAChB,MAAfA,EAAIzS,OAIC,CACLA,OAAQ4S,EAAmB37D,OAMxBkG,IAGJA,GAEV,EA1FH,GAAgCu2D,GA+FzB,MAAMuE,EAAYC,IACvBxhE,EAAWwhE,CAAX,EAGWC,EAAe,CAC1BC,QAASrF,GAAWr8D,EAAS4/D,SAASvD,GAGtClE,2BAA4BkE,GAC1Br8D,EAASm4D,2BAA2BkE,GACtCjE,SAAUiE,GAAWr8D,EAASo4D,SAASiE,GAEvChE,aAAc,SAACgE,EAASjvD,GAAV,gBAAUA,IAAAA,EAAU,CAAC,GACjCpN,EAASq4D,aAAagE,EAASjvD,EADnB,EAEdwyD,SAAUvD,GAAWr8D,EAAS4/D,SAASvD,GACvCuE,eAAgBvE,GAAWr8D,EAAS4gE,eAAevE,GACnDqE,SAAUrE,GAAWr8D,EAAS0gE,SAASrE,GACvCsC,YAAa,IAAM3+D,EAAS2+D,eAG9B,QAEO,SAASgD,IACd,OAAI3hE,EACKA,EAASq9D,cAET,CAAC,CAEX,uKCj7BM,SAASuE,EAAT,GAAuD,IAAzB,SAAElrD,EAAF,SAAYic,GAAY,EAK3D,OAJAlb,EAAAA,EAAAA,YAAU,KACRkb,GAAU,IAGLjc,CACR,CCXM,MAAMmrD,EAAmB,CAC7B,OACA,OACA,QACA,QACA,OACA,WACA,UC8DI,SAASC,EAAYC,EAAQC,GAClC,GAAID,aAAkBE,aAAeD,aAAkBC,YAAa,CAClE,MAAMxyD,EAAQuyD,EAAOljC,aAAc,SAGnC,GAAIrvB,IAAUsyD,EAAOjjC,aAAc,SAAS,CAC1C,MAAMojC,EAAWF,EAAOG,WAAU,GAGlC,OAFAD,EAAS7uD,aAAc,QAAS,IAChC6uD,EAASzyD,MAAQA,EACVA,IAAUsyD,EAAOtyD,OAASsyD,EAAOD,YAAYI,EACrD,CACF,CAED,OAAOH,EAAOD,YAAYE,EAC3B,CCrED,MAAMI,EAAa73D,SAAS6I,cAAe,OAUrCivD,EAAiB,KAAO,IAAD,EAC3B,MAAMC,EAAiB,GAEjBC,EAAU,IAAInjE,IACpB,IAAK,MAAMwnB,KAAQw7C,EAAWI,WAAY,CAAC,IAAD,IACxC,MAAMpkC,EAAWxX,EAAKwX,SAASjuB,cACzBzO,EAAE,UAAGklB,EAAK67C,kBAAR,iBAAG,EAAiB/gE,UAApB,aAAG,EAAqB7E,MAEhC,GAAKglE,EAAiBn+D,SAAS06B,GAExB,CACL,IAAIskC,EAAa97C,EAAKu7C,WAAU,GAIhC,GAHAO,EAAWrvD,aAAc,oBAAmB,GAGD,WAAvCqvD,EAAWtkC,SAASjuB,cAA4B,CAClD,MAAM+mD,EAAS3sD,SAAS6I,cAAe,UACvC,IAAK,MAAMuvD,KAAQD,EAAWD,WAC5BvL,EAAO7jD,aAAasvD,EAAK/+D,KAAM++D,EAAK9lE,OAEtCq6D,EAAOW,UAAY6K,EAAW7K,UAC9B6K,EAAaxL,CACd,CAED,GAAIx1D,EACF,GAAK6gE,EAAQ7iE,IAAIgC,GAGV,CAAC,IAAD,EACL,MAAMkhE,EAAgCL,EAAQjjE,IAAIoC,GAClD,UAAA4gE,EAAeM,GAA+B9G,kBAA9C,SAA0DroD,YACxD6uD,EAAeM,IAEjBN,EAAeM,GAAiCF,CACjD,MARCJ,EAAehkE,KAAKokE,GACpBH,EAAQhjE,IAAImC,EAAI4gE,EAAermE,OAAS,QAS1CqmE,EAAehkE,KAAKokE,EAEvB,MACF,CAED,MAAMG,EAAuBt4D,SAASyzB,iBAAkB,sBAEhB,IAAD,EAAvC,GAAoC,IAAhC6kC,EAAqB5mE,OAEvB,YADA,EAAAsO,SAASqtC,MAAKkrB,OAAd,QAAwBR,GAI1B,MAAMS,EAAe,IDahB,YAA4D,IAAzC,SAAEC,EAAF,SAAYC,EAAZ,QAAsBC,EAAtB,MAA+BC,GAAS,EAChE,IAAK,MAAMC,KAAuBJ,EAAU,CAC1C,MAAMK,EAAkBJ,EAASlD,WAAU/iE,GACzC8kE,EAAY9kE,EAAGomE,MAGQ,IAArBC,EACFH,EAAQE,GAGRH,EAAS/jC,OAAOmkC,EAAiB,EAEpC,CAGD,IAAK,MAAMC,KAAWL,EACpBE,EAAMG,EAET,CC9BCC,CAAU,CACRP,SAAUH,EACVI,SAAUX,EACVY,QAASt8C,GAAQA,EAAKk1C,WAAWroD,YAAYmT,GAC7Cu8C,MAAOv8C,GAAQm8C,EAAazkE,KAAKsoB,MAGnC,EAAArc,SAASqtC,MAAKkrB,OAAd,QAAwBC,EAAxB,EAeK,SAASS,EAAT,GAIH,IAJkC,cACpCC,EADoC,mBAEpCtE,EAFoC,mBAGpCuE,GACC,GACDjsD,EAAAA,EAAAA,YAAU,KACR,GAAIgsD,SAAAA,EAAeE,KAAM,EDjFtB,SAA6B/rB,GAClC,GAAqB,mBAAVA,EACT,MAAM,IAAIr3C,MACP,uDAAsDq3C,MAE5D,CC6EKgsB,CAAoBH,EAAcE,MAElC,MAAM,OAAE78C,IAAW+8C,EAAAA,EAAAA,KAEbF,EAAOF,EAAcE,KAE3B78C,EAIE,gBAAC86C,EAAD,CAAsBjvC,SAAU0vC,GAC9B,gBAAC,EAAA5H,mBAAA,SAAD,CAA6B59D,MAAOsiE,GAClC,gBAAC,EAAA2E,iBAAD,KACE,gBAACH,ED5GN,CACL54D,SAAU,CACRwL,UAH0BuuC,EC6GQ4e,GD1GlB34D,SAASwL,UAE3B6G,OAAQ0nC,EAAM1nC,OACd3W,KAAMq+C,EAAMr+C,MAAQ,CAAC,EACrBs9D,YAAajf,EAAMif,iBC0Gf3B,EAEH,CDnHE,IAAyBtd,ECqH5B,MAAO,KA3GoB,MAC7B,MAAMkf,EAAgBz5D,SAASyzB,iBAAkB,sBAEjD,IAAK,MAAMpX,KAAQo9C,EACjBp9C,EAAKk1C,WAAWroD,YAAYmT,EAC7B,EAuGGq9C,EAAwB,CAD1B,GAIH,CCxHD,SAASC,EAAahrD,GACpB,MAAMwqD,EAAqB,IACtBxqD,EACHkE,OAAQ,KACH+8C,EAAAA,EAAAA,IAAgBjhD,EAAMnO,SAASwL,aAC/B2C,EAAM6lD,cAAch5D,KAAKg+D,YAAYI,WAM5C,IAAIC,EAFkB9hE,MAIpB8hE,EADElrD,EAAM6lD,cAAcsF,iBACRnrD,EAAM6lD,cAAcsF,kBAEpBjxD,EAAAA,EAAAA,gBANM9Q,EAMsB4W,EAAM6lD,cAAcj8C,YAN/BxgB,EAAEtD,SAAYsD,EAM6B,IACrEohE,EACHpjE,IAAK4Y,EAAM/O,MAAQ+O,EAAM6lD,cAAcpC,KAAKxyD,OAMhDq5D,EAAsB,CACpBC,cAHoBvqD,EAAM6lD,cAAcnnB,KAIxCunB,mBAAoBjmD,EAAM6lD,cAAcI,mBACxCuE,uBAeF,OAZoB3F,EAAAA,EAAAA,GACjB,kBACD,CACEl0C,QAASu6C,EACTlrD,MAAOwqD,GAETU,GACA,IAAiB,IAAhB,OAAElnE,GAAa,EACd,MAAO,CAAE2sB,QAAS3sB,EAAQgc,MAAOwqD,EAAjC,IAEFrlE,KAGH,CAED6lE,EAAah9C,UAAY,CACvBnc,SAAUu5D,IAAAA,OAAAA,WACVvF,cAAeuF,IAAAA,OAAAA,WACf79D,KAAM69D,IAAAA,OACNP,YAAaO,IAAAA,OAAAA,YAGf,6JCxDO,MAAMC,EAAsB,CACjC7iE,GAAK,mBACL4R,MAAO,CACLsN,SAAW,WACXE,IAAK,EACLsH,MAAO,EACPpH,OAAQ,EACRkB,QAAS,EACT4I,SAAW,SACX05C,KAAO,mBACPr9B,WAAa,SACb5X,OAAQ,GAEV,YAAc,YACd,cAAgB,oCCLlB,SAASk1C,EAAcluD,GACrB,MAAM8jD,GAAWC,EAAAA,EAAAA,GAAwB/jD,IACnC,KAAEqD,EAAF,OAAQ/B,GAAWhZ,OAAOkM,SAEhC,OAAgB,MAAZsvD,IACFx7D,OAAO6lE,WAAWrK,EAASE,OAAS1iD,EAAS+B,IACtC,EAIV,CAGD,IAAI+qD,EAAa,GAEjB9lE,OAAOsE,iBAAkB,sBAAqB4c,IACxC,6BAA6B1R,KAAK0R,EAAMyzB,SACtCmxB,IACF9lE,OAAOkM,SAASwL,SAAWouD,EAE9B,IAGH,MAAMC,EAAmB,CAAC75D,EAAU85D,KAC7BJ,EAAc15D,EAASwL,YAC1BouD,EAAY55D,EAASwL,UACrBwnD,EAAAA,EAAAA,GAAW,mBAAmB,CAAEhzD,WAAU85D,iBAC3C,EAGGC,EAAgB,CAAC/5D,EAAU85D,KAC1BJ,EAAc15D,EAASwL,YAC1BwnD,EAAAA,EAAAA,GAAW,gBAAgB,CAAEhzD,WAAU85D,gBAOxC,EAGGjqD,EAAW,SAACC,EAAIzN,GAIpB,QAJqC,IAAjBA,IAAAA,EAAU,CAAC,GAIZ,iBAARyN,EAET,YADAsB,EAAAA,GAAAA,SAAuBtB,GAIzB,MAAM,SAAEtE,EAAF,OAAYsB,EAAZ,KAAoB+B,IAASmrD,EAAAA,EAAAA,IAAUlqD,GACvCw/C,GAAWC,EAAAA,EAAAA,GAAwB/jD,GAUzC,GANI8jD,IACFx/C,EAAKw/C,EAASE,OAAS1iD,EAAS+B,GAK9B/a,OAAOmmE,aAET,YADAnmE,OAAOkM,SAAWwL,EAAWsB,EAAS+B,GAMxC,MAAM6O,EAAY5oB,YAAW,KAC3Bw/D,EAAAA,EAAAA,KAAc,6BAA6B,CAAE9oD,cAC7CwnD,EAAAA,EAAAA,GAAW,uBAAuB,CAChChzD,SAAUlM,OAAOkM,UADnB,GAGC,KAEHowD,EAAAA,GAAAA,SAAgB5kD,EAAWsB,GAAQza,MAAK2hE,IAOtC,IAAKA,GAAiBA,EAAczV,SAAW4S,EAAAA,GAAAA,MAI7C,OAHAr9D,OAAOsX,QAAQC,aAAa,CAAC,EAAI,GAAGrL,SAASwG,MAC7C1S,OAAOkM,SAAWwL,OAClBrT,aAAaulB,GAM8Bs2C,GAEzCA,EAAcpC,KAAKE,yBACnBh+D,OAAOomE,4BAIJ,kBAAkB9T,WACoB,OAAvCA,UAAU+T,cAAcC,YACsB,cAA9ChU,UAAU+T,cAAcC,WAAWhhE,OAEnCgtD,UAAU+T,cAAcC,WAAWx+D,YAAY,CAC7Cy+D,UAAY,uBAIhBvmE,OAAOkM,SAAWwL,EAAWsB,EAAS+B,IAG1CyrD,EAAAA,EAAAA,UAAcxqD,EAAIzN,GAClBlK,aAAaulB,EAAb,GAEH,EAED,SAAS6sC,EAAmBK,EAA5B,GAA4D,IAAf,SAAE5qD,GAAY,EACzD,MAAM,SAAEwL,EAAF,KAAYqD,GAAS7O,EACrB0tD,GAAUsF,EAAAA,EAAAA,GAAW,qBAAqB,CAC9CpI,kBAEAp/C,WACAq/C,YAAa,CAAE7qD,YACfu6D,uBAAwBv2B,GAAQ,CAC9B,EAGA5yC,KAAK04D,cAAcvK,KAAKvb,EAAMA,EAAKzuC,QAGvC,GAAIm4D,EAAQx8D,OAAS,EAGnB,OAAOw8D,EAAQA,EAAQx8D,OAAS,GAGlC,GAAI05D,EAAiB,CACnB,MACE5qD,UAAYwL,SAAUgvD,IACpB5P,EACJ,GAAI4P,IAAgBhvD,EAGlB,OAAOqD,EAAOM,UAAUN,EAAKpW,MAAM,IAAM,CAAC,EAAG,EAEhD,CACD,OAAO,CACR,CAYA,IAEKgiE,EAAAA,SAAAA,GACJ,WAAYtsD,GAAQ,IAAD,SACjB,cAAMA,IAAN,MACKusD,gBAAkBhvB,EAAAA,YAFN,CAGlB,EAJG+uB,EAAAA,EAAAA,GAAAA,EAAAA,GAIH,kBAwBA,OAxBA,EAEDzP,mBAAA,SAAmBV,EAAW1wC,GAC5BuwC,uBAAsB,KACpB,IAAIwQ,EAAY,eAAcvpE,KAAK+c,MAAMnO,SAASwL,WAC9ChM,SAAS8L,QACXqvD,EAAWn7D,SAAS8L,OAEtB,MAAMsvD,EAAep7D,SAASyzB,iBAAkB,4BAC5C2nC,GAAgBA,EAAa1pE,SAC/BypE,EAAWC,EAAa,GAAGC,aAE7B,MAAMC,EAAmB,gBAAeH,IACxC,GAAIvpE,KAAKspE,gBAAgB/tD,QAAS,CACRvb,KAAKspE,gBAAgB/tD,QAAQouD,YAC7BD,IACtB1pE,KAAKspE,gBAAgB/tD,QAAQouD,UAAYD,EAE5C,IAEJ,IAED/+C,OAAA,WACE,OAAO,uCAASy9C,EAAT,CAA8B9lD,IAAKtiB,KAAKspE,kBAChD,IA5BGD,CAAuB/uB,EAAAA,WA+B7B,MAAMsvB,EAAuB,CAAClB,EAAcmB,KAAkB,IAAD,IAC3D,OAAInB,EAAatzD,OAASy0D,EAAaz0D,OAInCszD,SAAA,UAAAA,EAAc1gE,aAAd,eAAqB7D,QAAQ0lE,SAA7B,UAA6BA,EAAc7hE,aAA3C,aAA6B,EAAqB7D,IAItD,MAII2lE,EAAAA,SAAAA,GACJ,WAAY/sD,GAAQ,IAAD,SACjB,cAAMA,IAAN,KACA0rD,EAAiB1rD,EAAMnO,SAAU,MAFhB,CAGlB,EAJGk7D,EAAAA,EAAAA,GAAAA,EAAAA,GAIH,kBA2BA,OA3BA,EAED3/C,kBAAA,WACEw+C,EAAc3oE,KAAK+c,MAAMnO,SAAU,KACpC,IAEDm7D,sBAAA,SAAsB7Q,GACpB,QAAI0Q,EAAqB1Q,EAAUtqD,SAAU5O,KAAK+c,MAAMnO,YACtD65D,EAAiBzoE,KAAK+c,MAAMnO,SAAUsqD,EAAUtqD,WACzC,EAGV,IAEDgrD,mBAAA,SAAmBV,GACb0Q,EAAqB1Q,EAAUtqD,SAAU5O,KAAK+c,MAAMnO,WACtD+5D,EAAc3oE,KAAK+c,MAAMnO,SAAUsqD,EAAUtqD,SAEhD,IAED+b,OAAA,WACE,OACE,gBAAC,WAAD,KACG3qB,KAAK+c,MAAMxC,SACZ,gBAAC8uD,EAAD,CAAgBz6D,SAAUA,WAG/B,IA/BGk7D,CAAqBxvB,EAAAA,uCCtN3B,SAAS0vB,EAAelmE,EAAGhF,GACzB,IAAK,IAAIa,KAAKmE,EACZ,KAAMnE,KAAKb,GAAI,OAAO,EACvB,IAAK,IAAImrE,KAAMnrE,EACd,GAAIgF,EAAEmmE,KAAQnrE,EAAEmrE,GAAK,OAAO,EAC7B,OAAO,CACV,CC8GA,MAlHMC,SAAAA,GACJ,WAAYntD,GAAQ,IAAD,EACjB,qBACA,MAAM,SAAEnO,EAAF,cAAYg0D,GAAkB7lD,EAFnB,OAGjB,EAAK/U,MAAQ,CACX4G,SAAU,IAAKA,GACfg0D,cACEA,GACA5D,EAAAA,GAAAA,aAAoBpwD,EAASwL,SAAWxL,EAAS8M,OAAQ,CACvDynD,kBAAkB,KARP,CAWlB,EAZG+G,EAAAA,EAAAA,GAAAA,EAAAA,GAYH,EAEM3/C,yBAAP,WAA8C4/C,GAAY,IAA1B,SAAEv7D,GAAuB,EACvD,GAAIu7D,EAAUv7D,SAASwG,OAASxG,EAASwG,KAAM,CAQ7C,MAAO,CACLwtD,cARoB5D,EAAAA,GAAAA,aACpBpwD,EAASwL,SAAWxL,EAAS8M,OAC7B,CACEynD,kBAAkB,IAMpBv0D,SAAU,IAAKA,GAElB,CAED,MAAO,CACLA,SAAU,IAAKA,GAElB,oBA+EA,OA/EA,EAEDw7D,cAAA,SAAclK,GACZlB,EAAAA,GAAAA,SAAgBkB,GAASj/D,MAAK2hE,IACxBA,GAAiBA,EAAczV,SAAW4S,EAAAA,GAAAA,MAC5C//D,KAAKqqB,SAAS,CACZzb,SAAU,IAAKlM,OAAOkM,UACtBg0D,mBAGFlgE,OAAOsX,QAAQC,aAAa,CAAC,EAAI,GAAGrL,SAASwG,MAC7C1S,OAAOkM,SAAWsxD,EACnB,GAEJ,IAED6J,sBAAA,SAAsBvhD,EAAW6hD,GAE/B,OAAKA,EAAUzH,cAkBX5iE,KAAKgI,MAAM46D,gBAAkByH,EAAUzH,gBAIzC5iE,KAAKgI,MAAM46D,cAAcj8C,YAAc0jD,EAAUzH,cAAcj8C,YAK7D3mB,KAAKgI,MAAM46D,cAAch5D,OAASygE,EAAUzH,cAAch5D,SAM5D5J,KAAKgI,MAAM4G,SAASzK,MAAQkmE,EAAUz7D,SAASzK,MAC/CkmE,EAAUzH,cAAcpC,OACvB6J,EAAUzH,cAAcpC,KAAK3C,YAC5BwM,EAAUzH,cAAcpC,KAAKxyD,ODhFrC,SAA0BnK,EAAU2kB,EAAW6hD,GAC7C,OAAOL,EAAenmE,EAASkZ,MAAOyL,IAAcwhD,EAAenmE,EAASmE,MAAOqiE,EACpF,CCkFUC,CAAetqE,KAAMwoB,EAAW6hD,OAvCrCrqE,KAAKoqE,cACH5hD,EAAU5Z,SAASwL,SAAWoO,EAAU5Z,SAAS8M,SAE5C,EAqCV,IAEDiP,OAAA,WAiBE,OAAO3qB,KAAK+c,MAAMxC,SAASva,KAAKgI,MACjC,IA/GGkiE,CAAwB5vB,EAAAA,mCCuB9B,MAAM0kB,EAAS,IAAI8F,EAAAA,GAAWC,KAA2BriE,OAAO69D,WAChE6E,EAAAA,EAAAA,IAAUpG,GACVA,EAAO2C,aAAaC,EAAAA,GAEpB,MAAM,OAAEj3C,EAAF,QAAU4/C,IAAY7C,EAAAA,EAAAA,KAE5BhlE,OAAOqiE,cAAgBA,EACvBriE,OAAO8nE,WAAatH,EAAAA,EACpBxgE,OAAO+nE,UAAYnF,EAAAA,GHgIjBtlD,EAAAA,GAAAA,QAAqB4yB,IACnBA,EAAKhkC,SAASiL,OAAS+4B,EAAK/4B,MAA5B,IAGFnX,OAAOgoE,QAAUhsD,GAAMD,EAASC,EAAI,CAAElV,SAAS,IAC/C9G,OAAO6lE,WAAa7pD,GAAMD,EAASC,EAAI,CAAElV,SAAS,IAClD9G,OAAOioE,YAAc,CAACjsD,EAAIzN,IAAYwN,EAASC,EAAIzN,GGlIrD,MAAM25D,EAAoB,wCAE1BC,EAAAA,EAAAA,GAAgB,iBAAgB5pE,MAAK,MAG/B2gE,EAAAA,EAAAA,GAAW,yBAAwBz6D,OAAOoE,SAASzL,OAAS,GAC9Di8D,EAAS,QAWX,MAAM+O,EAAe/tD,GACnB,gBAAC,EAAAguD,YAAA,SAAD,CACErqE,MAAO,CACLsqE,QAAU,IACVC,SAAW,MAGb,gBAAC,IAAiBluD,IAIhBmuD,EAAc5wB,EAAAA,cAAoB,CAAC,GA1BA,IA4BnC6wB,EA5BmC,6FA6BvCxgD,OAAA,WACE,MAAM,SAAEpQ,GAAava,KAAK+c,MAC1B,OACE,gBAAC,EAAAquD,SAAD,MACG,QAAC,SAAEx8D,GAAH,SACC,gBAAC,EAAD,CAAiBA,SAAUA,IACxB,IAAkC,IAAjC,cAAEg0D,EAAF,SAAiBh0D,GAAe,EAChC,GAAIg0D,EAAcsF,iBAChB,OACE,gBAACgD,EAAY5uD,SAAb,CAAsB5b,MAAO,CAAEkiE,gBAAeh0D,aAC3C2L,GAGA,CACL,MAAMyoD,GAAqBwC,EAAAA,EAAAA,MAC3B,OACE,gBAAC,EAAAlH,mBAAA,SAAD,CAA6B59D,MAAOsiE,GAClC,gBAACkI,EAAY5uD,SAAb,CAAsB5b,MAAO,CAAEkiE,gBAAeh0D,aAC3C2L,GAIR,IAlBN,GAwBN,EAzDsC,GA4BhB+/B,EAAAA,WAgCnB+wB,EA5DmC,6FA6DvC1gD,OAAA,WACE,OACE,gBAACugD,EAAYtM,SAAb,MACG,QAAC,cAAEgE,EAAF,SAAiBh0D,GAAlB,SACC,gBAACk7D,EAAD,CAAcl7D,SAAUA,GACtB,gBAAC,KAAD,CACEA,SAAUA,EACVuqD,mBAAoBA,GAEpB,gBAAC,EAAAmS,OAAD,CACEL,SAAU3N,GACV1uD,SAAUA,EACVrJ,GAAG,wBAEH,gBAACulE,EAAD,eACE98D,KAC+B,cAA7B40D,EAAcpC,KAAKxyD,MACU,cAA7B40D,EAAcpC,KAAKxyD,MACfqvD,EAAAA,EAAAA,GAAYzuD,EAASwL,SAAUkjD,IAC/Bx/C,WAEI8kD,EAAcpC,KAAK3C,WACnB+E,EAAcpC,KAAKxyD,MACnB5E,MAAO,KAAI,KAGjBpJ,KAAK+c,MAZX,CAaEnO,SAAUA,EACVg0D,cAAeA,GACXA,EAAch5D,SA1B3B,GAkCN,EAlGsC,GA4DX0wC,EAAAA,WAyC9B,MAAM,SAAE0nB,EAAUpzD,SAAU28D,GAAe7oE,OAYzCs/D,GACA1E,GAAgB0E,IACduJ,EAAWnxD,UAAY4nD,EAASz6D,SAAU,KAAMgkE,EAAW7vD,OAAU,OAErEsjD,EAAOvB,eAAcJ,EAAAA,EAAAA,GAAYkO,EAAWnxD,SAAUkjD,MACtD0E,EAASzhD,MAAM,6BACfyhD,EAASzhD,MAAM,+CAGjB9B,EAAAA,EAAAA,UACE6+C,GACE0E,GACEA,EAASz6D,SAAU,KAA2B,GAArBgkE,EAAW7vD,QACtC6vD,EAAW9tD,KACb,CACEjU,SAAS,IAMf,MAAMgiE,EAAoB,KACxB,IACE,OAAOx8D,cAGR,CAFC,MACA,OAAO,IACR,GAGHs2D,EAAAA,GAAAA,SAAsBiG,EAAWnxD,SAAWmxD,EAAW7vD,QAAQza,MAAKu/D,IAAS,IAAD,EAC1E,MAAMxxD,EAAiBw8D,IAEvB,GACEhL,SAAA,UAAAA,EAAMA,YAAN,SAAYE,wBACZF,EAAKA,KAAKE,yBAA2Bh+D,OAAOomE,4BAIzC,kBAAkB9T,WACoB,OAAvCA,UAAU+T,cAAcC,YACsB,cAA9ChU,UAAU+T,cAAcC,WAAWhhE,OAEnCgtD,UAAU+T,cAAcC,WAAWx+D,YAAY,CAC7Cy+D,UAAY,uBAUZj6D,GAAgB,CAGlB,KAFiE,MAA9CA,EAAe3K,QAAQumE,IAKxC,OAFA57D,EAAevK,QAAQmmE,EAAmB,UAC1CloE,OAAOkM,SAAS68D,QAAO,EAG1B,CAOH,GAJIz8D,GACFA,EAAexK,WAAWomE,IAGvBpK,GAAQA,EAAKrT,SAAW4S,EAAAA,GAAAA,MAA0B,CACrD,MAAMroD,EAAW,sBAAqB6zD,EAAWnxD,0CAIjD,GAAIomD,GAAQA,EAAK34D,MAEf,MADAuJ,QAAQvJ,MAAM6P,GACR8oD,EAAK34D,MAGb,MAAM,IAAIzD,MAAMsT,EACjB,CAED,MAAMg0D,GAAW9J,EAAAA,EAAAA,GACd,kBACD,CAAEl0C,QAAS,gBAAC29C,EAAD,OACX,gBAACA,EAAD,OACA,IAAiB,IAAhB,OAAEtqE,GAAa,EACd,MAAO,CAAE2sB,QAAS3sB,EAAlB,IAEFmB,MAEIypE,EAAM,WACV,MAAMC,EAAsBtxB,EAAAA,QAAa,GAazC,OAXAA,EAAAA,WAAgB,KACTsxB,EAAoBrwD,UACvBqwD,EAAoBrwD,SAAU,EAC1BswD,YAAYC,MACdD,YAAYC,KAAM,0BAGpBlK,EAAAA,EAAAA,GAAW,yBACZ,GACA,IAEI,gBAACuJ,EAAD,KAAaO,EACrB,EAEKK,EAAU39D,SAASkrD,eAAgB,wBAIzC,IAAI0S,EAAkBrhD,EAClBohD,GAAWA,EAAQxxD,SAASza,SAC9BksE,EAAkBzB,GAGpB,MAAM0B,GAAWrK,EAAAA,EAAAA,GACd,8BACD9nD,EACAkyD,GACA,GAEF,SAASE,IACP,MAAMC,EACe,oBAAZzpE,OACH0L,SAASkrD,eAAgB,aACzB,KAEN2S,EAAS,gBAACN,EAAD,MAASQ,EACnB,CAID,MAAMh3C,EAAM/mB,SACZ,GACsB,aAApB+mB,EAAIo4B,YACiB,YAApBp4B,EAAIo4B,aAA6Bp4B,EAAIT,gBAAgB03C,SAEtD1oE,YAAW,WACTwoE,GACD,GAAE,OACE,CACL,MAAMzP,EAAU,WACdtnC,EAAItuB,oBAAqB,mBAAmB41D,GAAS,GACrD/5D,OAAOmE,oBAAqB,OAAO41D,GAAS,GAE5CyP,GACD,EAED/2C,EAAInuB,iBAAkB,mBAAmBy1D,GAAS,GAClD/5D,OAAOsE,iBAAkB,OAAOy1D,GAAS,EAC1C,CAEK,GA5HR,wFC/JF,UAlByB,IAAmB,IAAlB,SAAE7tD,GAAe,EACzC,MAAMg0D,EAAgB5D,EAAAA,GAAAA,aAAoBpwD,EAASwL,UACnD,OAAKwoD,EAGEtoB,EAAAA,cAAoB+xB,EAAAA,EAAsB,CAC/Cz9D,WACAg0D,mBACGA,EAAch5D,OALV,IAET,0BCXoBzD,MAKpBmlD,EAAOxoD,SALaqD,EAKW41D,EAAS,UALT51D,EAAEtD,SAAYsD,uECEnC,IAAImyD,QAOT,SAASoP,IACd,IAAI/8C,EACA4/C,EAcG,CACL,MAAM+B,EAAiBvQ,EAAS,QAChCpxC,EAAS2hD,EAAe3hD,OACxB4/C,EAAU+B,EAAe/B,OAC1B,CAED,MAAO,CAAE5/C,SAAQ4/C,UAClB,wBChCDznE,EAAQ,EAAWga,GAAaA,uECIhC,MAAMyvD,EAAc,IAAItpE,IAClBupE,EAAwB,IAAIvpE,IAU3B,SAASk7D,EAAwB/jD,GACtC,IAAI8jD,EAAWqO,EAAYppE,IAAIiX,GAI/B,OAHK8jD,IACHA,EAAWsO,EAAsBrpE,IAAIiX,EAASpG,gBAEzCkqD,CACR,IAdDuO,SAAkBvO,IACZA,EAASwO,WACXF,EAAsBppE,IAAI86D,EAASyO,SAAUzO,GAE7CqO,EAAYnpE,IAAI86D,EAASyO,SAAUzO,EACpC,gECT6B,WAA9Bx7D,OAAOkM,SAASC,UACc,cAA9BnM,OAAOkM,SAAS+O,SAEhBvM,QAAQvJ,MACL,gFAEO,kBAAkBmtD,WAC5BA,UAAU+T,cACP6D,SAAU,UACV3rE,MAAK,SAAU4rE,GACdA,EAAI7lE,iBAAkB,eAAc,MAClC46D,EAAAA,EAAAA,GAAW,6BAA6B,CAAEmH,cAAe8D,IAGzD,MAAMC,EAAmBD,EAAIE,WAC7B37D,QAAQ8zD,IAAK,mBAAmB4H,GAChCA,EAAiB9lE,iBAAkB,eAAc,KAC/C,OAAQ8lE,EAAiB9kE,OACvB,IAAM,YACAgtD,UAAU+T,cAAcC,YAK1BtmE,OAAOmmE,cAAe,GAEtBjH,EAAAA,EAAAA,GAAW,6BAA6B,CAAEmH,cAAe8D,IAGrDnqE,OAAOsqE,qBACT57D,QAAQ8zD,IAAK,4CACbxiE,OAAOkM,SAAS68D,YAKlBr6D,QAAQ8zD,IAAK,sCAKbtD,EAAAA,EAAAA,GAAW,2BAA2B,CAAEmH,cAAe8D,KAEzD,MAEF,IAAM,YACJz7D,QAAQvJ,MAAO,oDACf+5D,EAAAA,EAAAA,GAAW,2BAA2B,CAAEmH,cAAe8D,IACvD,MAEF,IAAM,aACJjL,EAAAA,EAAAA,GAAW,wBAAwB,CAAEmH,cAAe8D,IAlCxD,GADF,GAwCH,IACA/M,OAAM,SAAUj/D,GACfuQ,QAAQvJ,MAAO,4CAA4ChH,EAC5D,yCCzDU,SAASw8D,EAAY9b,EAAK71C,GACvC,YADoD,IAAbA,IAAAA,EAAU,IAC5CA,EAID61C,IAAQ71C,EACF,IAGN61C,EAAIv1C,WAAY,GAAEN,MACb61C,EAAIl6C,MAAMqE,EAAO5L,QAGnByhD,EAXEA,CAYV,6ICfM,MAAMonB,EAAgB,WAE1BsE,GAAgB,IAFiC,SAClDr+D,GACgB,CAYjB,uCCbD,IAAIs+D,EAAUnR,EAAQ,6CCHtB,IAAI3hB,EAAyB2hB,EAAQ,QAErCj5D,EAAQF,YAAa,EACrBE,EAAQqqE,gBAAkBrqE,EAAQ63D,2BAAwB,EAE1D,IAAIH,EAASpgB,EAAuB2hB,EAAQ,SAExCqR,EAAUrR,EAAQ,QAElBsR,EAAiCjzB,EAAuB2hB,EAAQ,SAEhEthB,EAASshB,EAAQ,QAerBj5D,EAAQ63D,sBAboB,WAM1B,IAAI2S,EAAYl/D,SAAS+sD,cAAc,oBAEnCmS,GACFA,EAAU3N,WAAWroD,YAAYg2D,EAEpC,EAoBDxqE,EAAQqqE,gBAhBc,SAAyBxuD,EAAMsuD,GACnD,IAAIv/C,EAAU/O,EAAK+O,QAEnB,IAAI,EAAI+sB,EAAO8yB,YAAYF,EAA+BxqE,UAAYoqE,EAAcO,eAClF,MAAM,IAAIppE,MAAM,uGAGlB,IAAIopE,GAAiB,EAAI/yB,EAAO8yB,YAAYF,EAA+BxqE,SAAWwqE,EAA+BxqE,QAAUoqE,EAAcO,eAE7I,OAAKA,EAIehT,EAAO33D,QAAQoU,cAAcm2D,EAAQlyB,eAAgBsyB,EAAgB9/C,GAHhFA,CAIV,qCC1CD5qB,EAAQF,YAAa,EACrBE,EAAQyqE,WAER,SAAoBxT,GAClB,QAAKA,GACEh7D,OAAO0gB,QAAQs6C,GAAQj6D,OAAS,CACxC,sHCCc,SAAS2tE,EAAT,GAAmD,IAAxB,SAAElzD,EAAF,QAAYmzD,GAAW,EAC/D,OACE,gCACE,gBAACC,EAAA,EAAD,KACE,0BACEpoE,GAAG,gBACHqoE,IAAI,iDACJ,eAAcF,EAAQp4B,cACtB7lC,KAAK,kBACL,mBAAiB,QACjBhG,OAAK,KAGR8Q,EAGN,CCnBc,SAASszD,EAAwBC,EAAUC,GACxD,QADgF,IAAxBA,IAAAA,EAAkB,OACrED,GAAgC,iBAAbA,GAA6C,IAApBA,EAAShuE,OACxD,OAAOiuE,EAET,MAAMC,EAAaF,EAASzrE,QAAQ,KACpC,IAAoB,IAAhB2rE,EACF,OAAOD,EAET,IAAIpgC,EAAWmgC,EAASzrE,QAAQ,IAAK2rE,EAAa,IAChC,IAAdrgC,IACFA,EAAWmgC,EAAShuE,QAEtB,MAAMmuE,EAAOH,EAASzmE,MAAM2mE,EAAa,EAAGrgC,GAC5C,OAAoB,IAAhBsgC,EAAKnuE,OAEAiuE,EAEFE,CACR,CDQDR,EAAkBziD,aAAe,CAC/BzQ,SAAU,KACVmzD,QAAS,ME3BJ,MAAMQ,EAAkB,CAAC,EAAoBjB,KAAmB,IAAvC,QAAEv/C,EAAF,MAAW3Q,GAA2B,EACa,CAC/E,MAAM,SAAEnO,GAAamO,GACf,SAAE3C,GAAaxL,GACf,gBAAEm/D,GAAoBd,EAC5B,OACE,gBAACQ,EAAD,CAAmBC,QAASG,EAAwBzzD,EAAU2zD,IAAmBrgD,EAEpF,CACD,qICXSygD,EAAO,CAChBC,oBAAqB,cAErBC,oBAAqB,YAIrB1uC,UAAW,cAEFx+B,EAAO,SAAckjB,GAC9B,OAAO,OAAS,CACdmP,MAAOnP,EAAMY,QAAQuiB,KAAK3K,SACzBxY,EAAMgY,WAAWsN,MAAO,CACzB3kB,gBAAiBX,EAAMY,QAAQsiB,WAAW1kC,QAC1C,eAAgB,CAEdmiB,gBAAiBX,EAAMY,QAAQyrB,OAAOxC,QAG5C,EA4DA,OAAe,EAAAxf,EAAA,IA3DK,SAAgBrK,GAClC,MAAO,CACL,UAAW,CACT8pD,KAAMA,EACN,yBAA0B,CACxBxuC,UAAW,WAEb,YAAa,CACXuS,WAAY7tB,EAAMgY,WAAWsV,gBAE/BxwC,MAAM,OAAS,CACbgkB,OAAQ,GACPhkB,EAAKkjB,GAAQ,CAGd,cAAe,CACbW,gBAAiBX,EAAMY,QAAQsiB,WAAW1kC,YAKpD,GAsCkC,CAChC4E,KAAM,kBADR,EAjCA,SAAqBsV,GAEnB,IAAIuxD,EAAkBvxD,EAAMxC,SACxBA,OAA+B,IAApB+zD,EAA6B,KAAOA,EAInD,OAHcvxD,EAAMyF,QAGA,gBAAoB,WAAgB,KAAMjI,EAChE,6GCpDO,MAAMoxB,EACJ,eADIA,EAEJ,qBAFIA,EAGF,2BAHEA,EAKL,qBALKA,EAME,qBANFA,EAOA,qBAPAA,EAQC,qBARDA,EAUD,kBAVCA,EAWC,qBAXDA,EAYL,oBAZKA,EAaA,qBAbAA,EAeE,qBAfFA,EAgBJ,oBAhBIA,EAiBC,qBAjBDA,EAmBG,qBAnBHA,EAqBE,qBArBFA,EAsBI,qBAtBJA,EAwBK,UAxBLA,EA0BN,mBA1BMA,EA2BF,oBA3BEA,EA4BD,qBA5BCA,EA8BC,UA9BDA,EA+BC,UA/BDA,EAgCG,UAhCHA,EAkCE,UAlCFA,EAmCE,UAnCFA,EAqCL,mBArCKA,EAsCA,UAtCAA,EAuCG,UAvCHA,EAwCE,UAxCFA,EAyCA,qBAzCAA,EA2CE,UA3CFA,EA4CI,UAGXtnB,GAAQ0uB,EAAAA,EAAAA,GAAY,CAAC,GACrBw7B,EAAc,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MAkwBN,OAhwBqB0F,EAAAA,EAAAA,GAAY,CAC/BnK,YAAa,CACXhf,OAAQ2kD,GAEVxlC,OAAQ,CACNC,QAAS,CACPhiB,UAAW,SAGfqV,WAAY,CACV6U,WAAY,2BACZG,gBAAiB,MACjBE,kBAAmB,MACnBE,iBAAkB,MAClBE,eAAgB,MAChBzI,GAAI,CACFgI,WAAY,4BACZ9U,SAAU,UACV8V,WAAY,MACZC,WAAY,OACZ9sB,aAAc,OACd,CAAChB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,aAGd+M,GAAI,CACF+H,WAAY,4BACZ9U,SAAU,WACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,OACd,CAAChB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,WAGdgN,GAAI,CACF8H,WAAY,4BACZ9U,SAAU,WACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,QAEhBgkB,GAAI,CACF6H,WAAY,4BACZ9U,SAAU,OACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,QAEhBikB,GAAI,CACF4H,WAAY,4BACZ9U,SAAU,OACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,QAEhBkkB,GAAI,CACF2H,WAAY,6BACZ9U,SAAU,OACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,QAEhBmlB,QAAS,CACPpO,SAAU,UACVoyC,UAAW,SACXr8B,WAAY,OAEd1H,SAAU,CACRrO,SAAU,UACV8V,WAAY,OAEdxI,MAAO,CACLwH,WAAY,2BACZ9U,SAAU,WACV,CAAC/X,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,SAGduN,MAAO,CACLuH,WAAY,2BACZ9U,SAAU,UACV,CAAC/X,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,aAGdqyC,eAAgB,CACdryC,SAAU,OACV8U,WAAY,2BACZgB,WAAY,OACZ1e,MAAOmY,GAET+iC,eAAgB,CACdtyC,SAAU,YAGdnX,QAAS,CACPyrB,OAAQ,CACNzC,MAAOtC,EACPuC,MAAOvC,EACPgjC,KAAMhjC,EACNijC,UAAWjjC,EACXkjC,YAAaljC,EACbmjC,WAAYnjC,EACZojC,SAAUpjC,EACVqjC,KAAMrjC,EACNsjC,UAAWtjC,EACXujC,IAAKvjC,EACLwjC,QAASxjC,EACTyjC,MAAOzjC,EACP0jC,WAAY1jC,GAEd9O,QAAS,CACPC,KAAM6O,EACN4E,aAAc5E,GAEhB3O,UAAW,CACTF,KAAM6O,EACN4C,MAAO5C,GAETnE,KAAM,CACJ3K,QAAS8O,EACT3O,UAAW2O,EACX4C,MAAO5C,GAETpE,WAAY,CACV1kC,QAAS8oC,EACT2jC,YAAa3jC,EACb4jC,UAAW5jC,EACX6jC,cAAe,cACfC,WAAY,eAEd5nE,MAAO,CACLi1B,KAAM6O,EACN4C,MAAO5C,GAETkE,QAAS,CACP/S,KAAM6O,EACN4C,MAAO5C,GAET8D,QAAS,CACP3S,KAAM6O,EACN4C,MAAO5C,GAETgE,KAAM,CACJ7S,KAAM6O,EACN4C,MAAO5C,GAET+jC,kBAAmB,CAAEx+B,WAAY,6BACjChsB,QAASymB,EACTgkC,SAAU,CACRzoC,SAAU,CACRK,WAAYoE,EACZnE,KAAMmE,GAERnE,KAAMmE,EACNikC,UAAWjkC,GAEbkkC,OAAQ,CACNz8C,OAAQ,CACNI,MAAOmY,EACP1f,MAAO,OAET/G,QAASymB,EACTnE,KAAMmE,EACNpE,WAAYoE,EACZmkC,kBAAmBnkC,EACnB5lB,QAAS,CACP8B,OAAQ,QAEVkoD,QAAS,CACPC,KAAM,MAERC,MAAO,MAETt9D,OAAQ,CACN60B,KAAMmE,EACNpE,WAAYoE,EACZvY,OAAQ,CACN88C,YAAa,MACb/4D,MAAO,QACPqc,MAAOmY,GAET3kB,UAAW,OACXmpD,gBAAiB,OACjBlyC,WAAY,IACZmyC,kBAAmBzkC,EACnB0kC,kBAAmB1kC,EACnB2kC,WAAY,CACVC,WAAY5kC,EACZ6kC,iBAAmB,aAAY7kC,IAC/BikC,UAAWjkC,EACX8kC,kBAAmB9kC,EACnB+kC,oBAAqB/kC,GAEvBglC,MAAO,CACLn9C,MAAO,KACPxO,gBAAiB,gBAGrBtJ,OAAQ,CACNk1D,YAAa,CACXC,eAAgB,CACd7rD,gBAAiB2mB,EACjB,CAACtnB,EAAMukB,YAAYC,GAAG,OAAQ,CAC5B7jB,gBAAiB2mB,IAGrBmlC,WAAY,CACVt9C,MAAOmY,KAIbolC,iBAAkB,CAChBvpC,KAAMmE,EACNkD,KAAMlD,EACNqlC,gBAAiBrlC,EACjBslC,oBAAqBtlC,EACrBulC,wBAAyBvlC,EACzBwlC,6BAA8BxlC,EAC9BylC,wBAAyBzlC,GAE3B0lC,YAAa,CACXC,sBAAuB3lC,EACvB4lC,cAAe,CACbC,OAAQ7lC,EACR8lC,OAAQ9lC,EACRyjC,MAAOzjC,EACP+lC,MAAO/lC,EACPqjC,KAAMrjC,EAENgmC,KAAMhmC,EACNimC,UAAWjmC,EACXkmC,aAAclmC,EACdmmC,OAAQnmC,EACRomC,UAAWpmC,GAEbqmC,SAAU,CACRC,UAAW,CACTz+C,MAAOmY,EACPumC,YAAa,CACXC,YAAaxmC,IAGjBymC,WAAY,CACVC,iBAAkB,CAChBj7D,QAAS,QAEX66D,UAAW,CACTjtD,gBAAiB2mB,GAEnB2mC,sBAAuB,CACrBC,SAAU,OACVzyC,aAAc,QAEhB0yC,oBAAqB,CACnBzsD,QAAS,QACTtB,SAAU,WACVG,MAAO,IACPD,IAAK,QACLsH,MAAO,MACPmH,OAAQ,uBAEVq/C,eAAgB,CACdtuE,IAAK,CACHqvB,MAAOmY,EACP7L,aAAc,MACdgR,cAAe,QAEjBpwC,MAAO,CAAC,KAIdgyE,YAAa,CACXN,WAAY,CACVO,MAAO,CACLv7D,QAAS,QAEXwgB,QAAS,CACPxgB,QAAS,OACT2iB,cAAe,eAEjB64C,UAAW,CACThrD,eAAgB,SAChBirD,aAAc,aACdC,SAAU,OACVC,UAAW,MACXR,SAAU,OAEZS,aAAc,CACZvuD,SAAU,SACVE,IAAK,OACLD,KAAM,OACN6tD,SAAU,MACVQ,UAAW,OAEbE,iBAAkB,CAChBjsD,UAAW,MACXurD,SAAU,UAIhBW,OAAQ,CACNC,eAAgB9uD,EAAM2B,QAAQ,EAAG,EAAG,EAAG,GACvCuhB,WAAYoE,EACZzmB,QAASymB,GAEXynC,gBAAiBznC,GAEnB0nC,MAAO,CACL7rC,KAAMmE,EACNvP,SAAU,QAEZjK,OAAQ,CACN+f,WAAY,OACZpB,cAAe,YACf,CAACzsB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtCpnB,QAAS,wBAGbutD,iBAAkB,CAChBC,MAAO,CACLvuD,gBAAiB2mB,EACjBnY,MAAOmY,EACPuG,WAAY,QAEdshC,aAAc,CACZC,UAAW,CACTrgD,OAAS,aAAYuY,IACrBnY,MAAOmY,GAET+nC,eAAgB,CACdtgD,OAAS,aAAYuY,IACrBnY,MAAOmY,GAETgoC,OAAQ,CACN3uD,gBAAiB2mB,EACjBnY,MAAOmY,EACP,UAAW,CACTnY,MAAOmY,EACP,uBAAwB,CACtB3mB,gBAAiB2mB,EACjBnY,MAAOmY,OAMjBqR,KAAM,CACJA,KAAMrR,EACNpP,OAAQoP,EACR5L,MAAO4L,GAETioC,cAAe,CACbC,YAAa,CACX51C,WAAY5Z,EAAM2B,QAAQ,IAE1B,CAAC3B,EAAMukB,YAAYC,GAAGirC,EAAAA,GAAAA,aAA2C,CAC/D71C,WAAY5Z,EAAM2B,QAAQ,MAG9B+tD,mBAAoB,CAClB91C,WAAY5Z,EAAM2B,QAAQ,IAC1B,CAAC3B,EAAMukB,YAAYC,GAAGirC,EAAAA,GAAAA,aAA2C,CAC/D71C,WAAY5Z,EAAM2B,QAAQ,OAIhCguD,yBAA0B,CACxBzsC,WAAYoE,EACZ5L,MAAO,CACLwH,WAAYoE,GAEd9oB,SAAU,CACR0kB,WAAYoE,IAGhBsoC,kBAAmB,CACjBjvD,gBAAiB2mB,EACjBnY,MAAO,UACPzN,QAAS1B,EAAM2B,QAAQ,KACvBb,OAAQd,EAAM2B,SAAS,EAAG,EAAG,EAAG,GAChC,CAAC3B,EAAMukB,YAAYC,GAAGirC,EAAAA,GAAAA,aAA2C,CAC/D3uD,OAAQd,EAAM2B,SAAS,EAAG,EAAG,EAAG,KAGpCkuD,cAAe,CACbhjC,WAAY,2BACZijC,kBAAmBxoC,IAGvBsmC,UAAW,CACTjtD,gBAAiB2mB,EACjBnY,MAAOmY,EACPvY,OAAQ,GACRlN,WAAY,CACV6Z,MAAO,CACL/a,gBAAiB2mB,KAIvByoC,iBAAkB,CAChBhhD,OAAQ,CACNI,MAAOmY,EACP1f,MAAO,OAET9G,OAAQ,KAEVkvD,gBAAiB,CACfC,aAAc,CACZ/B,SAAU,OAEZgC,YAAa,CACXhC,SAAU,QAGdiC,MAAO,CACLphD,OAAS,aAAYuY,IACrBpmB,aAAc,EACdk2B,KAAM,CACJz2B,gBAAiB2mB,EACjBnY,MAAOmY,GAET8oC,IAAK,CACHC,KAAM,CACJ1vD,gBAAiBX,EAAMY,QAAQpL,OAAOkmB,SAI5C40C,gBAAiB,CACf7vD,QAAS,CAAC,GAEZ8vD,OAAQ,CACNC,YAAa,CAAC,GAEhBC,GAAI,CAAC,EAELC,cAAe,CACbC,SAAU,CAAC,GAEbpxD,MAAO,CACLK,KAAM,CAAC,EACPgxD,IAAK,CAAC,EACN37B,MAAO,CAAC,EACR7xC,KAAM,CAAC,EACPytE,iBAAkB,CAAC,EACnBrmC,KAAM,CAAC,GAGT4E,UAAW,CACT0hC,aAAc,CACZlxD,KAAM,CACJ,iBAAkB,CAChBkB,OAAQ,KAIdiwD,oBAAqB,CACnBnxD,KAAM,CACJ,iBAAkB,CAChBe,gBAAiB2mB,EACjBnY,MAAOmY,EACP3kB,UAAW,UAGfd,WAAY,CACV,iBAAkB,CAChBsN,MAAOmY,IAGX7mB,QAAS,CACP,iBAAkB,CAChBK,OAAQ,YAIdkwD,UAAW,CACTpxD,KAAM,CACJqjB,UAAW,OACXtiB,gBAAiB,eAEnB4X,aAAc,CACZpJ,MAAOmY,EACP3mB,gBAAiB2mB,IAGrB2pC,WAAY,CACVxsC,QAAS,CAAC,EACVlL,MAAO,CACLpK,MAAOmY,IAGX4pC,UAAW,CACTtxD,KAAM,CACJgI,MAAO,QACPmqB,WAAY,GAEd5c,MAAO,CACLvN,MAAO,QACPuH,MAAOmY,EACP3mB,gBAAiB2mB,IAGrB6pC,QAAS,CACPvxD,KAAM,CACJuP,MAAOmY,IAGX8pC,UAAW,CACTj8C,MAAO,CACLrU,OAAQ,QAGZuwD,UAAW,CACTzxD,KAAM,CACJ6sB,cAAe,UACfvrB,aAAc,MACdQ,QAAS,YACTqW,SAAU,OACVu5C,SAAU,KAEZ14C,UAAW,CACTlX,QAAS,WACTR,aAAc,MACd6W,SAAU,aAEZw5C,iBAAkB,CAChBtuC,UAAW,OACXlU,OAAQ,wBACRpO,gBAAiB2mB,EACjBnY,MAAOmY,EACP,UAAW,CACT3mB,gBAAiB2mB,EACjBvY,OAAS,aAAYuY,IACrBrE,UAAW,OACX9T,MAAOmY,EACP,uBAAwB,CACtB3mB,gBAAiB2mB,IAGrB,aAAc,CACZnY,MAAOmY,EACP5mB,QAAS,KAGb8wD,gBAAiB,CACfziD,OAAS,aAAYuY,IACrBnY,MAAOmY,EACP,UAAW,CACT3mB,gBAAiB2mB,EACjBvY,OAAS,wBACTI,MAAOmY,EACP,uBAAwB,CACtB3mB,gBAAiB2mB,MAKzBmqC,eAAgB,CACd7xD,KAAM,CACJuP,MAAOmY,GAEToqC,UAAW,CACT35C,SAAU,SACVK,WAAY,OACZC,YAAa,SAGjBs5C,iBAAkB,CAChB/xD,KAAM,CACJ8B,QAAS,UACT,CAAC1B,EAAMukB,YAAYC,GAAG,OAAQ,CAC5B9iB,QAAS,cAIfkwD,aAAc,CACZhyD,KAAM,CACJmP,OAAQ,YACR8iD,YAAavqC,EACbhd,SAAU,SACV3J,gBAAiB2mB,EACjB,yBAA0B,CACxBuqC,YAAavqC,GAEf,UAAW,CACTnY,MAAOmY,GAET,YAAa,CACXrE,UAAW,kCACX4uC,YAAavqC,EACb,yBAA0B,CACxBuqC,YAAavqC,IAGjB,wBAAyB,CACvBuqC,YAAa7xD,EAAMY,QAAQpd,MAAMi1B,KACjC,yBAA0B,CACxBo5C,YAAa7xD,EAAMY,QAAQpd,MAAMi1B,OAGrC,aAAc,CACZ9X,gBAAiB2mB,IAGrBwqC,aAAc,CACZt2C,YAAa,UAEfu2C,WAAY,CACVt2C,aAAc,UAEhB6oB,MAAO,CACLvsB,SAAU,OACVrW,QAAS,gBACT,sBAAuB,CACrB8Z,YAAa,UAEf,qBAAsB,CACpBC,aAAc,UAEhB,iBAAkB,CAChB0uC,UAAW,YAIjB6H,cAAe,CACbpyD,KAAM,CACJ6sB,cAAe,YACfrU,WAAY,WAEd65C,OAAQ,CACNlxD,UAAW,OACXiC,UAAW,iCAGfkvD,aAAc,CACZtyD,KAAM,CACJuP,MAAOmY,EACP,UAAW,CACTnY,MAAOmY,IAGX6qC,SAAU,CACR,UAAW,CACThjD,MAAOmY,KAIb8qC,kBAAmB,CACjBxyD,KAAM,CACJuP,MAAOmY,EACPlP,WAAY,UACZ,UAAW,CACTjJ,MAAOmY,KAKb+qC,YAAa,CACXzyD,KAAM,CACJuP,MAAOmY,EACP,YAAa,CACXnY,MAAOmY,KAIbgrC,SAAU,CACR1yD,KAAM,CACJuP,MAAOmY,EACP,YAAa,CACXnY,MAAOmY,KAIbirC,eAAgB,CACd3yD,KAAM,CACJoB,aAAchB,EAAM2B,QAAQ,KAGhC6wD,cAAe,CACb5yD,KAAM,CACJ,iBAAkB,CAChBuP,MAAOmY,KAIbmrC,QAAS,CACP7yD,KAAM,CACJ+Z,UAAW,SACX,iBAAkB,CAChBxK,MAAOmY,KAIborC,YAAa,CACXp/C,OAAQ,CACN,eAAgB,CACdI,WAAY,UACZlT,OAAQ,UAIdmyD,kBAAmB,CACjBC,YAAa,CACX,iBAAkB,CAChBjyD,gBAAiB2mB,EACjBnY,MAAOmY,EACPuG,WAAY,UAKlBglC,UAAW,CACTC,MAAO,CACL3jD,MAAOmY,EACP,UAAW,CACTv0B,QAAS,SAGbggE,MAAO,CACL5jD,MAAOmY,IAGX0rC,kBAAmB,CACjBC,OAAQ,CACN/xD,aAAc,OAEhB/jB,MAAO,CACLgyB,MAAOmY,EACPuG,WAAY,QAEdqlC,OAAQ,CACN5yD,IAAK,KAIX5H,MAAO,CACLs4D,UAAW,CACT7hD,MAAO,WAETgkD,cAAe,CACbhkD,MAAO,WAETkiD,UAAW,CACTliD,MAAO,UACP2F,QAAS,aAEXq8C,QAAS,CACPr8C,QAAS,SAEXs+C,aAAc,CACZz4C,gBAAgB,GAElB82C,eAAgB,CACdC,UAAW,KAEb2B,SAAU,CACRC,kBAAkB,GAEpBtB,cAAe,CACbC,QAAQ,GAEVI,YAAa,CACXkB,YAAa,gBAACC,EAAA,EAAD,kCCvzBnB,MAAMlsC,GAAS,CACbsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACTnJ,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACVC,KAAM,oBACNC,UAAW,qBACX+I,SAAU,qBACV5I,MAAO,oBACPC,WAAY,qBACZ4I,UAAW,mBACXC,WAAY,gBACZC,YAAa,qBACbjJ,IAAK,mBACLkJ,WAAY,sBACZjJ,QAAS,mBACTyC,UAAW,gBACXyG,YAAa,kBACbC,WAAY,mBACZC,YAAa,qBAEb1G,aAAc,UACd2G,WAAY,UACZC,aAAc,UACdC,YAAa,UACbC,YAAa,WAWTC,GAAc,CAClBC,OAAQ,UACRC,UAAW,UACXC,KAAM,UACNpH,KAAM,UACNqH,UAAW,WAGPC,GAAa,CACjBC,SAAU,UACVC,aAAc,UACdC,UAAW,UACXC,aAAc,UACdC,UAAW3tC,GAAOuC,OA+GdqrC,GAAmB,CACvB//C,MAAOmS,GAAOuC,MACdsrC,UAAW,YACXC,QAAS,UACTC,SAAU,UACVC,QAAS,sBAGLC,GAAa,CACjBC,YAAa,UACbC,gBAAiB,UACjBC,sBAAuB,UACvBC,kBAAmB,UACnBC,kBAAmB,KAyJRC,GAAuB,CAClCvuC,OADkC,GAElC4iC,YA5SkB,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MAwSJurC,eACAK,cACAkB,iBAxRuB,CACvBC,eAAgB,8BAChBC,UAAW,8BACXC,UAAW,8BACXC,aAAc,yBACdC,WAAY,6BAoRZC,oBAlR0B,CAC1BC,iBAAkB,WAClBC,mBAAoB,WACpBC,eAAgB,WAChBC,cAAe,WACfC,cAAe,WACfC,WAAY,OACZC,WAAY,SACZC,WAAY,WACZC,WAAY,YA0QZC,qBAxQ2B,CAC3BT,iBAAkB,WAClBC,mBAAoB,OACpBC,eAAgB,OAChBC,cAAe,OACfC,cAAe,WACfC,WAAY,WACZC,WAAY,UACZC,WAAY,SACZC,WAAY,YAgQZE,eA7PqB,CACrB/+C,WAAY,SACZlK,OAAQ,MACRuX,MAAO,SACPC,MAAO,SACPT,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OAsPJgyC,sBAnP4B,CAC5BC,mBAAoB,OACpBC,gBAAiB,MACjBC,gBAAiB,MACjBC,gBAAiB,OACjBC,mBAAoB,UA+OpBC,uBA5O6B,CAC7BL,mBAAoB,MACpBC,gBAAiB,MACjBC,gBAAiB,OACjBC,gBAAiB,OACjBC,mBAAoB,UAwOpBr/C,WArOiB,CACjB6M,GAAI,CACF7jB,aAAc,UAEhB8jB,GAAI,CACF9jB,aAAc,UACdyrB,cAAe,QAEjB1H,GAAI,CACF/jB,aAAc,QAEhBgkB,GAAI,CACFhkB,aAAc,QAEhBikB,GAAI,CACFjkB,aAAc,QAEhBkkB,GAAI,CACFlkB,aAAc,SAoNhBuuD,cAhNoB,CACpBC,YAAa,CACX+H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,IAGhB81C,mBAAoB,CAClB6H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,KAmMhB69C,WA9LiB,CACjB9+B,KAAM,UACN++B,UAAW,UACXC,YAAa,WA4LbC,WAzLiB,CACjBC,UAAW,WAyLX3C,oBACAK,cACAuC,oBAvK0B,CAC1BC,wBAAyB,UACzBC,gCAAiC,OACjCC,+BAAgC,UAChCC,+BAAgC,UAChCC,gCAAiC,qBACjCC,sBAAuB,WAkKvBC,sBAhK4B,CAC5BC,0BAA2B,UAC3BC,iCAAkC,UAClCC,iCAAkC,UAClCC,kCAAmC,qBACnCC,wBAAyB,WA4JzBC,qBAzJ2B,CAC3BC,eAAgB,UAChBC,sBAAuB,OACvBC,sBAAuB,UACvBC,uBAAwB,oBACxBC,gCAAiC,WAqJjCC,eAlJqB,CACrBC,qBAAsB,sBACtBC,oBAAqB,sBACrBj4D,aAAc,IACdurB,cAAe,WA+If2sC,mBA5IyB,CACzBC,eAAgB,UAChBC,kBAAmB,UACnBC,kBAAmB,UACnBC,gBAAiB,UAEjBC,aAAc,UACdC,gBAAiB,UACjBC,gBAAiB,UACjBC,cAAe,WAoIftrE,OAjIa,CACb60B,KAAMmE,GAAOktC,OACbtxC,WAAYoE,GAAOuC,MACnBlnB,UAAW,OACXmpD,gBAAiB,OACjBG,WAAY,CACVC,WAAY0I,GAAWC,SACvB1I,iBAAkB,OAClBZ,UAAWjkC,GAAOgmC,KAClBlB,kBAAmB9kC,GAAOuC,MAC1BwiC,oBAAqB/kC,GAAOuC,OAE9B9a,OAAQ,CACNjc,MAAO,QACP+4D,YAAa,OAEfS,MAAO,CACLn9C,MAAOmY,GAAOuC,MACdlpB,gBAAiB2mB,GAAOsC,QAgH1B4hC,OA5Ga,CACbz8C,OAAQ,CACNI,MAAOmY,GAAO0sC,YACdpsD,MAAO,OAET/G,QAASymB,GAAO0sC,YAChB7wC,KAAMmE,GAAOuC,MACb3G,WAAYoE,GAAO0sC,YACnBvI,kBAAmBnkC,GAAOijC,UAC1B7oD,QAAS,CACP8B,OAAQ,SAmGVoqD,UA/FgB,CAChBjtD,gBAAiB4zD,GAAYC,OAC7BtzD,aAAc,EACdiO,MAAOmY,GAAOuC,MACdgwC,cAAe,WACfn+C,MAAO,CACL/a,gBAAiB4zD,GAAYC,OAC7BrlD,MAAOmY,GAAOuC,OAEhBhoB,WAAY,CACVlB,gBAAiB,UACjB+a,MAAO,CACL/a,gBAAiB,YAGrBe,QAAS,CACPrB,KAAM,OACNE,MAAO,SA+ETwvD,iBA3EuB,CACvBhhD,OAAQ,CACNI,MAAOomD,GAAWC,YAClB5tD,MAAO,OAET9G,OAAQ,KAuERqvD,MApEY,CACZphD,OAAS,aAAYwlD,GAAYC,SACjCtzD,aAAc,EACdk2B,KAAM,CACJz2B,gBAAiB4zD,GAAYC,OAC7BrlD,MAAOmY,GAAOuC,OAEhBumC,IAAK,CACHC,KAAM,CACJ1vD,gBAAiB2mB,GAAOuC,QAG5BiwC,KAAM,CACJ/qD,OAAS,aAAYwlD,GAAYC,WAwDnClJ,SApDe,CACfzoC,SAAU,CACRK,WAAYqxC,GAAYC,OACxBrxC,KAAMmE,GAAOuC,OAEf1G,KAAMoxC,GAAYC,OAClBjJ,UAAWgJ,GAAYI,WA+CvBjI,iBA5CuB,CACvBvpC,KAAMmE,GAAOimC,UACb/iC,KAAMlD,GAAOimC,UACbZ,gBAAiBrlC,GAAO2sC,WACxBrH,oBAAqBtlC,GAAOqsC,SAC5B9G,wBAAyBvlC,GAAOijC,UAChCuC,6BAA8BxlC,GAAO0jC,WACrC+B,wBAAyBzlC,GAAOqsC,SAChCz+C,OAAQ,CACNC,MAAO,CACL+/C,iBAAkBA,GAAiB//C,MACnC4kD,aAAc,WAkClBtJ,GArMS,CAAC,GCrKNnpC,GAAS,CACbsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACTnJ,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACVC,KAAM,oBACNC,UAAW,qBACX+I,SAAU,qBACV5I,MAAO,oBACPC,WAAY,qBACZ4I,UAAW,mBACXC,WAAY,gBACZC,YAAa,qBACbjJ,IAAK,mBACLkJ,WAAY,sBACZjJ,QAAS,mBACTyC,UAAW,gBACXyG,YAAa,kBACbC,WAAY,mBACZC,YAAa,qBAEb1G,aAAc,UACd2G,WAAY,UACZC,aAAc,UACdC,YAAa,UACbC,YAAa,WAWTC,GAAc,CAClBV,WAAY,UACZzG,OAAQ,UACRrC,MAAO,UACPF,IAAK,UACLwC,MAAO,UACP9C,UAAW,WAGPqK,GAAa,CACjBC,SAAU,UACVC,aAAcP,GAAYV,WAC1BkB,UAAW,UACXC,aAAc,UACdC,UAAW3tC,GAAOuC,OAkGd4tC,GAAa,CACjB9+B,KAAM,UACN++B,UAAW,UACXC,YAAa,WAQTzC,GAAmB,CACvB//C,MAAO,UACPggD,UAAW,YACXC,QAAS,UACTC,SAAU,UACVC,QAAS,sBAGLC,GAAa,CACjBC,YAAa,UACbE,sBAAuB,UACvBD,gBAAiB,UACjBE,kBAAmB,UACnBC,kBAAmB,KA+JRoE,GAAiC,CAC5C1yC,OAD4C,GAE5C4iC,YAjTkB,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MA6SJurC,YAH4C,GAI5CK,WAJ4C,GAK5CkB,iBA5RuB,CACvBC,eAAgB,qBAChBC,UAAW,qBACXC,UAAW,qBACXC,aAAc,4BACdC,WAAY,sBAwRZC,oBAtR0B,CAC1BC,iBAAkB,WAClBC,mBAAoB,WACpBC,eAAgB,WAChBC,cAAe,WACfC,cAAe,WACfC,WAAY,SACZC,WAAY,WACZC,WAAY,WACZC,WAAY,YA8QZC,qBA5Q2B,CAC3BT,iBAAkB,WAClBC,mBAAoB,OACpBC,eAAgB,WAChBC,cAAe,OACfC,cAAe,WACfC,WAAY,OACZC,WAAY,WACZC,WAAY,SACZC,WAAY,YAoQZE,eAlQqB,CACrB/+C,WAAY,SACZlK,OAAQ,MACRuX,MAAO,SACPC,MAAO,SACPT,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,QA2PJgyC,sBAzP4B,CAC5BC,mBAAoB,MACpBC,gBAAiB,MACjBC,gBAAiB,OACjBC,gBAAiB,OACjBC,mBAAoB,UAqPpBC,uBAlP6B,CAC7BL,mBAAoB,OACpBC,gBAAiB,MACjBC,gBAAiB,MACjBC,gBAAiB,OACjBC,mBAAoB,UA8OpBr/C,WA3OiB,CACjB6M,GAAI,CACF7jB,aAAc,UAEhB8jB,GAAI,CACF9jB,aAAc,UACdyrB,cAAe,QAEjB1H,GAAI,CACF/jB,aAAc,QAEhBgkB,GAAI,CACFhkB,aAAc,QAEhBikB,GAAI,CACFjkB,aAAc,QAEhBkkB,GAAI,CACFlkB,aAAc,SA0NhBuuD,cAtNoB,CACpBC,YAAa,CACX+H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,IAGhB81C,mBAAoB,CAClB6H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,KAyMhB69C,WAb4C,GAc5CG,WA/LiB,CACjBC,UAAW,WA+LX3C,iBAf4C,GAgB5CK,WAhB4C,GAiB5CuC,oBA7K0B,CAC1BC,wBAAyB,UACzBC,gCAAiC,OACjCC,+BAAgC,UAChCC,+BAAgC,UAChCC,gCAAiC,wBACjCC,sBAAuB,WAwKvBC,sBArK4B,CAC5BC,0BAA2B,UAC3B2B,iCAAkC,UAClCC,iCAAkC,UAClCC,kCAAmC,yBACnCzB,wBAAyB,WAiKzBC,qBA9J2B,CAC3BC,eAAgB,UAChBC,sBAAuB,OACvBC,sBAAuB,UACvBC,uBAAwB,wBACxBqB,uBAAwB,UACxBpB,gCAAiC,WAyJjCC,eAtJqB,CACrBC,qBAAsB,sBACtBC,oBAAqB,sBACrBj4D,aAAc,EACdurB,cAAe,WAmJf2sC,mBAhJyB,CACzBC,eAAgB,UAChBC,kBAAmB,UACnBC,kBAAmB,UACnBC,gBAAiB,UAEjBC,aAAc,UACdC,gBAAiB,UACjBC,gBAAiB,UACjBC,cAAe,WAwIftrE,OArIa,CACb60B,KAAMmE,GAAOusC,WACb3wC,WAAY,cACZvgB,UAAW,OACXmpD,gBAAiB,OACjBG,WAAY,CACVC,WAAY0I,GAAWC,SACvB1I,iBAAkB,OAClBZ,UAAWjkC,GAAO8lC,OAClBhB,kBAAmB9kC,GAAOuC,MAC1BwiC,oBAAqB/kC,GAAOuC,OAE9B9a,OAAQ,CACN88C,YAAa,MACb/4D,MAAO,QAETw5D,MAAO,CACLn9C,MAAOmY,GAAOuC,MACdlpB,gBAAiB2mB,GAAOsC,OAE1BywC,mBAAoB,CAClBn3C,WAAY,0EAiHdsoC,OA7Ga,CACbz8C,OAAQ,CACNI,MAAOolD,GAAYhK,UACnB3iD,MAAO,OAET/G,QAASymB,GAAO0sC,YAChB7wC,KAAMmE,GAAOuC,MACb3G,WAAYqxC,GAAYhK,UACxBkB,kBAAmB8I,GAAYhK,UAC/B7oD,QAAS,CACP8B,OAAQ,SAoGVoqD,UAhGgB,CAChBjtD,gBAAiB4zD,GAAYlH,MAC7BnsD,aAAc,EACdiO,MAAOolD,GAAYV,WACnBgG,cAAe,WACfn+C,MAAO,CACL/a,gBAAiB4zD,GAAYlH,MAC7Bl+C,MAAOsoD,GAAWC,WAEpB71D,WAAY,CACVlB,gBAAiB,UACjB+a,MAAO,CACL/a,gBAAiB,YAGrBe,QAAS,CACPrB,KAAM,OACNE,MAAO,SAgFTwvD,iBA5EuB,CACvB5gD,MAAO,QACPJ,OAAQ,CACNI,MAAOomD,GAAWC,YAClB5tD,MAAO,OAET9G,OAAQ,KAuERqvD,MApEY,CACZphD,OAAS,aAAYwlD,GAAYV,aACjC3yD,aAAc,EACdk2B,KAAM,CACJz2B,gBAAiB4zD,GAAYV,WAC7B1kD,MAAOmY,GAAOuC,OAEhBumC,IAAK,CACHC,KAAM,CACJ1vD,gBAAiB2mB,GAAOuC,QAG5BiwC,KAAM,CACJ/qD,OAAS,aAAYwlD,GAAYV,eAwDnCvI,SApDe,CACfzoC,SAAU,CACRK,WAAYqxC,GAAYlH,MACxBlqC,KAAMoxC,GAAYV,YAEpB1wC,KAAMoxC,GAAYV,WAClBtI,UAAWgJ,GAAYlH,OA+CvBX,iBA5CuB,CACvBvpC,KAAMmE,GAAOimC,UACb/iC,KAAMlD,GAAOimC,UACbZ,gBAAiBrlC,GAAO2sC,WACxBrH,oBAAqBtlC,GAAOqsC,SAC5B9G,wBAAyBvlC,GAAOijC,UAChCuC,6BAA8BxlC,GAAO0jC,WACrC+B,wBAAyBzlC,GAAOqsC,SAChCz+C,OAAQ,CACNC,MAAO,CACL+/C,iBAAkBA,GAAiB//C,MACnC4kD,aAAc,WAkClBtJ,GA3MS,CAAC,GChKNnpC,GAAS,CACbsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACTnJ,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACVC,KAAM,oBACNC,UAAW,qBACX+I,SAAU,qBACV5I,MAAO,oBACPC,WAAY,qBACZ4I,UAAW,mBACXC,WAAY,gBACZC,YAAa,qBACbjJ,IAAK,mBACLkJ,WAAY,sBACZjJ,QAAS,mBACTyC,UAAW,gBACXyG,YAAa,kBACbC,WAAY,mBACZC,YAAa,qBAEb1G,aAAc,UACd2G,WAAY,UACZC,aAAc,UACdC,YAAa,UACbC,YAAa,WAWTC,GAAc,CAClB+F,UAAW,UACXC,WAAY,WAGR3F,GAAa,CACjBC,SAAU,UACVE,UAAW,UACXC,aAAc,UACdC,UAAW3tC,GAAOuC,OAmGd4tC,GAAa,CACjB9+B,KAAM,UACN++B,UAAW,UACXC,YAAa,WAQTzC,GAAmB,CACvB//C,MAAO,UACPggD,UAAW,YACXE,SAAU,UACVmF,UAAW,UACXlF,QAAS,sBAGLC,GAAa,CACjBC,YAAa,UACbC,gBAAiB,UACjBC,sBAAuB,UACvBC,kBAAmB,UACnBC,kBAAmB,KA2JR6E,GAAqB,CAChCnzC,OADgC,GAEhC4iC,YAzSkB,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MAqSJurC,YAHgC,GAIhCK,WAJgC,GAKhCkB,iBAzRuB,CACvBC,eAAgB,qBAChBC,UAAW,qBACXC,UAAW,qBACXC,aAAc,qBACdC,WAAY,sBAqRZC,oBAlR0B,CAC1BC,iBAAkB,WAClBC,mBAAoB,WACpBC,eAAgB,WAChBC,cAAe,WACfC,cAAe,WACfC,WAAY,WACZC,WAAY,SACZC,WAAY,WACZC,WAAY,YA0QZC,qBAxQ2B,CAC3BT,iBAAkB,WAClBC,mBAAoB,OACpBC,eAAgB,OAChBC,cAAe,OACfC,cAAe,WACfC,WAAY,UACZC,WAAY,OACZC,WAAY,SACZC,WAAY,YAgQZE,eA9PqB,CACrB/+C,WAAY,SACZlK,OAAQ,MACRuX,MAAO,SACPC,MAAO,SACPT,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OAuPJgyC,sBArP4B,CAC5BC,mBAAoB,MACpBC,gBAAiB,OACjBC,gBAAiB,OACjBC,gBAAiB,OACjBC,mBAAoB,UAiPpBC,uBA9O6B,CAC7BL,mBAAoB,OACpBC,gBAAiB,MACjBC,gBAAiB,MACjBC,gBAAiB,OACjBC,mBAAoB,UA0OpBr/C,WAvOiB,CACjB6M,GAAI,CACF7jB,aAAc,UAEhB8jB,GAAI,CACF9jB,aAAc,UACdyrB,cAAe,QAEjB1H,GAAI,CACF/jB,aAAc,QAEhBgkB,GAAI,CACFhkB,aAAc,QAEhBikB,GAAI,CACFjkB,aAAc,QAEhBkkB,GAAI,CACFlkB,aAAc,SAsNhBuuD,cAlNoB,CACpBC,YAAa,CACX+H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,IAGhB81C,mBAAoB,CAClB6H,OAAQ,CACN39C,WAAY,IAEd49C,QAAS,CACP59C,WAAY,MAqMhB69C,WAbgC,GAchCG,WA3LiB,CACjBC,UAAW,WA2LX3C,iBAfgC,GAgBhCK,WAhBgC,GAiBhCuC,oBAzK0B,CAC1BC,wBAAyB,UACzBC,gCAAiC,OACjCC,+BAAgC,UAChCC,+BAAgC,UAChCC,gCAAiC,wBACjCC,sBAAuB,WAoKvBC,sBAlK4B,CAC5BC,0BAA2B,UAC3BC,iCAAkC,UAClCC,iCAAkC,UAClCC,kCAAmC,wBACnCC,wBAAyB,WA8JzBC,qBA3J2B,CAC3BC,eAAgB,UAChBC,sBAAuB,OACvBC,sBAAuB,UACvBC,uBAAwB,wBACxBC,gCAAiC,WAuJjCC,eApJqB,CACrBC,qBAAsB,WACtBC,oBAAqB,YACrBj4D,aAAc,MACdurB,cAAe,WAiJf2sC,mBA9IyB,CACzBC,eAAgB,UAChBC,kBAAmB,UACnBC,kBAAmB,UACnBC,gBAAiB,UAEjBC,aAAc,UACdC,gBAAiB,UACjBC,gBAAiB,UACjBC,cAAe,WAsIftrE,OAnIa,CACb60B,KAAMmE,GAAOizC,WACbr3C,WAAYoE,GAAOuC,MACnBlnB,UAAW,OACXmpD,gBAAiB,OACjBG,WAAY,CACVC,WAAYuL,GAAWE,YACvBxL,iBAAkB,OAClBZ,UAAWkM,GAAWC,UACtBtL,kBAAmB9kC,GAAOuC,MAC1BwiC,oBAAqB/kC,GAAOuC,OAE9B9a,OAAQ,CACN88C,YAAa,MACb/4D,MAAO,SAETw5D,MAAO,CACLn9C,MAAOmY,GAAOuC,MACdlpB,gBAAiB2mB,GAAOsC,QAkH1B4hC,OA9Ga,CACbz8C,OAAQ,CACNI,MAAO,cACPvH,MAAO,OAET/G,QAAS0zD,GAAY+F,UACrBn3C,KAAMmE,GAAOuC,MACb3G,WAAYqxC,GAAY+F,UACxB7O,kBAAmB8I,GAAY+F,UAC/B54D,QAAS,CACP8B,OAAQ,SAqGVoqD,UAjGgB,CAChBjtD,gBAAiBu0D,GAAiBC,UAClCj0D,aAAc,OACdiO,MAAOsoD,GAAW9+B,KAClBjjB,cAAe,MACfmkD,cAAe,WACfn+C,MAAO,CACL/a,gBAAiB2mB,GAAOuC,MACxB1a,MAAOsoD,GAAW/7C,OAEpB7Z,WAAY,CACVlB,gBAAiB,UACjB+a,MAAO,CACL/a,gBAAiB,YAGrBe,QAAS,CACPrB,KAAM,OACNE,MAAO,QAgFTwvD,iBA5EuB,CACvB5gD,MAAOmY,GAAOsC,MACd7a,OAAQ,CACNI,MAAOomD,GAAWC,YAClB5tD,MAAO,OAET9G,OAAQ,KAuERqvD,MApEY,CACZphD,OAAS,aAAYwlD,GAAYgG,aACjCr5D,aAAc,MACdk2B,KAAM,CACJz2B,gBAAiB4zD,GAAYgG,WAC7BprD,MAAOmY,GAAOuC,OAEhBumC,IAAK,CACHC,KAAM,CACJ1vD,gBAAiB2mB,GAAOuC,QAG5BiwC,KAAM,CACJ/qD,OAAS,aAAYwlD,GAAYgG,eAwDnCjP,SApDe,CACfzoC,SAAU,CACRK,WAAYgyC,GAAiBC,UAC7BhyC,KAAMs0C,GAAW9+B,MAEnBxV,KAAMs0C,GAAW9+B,KACjB4yB,UAAWkM,GAAWC,WA+CtBhL,iBA5CuB,CACvBvpC,KAAMmE,GAAO0sC,YACbxpC,KAAMoqC,GAAWC,SACjBlI,gBAAiBrlC,GAAO2sC,WACxBrH,oBAAqBtlC,GAAOqsC,SAC5B9G,wBAAyBvlC,GAAOijC,UAChCuC,6BAA8ByH,GAAY+F,UAC1CvN,wBAAyBzlC,GAAOuC,MAChC3U,OAAQ,CACNC,MAAO,CACL+/C,iBAAkBA,GAAiB//C,MACnC4kD,aAAc,WAkClBtJ,GAvMS,CAAC,GChKNnpC,GAAS,CACbsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACTnJ,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACVC,KAAM,oBACNC,UAAW,qBACX+I,SAAU,qBACV5I,MAAO,oBACPC,WAAY,qBACZ4I,UAAW,mBACXC,WAAY,gBACZC,YAAa,qBACbjJ,IAAK,mBACLkJ,WAAY,sBACZjJ,QAAS,mBACTyC,UAAW,gBACXyG,YAAa,kBACbC,WAAY,mBACZC,YAAa,qBAEb1G,aAAc,UACd2G,WAAY,UACZC,aAAc,UACdC,YAAa,UACbC,YAAa,WAWTC,GAAc,CAClB3qC,MAAO,UACPC,MAAO,WAGH+qC,GAAa,CACjBC,SAAU,UACVE,UAAW,UACXC,aAAc,UACdC,UAAW3tC,GAAOuC,OAoGd4tC,GAAa,CACjB9+B,KAAM,UACN++B,UAAW,UACXC,YAAa,WASTzC,GAAmB,CACvB//C,MAAO,UACPggD,UAAW,YACXE,SAAU,UACVmF,UAAW,UACXlF,QAAS,sBAGLC,GAAa,CACjBC,YAAa,UACbC,gBAAiB,UACjBC,sBAAuB,UACvBC,kBAAmB,UACnBC,kBAAmB,KA2JR8E,GAAuB,CAClCpzC,OADkC,GAElC4iC,YA3SkB,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MAuSJurC,YAHkC,GAIlCK,WAJkC,GAKlCkB,iBA1RuB,CACvBC,eAAgB,6BAChBC,UAAW,6BACXC,UAAW,6BACXC,aAAc,0BACdC,WAAY,8BAsRZC,oBAnR0B,CAC1BC,iBAAkB,WAClBC,mBAAoB,WACpBC,eAAgB,WAChBC,cAAe,WACfC,cAAe,WACfC,WAAY,WACZC,WAAY,SACZC,WAAY,WACZC,WAAY,YA2QZC,qBAzQ2B,CAC3BT,iBAAkB,WAClBC,mBAAoB,OACpBC,eAAgB,OAChBC,cAAe,OACfC,cAAe,WACfC,WAAY,UACZC,WAAY,OACZC,WAAY,SACZC,WAAY,YAiQZE,eA/PqB,CACrB/+C,WAAY,SACZlK,OAAQ,MACRuX,MAAO,SACPC,MAAO,SACPT,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OAwPJgyC,sBAtP4B,CAC5BC,mBAAoB,MACpBC,gBAAiB,OACjBC,gBAAiB,OACjBC,gBAAiB,OACjBC,mBAAoB,UAkPpBC,uBA/O6B,CAC7BL,mBAAoB,OACpBC,gBAAiB,MACjBC,gBAAiB,MACjBC,gBAAiB,OACjBC,mBAAoB,UA2OpBr/C,WAxOiB,CACjB6M,GAAI,CACF7jB,aAAc,UAEhB8jB,GAAI,CACF9jB,aAAc,UACdyrB,cAAe,QAEjB1H,GAAI,CACF/jB,aAAc,QAEhBgkB,GAAI,CACFhkB,aAAc,QAEhBikB,GAAI,CACFjkB,aAAc,QAEhBkkB,GAAI,CACFlkB,aAAc,SAuNhBuuD,cAnNoB,CACpBC,YAAa,CACX+H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,IAGhB81C,mBAAoB,CAClB6H,OAAQ,CACN39C,WAAY,IAEd49C,QAAS,CACP59C,WAAY,MAsMhB69C,WAbkC,GAclCG,WA5LiB,CACjBC,UAAW,WA4LX3C,iBAfkC,GAgBlCK,WAhBkC,GAiBlCuC,oBAzK0B,CAC1BC,wBAAyB,UACzBC,gCAAiC,OACjCC,+BAAgC,UAChCC,+BAAgC,UAChCC,gCAAiC,2BACjCC,sBAAuB,WAoKvBC,sBAlK4B,CAC5BC,0BAA2B,UAC3BC,iCAAkC,UAClCC,iCAAkC,UAClCC,kCAAmC,2BACnCC,wBAAyB,WA8JzBC,qBA3J2B,CAC3BC,eAAgB,UAChBC,sBAAuBtE,GAAY3qC,MACnCkvC,sBAAuB,UACvBC,uBAAwB,2BACxBC,gCAAiCzE,GAAY3qC,OAuJ7CqvC,eApJqB,CACrBC,qBAAsB,WACtBC,oBAAqB,YACrBj4D,aAAc,MACdurB,cAAe,WAiJf2sC,mBA9IyB,CACzBC,eAAgB,UAChBC,kBAAmB,UACnBC,kBAAmB,UACnBC,gBAAiB,UAEjBC,aAAc,UACdC,gBAAiB,UACjBC,gBAAiB,UACjBC,cAAe,WAsIftrE,OAnIa,CACb60B,KAAMmE,GAAOizC,WACbr3C,WAAYqxC,GAAY3qC,MACxBjnB,UAAW,OACXmpD,gBAAiB,OACjBG,WAAY,CACVC,WAAYuL,GAAWE,YACvBxL,iBAAkB,OAClBZ,UAAWkM,GAAWC,UACtBtL,kBAAmB9kC,GAAOuC,MAC1BwiC,oBAAqB/kC,GAAOuC,OAE9B9a,OAAQ,CACNjc,MAAO,QACP+4D,YAAa,OAEfS,MAAO,CACLn9C,MAAOmY,GAAOuC,MACdlpB,gBAAiB2mB,GAAOsC,QAkH1B4hC,OA9Ga,CACbz8C,OAAQ,CACNI,MAAO,cACPvH,MAAO,OAET/G,QAAS0zD,GAAY3qC,MACrBzG,KAAMmE,GAAOuC,MACb3G,WAAYqxC,GAAY3qC,MACxB6hC,kBAAmB8I,GAAY3qC,MAC/BloB,QAAS,CACP8B,OAAQ,SAqGVoqD,UAjGgB,CAChBjtD,gBAAiBu0D,GAAiBG,SAClCn0D,aAAc,OACdiO,MAAOolD,GAAY1qC,MACnBnU,cAAe,MACfmkD,cAAe,WACfn+C,MAAO,CACL/a,gBAAiBu0D,GAAiBI,QAClCnmD,MAAOolD,GAAY1qC,OAErBhoB,WAAY,CACVlB,gBAAiB,UACjB+a,MAAO,CACL/a,gBAAiB,YAGrBe,QAAS,CACPrB,KAAM,OACNE,MAAO,QAgFTwvD,iBA5EuB,CACvBhhD,OAAQ,CACNI,MAAOomD,GAAWC,YAClB5tD,MAAO,OAET9G,OAAQ,KAwERqvD,MArEY,CACZphD,OAAS,aAAYwlD,GAAY1qC,QACjC3oB,aAAc,MACdk2B,KAAM,CACJz2B,gBAAiBu0D,GAAiBI,QAClCnmD,MAAOmY,GAAOuC,OAEhBumC,IAAK,CACHzvD,gBAAiBu0D,GAAiBG,SAClChF,KAAM,CACJ1vD,gBAAiBu0D,GAAiBG,WAGtCyE,KAAM,CACJ/qD,OAAS,aAAYwlD,GAAY1qC,UAwDnCyhC,SApDe,CACfzoC,SAAU,CACRK,WAAYgyC,GAAiBC,UAC7BhyC,KAAMs0C,GAAW9+B,MAEnBxV,KAAMs0C,GAAW9+B,KACjB4yB,UAAWkM,GAAWC,WA+CtBhL,iBA5CuB,CACvBvpC,KAAMs0C,GAAW9+B,KACjBnO,KAAMoqC,GAAWC,SACjBlI,gBAAiBuI,GAAiBG,SAClCzI,oBAAqBsI,GAAiBG,SACtCxI,wBAAyBqI,GAAiBG,SAC1CvI,6BAA8BoI,GAAiBG,SAC/CtI,wBAAyBzlC,GAAOuC,MAChC3U,OAAQ,CACNC,MAAO,CACL+/C,iBAAkBA,GAAiB//C,MACnC4kD,aAAc,WAkClBtJ,GAvMS,CAAC,GChKZ,OAAe,IAA0B,6DCIzC,MAAMnpC,GAAS,CACbsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACTnJ,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACVC,KAAM,oBACNC,UAAW,qBACX+I,SAAU,qBACV5I,MAAO,oBACPC,WAAY,qBACZ4I,UAAW,mBACXC,WAAY,gBACZC,YAAa,qBACbjJ,IAAK,mBACLkJ,WAAY,sBACZjJ,QAAS,mBACTyC,UAAW,gBACXyG,YAAa,kBACbC,WAAY,mBACZC,YAAa,qBAEb1G,aAAc,UACd2G,WAAY,UACZC,aAAc,UACdC,YAAa,UACbC,YAAa,WA2GTC,GAAc,CAClB/7C,QAAS,UACTmiD,OAAQ,WAGJ/F,GAAa,CACjBC,SAAU,UACVC,aAAc,UACdC,UAAW,UACXC,aAAc,UACdC,UAAW3tC,GAAOuC,OAGd4tC,GAAa,CACjB9+B,KAAM,UACN++B,UAAW,UACXC,YAAa,WAOTzC,GAAmB,CACvB//C,MAAO,UACPggD,UAAW,UACXE,SAAU,UACVmF,UAAW,UACXlF,QAAS,sBAqDLhnE,GAAS,CACb60B,KAAM,UACND,WAAa,GAAEqxC,GAAY/7C,eAAeoiD,aAC1Cj4D,UAAW,QACXmpD,gBAAiB,OACjB+O,eAAgB,OAChB5O,WAAY,CACVC,WAAYuL,GAAWE,YACvBxL,iBAAkB,OAClBZ,UAAWkM,GAAWC,UACtBtL,kBAAmB9kC,GAAOuC,MAC1BwiC,oBAAqB/kC,GAAOuC,OAE9B9a,OAAQ,CACN88C,YAAa,IACb/4D,MAAO,QAETw5D,MAAO,CACLn9C,MAAOmY,GAAOuC,MACdlpB,gBAAiB2mB,GAAOsC,QAItB4hC,GAAS,CACbz8C,OAAQ,CACNI,MAAO,cACPvH,MAAO,OAET/G,QAAS0zD,GAAYoG,OACrBx3C,KAAMyxC,GAAWC,SACjB3xC,WAAa,GAAEqxC,GAAY/7C,eAAeoiD,aAC1CnP,kBAAmB8I,GAAY/7C,QAC/B9W,QAAS,CACP8B,OAAQ,SAINoqD,GAAY,CAChBjtD,gBAAiBu0D,GAAiBC,UAClCj0D,aAAc,OACdiO,MAAOsoD,GAAW9+B,KAClBjjB,cAAe,MACfmkD,cAAe,WACfn+C,MAAO,CACL/a,gBAAiB2mB,GAAOuC,MACxB1a,MAAOsoD,GAAWC,WAEpB71D,WAAY,CACVlB,gBAAiB,UACjB+a,MAAO,CACL/a,gBAAiB,YAGrBe,QAAS,CACPrB,KAAM,OACNE,MAAO,QAILwvD,GAAmB,CACvBhhD,OAAQ,CACNI,MAAOmY,GAAOsC,MACdhiB,MAAO,OAET9G,OAAQ,cAGJqvD,GAAQ,CACZphD,OAAS,aAAYwlD,GAAYoG,SACjCz5D,aAAc,MACdk2B,KAAM,CACJz2B,gBAAiB4zD,GAAY/7C,QAC7BrJ,MAAOylD,GAAWC,UAEpBzE,IAAK,CACHC,KAAM,CACJ1vD,gBAAiB2mB,GAAOuC,QAG5BiwC,KAAM,CACJ/qD,OAAS,aAAYwlD,GAAYuG,gBAI/BxP,GAAW,CACfzoC,SAAU,CACRK,WAAYgyC,GAAiBC,UAC7BhyC,KAAMs0C,GAAW9+B,MAEnBxV,KAAMs0C,GAAW9+B,KACjB4yB,UAAWkM,GAAWC,WAGlBhL,GAAmB,CACvBvpC,KAAMyxC,GAAWC,SACjBrqC,KAAMoqC,GAAWC,SACjBlI,gBAAiBrlC,GAAO2sC,WACxBrH,oBAAqB2H,GAAY/7C,QACjCq0C,wBAAyBvlC,GAAOijC,UAChCuC,6BAA8ByH,GAAY/7C,QAC1Cu0C,wBAAyB6H,GAAWC,SACpC3/C,OAAQ,CACNC,MAAO,CACL+/C,iBAAkBA,GAAiB//C,MACnC4kD,aAAc,WAKPgB,GAA0B,CACrCzzC,OADqC,GAErC4iC,YAxSkB,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MAoSJurC,YAHqC,GAIrCK,WAJqC,GAKrCkB,iBAnSuB,CACvBC,eAAgB,uBAChBC,UAAW,uBACXC,UAAW,uBACXC,aAAc,wBAgSdE,oBA7R0B,CAC1BC,iBAAkB,WAClBC,mBAAoB,WACpBC,eAAgB,WAChBC,cAAe,WACfC,cAAe,WACfC,WAAY,WACZC,WAAY,UACZC,WAAY,WACZC,WAAY,YAqRZC,qBAnR2B,CAC3BT,iBAAkB,WAClBC,mBAAoB,OACpBC,eAAgB,OAChBC,cAAe,OACfC,cAAe,WACfC,WAAY,OACZC,WAAY,SACZC,WAAY,SACZC,WAAY,YA2QZE,eAzQqB,CACrB/+C,WAAY,SACZlK,OAAQ,MACRuX,MAAO,SACPC,MAAO,SACPT,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OAkQJgyC,sBAhQ4B,CAC5BC,mBAAoB,MACpBC,gBAAiB,MACjBC,gBAAiB,MACjBC,gBAAiB,OACjBC,mBAAoB,UA4PpBC,uBAzP6B,CAC7BL,mBAAoB,OACpBC,gBAAiB,MACjBC,gBAAiB,MACjBC,gBAAiB,OACjBC,mBAAoB,UAqPpBr/C,WAlPiB,CACjB6M,GAAI,CACF7jB,aAAc,UAEhB8jB,GAAI,CACF9jB,aAAc,UACdyrB,cAAe,aAEjB1H,GAAI,CACF/jB,aAAc,QAEhBgkB,GAAI,CACFhkB,aAAc,QAEhBikB,GAAI,CACFjkB,aAAc,QAEhBkkB,GAAI,CACFlkB,aAAc,SAiOhBuuD,cA7NoB,CACpBC,YAAa,CACX+H,OAAQ,CACN39C,WAAY,QAEd49C,QAAS,CACP59C,WAAY,SAGhB81C,mBAAoB,CAClB6H,OAAQ,CACN39C,WAAY,IAEd49C,QAAS,CACP59C,WAAY,MAgNhB69C,WAbqC,GAcrCG,WAzLiB,CACjBC,UAAW,WAyLX3C,iBAfqC,GAgBrCK,WA/KiB,CACjBC,YAAa,UACbC,gBAAiB,UACjBC,sBAAuB,UACvBC,kBAAmB,WA4KnBmC,oBAzK0B,CAC1BC,wBAAyB,UACzBC,gCAAiC,2DACjCC,+BAAgC,UAChCC,+BAAgC,UAChCC,gCAAiC,UACjCC,sBAAuB,WAoKvBC,sBAlK4B,CAC5BC,0BAA2B,UAC3BC,iCAAkC,UAClCC,iCAAkC,UAClCC,kCAAmC,SACnCC,wBAAyB,WA8JzBC,qBA3J2B,CAC3BC,eAAgB,UAChBC,sBAAuB,UACvBC,sBAAuB,UACvBC,uBAAwB,UACxBC,gCAAiC,WAuJjCC,eApJqB,CACrBC,qBAAsB,YACtBC,oBAAqB,WACrBj4D,aAAc,IACdurB,cAAe,WAiJf2sC,mBA9IyB,CACzBC,eAAgB,UAChBC,kBAAmB,UACnBC,kBAAmB,UACnBC,gBAAiB,UAEjBC,aAAc,UACdC,gBAAiB,UACjBC,gBAAiB,UACjBC,cAAe,WAsIftrE,OAtBqC,GAuBrCk9D,OAvBqC,GAwBrCoC,UAxBqC,GAyBrCmC,iBAzBqC,GA0BrCI,MA1BqC,GA2BrC7E,SA3BqC,GA4BrCoB,iBA5BqC,ICzUjCplC,GAAS,CACbsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACTnJ,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACVC,KAAM,oBACNC,UAAW,qBACX+I,SAAU,qBACV5I,MAAO,oBACPC,WAAY,qBACZ4I,UAAW,mBACXC,WAAY,gBACZC,YAAa,qBACbjJ,IAAK,mBACLkJ,WAAY,sBACZjJ,QAAS,mBACTyC,UAAW,gBACXyG,YAAa,kBACbC,WAAY,mBACZC,YAAa,qBAEb1G,aAAc,UACd2G,WAAY,UACZC,aAAc,UACdC,YAAa,UACbC,YAAa,WAWTC,GAAc,CAClBuG,YAAa,UACbE,aAAc,WAGVpG,GAAa,CACjBC,SAAUN,GAAYuG,YACtB/F,UAAW,UACXC,aAAc,UACdC,UAAW3tC,GAAOuC,OAuGd4tC,GAAa,CACjB9+B,KAAM,UACN++B,UAAW,UACXC,YAAa,WAYTzC,GAAmB,CACvB//C,MAAO,UACPggD,UAAW,UACXE,SAAU,UACVmF,UAAW,UACXlF,QAAS,sBAGLC,GAAa,CACjBC,YAAa,UACbC,gBAAiB,UACjBE,kBAAmB,UACnBC,kBAAmB,QAGfkC,GAAsB,CAC1BC,wBAAyBxD,GAAYuG,YACrC7C,+BAAgC,UAChCC,+BAAgC,UAChCC,gCAAiC,UACjCC,sBAAuB,WAGnBC,GAAwB,CAC5BC,0BAA2B/D,GAAYuG,YACvCvC,iCAAkC,UAClCC,iCAAkC,UAClCC,kCAAmC,UACnCC,wBAAyB,WAGrBC,GAAuB,CAC3BC,eAAgBrE,GAAYuG,YAC5BjC,sBAAuB,UACvBC,sBAAuB,UACvBC,uBAAwB,UACxBC,gCAAiCzE,GAAYuG,aAsBzCxsE,GAAS,CACb60B,KAAMoxC,GAAYuG,YAClB53C,WAAYoE,GAAOuC,MACnB9a,OAAQ,CACNjc,MAAO,OACP+4D,YAAa,KAEflpD,UAAW,OACXmpD,gBAAiB,OACjBG,WAAY,CACVC,WAAYuL,GAAWE,YACvBxL,iBAAkB,OAClBZ,UAAWkM,GAAWC,UACtBtL,kBAAmB9kC,GAAOuC,MAC1BwiC,oBAAqB/kC,GAAOuC,OAE9ByiC,MAAO,CACLn9C,MAAOmY,GAAOuC,MACdlpB,gBAAiB2mB,GAAOsC,QAyFfqxC,GAAuB,CAClC3zC,OADkC,GAElC4iC,YA9SkB,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MA0SJurC,YAHkC,GAIlCK,WAJkC,GAKlCkB,iBA9RuB,CACvBC,eAAgB,mBAChBC,UAAW,mBACXC,UAAW,mBACXC,aAAc,mBACdC,WAAY,oBA0RZC,oBAvR0B,CAC1BC,iBAAkB,WAClBC,mBAAoB,WACpBC,eAAgB,WAChBC,cAAe,WACfC,cAAe,WACfC,WAAY,UACZC,WAAY,OACZC,WAAY,WACZC,WAAY,YA+QZC,qBA7Q2B,CAC3BT,iBAAkB,WAClBC,mBAAoB,OACpBC,eAAgB,OAChBC,cAAe,OACfC,cAAe,WACfC,WAAY,OACZC,WAAY,OACZC,WAAY,WACZC,WAAY,YAqQZE,eAnQqB,CACrB/+C,WAAY,SACZlK,OAAQ,MACRuX,MAAO,SACPC,MAAO,SACPT,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OA4PJgyC,sBA1P4B,CAC5BC,mBAAoB,MACpBC,gBAAiB,OACjBC,gBAAiB,OACjBC,gBAAiB,OACjBC,mBAAoB,UAsPpBC,uBAnP6B,CAC7BL,mBAAoB,OACpBC,gBAAiB,MACjBC,gBAAiB,MACjBC,gBAAiB,OACjBC,mBAAoB,UA+OpB6D,YAtNkB,CAClBC,mBAAoB,UAsNpB5L,cAnNoB,CACpBC,YAAa,CACX+H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,IAGhB81C,mBAAoB,CAClB6H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,KAsMhB69C,WAbkC,GAclCG,WA5LiB,CACjBC,UAAW,WA4LX3C,iBAfkC,GAgBlCK,WAhBkC,GAiBlCuC,oBAjBkC,GAkBlCO,sBAlBkC,GAmBlCM,qBAnBkC,GAoBlCM,eAlJqB,CACrBC,qBAAsB,YACtBC,oBAAqB,WACrBj4D,aAAc,IACdurB,cAAe,WA+If2sC,mBA5IyB,CACzBC,eAAgB,UAChBC,kBAAmB,UACnBC,kBAAmB,UACnBC,gBAAiB,UAEjBC,aAAc,UACdC,gBAAiB,UACjBC,gBAAiB,UACjBC,cAAe,WAoIftrE,OAtBkC,GAuBlCk9D,OA5Ga,CACbz8C,OAAQ,CACNI,MAAO,cACPvH,MAAO,OAET/G,QAAS0zD,GAAYyG,aACrB73C,KAAM,UACND,WAAYqxC,GAAYuG,YACxBrP,kBAAmB8I,GAAYuG,YAC/Bp5D,QAAS,CACP8B,OAAQ,SAmGVoqD,UA/FgB,CAChBjtD,gBAAiBu0D,GAAiBC,UAClCj0D,aAAc,OACdiO,MAAOsoD,GAAW9+B,KAClBjjB,cAAe,MACfgG,MAAO,CACL/a,gBAAiB4zD,GAAYyG,aAC7B7rD,MAAOsoD,GAAW/7C,OAEpB7Z,WAAY,CACVlB,gBAAiB,UACjB+a,MAAO,CACL/a,gBAAiB,YAGrBe,QAAS,CACPrB,KAAM,OACNE,MAAO,QA+ET4vD,MAnEY,CACZphD,OAAS,aAAYwlD,GAAYuG,cACjC55D,aAAc,MACdk2B,KAAM,CACJz2B,gBAAiB4zD,GAAYuG,YAC7B3rD,MAAOmY,GAAOuC,OAEhBumC,IAAK,CACHC,KAAM,CACJ1vD,gBAAiB2mB,GAAOuC,QAG5BiwC,KAAM,CACJ/qD,OAAS,aAAYwlD,GAAYuG,gBAuDnCxP,SAnDe,CACfzoC,SAAU,CACRK,WAAYgyC,GAAiBC,UAC7BhyC,KAAMs0C,GAAW9+B,MAEnBxV,KAAMs0C,GAAW9+B,KACjB4yB,UAAWkM,GAAWC,WA8CtBhL,iBA3CuB,CACvBvpC,KAAMmE,GAAO0sC,YACbxpC,KAAMoqC,GAAWC,SACjBlI,gBAAiBrlC,GAAO2sC,WACxBrH,oBAAqBtlC,GAAOqsC,SAC5B9G,wBAAyBvlC,GAAOijC,UAChCuC,6BAA8ByH,GAAYyG,aAC1CjO,wBAAyBzlC,GAAOuC,MAChC3U,OAAQ,CACNC,MAAO,CACL+/C,iBAAkBA,GAAiB//C,MACnC4kD,aAAc,WAiClBtJ,GAvMS,CACTjwD,OAAQ,MACR2O,MAAO,UACPxO,gBAAiB,WAqMjBqX,WA9PiB,CACjB6M,GAAI,CACF7jB,aAAc,UAEhB8jB,GAAI,CACF9jB,aAAc,UACdyrB,cAAe,QAEjB1H,GAAI,CACF/jB,aAAc,QAEhBgkB,GAAI,CACFhkB,aAAc,QAEhBikB,GAAI,CACFjkB,aAAc,QAEhBkkB,GAAI,CACFlkB,aAAc,SA6OhB+uD,iBAhFuB,CACvBhhD,OAAQ,CACNI,MAAOomD,GAAWC,YAClB5tD,MAAO,OAET9G,OAAQ,MChSJwmB,GAAS,CACbsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACTnJ,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACVC,KAAM,oBACNC,UAAW,qBACX+I,SAAU,qBACV5I,MAAO,oBACPC,WAAY,qBACZ4I,UAAW,mBACXC,WAAY,gBACZC,YAAa,qBACbjJ,IAAK,mBACLkJ,WAAY,sBACZjJ,QAAS,mBACTyC,UAAW,gBACXyG,YAAa,kBACbC,WAAY,mBACZC,YAAa,qBAEb1G,aAAc,UACd2G,WAAY,UACZC,aAAc,UACdC,YAAa,UACbC,YAAa,WAWTC,GAAc,CAClB6G,aAAc,UACdC,OAAQ,UACRhO,MAAO,UACPuG,UAAW,WAGPgB,GAAa,CACjBC,SAAU,UACVC,aAAc,UACdC,UAAW,UACXC,aAAc,UACdC,UAAW3tC,GAAOuC,OAyGd4tC,GAAa,CACjB9+B,KAAM,UACN++B,UAAW,UACXC,YAAa,WAUTzC,GAAmB,CACvB//C,MAAOmS,GAAOuC,MACdsrC,UAAW,UACXE,SAAU,UACViG,WAAY,UACZ/N,UAAW,UACX+H,QAAS,sBAGLC,GAAa,CACjBC,YAAa,UACbC,gBAAiB,UACjBC,sBAAuB,UACvBC,kBAAmB,UACnBC,kBAAmB,KAGfkC,GAAsB,CAC1BC,wBAAyB,UACzBC,gCAAiC,OACjCC,+BAAgC,UAChCC,+BAAgC,UAChCC,gCAAiC,wBACjCC,sBAAuB,WAwKZmD,GAA0B,CACrCj0C,OADqC,GAErC4iC,YA3UkB,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MAuUJurC,YAHqC,GAIrCK,WAJqC,GAKrCkB,iBAxTuB,CACvBC,eAAgB,8BAChBC,UAAW,8BACXC,UAAW,8BACXC,aAAc,gCACdC,WAAY,0BAoTZC,oBAlT0B,CAC1BC,iBAAkB,WAClBC,mBAAoB,WACpBC,eAAgB,WAChBC,cAAe,WACfC,cAAe,WACfC,WAAY,SACZC,WAAY,UACZC,WAAY,WACZC,WAAY,YA0SZC,qBAxS2B,CAC3BT,iBAAkB,WAClBC,mBAAoB,OACpBC,eAAgB,OAChBC,cAAe,OACfC,cAAe,WACfC,WAAY,WACZC,WAAY,SACZC,WAAY,SACZC,WAAY,YAgSZE,eA7RqB,CACrB/+C,WAAY,MACZlK,OAAQ,MACRuX,MAAO,MACPC,MAAO,MACPT,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,QAsRJgyC,sBAnR4B,CAC5BC,mBAAoB,MACpBC,gBAAiB,MACjBC,gBAAiB,OACjBC,gBAAiB,OACjBC,mBAAoB,OA+QpBC,uBA5Q6B,CAC7BL,mBAAoB,OACpBC,gBAAiB,MACjBC,gBAAiB,MACjBC,gBAAiB,OACjBC,mBAAoB,QAwQpBr/C,WArQiB,CACjB6M,GAAI,CACF7jB,aAAc,SACdyrB,cAAe,aAEjB3H,GAAI,CACF9jB,aAAc,UACdyrB,cAAe,aAEjB1H,GAAI,CACF/jB,aAAc,OACdyrB,cAAe,aAEjBzH,GAAI,CACFhkB,aAAc,OACdyrB,cAAe,aAEjBxH,GAAI,CACFjkB,aAAc,OACdyrB,cAAe,aAEjBvH,GAAI,CACFlkB,aAAc,OACdyrB,cAAe,cA+OjB8iC,cA3OoB,CACpBC,YAAa,CACX+H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,IAGhB81C,mBAAoB,CAClB6H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,KA8NhB69C,WAbqC,GAcrCG,WApNiB,CACjBC,UAAW,WAoNX3C,iBAfqC,GAgBrCK,WAhBqC,GAiBrCuC,oBAjBqC,GAkBrCO,sBAxL4B,CAC5BC,0BAA2B,UAC3BC,iCAAkC,UAClCC,iCAAkC,UAClCC,kCAAmC,UACnCC,wBAAyB,WAoLzBC,qBAjL2B,CAC3BC,eAAgB,UAChBC,sBAAuB,UACvBC,sBAAuB,UACvBC,uBAAwB,UACxBC,gCAAiC,eA6KjCC,eA1KqB,CACrBC,qBAAsB,sBACtBC,oBAAqB,oBACrBj4D,aAAc,MACdurB,cAAe,QAuKf2sC,mBApKyB,CACzBC,eAAgB,UAChBC,kBAAmB,UACnBC,kBAAmB,UACnBC,gBAAiB,UAEjBC,aAAc,UACdC,gBAAiB,UACjBC,gBAAiB,UACjBC,cAAe,UAEf14D,aAAc,OA0Jd5S,OAvJa,CACb60B,KAAMoxC,GAAY6G,aAClBl4C,WAAY,cACZvgB,UAAW,QACXmpD,gBAAiB,OACjBG,WAAY,CACVC,WAAYuL,GAAW9+B,KACvBwzB,iBAAkB,OAClBZ,UAAWkM,GAAWC,UACtBtL,kBAAmB,UACnBC,oBAAqBkI,GAAY8G,QAEnCtsD,OAAQ,CACNjc,MAAO,OACP+4D,YAAa,KAEfS,MAAO,CACLn9C,MAAOylD,GAAWC,SAClBl0D,gBAAiB,gBAsInB6qD,OAlIa,CACbz8C,OAAQ,CACNI,MAAOolD,GAAYX,UACnBhsD,MAAO,OAET/G,QAAS0zD,GAAYX,UACrBzwC,KAAMmE,GAAOuC,MACb3G,WAAYqxC,GAAYX,UACxBnI,kBAAmB8I,GAAYX,UAC/BlyD,QAAS,CACP8B,OAAQ,SAyHVoqD,UArHgB,CAChBjtD,gBAAiBu0D,GAAiBC,UAClCj0D,aAAc,OACdiO,MAAOsoD,GAAW9+B,KAClBkhC,cAAe,WACfn+C,MAAO,CACL/a,gBAAiB,UACjBwO,MAAOsoD,GAAWC,WAEpB71D,WAAY,CACVlB,gBAAiB,UACjB+a,MAAO,CACL/a,gBAAiB,YAGrBe,QAAS,CACPrB,KAAM,OACNE,MAAO,SAqGTwvD,iBAjGuB,CACvB5gD,MAAO,UACPJ,OAAQ,CACNI,MAAOomD,GAAWC,YAClB5tD,MAAO,OAET9G,OAAQ,KA4FRkvD,gBAzFsB,CACtB5nD,OAAQ,CACN0P,UAAW,SACX,oCAAqC,CACnCA,UAAW,YAsFfq4C,MAjFY,CACZphD,OAAS,aAAYwlD,GAAY6G,eACjCl6D,aAAc,OACdk2B,KAAM,CACJz2B,gBAAiB4zD,GAAY6G,aAC7BjsD,MAAOmY,GAAOuC,OAEhBumC,IAAK,CACHC,KAAM,CACJ1vD,gBAAiB2mB,GAAOuC,QAG5BiwC,KAAM,CACJ/qD,OAAS,aAAYwmD,GAAWC,gBAqElClK,SAjEe,CACfzoC,SAAU,CACRK,WAAYqxC,GAAY6G,aACxBj4C,KAAMmE,GAAOuC,OAEf1G,KAAMs0C,GAAW9+B,KACjB4yB,UAAWkM,GAAWC,WA4DtBhL,iBAzDuB,CACvBvpC,KAAMmE,GAAOuC,MACbW,KAAMlD,GAAOuC,MACb8iC,gBAAiBmL,GAAoBC,wBACrCyD,qBAAsB1D,GAAoBG,+BAC1CrL,oBAAqB,cACrBC,wBAAyB0H,GAAY8G,OACrCvO,6BAA8ByH,GAAY6G,aAC1CrO,wBAAyBzlC,GAAOuC,MAChC3U,OAAQ,CACNC,MAAO,CACL+/C,iBAAkBX,GAAY6G,aAC9BrB,aAAc,WA8ClBtJ,GAjOS,CACT9vD,gBAAiB,WAiOjB+vD,cA1CoB,CACpBC,SAAU,CACRxhD,MAAOolD,GAAY8G,SAyCrB9K,OAtCa,CACbC,YAAa,CACXtvD,aAAc,SCrWZomB,GAAS,CACbsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACTnJ,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACVC,KAAM,oBACNC,UAAW,qBACX+I,SAAU,qBACV5I,MAAO,oBACPC,WAAY,qBACZ4I,UAAW,mBACXC,WAAY,gBACZC,YAAa,qBACbjJ,IAAK,mBACLkJ,WAAY,sBACZjJ,QAAS,mBACTyC,UAAW,gBACXyG,YAAa,kBACbC,WAAY,mBACZC,YAAa,qBAEb1G,aAAc,UACd2G,WAAY,UACZC,aAAc,UACdC,YAAa,UACbC,YAAa,WAWTC,GAAc,CAClB6G,aAAc,UACdK,eAAgB,WA8GZhE,GAAa,CACjB9+B,KAAM,UACN++B,UAAW,UACXC,YAAa,WAYTzC,GAAmB,CACvB//C,MAAO,QACPggD,UAAW,UACXE,SAAU,UACVqG,WAAY,UACZpG,QAAS,sBAGLC,GAAa,CACjBC,YAAa,UACbC,gBAAiB,UACjBE,kBAAmBpB,GAAYkH,eAC/B7F,kBAAmB,QAGfkC,GAAsB,CAC1BC,wBAAyB,UACzBE,+BAAgC1D,GAAYkH,eAC5CvD,+BAAgC3D,GAAYkH,eAC5CtD,gCAAiC,UACjCC,sBAAuB,WA+IZuD,GAAyB,CACpCr0C,OADoC,GAEpC4iC,YA5SkB,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MAwSJurC,YAHoC,GAIpCK,WAjSiB,CACjBC,SAAU,UACVE,UAAW,UACXC,aAAc,UACdC,UAAW3tC,GAAOuC,OA8RlBisC,iBA3RuB,CACvBC,eAAgB,0BAChBC,UAAW,0BACXC,UAAW,0BACXC,aAAc,uBACd0F,WAAY,2BAuRZxF,oBApR0B,CAC1BC,iBAAkB,WAClBC,mBAAoB,WACpBC,eAAgB,WAChBC,cAAe,WACfC,cAAe,WACfC,WAAY,OACZC,WAAY,SACZC,WAAY,WACZC,WAAY,YA4QZC,qBA1Q2B,CAC3BT,iBAAkB,WAClBC,mBAAoB,OACpBC,eAAgB,OAChBC,cAAe,OACfC,cAAe,WACfC,WAAY,WACZC,WAAY,UACZC,WAAY,SACZC,WAAY,YAkQZE,eAhQqB,CACrB/+C,WAAY,SACZlK,OAAQ,SACRuX,MAAO,SACPC,MAAO,SACPT,GAAI,SACJC,GAAI,SACJC,GAAI,SACJC,GAAI,UAyPJgyC,sBAvP4B,CAC5BC,mBAAoB,MACpBC,gBAAiB,OACjBC,gBAAiB,OACjBC,gBAAiB,OACjBC,mBAAoB,UAmPpBC,uBAhP6B,CAC7BL,mBAAoB,OACpBC,gBAAiB,MACjBC,gBAAiB,MACjBC,gBAAiB,OACjBC,mBAAoB,UA4OpB6D,YAzOkB,CAClBC,mBAAoB,UAyOpB1D,WAZoC,GAapCG,WAzLiB,CACjBC,UAAW,WAyLX3C,iBAdoC,GAepCK,WAfoC,GAgBpCuC,oBAhBoC,GAiBpCO,sBA7J4B,CAC5BC,0BAA2B,UAC3BC,iCAAkChE,GAAYkH,eAC9CjD,iCAAkCjE,GAAYkH,eAC9ChD,kCAAmC,UACnCC,wBAAyB,WAyJzBC,qBAtJ2B,CAC3BC,eAAgBrE,GAAYkH,eAC5B5C,sBAAuB,UACvBC,sBAAuB,UACvBC,uBAAwB,UACxBC,gCAAiCzE,GAAYkH,gBAkJ7CxC,eA/IqB,CACrBC,qBAAsB,YACtBC,oBAAqB,WACrBj4D,aAAc,OACdurB,cAAe,WA4If2sC,mBAzIyB,CACzBC,eAAgB,UAChBC,kBAAmB,UACnBC,kBAAmB,UACnBC,gBAAiB,UAEjBC,aAAc,UACdC,gBAAiB,UACjBC,gBAAiB,UACjBC,cAAe,WAiIftrE,OA9Ha,CACb60B,KAAMs0C,GAAW9+B,KACjBzV,WAAY,cACZvgB,UAAW,QACXmpD,gBAAiB,OACjBG,WAAY,CACVC,WAAY,UACZC,iBAAkB,OAClBZ,UAAWkM,GAAWC,UACtBtL,kBAAmB9kC,GAAOuC,MAC1BwiC,oBAAqBkI,GAAY6G,cAEnC9O,MAAO,CACLn9C,MAAOmY,GAAOuC,MACdlpB,gBAAiB2mB,GAAOsC,QAiH1B4hC,OA7Ga,CACbz8C,OAAQ,CACNI,MAAO,cACPvH,MAAO,OAET/G,QAASq0D,GAAiBC,UAC1BhyC,KAAM,UACND,WAAYgyC,GAAiBwG,WAC7BjQ,kBAAmByJ,GAAiBwG,WACpCh6D,QAAS,CACP8B,OAAQ,SAoGVoqD,UAhGgB,CAChBjtD,gBAAiBu0D,GAAiBC,UAClCj0D,aAAc,OACdiO,MAAOsoD,GAAW9+B,KAClBjjB,cAAe,MACf3G,OAAQ,OACR2M,MAAO,CACL3M,OAAS,OACTI,MAAOsoD,GAAWC,WAEpB71D,WAAY,CACVlB,gBAAiB,UACjB+a,MAAO,CACL/a,gBAAiB,UACjBwO,MAAOsoD,GAAWC,YAGtBh2D,QAAS,CACPrB,KAAM,OACNE,MAAO,SA8ET4vD,MAlEY,CACZphD,OAAS,aAAYwlD,GAAYkH,iBACjCv6D,aAAc,MACdk2B,KAAM,CACJz2B,gBAAiB4zD,GAAYkH,eAC7BtsD,MAAOmY,GAAOuC,OAEhBumC,IAAK,CACHC,KAAM,CACJ1vD,gBAAiB2mB,GAAOuC,QAG5BiwC,KAAM,CACJ/qD,OAAS,aAAYwmD,GAAWC,gBAsDlClK,SAlDe,CACfzoC,SAAU,CACRK,WAAYgyC,GAAiBC,UAC7BhyC,KAAMs0C,GAAW9+B,MAEnBxV,KAAMs0C,GAAW9+B,KACjB4yB,UAAWkM,GAAWC,WA6CtBhL,iBA1CuB,CACvBvpC,KAAMmE,GAAOuC,MACbW,KAAM,UACNmiC,gBAAiBmL,GAAoBC,wBACrCnL,oBAAqB2H,GAAY6G,aACjCvO,wBAAyB,UACzBC,6BAA8B,UAC9BC,wBAAyBwH,GAAY6G,aACrClmD,OAAQ,CACNC,MAAO,CACL+/C,iBAAkB,UAClB6E,aAAc,WAgClBtJ,GApMS,CACTjwD,OAAQ,MACR2O,MAAO,UACPxO,gBAAiB,WAkMjBqX,WAvPiB,CACjB6M,GAAI,CACF7jB,aAAc,UAEhB8jB,GAAI,CACF9jB,aAAc,UACdyrB,cAAe,QAEjB1H,GAAI,CACF/jB,aAAc,QAEhBgkB,GAAI,CACFhkB,aAAc,QAEhBikB,GAAI,CACFjkB,aAAc,QAEhBkkB,GAAI,CACFlkB,aAAc,SAsOhBuuD,cAlOoB,CACpBC,YAAa,CACX+H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,IAGhB81C,mBAAoB,CAClB6H,OAAQ,CACN39C,WAAY,IAEd49C,QAAS,CACP59C,WAAY,MAqNhBm2C,iBAhFuB,CACvBhhD,OAAQ,CACNI,MAAOomD,GAAWC,YAClB5tD,MAAO,OAET9G,OAAQ,MCjSJwmB,GAAS,CACbsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACTnJ,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACVC,KAAM,oBACNC,UAAW,qBACX+I,SAAU,qBACV5I,MAAO,oBACPC,WAAY,qBACZ4I,UAAW,mBACXC,WAAY,gBACZC,YAAa,qBACbjJ,IAAK,mBACLkJ,WAAY,sBACZjJ,QAAS,mBACTyC,UAAW,gBACXyG,YAAa,kBACbC,WAAY,mBACZC,YAAa,qBAEb1G,aAAc,UACd2G,WAAY,UACZC,aAAc,UACdC,YAAa,UACbC,YAAa,WAWTC,GAAc,CAClB/7C,QAAS,UACTG,UAAW,WA+GP8+C,GAAa,CACjB9+B,KAAM,UACN++B,UAAW,UACXC,YAAa,WASTzC,GAAmB,CACvB//C,MAAO,UACPggD,UAAW,YACXE,SAAU,UACVwG,UAAW,UACXvG,QAAS,sBAGLC,GAAa,CACjBC,YAAa,UACbC,gBAAiB,UACjBE,kBAAmB,WA8KRmG,GAAwB,CACnCx0C,OADmC,GAEnC4iC,YAhUkB,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MA4TJurC,YAHmC,GAInCK,WArTiB,CACjBC,SAAU,UACVkH,cAAe,UACfhH,UAAW,UACXC,aAAc,UACdC,UAAW3tC,GAAOuC,OAiTlBisC,iBA9SuB,CACvBC,eAAgB,wBAChBC,UAAW,wBACXC,UAAW,wBACXC,aAAc,+BACdC,WAAY,gCA0SZC,oBAvS0B,CAC1BC,iBAAkB,WAClBC,mBAAoB,OACpBC,eAAgB,WAChBC,cAAe,OACfC,cAAe,WACfC,WAAY,OACZC,WAAY,SACZC,WAAY,WACZC,WAAY,YA+RZC,qBA5R2B,CAC3BT,iBAAkB,UAClBC,mBAAoB,WACpBC,eAAgB,OAChBC,cAAe,WACfC,cAAe,WACfC,WAAY,WACZC,WAAY,UACZC,WAAY,SACZC,WAAY,YAoRZE,eAjRqB,CACrB/+C,WAAY,SACZlK,OAAQ,MACRuX,MAAO,SACPC,MAAO,SACPT,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OA0QJgyC,sBAvQ4B,CAC5BC,mBAAoB,OACpBC,gBAAiB,OACjBC,gBAAiB,OACjBC,gBAAiB,MACjBC,mBAAoB,QAmQpBC,uBAhQ6B,CAC7BL,mBAAoB,MACpBC,gBAAiB,MACjBC,gBAAiB,MACjBC,gBAAiB,OACjBC,mBAAoB,QA4PpBr/C,WAzPiB,CACjB6M,GAAI,CACF7jB,aAAc,UAEhB8jB,GAAI,CACF9jB,aAAc,UACdyrB,cAAe,QAEjB1H,GAAI,CACF/jB,aAAc,QAEhBgkB,GAAI,CACFhkB,aAAc,QAEhBikB,GAAI,CACFjkB,aAAc,QAEhBkkB,GAAI,CACFlkB,aAAc,SAwOhBuuD,cApOoB,CACpBC,YAAa,CACX+H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,IAGhB81C,mBAAoB,CAClB6H,OAAQ,CACN39C,WAAY,IAEd49C,QAAS,CACP59C,WAAY,MAuNhB69C,WAbmC,GAcnCG,WA7MiB,CACjBC,UAAW,WA6MX3C,iBAfmC,GAgBnCK,WAhBmC,GAiBnCuC,oBA5L0B,CAC1BC,wBAAyB,UACzBE,+BAAgC,UAChCC,+BAAgC,UAChCC,gCAAiC,UACjCC,sBAAuB,WAwLvBC,sBArL4B,CAC5BC,0BAA2B,UAC3BC,iCAAkC,UAClCC,iCAAkC,UAClCC,kCAAmC,UACnCC,wBAAyB,UACzBsD,+BAAgC,UAChCC,+BAAgC,UAChCC,gCAAiC,WA8KjCvD,qBA3K2B,CAC3BC,eAAgB,UAChBC,sBAAuB,UACvBC,sBAAuB,UACvBC,uBAAwB,UACxBC,gCAAiC,WAuKjCC,eAxJqB,CACrBC,qBAAsB,sBACtBC,oBAAqB,qBACrBj4D,aAAc,IACdurB,cAAe,WAqJf2sC,mBArKyB,CACzBC,eAAgB,UAChBC,kBAAmB,UACnBC,kBAAmB,UACnBC,gBAAiB,UAEjBC,aAAc,UACdC,gBAAiB,UACjBC,gBAAiB,UACjBC,cAAe,WA6JftrE,OAnJa,CACb60B,KAAMmE,GAAOuC,MACb3G,WAAYgyC,GAAiBG,SAC7B1yD,UAAW,QACXmpD,gBAAiB,OACjBG,WAAY,CACVC,WAAYqI,GAAY/7C,QACxB2zC,iBAAkB,OAClBZ,UAAWkM,GAAWC,UACtBtL,kBAAmB9kC,GAAOuC,MAC1BwiC,oBAAqB/kC,GAAOuC,OAE9B9a,OAAQ,CACNjc,MAAO,OACP+4D,YAAa,GAEfS,MAAO,CACLn9C,MAAOmY,GAAOuC,MACdlpB,gBAAiB2mB,GAAOsC,QAkI1B4hC,OA9Ha,CACbz8C,OAAQ,CACNI,MAAO,cACPvH,MAAO,OAET/G,QAAS0zD,GAAY/7C,QACrB2K,KAAMmE,GAAOuC,MACb3G,WAAYgyC,GAAiBG,SAC7B5J,kBAAmByJ,GAAiBG,SACpC3zD,QAAS,CACP8B,OAAQ,SAqHVoqD,UAjHgB,CAChBjtD,gBAAiBu0D,GAAiBC,UAClCj0D,aAAc,OACdiO,MAAOsoD,GAAW9+B,KAClBjjB,cAAe,MACfgG,MAAO,CACL/a,gBAAiB2mB,GAAOuC,MACxB1a,MAAOsoD,GAAW/7C,OAEpB7Z,WAAY,CACVlB,gBAAiB,UACjB+a,MAAO,CACL/a,gBAAiB,YAGrBe,QAAS,CACPrB,KAAM,OACNE,MAAO,QAiGTwvD,iBA9FuB,CACvB5gD,MAAOmY,GAAOuC,MACd9a,OAAQ,CACNI,MAAOomD,GAAWC,YAClB5tD,MAAO,OAET9G,OAAQ,KAyFRkvD,gBAtFsB,CACtB5nD,OAAQ,CACN0P,UAAW,SACX,oCAAqC,CACnCA,UAAW,YAmFfq4C,MA9EY,CACZphD,OAAQ,OACR7N,aAAc,EACdk2B,KAAM,CACJz2B,gBAAiBu0D,GAAiBG,SAClClmD,MAAOmY,GAAOuC,OAEhBumC,IAAK,CACHzvD,gBAAiB2mB,GAAOuC,MACxBwmC,KAAM,CACJ1vD,gBAAiB2mB,GAAOuC,QAG5BiwC,KAAM,CACJ/qD,OAAS,aAAYwmD,GAAWC,gBAiElClK,SA7De,CACfzoC,SAAU,CACRK,WAAYgyC,GAAiBC,UAC7BhyC,KAAMs0C,GAAW9+B,MAEnBxV,KAAMs0C,GAAW9+B,KACjB4yB,UAAWkM,GAAWC,WAwDtBhL,iBArDuB,CACvBvpC,KAAMmE,GAAOuC,MACbW,KAAMlD,GAAOuC,MACb8iC,gBAAiBuI,GAAiBG,SAClCzI,oBAAqBtlC,GAAOqsC,SAC5B9G,wBAAyB0H,GAAY/7C,QACrCs0C,6BAA8ByH,GAAY57C,UAC1Co0C,wBAAyBzlC,GAAOuC,MAChC3U,OAAQ,CACNC,MAAO,CACL+/C,iBAAkBA,GAAiBG,SACnC0E,aAAc,WA2ClBzJ,gBAtCsB,CACtB7vD,QAAS,CACPE,gBAAiB,QACjBe,QAAS,OACTlB,OAAQ,SAmCViwD,GA1NS,CAAC,GCpKNnpC,GAAS,CACbsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACTnJ,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACVC,KAAM,oBACNC,UAAW,qBACX+I,SAAU,qBACV5I,MAAO,oBACPC,WAAY,qBACZ4I,UAAW,mBACXC,WAAY,gBACZC,YAAa,qBACbjJ,IAAK,mBACLkJ,WAAY,sBACZjJ,QAAS,mBACTyC,UAAW,gBACXyG,YAAa,kBACbC,WAAY,mBACZC,YAAa,qBAEb1G,aAAc,UACd2G,WAAY,UACZC,aAAc,UACdC,YAAa,UACbC,YAAa,WAWTC,GAAc,CAClB6G,aAAc,UACdK,eAAgB,UAChBU,OAAQ,UACR9O,MAAO,UACP+O,MAAO,UACP9R,KAAM,WA6GFmN,GAAa,CACjB9+B,KAAM47B,GAAYlH,MAClBqK,UAAW,UACXC,YAAa,WAYTzC,GAAmB,CACvB//C,MAAO,QACPggD,UAAW,UACXE,SAAU,UACVqG,WAAY,UACZpG,QAAS,sBAGLC,GAAa,CACjBC,YAAa,UACbC,gBAAiB,UACjBE,kBAAmBpB,GAAYlH,MAC/BuI,kBAAmB,KAGfkC,GAAsB,CAC1BC,wBAAyBxD,GAAYlH,MACrC4K,+BAAgC1D,GAAYkH,eAC5CvD,+BAAgC3D,GAAYkH,eAC5CtD,gCAAiC,UACjCC,sBAAuB7D,GAAY6H,OAqJxBC,GAA+B,CAC1C/0C,OAD0C,GAE1C4iC,YArTkB,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MAiTJurC,YAH0C,GAI1CK,WAtSiB,CACjBC,SAAUN,GAAY4H,OACtBpH,UAAW,UACXC,aAAc,UACdC,UAAW3tC,GAAOuC,OAmSlBisC,iBAjSuB,CACvBC,eAAgB,sBAChBC,UAAW,sBACXC,UAAW,sBACXC,aAAc,2BACd0F,WAAY,4BA6RZxF,oBA1R0B,CAC1BC,iBAAkB,WAClBC,mBAAoB,WACpBC,eAAgB,WAChBC,cAAe,WACfC,cAAe,WACfC,WAAY,OACZC,WAAY,SACZC,WAAY,WACZC,WAAY,YAkRZC,qBAhR2B,CAC3BT,iBAAkB,WAClBC,mBAAoB,OACpBC,eAAgB,OAChBC,cAAe,OACfC,cAAe,WACfC,WAAY,SACZC,WAAY,OACZC,WAAY,SACZC,WAAY,YAwQZE,eAtQqB,CACrB/+C,WAAY,SACZlK,OAAQ,SACRuX,MAAO,SACPC,MAAO,SACPT,GAAI,SACJC,GAAI,SACJC,GAAI,SACJC,GAAI,UA+PJgyC,sBA7P4B,CAC5BC,mBAAoB,MACpBC,gBAAiB,OACjBC,gBAAiB,OACjBC,gBAAiB,OACjBC,mBAAoB,UAyPpBC,uBAtP6B,CAC7BL,mBAAoB,OACpBC,gBAAiB,MACjBC,gBAAiB,MACjBC,gBAAiB,OACjBC,mBAAoB,UAkPpB6D,YA/OkB,CAClBC,mBAAoB,UA+OpB1D,WAZ0C,GAa1CG,WA/LiB,CACjBC,UAAWtD,GAAY4H,QA+LvBjH,iBAd0C,GAe1CK,WAf0C,GAgB1CuC,oBAhB0C,GAiB1CO,sBAnK4B,CAC5BC,0BAA2B/D,GAAYlH,MACvCkL,iCAAkChE,GAAYkH,eAC9CjD,iCAAkCjE,GAAYkH,eAC9ChD,kCAAmC,UACnCC,wBAAyBnE,GAAY6H,OA+JrCzD,qBA5J2B,CAC3BC,eAAgBrE,GAAYlH,MAC5BwL,sBAAuBtE,GAAYkH,eACnC3C,sBAAuBvE,GAAYkH,eACnC1C,uBAAwB,UACxBC,gCAAiCzE,GAAYlH,OAwJ7C4L,eArJqB,CACrBC,qBAAsB,sBACtBC,oBAAqB,qBACrBj4D,aAAc,IACdurB,cAAe,WAkJf2sC,mBA/IyB,CACzBC,eAAgB,UAChBC,kBAAmB,UACnBC,kBAAmB,UACnBC,gBAAiB,UAEjBC,aAAc,UACdC,gBAAiB,UACjBC,gBAAiB,UACjBC,cAAe,WAuIftrE,OApIa,CACb60B,KAAMs0C,GAAW9+B,KACjBzV,WAAY,cACZvgB,UAAW,QACXmpD,gBAAiB,OACjBG,WAAY,CACVC,WAAYqI,GAAYkH,eACxBtP,iBAAkB,OAClBZ,UAAWkM,GAAWC,UACtBtL,kBAAmB9kC,GAAOuC,MAC1BwiC,oBAAqBkI,GAAY6G,cAEnC9O,MAAO,CACLn9C,MAAOolD,GAAY4H,OACnBx7D,gBAAiB,gBAuHnB6qD,OAnHa,CACbz8C,OAAQ,CACNI,MAAO,cACPvH,MAAO,OAET/G,QAAS,UACTsiB,KAAM,UACND,WAAYqxC,GAAYlH,MACxB5B,kBAAmB8I,GAAYlH,MAC/B3rD,QAAS,CACP8B,OAAQ,SA0GVoqD,UAtGgB,CAChBjtD,gBAAiBu0D,GAAiBC,UAClCj0D,aAAc,IACdiO,MAAOsoD,GAAW9+B,KAClBjjB,cAAe,MACf3G,OAAQ,OACR2M,MAAO,CACL3M,OAAS,OACTI,MAAOsoD,GAAWC,WAEpB71D,WAAY,CACVlB,gBAAiB,UACjB+a,MAAO,CACL/a,gBAAiB,UACjBwO,MAAOsoD,GAAWC,YAGtBh2D,QAAS,CACPrB,KAAM,OACNE,MAAO,SAoFT4vD,MAxEY,CACZphD,OAAS,aAAYwlD,GAAYkH,iBACjCv6D,aAAc,MACdk2B,KAAM,CACJz2B,gBAAiB4zD,GAAYkH,eAC7BtsD,MAAOmY,GAAOuC,OAEhBumC,IAAK,CACHC,KAAM,CACJ1vD,gBAAiB2mB,GAAOuC,QAG5BiwC,KAAM,CACJ/qD,OAAS,aAAYwmD,GAAWC,gBA4DlClK,SAxDe,CACfzoC,SAAU,CACRK,WAAYgyC,GAAiBC,UAC7BhyC,KAAMs0C,GAAW9+B,MAEnBxV,KAAMs0C,GAAW9+B,KACjB4yB,UAAWkM,GAAWC,WAmDtBhL,iBAhDuB,CACvBvpC,KAAMoxC,GAAY4H,OAClB3xC,KAAM+pC,GAAY4H,OAClBxP,gBAAiBmL,GAAoBC,wBACrCnL,oBAAqB,cACrBC,wBAAyB,cACzBC,6BAA8ByH,GAAYlH,MAC1CN,wBAAyBwH,GAAY4H,OACrCjnD,OAAQ,CACNC,MAAO,CACL+/C,iBAAkBX,GAAY6H,MAC9BrC,aAAc,WAsClBtJ,GA1MS,CACTjwD,OAAQ,MACR2O,MAAO,UACPxO,gBAAiB,WAwMjBqX,WA7PiB,CACjB6M,GAAI,CACF7jB,aAAc,UAEhB8jB,GAAI,CACF9jB,aAAc,UACdyrB,cAAe,QAEjB1H,GAAI,CACF/jB,aAAc,QAEhBgkB,GAAI,CACFhkB,aAAc,QAEhBikB,GAAI,CACFjkB,aAAc,QAEhBkkB,GAAI,CACFlkB,aAAc,SA4OhBuuD,cAxOoB,CACpBC,YAAa,CACX+H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,IAGhB81C,mBAAoB,CAClB6H,OAAQ,CACN39C,WAAY,IAEd49C,QAAS,CACP59C,WAAY,MA2NhBm2C,iBAtFuB,CACvBhhD,OAAQ,CACNI,MAAOomD,GAAWC,YAClB5tD,MAAO,OAET9G,OAAQ,KAkFRyvD,OArCa,CACbC,YAAa,CACX9uD,QAAS,uBC9UP4lB,GAAS,CACbsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACTnJ,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACVC,KAAM,oBACNC,UAAW,qBACX+I,SAAU,qBACV5I,MAAO,oBACPC,WAAY,qBACZ4I,UAAW,mBACXC,WAAY,gBACZC,YAAa,qBACbjJ,IAAK,mBACLkJ,WAAY,sBACZjJ,QAAS,mBACTyC,UAAW,gBACXyG,YAAa,kBACbC,WAAY,mBACZC,YAAa,qBAEb1G,aAAc,UACd2G,WAAY,UACZC,aAAc,UACdC,YAAa,UACbC,YAAa,WAWTC,GAAc,CAClB6G,aAAc,UACdK,eAAgB,UAChBnR,KAAM,WAGFsK,GAAa,CACjBC,SAAU,UACVE,UAAW,UACXC,aAAc,UACdC,UAAW3tC,GAAOkjC,aAsGdiN,GAAa,CACjB9+B,KAAM47B,GAAY6G,aAClB1D,UAAW,UACXC,YAAa,WAQTzC,GAAmB,CACvB//C,MAAOmS,GAAOkjC,YACd2K,UAAW,UACXE,SAAU,UACVqG,WAAY,UACZpG,QAAS,sBAyKEgH,GAA2B,CACtCh1C,OADsC,GAEtC4iC,YAnTkB,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MA+SJurC,YAHsC,GAItCK,WAJsC,GAKtCkB,iBAlSuB,CACvBC,eAAgB,qBAChBC,UAAW,qBACXC,UAAW,qBACXC,aAAc,qBACd0F,WAAY,sBA8RZxF,oBA3R0B,CAC1BC,iBAAkB,WAClBC,mBAAoB,WACpBC,eAAgB,WAChBC,cAAe,WACfC,cAAe,WACfC,WAAY,WACZC,WAAY,SACZC,WAAY,WACZC,WAAY,YAmRZC,qBAjR2B,CAC3BT,iBAAkB,WAClBC,mBAAoB,OACpBC,eAAgB,OAChBC,cAAe,OACfC,cAAe,WACfC,WAAY,OACZC,WAAY,OACZC,WAAY,SACZC,WAAY,YAyQZE,eAvQqB,CACrB/+C,WAAY,SACZlK,OAAQ,MACRuX,MAAO,SACPC,MAAO,SACPT,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OAgQJgyC,sBA9P4B,CAC5BC,mBAAoB,MACpBC,gBAAiB,OACjBC,gBAAiB,OACjBC,gBAAiB,OACjBC,mBAAoB,UA0PpBC,uBAvP6B,CAC7BL,mBAAoB,OACpBC,gBAAiB,MACjBC,gBAAiB,MACjBC,gBAAiB,OACjBC,mBAAoB,OAmPpB6D,YAhPkB,CAClBC,mBAAoB,UAgPpB1D,WAZsC,GAatCG,WAhMiB,CACjBC,UAAW,WAgMX3C,iBAdsC,GAetCK,WArLiB,CACjBC,YAAa,UACbC,gBAAiB,UACjBC,sBAAuB,UACvBC,kBAAmB,UACnBC,kBAAmB,KAiLnBkC,oBA9K0B,CAC1BC,wBAAyBxD,GAAYkH,eACrCxD,+BAAgC1D,GAAY6G,aAC5ClD,+BAAgC3D,GAAY6G,aAC5CjD,gCAAiC,UACjCC,sBAAuB,SA0KvBC,sBAvK4B,CAC5BC,0BAA2B/D,GAAY6G,aACvC7C,iCAAkChE,GAAYkH,eAC9CjD,iCAAkCjE,GAAYkH,eAC9ChD,kCAAmC,UACnCC,wBAAyB,SAmKzBC,qBAhK2B,CAC3BC,eAAgBrE,GAAYkH,eAC5B5C,sBAAuB,UACvBG,gCAAiC,cACjCF,sBAAuB,UACvBC,uBAAwB,WA4JxBE,eAzJqB,CACrBC,qBAAsB,WACtBC,oBAAqB,YACrBj4D,aAAc,IACdurB,cAAe,YACf/Q,MAAO,CACLsH,OAAQ,SAoJVo2C,mBAhJyB,CACzBC,eAAgB,UAChBC,kBAAmB,UACnBC,kBAAmB,UACnBC,gBAAiB,UAEjBC,aAAc,UACdC,gBAAiB,UACjBC,gBAAiB,UACjBC,cAAe,WAwIftrE,OArIa,CACb6gB,MAAOmY,GAAOkjC,YACdrnC,KAAMmE,GAAOkjC,YACbtnC,WAAY,iFACZvgB,UAAW,OACXmpD,gBAAiB,OACjBG,WAAY,CACVC,WAAYqI,GAAY6G,aACxBjP,iBAAkB,OAClBZ,UAAWkM,GAAWC,UACtBtL,kBAAmB,gFACnBC,oBAAqBkI,GAAY6G,cAEnC9O,MAAO,CACLn9C,MAAOmY,GAAOkjC,YACd7pD,gBAAiB,gBAuHnB6qD,OAnHa,CACbz8C,OAAQ,CACNI,MAAO,cACPvH,MAAO,GAET/G,QAAS,UACTsiB,KAAMyxC,GAAWC,SACjB3xC,WAAYgyC,GAAiBC,UAC7B1J,kBAAmByJ,GAAiBC,UACpCzzD,QAAS,CACP8B,OAAQ,IA0GVoqD,UAtGgB,CAChBjtD,gBAAiBu0D,GAAiBC,UAClCj0D,aAAc,IACdiO,MAAOolD,GAAYkH,eACnB/lD,cAAe,MACf3G,OAAQ,OACR2M,MAAO,CACL3M,OAAS,OACTI,MAAOsoD,GAAWC,WAEpB71D,WAAY,CACVlB,gBAAiB,UACjB+a,MAAO,CACL/a,gBAAiB,UACjBwO,MAAOsoD,GAAWC,YAGtBh2D,QAAS,CACPrB,KAAM,OACNE,MAAO,SAoFT4vD,MAvEY,CACZphD,OAAS,OACT7N,aAAc,MACdk2B,KAAM,CACJz2B,gBAAiB,eAEnByvD,IAAK,CACHC,KAAM,CACJ1vD,gBAAiB,gBAGrBm5D,KAAM,CACJ/qD,OAAS,SA4DXu8C,SAxDe,CACfzoC,SAAU,CACRK,WAAYgyC,GAAiBC,UAC7BhyC,KAAMs0C,GAAW9+B,MAEnBxV,KAAMs0C,GAAW9+B,KACjB4yB,UAAWkM,GAAWC,WAmDtBhL,iBAhDuB,CACvBvpC,KAAMmE,GAAOkjC,YACbhgC,KAAMlD,GAAOkjC,YACbmC,gBAAiB4H,GAAY6G,aAC7BxO,oBAAqB,cACrBC,wBAAyB,cACzBC,6BAA8ByH,GAAY6G,aAC1CrO,wBAAyBzlC,GAAOkjC,YAChCt1C,OAAQ,CACNC,MAAO,CACL+/C,iBAAkBX,GAAYkH,eAC9B1B,aAAc,WAsClBtJ,GA3MS,CAAC,EA4MVz4C,WA9PiB,CACjB6M,GAAI,CACF7jB,aAAc,UAEhB8jB,GAAI,CACF9jB,aAAc,UACdyrB,cAAe,QAEjB1H,GAAI,CACF/jB,aAAc,QAEhBgkB,GAAI,CACFhkB,aAAc,QAEhBikB,GAAI,CACFjkB,aAAc,QAEhBkkB,GAAI,CACFlkB,aAAc,SA6OhBuuD,cAzOoB,CACpBC,YAAa,CACX+H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,IAGhB81C,mBAAoB,CAClB6H,OAAQ,CACN39C,WAAY,IAEd49C,QAAS,CACP59C,WAAY,MA4NhBm2C,iBAtFuB,CACvB5gD,MAAO,QACPJ,OAAQ,CACNI,MAAOmY,GAAOkjC,YACd5iD,MAAO,OAET9G,OAAQ,KAiFRyvD,OArCa,CACbC,YAAa,CACX9uD,QAAS,uBChVP4lB,GAAS,CACbsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACTnJ,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACVC,KAAM,oBACNC,UAAW,qBACX+I,SAAU,qBACV5I,MAAO,oBACPC,WAAY,qBACZ4I,UAAW,mBACXC,WAAY,gBACZC,YAAa,qBACbjJ,IAAK,mBACLkJ,WAAY,sBACZjJ,QAAS,mBACTyC,UAAW,gBACXyG,YAAa,kBACbC,WAAY,mBACZC,YAAa,qBAEb1G,aAAc,UACd2G,WAAY,UACZC,aAAc,UACdC,YAAa,UACbC,YAAa,WAWTC,GAAc,CAClB6G,aAAc,UACdK,eAAgB,WAGZ7G,GAAa,CACjBC,SAAUvtC,GAAOsC,MACjBmrC,UAAW,UACXC,aAAc,UACdC,UAAW3tC,GAAOuC,MAClB0yC,gBAAiBj1C,GAAO2sC,YAEpB6B,GAAmB,CACvBC,eAAgB,6BAChBC,UAAW,6BACXC,UAAW,6BACXC,aAAc,iCACdrxC,GAAI,iCACJC,GAAI,iCACJC,GAAI,6BACJC,GAAI,6BACJC,GAAI,6BACJC,GAAI,6BACJ02C,WAAY,8BA6GRnE,GAAa,CACjB9+B,KAAM,UACN++B,UAAW,UACXC,YAAa,WAWTzC,GAAmB,CACvB//C,MAAO,UACPggD,UAAW,UACXE,SAAU,UACVqG,WAAY,UACZpG,QAAS,qBACTkH,UAAW,WAyNAC,GAA0B,CACrCn1C,OADqC,GAErC4iC,YA3XkB,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MAuXJurC,YAHqC,GAIrCK,WAJqC,GAKrCkB,iBALqC,GAMrCM,oBA7V0B,CAC1BC,iBAAkB,WAClBC,mBAAoB,WACpBC,eAAgB,WAChBC,cAAe,WACfC,cAAe,WACfC,WAAY,UACZC,WAAY,UACZC,WAAY,UACZC,WAAY,QAqVZC,qBAnV2B,CAC3BT,iBAAkB,WAClBC,mBAAoB,OACpBC,eAAgB,OAChBC,cAAe,OACfC,cAAe,WACfC,WAAY,SACZC,WAAY,OACZC,WAAY,SACZC,WAAY,YA2UZE,eAzUqB,CACrB/+C,WAAY,SACZlK,OAAQ,MACRuX,MAAO,SACPC,MAAO,SACPT,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OAkUJgyC,sBAhU4B,CAC5BC,mBAAoB,MACpBC,gBAAiB,OACjBC,gBAAiB,OACjBC,gBAAiB,OACjBC,mBAAoB,SACpBxyC,GAAI,SACJC,GAAI,SACJC,GAAI,OACJC,GAAI,OACJC,GAAI,OAuTJqyC,uBApT6B,CAC7BL,mBAAoB,OACpBC,gBAAiB,MACjBC,gBAAiB,MACjBC,gBAAiB,OACjBC,mBAAoB,MACpBxyC,GAAI,QACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OA4SJk2C,YAzSkB,CAClBC,mBAAoB,UAySpB1D,WAZqC,GAarCG,WApPiB,CACjBC,UAAW,WAoPX3C,iBAdqC,GAerCK,WArOiB,CACjBC,YAAa,UACbC,gBAAiB,UACjBC,sBAAuB,UACvBC,kBAAmB,UACnBC,kBAAmB,KAiOnBkC,oBA9N0B,CAC1BC,wBAAyBxD,GAAY6G,aACrCnD,+BAAgC1D,GAAYkH,eAC5CvD,+BAAgC3D,GAAYkH,eAC5CtD,gCAAiC,UACjCC,sBAAuB,UAEvBsE,oBAAqBnI,GAAY6G,aACjCuB,2BAA4B,UAC5BC,yBAA0BrI,GAAYkH,gBAsNtCpD,sBAnN4B,CAC5BC,0BAA2B/D,GAAY6G,aACvC7C,iCAAkChE,GAAYkH,eAC9CjD,iCAAkCjE,GAAYkH,eAC9ChD,kCAAmC,UACnCC,wBAAyB,WA+MzBC,qBA5M2B,CAC3BC,eAAgBrE,GAAY6G,aAC5BvC,sBAAuBtE,GAAYkH,eACnCzC,gCAAiC,cACjCF,sBAAuBvE,GAAYkH,eACnC1C,uBAAwB,WAwMxBE,eArMqB,CACrBC,qBAAsB,WACtBC,oBAAqB,YACrBj4D,aAAc,MACdurB,cAAe,OACf/Q,MAAO,CACLsH,OAAQ,SAgMVo2C,mBA5LyB,CACzBC,eAAgB,UAChBC,kBAAmB,UACnBC,kBAAmB,UACnBC,gBAAiB,UAEjBC,aAAc,UACdC,gBAAiB,UACjBC,gBAAiB,UACjBC,cAAe,WAoLftrE,OAjLa,CACb6gB,MAAOmY,GAAOuC,MACd1G,KAAMmE,GAAOuC,MACb3G,WAAY,UACZvgB,UAAW,OACXmpD,gBAAiB,OACjBG,WAAY,CACVC,WAAYuL,GAAW9+B,KACvBwzB,iBAAkB,OAClBZ,UAAWkM,GAAWC,UACtBtL,kBAAmB,UACnBC,oBAAqB/kC,GAAOuC,OAE9ByiC,MAAO,CACLn9C,MAAOmY,GAAOsC,MACdjpB,gBAAiB,gBAmKnB6qD,OA/Ja,CACbz8C,OAAQ,CACNI,MAAO,cACPvH,MAAO,GAET/G,QAASymB,GAAOuC,MAChB1G,KAAMyxC,GAAWK,UACjB/xC,WAAY,UACZuoC,kBAAmB,UACnB/pD,QAAS,CACP8B,OAAQ,IAsJVoqD,UAlJgB,CAChBjtD,gBAAiB2mB,GAAOuC,MACxB3oB,aAAc,MACdiO,MAAO,UACPuG,cAAe,MACf3G,OAAQ,OACR2M,MAAO,CACL3M,OAAS,OACTI,MAAO,WAETtN,WAAY,CACVlB,gBAAiB,UACjB+a,MAAO,CACL/a,gBAAiB,UACjBwO,MAAOsoD,GAAWC,YAGtBh2D,QAAS,CACPrB,KAAM,OACNE,MAAO,QAETs8D,SAAU,CACR1tD,MAAO,WAET2tD,UAAW,CACT3tD,MAAO,UACP,UAAW,CACTA,MAAO,aAwHX5P,MApHY,CACZK,KAAM,CACJ8B,QAAS,sBACTR,aAAc,MACdF,aAAc,OACdL,gBAAiB2mB,GAAOuC,OAE1B+mC,IAAK,CACH/jC,WAAYipC,GAAiBI,aAC7Bn+C,SAAU,OACV5I,MAAOylD,GAAWC,SAClBhnC,WAAY,MACZ9sB,UAAW,SAEbk0B,MAAO,CACLld,SAAU,OACV5I,MAAO,UACP0e,WAAY,MACZpB,cAAe,YACfqB,WAAY,QAEd1qC,KAAM,CACJ+rB,MAAOsoD,GAAW9+B,KAClB9K,WAAY,MACZpB,cAAe,aAEjBokC,iBAAkB,CAChB1hD,MAAO,UACP4I,SAAU,QAEZyS,KAAM,CACJrb,MAAOsoD,GAAW9+B,KAClB5gB,SAAU,SAqFZo4C,MAxEY,CACZphD,OAAS,aAAYuY,GAAO2sC,aAC5B/yD,aAAc,MACdk2B,KAAM,CACJz2B,gBAAiB,eAEnByvD,IAAK,CACHC,KAAM,CACJ1vD,gBAAiB,gBAGrBm5D,KAAM,CACJ/qD,OAAS,aAAYuY,GAAO2sC,eA6D9B3I,SAzDe,CACfzoC,SAAU,CACRK,WAAYgyC,GAAiBC,UAC7BhyC,KAAM,WAERA,KAAM,UACNooC,UAAW,WAoDXmB,iBAjDuB,CACvBvpC,KAAMmE,GAAOuC,MACbW,KAAMlD,GAAOuC,MACb8iC,gBAAiB,UACjBC,oBAAqB,UACrBC,wBAAyB,cACzBC,6BAA8ByH,GAAY6G,aAC1CrO,wBAAyBwH,GAAYkH,eACrCvmD,OAAQ,CACNC,MAAO,CACL+/C,iBAAkB,UAClB6E,aAAc,WAuClBtJ,GAhQS,CACTthD,MAAO,UACPxO,gBAAiB,WA+PjBqX,WAxTiB,CACjB6M,GAAI,CACF7jB,aAAc,SACdyrB,cAAe,aAEjB3H,GAAI,CACF9jB,aAAc,UACdyrB,cAAe,aAEjB1H,GAAI,CACF/jB,aAAc,OACdyrB,cAAe,aAEjBzH,GAAI,CACFhkB,aAAc,OACdyrB,cAAe,aAEjBxH,GAAI,CACFjkB,aAAc,OACdyrB,cAAe,aAEjBvH,GAAI,CACFlkB,aAAc,OACdyrB,cAAe,cAkSjB8iC,cA9RoB,CACpBC,YAAa,CACX+H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,IAGhB81C,mBAAoB,CAClB6H,OAAQ,CACN39C,WAAY,GAEd49C,QAAS,CACP59C,WAAY,KAiRhBm2C,iBAvFuB,CACvB5gD,MAAO,QACPJ,OAAQ,CACNI,MAAOmY,GAAOuC,MACdjiB,MAAO,OAET9G,OAAQ,KAkFRyvD,OAtCa,CACbC,YAAa,CACX9uD,QAAS,uBChYb,IAAIq7D,GAAoBlH,GACpBmH,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,UAClBH,GAAoBlH,GACXmH,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,oBACzBH,GAAoB/C,GACXgD,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,QACzBH,GAAoBtC,GACXuC,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,UACzBH,GAAoBrC,GACXsC,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,aACzBH,GAAoBhC,GACXiC,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,UACzBH,GAAoB9B,GACX+B,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,aACzBH,GAAoBxB,GACXyB,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,YACzBH,GAAoBpB,GACXqB,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,WACzBH,GAAoBjB,GACXkB,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,kBACzBH,GAAoBV,GACXW,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,cACzBH,GAAoBT,GACXU,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,eACzBH,GAAoBN,IAGtB,MAAMz8D,IAAQ0uB,EAAAA,EAAAA,GAAY,CAAC,GA00B3B,QAx0BqBA,EAAAA,EAAAA,GAAY,CAC/BnK,YAAa,CACXhf,OAAQw3D,GAAkB7S,aAE5BxlC,OAAQ,CACNC,QAAS,CACPhiB,UAAW,SAGfqV,WAAY,CACV6U,WAAYkwC,GAAkBjH,iBAAiBC,eAC/C/oC,gBAAiB,MACjBE,kBAAmB,MACnBE,iBAAkB,MAClBE,eAAgB,MAChBzI,GAAI,CACF1V,MAAO4tD,GAAkBnI,WAAWE,aACpCjoC,WAAY/tC,KAAIi+E,GAAmB,sBAAuBA,GAAkBjH,iBAAiBI,cAC7Fn+C,SAAUglD,GAAkB3G,oBAAoBM,WAChD7oC,WAAYkvC,GAAkBhG,eAAelyC,GAC7C7jB,aAAc+7D,GAAkB/kD,WAAW6M,GAAG7jB,aAC9C8sB,WAAYhvC,KACVi+E,GACA,2BACAA,GAAkB/F,sBAAsBK,oBAE1C5qC,cAAe3tC,KAAIi+E,GAAmB,8BAA+B,QACrE,CAAC/8D,GAAMukB,YAAYC,GAAGu4C,GAAkB7S,YAAYphC,KAAM,CACxD/Q,SAAUglD,GAAkBjG,qBAAqBJ,WACjD5oC,WAAYhvC,KACVi+E,GACA,4BACAA,GAAkBzF,uBAAuBD,sBAI/CvyC,GAAI,CACF3V,MAAO4tD,GAAkBnI,WAAWE,aACpCjoC,WAAY/tC,KAAIi+E,GAAmB,sBAAuBA,GAAkBjH,iBAAiBI,cAC7Fn+C,SAAUglD,GAAkB3G,oBAAoBO,WAChD9oC,WAAYkvC,GAAkBhG,eAAejyC,GAC7C9jB,aAAc+7D,GAAkB/kD,WAAW8M,GAAG9jB,aAC9C8sB,WAAYhvC,KACVi+E,GACA,2BACAA,GAAkB/F,sBAAsBK,oBAE1C5qC,cAAe3tC,KAAIi+E,GAAmB,8BAA+B,QACrE,CAAC/8D,GAAMukB,YAAYC,GAAGu4C,GAAkB7S,YAAYphC,KAAM,CACxD/Q,SAAUglD,GAAkBjG,qBAAqBH,WACjD7oC,WAAYhvC,KACVi+E,GACA,4BACAA,GAAkBzF,uBAAuBD,sBAI/CtyC,GAAI,CACF5V,MAAO4tD,GAAkBnI,WAAWE,aACpCjoC,WAAY/tC,KAAIi+E,GAAmB,sBAAuBA,GAAkBjH,iBAAiBI,cAC7Fn+C,SAAUglD,GAAkB3G,oBAAoBQ,WAChD/oC,WAAYkvC,GAAkBhG,eAAehyC,GAC7C/jB,aAAc+7D,GAAkB/kD,WAAW+M,GAAG/jB,aAC9C8sB,WAAYhvC,KACVi+E,GACA,2BACAA,GAAkB/F,sBAAsBK,oBAE1C5qC,cAAe3tC,KAAIi+E,GAAmB,8BAA+B,QACrE,CAAC/8D,GAAMukB,YAAYC,GAAGu4C,GAAkB7S,YAAYphC,KAAM,CACxD/Q,SAAUglD,GAAkBjG,qBAAqBF,WACjD9oC,WAAYhvC,KACVi+E,GACA,4BACAA,GAAkBzF,uBAAuBD,sBAI/CryC,GAAI,CACF7V,MAAO4tD,GAAkBnI,WAAWE,aACpCjoC,WAAY/tC,KAAIi+E,GAAmB,sBAAuBA,GAAkBjH,iBAAiBI,cAC7Fn+C,SAAUglD,GAAkB3G,oBAAoBS,WAChDhpC,WAAYkvC,GAAkBhG,eAAe/xC,GAC7ChkB,aAAc+7D,GAAkB/kD,WAAWgN,GAAGhkB,aAC9C8sB,WAAYhvC,KACVi+E,GACA,2BACAA,GAAkB/F,sBAAsBK,oBAE1C5qC,cAAe3tC,KAAIi+E,GAAmB,8BAA+B,QACrE,CAAC/8D,GAAMukB,YAAYC,GAAGu4C,GAAkB7S,YAAYphC,KAAM,CACxD/Q,SAAUglD,GAAkBjG,qBAAqBD,WACjD/oC,WAAYhvC,KACVi+E,GACA,4BACAA,GAAkBzF,uBAAuBD,sBAI/CpyC,GAAI,CACF9V,MAAO4tD,GAAkBnI,WAAWE,aACpCjoC,WAAY/tC,KAAIi+E,GAAmB,sBAAuBA,GAAkBjH,iBAAiBI,cAC7Fn+C,SAAUj5B,KACRi+E,GACA,iCACAA,GAAkB3G,oBAAoBS,YAExChpC,WAAYkvC,GAAkBhG,eAAe/xC,GAC7ChkB,aAAc+7D,GAAkB/kD,WAAWiN,GAAGjkB,aAC9C8sB,WAAYhvC,KACVi+E,GACA,2BACAA,GAAkB/F,sBAAsBK,oBAE1C5qC,cAAe3tC,KAAIi+E,GAAmB,8BAA+B,QACrE,CAAC/8D,GAAMukB,YAAYC,GAAGu4C,GAAkB7S,YAAYphC,KAAM,CACxD/Q,SAAUj5B,KACRi+E,GACA,kCACAA,GAAkBjG,qBAAqBD,YAEzC/oC,WAAYhvC,KACVi+E,GACA,4BACAA,GAAkBzF,uBAAuBD,sBAI/CnyC,GAAI,CACF2H,WAAY/tC,KAAIi+E,GAAmB,sBAAuBA,GAAkBjH,iBAAiBI,cAC7Fn+C,SAAUj5B,KACRi+E,GACA,iCACAA,GAAkB3G,oBAAoBS,YAExChpC,WAAYkvC,GAAkBhG,eAAe1xC,MAC7CrkB,aAAc+7D,GAAkB/kD,WAAWkN,GAAGlkB,aAC9C8sB,WAAYivC,GAAkB/F,sBAAsBK,mBACpD5qC,cAAe3tC,KAAIi+E,GAAmB,8BAA+B,QACrE,CAAC/8D,GAAMukB,YAAYC,GAAGu4C,GAAkB7S,YAAYphC,KAAM,CACxD/Q,SAAUj5B,KACRi+E,GACA,kCACAA,GAAkBjG,qBAAqBD,YAEzC/oC,WAAYivC,GAAkBzF,uBAAuBD,qBAGzDlxC,QAAS,CACPpO,SAAU,UACVoyC,UAAW,SACXr8B,WAAY,OAEd1H,SAAU,CACRrO,SAAU,UACV8V,WAAY,OAEdxI,MAAO,CACLwH,WAAYkwC,GAAkBjH,iBAAiBE,UAC/Cj+C,SAAUglD,GAAkB3G,oBAAoBI,cAChD1oC,WAAYivC,GAAkB/F,sBAAsBG,gBACpD,CAACn3D,GAAMukB,YAAYC,GAAGu4C,GAAkB7S,YAAYphC,KAAM,CACxD/Q,SAAUglD,GAAkBjG,qBAAqBN,cACjD1oC,WAAYivC,GAAkBzF,uBAAuBH,kBAGzD7xC,MAAO,CACLuH,WAAYkwC,GAAkBjH,iBAAiBG,UAC/Cl+C,SAAUglD,GAAkB3G,oBAAoBK,cAChD3oC,WAAYivC,GAAkB/F,sBAAsBI,gBACpD,CAACp3D,GAAMukB,YAAYC,GAAGu4C,GAAkB7S,YAAYphC,KAAM,CACxD/Q,SAAUglD,GAAkBjG,qBAAqBL,cACjD3oC,WAAYivC,GAAkBzF,uBAAuBF,kBAGzDhN,eAAgB,CACdryC,SAAUglD,GAAkB3G,oBAAoBI,cAChD3pC,WAAYkwC,GAAkBjH,iBAAiBE,UAC/CnoC,WAAY,OACZ1e,MAAOrwB,KAAIi+E,GAAmB,eAAgBA,GAAkBnI,WAAWC,WAE7ExK,eAAgB,CACdtyC,SAAU,YAGdnX,QAAS,CACPyrB,OAAQ,CACNzC,MAAOmzC,GAAkBz1C,OAAOsC,MAChCC,MAAOkzC,GAAkBz1C,OAAOuC,MAChCygC,KAAMyS,GAAkBz1C,OAAOgjC,KAC/BC,UAAWwS,GAAkBz1C,OAAOijC,UACpCC,YAAauS,GAAkBz1C,OAAOkjC,YACtCC,WAAYsS,GAAkBz1C,OAAOmjC,WACrCC,SAAUqS,GAAkBz1C,OAAOojC,SACnCC,KAAMoS,GAAkBz1C,OAAOqjC,KAC/BC,UAAWmS,GAAkBz1C,OAAOsjC,UACpCC,IAAKkS,GAAkBz1C,OAAOujC,IAC9BC,QAASiS,GAAkBz1C,OAAOwjC,QAClCC,MAAOgS,GAAkBz1C,OAAOyjC,MAChCC,WAAY+R,GAAkBz1C,OAAO0jC,WACrCuC,UAAWwP,GAAkBz1C,OAAOimC,UACpCyG,YAAa+I,GAAkBz1C,OAAO0sC,YACtCH,WAAYkJ,GAAkBz1C,OAAOusC,WACrCE,WAAYgJ,GAAkBz1C,OAAOysC,WACrCE,WAAY8I,GAAkBz1C,OAAO2sC,YAEvCz7C,QAAS,CACPC,KAAMskD,GAAkBnI,WAAWC,SACnC3oC,aAAc6wC,GAAkBz1C,OAAOmsC,SAEzC96C,UAAW,CACTF,KAAMskD,GAAkBnI,WAAWC,SACnC3qC,MAAO6yC,GAAkBz1C,OAAO4sC,aAElC/wC,KAAM,CACJ3K,QAASukD,GAAkBnI,WAAWC,SACtCl8C,UAAWokD,GAAkBz1C,OAAOuC,MACpCszC,MAAOJ,GAAkBnI,WAAWG,UACpC7qC,MAAO6yC,GAAkBnI,WAAWK,WAEtC/xC,WAAY,CACV1kC,QAASu+E,GAAkB7H,iBAAiB//C,MAC5C81C,YAAa8R,GAAkB7H,iBAAiBC,UAChDjK,UAAW6R,GAAkB7H,iBAAiBC,UAC9ChK,cAAe,cACfC,WAAY,eAEd5nE,MAAO,CACLi1B,KAAMskD,GAAkB3D,mBAAmBQ,cAC3C1vC,MAAO6yC,GAAkB3D,mBAAmBI,iBAE9ChuC,QAAS,CACP/S,KAAMskD,GAAkB3D,mBAAmBM,gBAC3CxvC,MAAO6yC,GAAkB3D,mBAAmBE,mBAE9CluC,QAAS,CACP3S,KAAMskD,GAAkB3D,mBAAmBO,gBAC3CzvC,MAAO6yC,GAAkB3D,mBAAmBG,mBAE9CjuC,KAAM,CACJ7S,KAAMskD,GAAkB3D,mBAAmBK,aAC3CvvC,MAAO6yC,GAAkB3D,mBAAmBC,gBAE9ChO,kBAAmB,CAAEx+B,WAAYkwC,GAAkBjH,iBAAiBI,cAEpEr1D,QAASk8D,GAAkB7H,iBAAiBC,UAE5C7J,SAAU,CACRzoC,SAAU,CACRK,WAAY65C,GAAkBzR,SAASzoC,SAASK,WAChDC,KAAM45C,GAAkBzR,SAASzoC,SAASM,MAE5CA,KAAM45C,GAAkBzR,SAASnoC,KACjCooC,UAAWwR,GAAkBzR,SAASC,WAExCC,OAAQ,CACNz8C,OAAQ,CACNI,MAAO4tD,GAAkBvR,OAAOz8C,OAAOI,MACvCvH,MAAOm1D,GAAkBvR,OAAOz8C,OAAOnH,OAEzC/G,QAASk8D,GAAkBvR,OAAO3qD,QAClCsiB,KAAM45C,GAAkBvR,OAAOroC,KAC/BD,WAAY65C,GAAkBvR,OAAOtoC,WACrCuoC,kBAAmBsR,GAAkBvR,OAAOC,kBAC5C/pD,QAASq7D,GAAkBvR,OAAO9pD,QAClCgqD,QAAS,CACPC,KAAM,CACJ,iBAAkB,CAChBx8C,MAAO4tD,GAAkBz1C,OAAOuC,QAGpC+hC,MAAO,CAAEz8C,MAAO4tD,GAAkBz1C,OAAOuC,SAG7Cv7B,OAAQ,CACN60B,KAAM45C,GAAkBzuE,OAAO60B,KAC/BD,WAAY65C,GAAkBzuE,OAAO40B,WACrCvgB,UAAWo6D,GAAkBzuE,OAAOqU,UACpCmpD,gBAAiBiR,GAAkBzuE,OAAOw9D,gBAC1CG,WAAY,CACVC,WAAY6Q,GAAkBzuE,OAAO29D,WAAWC,WAChDC,iBAAkB4Q,GAAkBzuE,OAAO29D,WAAWE,iBACtDZ,UAAWwR,GAAkBzuE,OAAO29D,WAAWV,UAC/Ca,kBAAmB2Q,GAAkBzuE,OAAO29D,WAAWG,kBACvDC,oBAAqB0Q,GAAkBzuE,OAAO29D,WAAWI,qBAE3Dt9C,OAAQ,CACN88C,YAAa/sE,KAAIi+E,GAAmB,4BAA6B,KACjEjqE,MAAOhU,KAAIi+E,GAAmB,sBAAuB,SAEvDzQ,MAAO,CACLn9C,MAAO4tD,GAAkBzuE,OAAOg+D,MAAMn9C,MACtCxO,gBAAiBo8D,GAAkBzuE,OAAOg+D,MAAM3rD,iBAElD05D,mBAAoB,IACf0C,GAAkBzuE,OAAO+rE,qBAGhC3N,iBAAkB,CAChBvpC,KAAM45C,GAAkBrQ,iBAAiBvpC,KACzCqH,KAAMuyC,GAAkBrQ,iBAAiBliC,KACzCmiC,gBAAiBoQ,GAAkBrQ,iBAAiBC,gBACpD6O,qBAAsB18E,KAAIi+E,GAAmB,wCAAyC,MACtFnQ,oBAAqBmQ,GAAkBrQ,iBAAiBE,oBACxDC,wBAAyBkQ,GAAkBrQ,iBAAiBG,wBAC5DC,6BAA8BiQ,GAAkBrQ,iBAAiBI,6BACjEC,wBAAyBgQ,GAAkBrQ,iBAAiBK,wBAC5DqQ,YAAa,CACXl6C,WAAY65C,GAAkBrQ,iBAAiBC,gBAC/Cx9C,MAAOrwB,KAAIi+E,GAAmB,qCAAsC,QAGxE/P,YAAa,CACXC,sBAAuB8P,GAAkBz1C,OAAO0jC,WAChDkC,cAAe,CACbC,OAAQ4P,GAAkBz1C,OAAOkmC,aACjCC,OAAQsP,GAAkBz1C,OAAO8sC,aACjCrJ,MAAOgS,GAAkBz1C,OAAO+sC,YAChChH,MAAO0P,GAAkBz1C,OAAOgtC,YAChC3J,KAAMoS,GAAkBz1C,OAAO6sC,YAEjCxG,SAAU,CACRC,UAAW,CACTz+C,MAAO4tD,GAAkBz1C,OAAO0sC,YAChCqJ,eAAgBN,GAAkBz1C,OAAO0sC,YACzCjmB,YAAa,CACXuvB,kBAAmBP,GAAkBz1C,OAAOssC,UAC5C2J,YAAaR,GAAkBz1C,OAAOuC,OAExCgkC,YAAa,CACXyP,kBAAmBP,GAAkBz1C,OAAO0jC,WAC5CuS,YAAaR,GAAkBz1C,OAAO0sC,YACtClG,YAAaiP,GAAkBz1C,OAAOimC,aAI5CsB,OAAQ,CACNC,eAAgB9uD,GAAM2B,QAAQ,EAAG,EAAG,EAAG,GACvCuhB,WAAY65C,GAAkBz1C,OAAOsjC,UACrC/pD,QAASk8D,GAAkBz1C,OAAOqsC,UAEpC5E,gBAAiBgO,GAAkBz1C,OAAOusC,YAE5C7E,MAAO,CACL7rC,KAAM45C,GAAkBtF,WAAW9+B,KACnC5gB,SAAU,QAEZjK,OAAQ,CACN2e,cAAeswC,GAAkB9D,eAAexsC,eAElDwiC,iBAAkB,CAChBC,MAAO,CAAEvuD,gBAAiBo8D,GAAkBz1C,OAAOwsC,cAErDn7B,KAAM,CACJA,KAAMokC,GAAkBtF,WAAW9+B,KACnCzgB,OAAQ6kD,GAAkBtF,WAAWE,YACrCj8C,MAAOqhD,GAAkBtF,WAAWC,WAEtCnI,cAAe,CACbC,YAAa,CACX51C,WAAY5Z,GAAM2B,QAAQo7D,GAAkBxN,cAAcC,YAAY+H,OAAO39C,YAC7E,CAAC5Z,GAAMukB,YAAYC,GAAGu4C,GAAkB7S,YAAYnhC,KAAM,CACxDnP,WAAY5Z,GAAM2B,QAAQo7D,GAAkBxN,cAAcC,YAAYgI,QAAQ59C,cAGlF81C,mBAAoB,CAClB91C,WAAY5Z,GAAM2B,QAAQo7D,GAAkBxN,cAAcG,mBAAmB6H,OAAO39C,YACpF,CAAC5Z,GAAMukB,YAAYC,GAAGu4C,GAAkB7S,YAAYrhC,KAAM,CACxDjP,WAAY5Z,GAAM2B,QAAQo7D,GAAkBxN,cAAcG,mBAAmB8H,QAAQ59C,cAGzF4jD,WAAY,CACV5jD,WAAY5Z,GAAM2B,QAAQo7D,GAAkBxN,cAAcG,mBAAmB6H,OAAO39C,YACpF,CAAC5Z,GAAMukB,YAAYC,GAAGu4C,GAAkB7S,YAAYrhC,KAAM,CACxDjP,WAAY5Z,GAAM2B,QAAQo7D,GAAkBxN,cAAcG,mBAAmB8H,QAAQ59C,eAI3F+1C,yBAA0B,CACxBzsC,WAAY65C,GAAkBz1C,OAAOusC,WACrCn4C,MAAO,CACLwH,WAAY65C,GAAkBz1C,OAAOssC,WAEvCp1D,SAAU,CACR0kB,WAAY65C,GAAkBz1C,OAAOijC,YAGzCqF,kBAAmB,CACjBjvD,gBAAiBo8D,GAAkB3D,mBAAmBG,kBACtDpqD,MAAO4tD,GAAkB3D,mBAAmBO,gBAC5Cj4D,QAAS1B,GAAM2B,QAAQ,KACvBT,aAAcpiB,KAAIi+E,GAAmB,kCAAmC,KACxEj8D,OAAQd,GAAM2B,QAAQ,EAAG,EAAG,EAAG,GAC/B,CAAC3B,GAAMukB,YAAYC,GAAGi5C,EAAAA,GAAAA,aAAsC,CAC1D38D,OAAQd,GAAM2B,QAAQ,EAAG,EAAG,EAAG,KAGnCkuD,cAAe,CACbhjC,WAAY,KACZijC,kBAAmB,OAGvBlC,UAAW,CACTjtD,gBAAiBo8D,GAAkBnP,UAAUjtD,gBAC7CO,aAAc67D,GAAkBnP,UAAU1sD,aAC1CiO,MAAO4tD,GAAkBnP,UAAUz+C,MACnCuG,cAAeqnD,GAAkBnP,UAAUl4C,cAC3C3G,OAAQjwB,KAAIi+E,GAAmB,mBAAoB,QACnDlD,cAAe/6E,KAAIi+E,GAAmB,0BAA2B,YACjEl7D,WAAY,CACVlB,gBAAiBo8D,GAAkBnP,UAAU/rD,WAAWlB,gBACxD+a,MAAO,CACL/a,gBAAiBo8D,GAAkBnP,UAAU/rD,WAAW6Z,MAAM/a,kBAGlEe,QAAS,CACPrB,KAAM08D,GAAkBnP,UAAUlsD,QAAQrB,KAC1CE,MAAOw8D,GAAkBnP,UAAUlsD,QAAQnB,OAE7Cmb,MAAO,IACF58B,KAAIi+E,GAAmB,kBAAmB,CAAC,IAEhDF,SAAU,IACL/9E,KAAIi+E,GAAmB,qBAAsB,CAAC,IAEnDD,UAAW,IACNh+E,KAAIi+E,GAAmB,sBAAuB,CAAC,KAGtDx9D,MAAO,CACLK,KAAM,IACD9gB,KAAIi+E,GAAmB,aAAc,CAAC,IAE3CnM,IAAK,IACA9xE,KAAIi+E,GAAmB,YAAa,CAAC,IAE1C9nC,MAAO,IACFn2C,KAAIi+E,GAAmB,cAAe,CAAC,IAE5C35E,KAAM,IACDtE,KAAIi+E,GAAmB,aAAc,CAAC,IAE3ClM,iBAAkB,IACb/xE,KAAIi+E,GAAmB,yBAA0B,CAAC,IAEvDvyC,KAAM,IACD1rC,KAAIi+E,GAAmB,aAAc,CAAC,KAG7ChN,iBAAkB,CAChB5gD,MAAOrwB,KAAIi+E,GAAmB,yBAA0B,MACxDhuD,OAAQ,CACNI,MAAO4tD,GAAkBhN,iBAAiBhhD,OAAOI,MACjDvH,MAAOm1D,GAAkBhN,iBAAiBhhD,OAAOnH,OAEnD9G,OAAQi8D,GAAkBhN,iBAAiBjvD,QAE7CqvD,MAAO,CACLphD,OAAQguD,GAAkB5M,MAAMphD,OAChC7N,aAAc67D,GAAkB5M,MAAMjvD,aACtCk2B,KAAM,CACJz2B,gBAAiBo8D,GAAkB5M,MAAM/4B,KAAKz2B,gBAC9CwO,MAAO4tD,GAAkB5M,MAAM/4B,KAAKjoB,OAEtCihD,IAAK,CACHC,KAAM,CACJ1vD,gBAAiBo8D,GAAkB5M,MAAMC,IAAIC,KAAK1vD,iBAEpDA,gBAAiBo8D,GAAkB5M,MAAMC,IAAIzvD,kBAGjD8vD,GAAI,IACCsM,GAAkBtM,IAEvBC,cAAe,CACbC,SAAU,IACL7xE,KAAIi+E,GAAmB,yBAA0B,CAAE5tD,MAAO,YAGjEmhD,gBAAiB,CACf7vD,QAAS,IACJ3hB,KAAIi+E,GAAmB,0BAA2B,CAAC,KAG1D/M,gBAAiB,CACf5nD,OAAQ,IACHtpB,KAAIi+E,GAAmB,yBAA0B,CAAC,IAEvD9M,aAAc,IACTnxE,KAAIi+E,GAAmB,CAAC,kBAAmB,gBAAiB,CAAE7O,SAAU,SAE7EgC,YAAa,IACRpxE,KAAIi+E,GAAmB,CAAC,kBAAmB,eAAgB,CAAC,KAGnExM,OAAQ,CACNC,YAAa,IACR1xE,KAAIi+E,GAAmB,qBAAsB,CAAC,KAGrD3tC,UAAW,CACT4hC,UAAW,CACTpxD,KAAM,CACJqjB,UAAW,QAEb1K,aAAc,CACZpJ,MAAO4tD,GAAkBnI,WAAWC,SACpCl0D,gBAAiBo8D,GAAkB7H,iBAAiB//C,QAGxD87C,WAAY,CACVxsC,QAAS,CAAC,EACVlL,MAAO,CACLpK,MAAO4tD,GAAkBz1C,OAAOuC,QAGpCqnC,UAAW,CACTtxD,KAAM,CACJgI,MAAO,QACPmqB,WAAY,GAEd5c,MAAO,CACLvN,MAAO,QACPuH,MAAO4tD,GAAkBnI,WAAWC,SACpCl0D,gBAAiB7hB,KACfi+E,GACA,iDACAA,GAAkB7H,iBAAiB//C,OAErC,CAACnV,GAAMukB,YAAYC,GAAG,QAAS,CAC7B5c,MAAO9oB,KAAIi+E,GAAmB,6CAA8C,YAIlF5L,QAAS,CACPvxD,KAAM,CACJuP,MAAO4tD,GAAkBtF,WAAW9+B,KACpC,UAAW,CAAC,IAGhBy4B,UAAW,CACTj8C,MAAO,CACLrU,OAAQ,QAGZuwD,UAAW,CACTzxD,KAAM,CACJitB,WAAYkwC,GAAkBjH,iBAAiB8F,WAC/CnvC,cAAeswC,GAAkB9D,eAAexsC,cAChDvrB,aAAc67D,GAAkB9D,eAAe/3D,aAC/C6W,SAAUglD,GAAkB3G,oBAAoBG,eAChDjF,SAAU,IACV5vD,QAASq7D,GAAkB9D,eAAeE,oBAC1CtrC,WAAYkvC,GAAkBhG,eAAejpD,OAE7C,CAAC9N,GAAMukB,YAAYC,GAAGu4C,GAAkB7S,YAAYphC,KAAM,CACxD/Q,SAAUglD,GAAkBjG,qBAAqBP,eACjD70D,QAASq7D,GAAkB9D,eAAeC,uBAG9CwE,UAAW,CACT,UAAW,CACTz6C,UAAWnkC,KACTi+E,GACA,8BACA,2GAINnkD,UAAW,CACT1X,aAAc67D,GAAkB9D,eAAe/3D,aAC/C6W,SAAUglD,GAAkB3G,oBAAoBG,eAChD70D,QAASq7D,GAAkB9D,eAAeE,oBAE1C,CAACn5D,GAAMukB,YAAYC,GAAGu4C,GAAkB7S,YAAYphC,KAAM,CACxD/Q,SAAUglD,GAAkBjG,qBAAqBP,eACjD70D,QAASq7D,GAAkB9D,eAAeC,uBAG9C3H,iBAAkB,CAChBtuC,UAAW,OACXlU,OAAS,aAAYjwB,KACnBi+E,GACA,0CACAA,GAAkBjF,oBAAoBC,2BAExCp3D,gBAAiBo8D,GAAkBjF,oBAAoBC,wBACvD70C,WAAY65C,GAAkBjF,oBAAoBE,gCAClD7oD,MAAO4tD,GAAkBjF,oBAAoBM,sBAC7C,UAAW,CACTz3D,gBAAiBo8D,GAAkBjF,oBAAoBG,+BACvD/0C,WAAY,OACZ/T,MAAOrwB,KACLi+E,GACA,iDACAA,GAAkBjF,oBAAoBM,uBAExCrpD,OAAS,aAAYjwB,KACnBi+E,GACA,+CACAA,GAAkBjF,oBAAoBG,kCAExC,uBAAwB,CACtB/0C,WAAY,OACZviB,gBAAiBo8D,GAAkBjF,oBAAoBI,+BACvDnpD,OAAS,aAAYguD,GAAkBjF,oBAAoBI,mCAG/D,aAAc,CACZ/oD,MAAO4tD,GAAkBjF,oBAAoBM,sBAC7Cz3D,gBAAiBo8D,GAAkBjF,oBAAoBK,gCACvDz3D,QAAS,KAGb8wD,gBAAiB,CACfziD,OAAS,aAAYguD,GAAkBpE,qBAAqBC,iBAC5DzpD,MAAO4tD,GAAkBpE,qBAAqBC,eAC9C,UAAW,CACTj4D,gBAAiB7hB,KACfi+E,GACA,uDACAA,GAAkBpE,qBAAqBE,uBAEzC9pD,OAAS,aAAYguD,GAAkBpE,qBAAqBK,kCAC5D7pD,MAAO4tD,GAAkBpE,qBAAqBE,sBAC9C,uBAAwB,CACtBl4D,gBAAiB7hB,KACfi+E,GACA,uDACAA,GAAkBpE,qBAAqBE,uBAEzC1pD,MAAO4tD,GAAkBjF,oBAAoBM,wBAGjD,aAAc,CACZjpD,MAAO4tD,GAAkBpE,qBAAqBI,uBAC9ChqD,OAAS,aAAYguD,GAAkBpE,qBAAqBI,yBAC5Dr4D,QAAS,MAIf+wD,eAAgB,CACd7xD,KAAM,CACJuP,MAAO4tD,GAAkB7H,iBAAiBC,WAE5CzD,UAAW,CACT35C,SAAU,SACVK,WAAY,OACZC,YAAa,SAGjBs5C,iBAAkB,CAChB/xD,KAAM,CACJ8B,QAAS,UACT,CAAC1B,GAAMukB,YAAYC,GAAG,OAAQ,CAC5B9iB,QAAS,cAIfkwD,aAAc,CACZhyD,KAAM,CACJmP,OAAQ,YACR7N,aAAc67D,GAAkBxH,WAAWK,kBAC3C/D,YAAakL,GAAkBxH,WAAWC,YAC1ClrD,SAAU,SACV3J,gBAAiBo8D,GAAkBxH,WAAWE,gBAC9C,yBAA0B,CACxB5D,YAAakL,GAAkBxH,WAAWI,kBAC1Ch1D,gBAAiBo8D,GAAkBxH,WAAWG,uBAEhD,UAAW,CACTvmD,MAAO4tD,GAAkBxH,WAAWC,aAEtC,YAAa,CACXvyC,UAAW,kCACX4uC,YAAakL,GAAkBxH,WAAWI,kBAC1Ch1D,gBAAiBo8D,GAAkBxH,WAAWG,sBAC9C,yBAA0B,CACxB7D,YAAakL,GAAkBxH,WAAWI,oBAG9C,wBAAyB,CACvB9D,YAAakL,GAAkB3D,mBAAmBQ,cAClD,yBAA0B,CACxB/H,YAAakL,GAAkB3D,mBAAmBQ,gBAGtD,aAAc,CACZj5D,gBAAiBo8D,GAAkBz1C,OAAOgjC,OAG9CwH,aAAc,CACZt2C,YAAa,UAEfu2C,WAAY,CACVt2C,aAAc,UAEhB6oB,MAAO,CACLvsB,SAAUglD,GAAkB3G,oBAAoB/wC,MAChD3jB,QAAS,gBACT,sBAAuB,CACrB8Z,YAAa,UAEf,qBAAsB,CACpBC,aAAc,UAEhB,iBAAkB,CAChB0uC,UAAW,YAIjB6H,cAAe,CACbpyD,KAAM,CACJ6sB,cAAe,YACfrU,WAAY,WAEd65C,OAAQ,CACNlxD,UAAW,OACXiC,UAAW,iCAGfkvD,aAAc,CACZtyD,KAAM,CACJuP,MAAO4tD,GAAkBnI,WAAWC,SACpC,UAAW,CACT1lD,MAAO4tD,GAAkB3D,mBAAmBQ,gBAGhDzH,SAAU,CACR,UAAW,CACThjD,MAAO4tD,GAAkB3D,mBAAmBQ,iBAIlDxH,kBAAmB,CACjBxyD,KAAM,CACJuP,MAAO4tD,GAAkBnI,WAAWC,SACpCz8C,WAAY,UACZ,UAAW,CACTjJ,MAAO4tD,GAAkB3D,mBAAmBQ,iBAIlDvH,YAAa,CACXzyD,KAAM,CACJuP,MAAO4tD,GAAkBnI,WAAWG,UACpC4I,gBAAiBZ,GAAkB7H,iBAAiBC,UACpD,UAAW,CACThmD,MAAO4tD,GAAkBxH,WAAWI,kBACpCgI,gBAAiBZ,GAAkB7H,iBAAiBC,WAEtD,YAAa,CACXhmD,MAAO,QACPwuD,gBAAiBZ,GAAkBxH,WAAWI,qBAIpDpD,eAAgB,CACd3yD,KAAM,CACJoB,aAAchB,GAAM2B,QAAQ,KAGhC8wD,QAAS,CACP7yD,KAAM,CACJ+Z,UAAW,SACX,iBAAkB,CAChBxK,MAAO4tD,GAAkBtF,WAAW9+B,QAI1C+5B,YAAa,CACXp/C,OAAQ,CACN,eAAgB,CACdI,WAAY,UACZlT,OAAQ,UAIdo9D,SAAU,CACRh+D,KAAM,CACJmP,OAAQguD,GAAkB5M,MAAMphD,OAChC7N,aAAc67D,GAAkB5M,MAAMjvD,aACtCiO,MAAO,YAGX0uD,aAAc,CACZj+D,KAAM,CACJe,gBAAiBo8D,GAAkB5M,MAAM/4B,KAAKz2B,gBAC9CwO,MAAO4tD,GAAkB5M,MAAM/4B,KAAKjoB,QAGxC2uD,YAAa,CACXl+D,KAAM,CACJe,gBAAiBo8D,GAAkB5M,MAAMC,IAAIzvD,gBAC7CwO,MAAO,UACP,sBAAuB,CACrBxO,gBAAiBo8D,GAAkB5M,MAAMC,IAAIC,KAAK1vD,mBAIxDo9D,aAAc,CACZn+D,KAAM,CACJwW,aAAct3B,KAAIi+E,GAAmB,oBAAqB,MAC1D5tD,MAAO,UACP0K,cAAe,KAIrBnhB,MAAO,CACLs4D,UAAW,CACT7hD,MAAO,WAETgkD,cAAe,CACbhkD,MAAO,WAETkiD,UAAW,CACTliD,MAAO,UACP2F,QAAS,aAEXq8C,QAAS,CACPr8C,QAAS,SAEXs+C,aAAc,CACZz4C,gBAAgB,GAElB82C,eAAgB,CACdC,UAAW,KAEb2B,SAAU,CACRC,kBAAkB,GAEpBtB,cAAe,CACbC,QAAQ,GAEVI,YAAa,CACXkB,YAAa,gBAACC,EAAA,EAAD,UCp1BnB,OAJA,SAA8B96D,GAC5B,OAAO,gBAACslE,EAAA,EAAD,eAAeh+D,MAjBlB,IAAQi9D,EAAAA,GAAQC,EAAAA,GAAAA,UACXe,EAAAA,EAEL,IAAQhB,EAAAA,GAAQC,EAAAA,GAAAA,WACXgB,EAAAA,EAEL,IAAQjB,EAAAA,GAAQC,EAAAA,GAAAA,UACXiB,EAELC,EAAAA,GACKC,GAGF,MAI6C3lE,GACrD,ECvBM,MAAMowD,GAAkB,IAAkB,IAAjB,QAAEz/C,GAAc,EAC9C,OACE,gCACE,gBAAC,GAAD,KACE,gBAAC,EAAD,MACCA,GAJP,sICTM9uB,mKADJqa,GACIra,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEO,eAAeF,KAAIN,EAAEM,GAAKL,EAAEK,GAAI,EACtEP,EAAcC,EAAGC,EAC5B,EACO,SAAUD,EAAGC,GAEhB,SAASka,IAAOhZ,KAAK2H,YAAc9I,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOqO,OAAOtO,IAAMka,EAAG5Z,UAAYN,EAAEM,UAAW,IAAI4Z,EACnF,GAsBJ,EAjBqC,SAAUF,GAE3C,SAAS6pE,EAAgB5lE,GACrB,IAAIhE,EAAQD,EAAOxZ,KAAKU,KAAM+c,IAAU/c,KAOxC,OANI+c,EAAM0uC,QACN1yC,EAAM0yC,QAAU1uC,EAAM0uC,QAGtB1yC,EAAM0yC,QAAU,IAAI,IAEjB1yC,CACX,CAIA,OAdAE,EAAU0pE,EAAiB7pE,GAW3B6pE,EAAgBvjF,UAAUurB,OAAS,WAC/B,OAAO,gBAAoB,KAAU,CAAEjqB,MAAOV,KAAKyrD,SAAWzrD,KAAK+c,MAAMxC,SAC7E,EACOooE,CACX,CAhBoC,CAgBlC,wEC3BF,MAAM7nE,EAAS,IAAI8nE,EAAAA,YAAY,CAC7B/xE,eAAgB,CACdgyE,QAAS,CACPC,UAAW,IACXC,OAAO,EACPC,sBAAsB,MAKrB,SAASC,EAAmBlmE,GACjC,OAAO,gBAAC,EAAAmmE,oBAAD,iBAAyBnmE,EAAzB,CAAgCjC,OAAQA,IAChD,CAMDmoE,EAAmBj4D,aAAe,CAChCzQ,SAAU,sECtBL,SAAS4oE,EAAgBxkE,GAC9B,IAAIykE,EAAOzkE,EAAKykE,KACZC,EAAY1kE,EAAK0kE,UACjB9oE,EAAWoE,EAAKpE,SAChB7Z,GAAQ,IAAA2b,UAAQ,WAClB,MAAO,CACL+mE,KAAMA,EACNC,UAAWA,EAEf,GAAG,CAACD,EAAMC,IACV,OAAO,IAAApsE,eAAc,cAAsB,CACzCvW,MAAOA,GACN6Z,EACL,sFCde,SAAS+oE,EAAUC,EAAUC,GAC1C,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIvhF,UAAU,sDAGtBshF,EAASnkF,UAAYL,OAAOqO,OAAOo2E,GAAcA,EAAWpkF,UAAW,CACrEuI,YAAa,CACXjH,MAAO6iF,EACPE,UAAU,EACVC,cAAc,KAGlB3kF,OAAOgE,eAAewgF,EAAU,YAAa,CAC3CE,UAAU,IAERD,IAAY,EAAAxkF,EAAA,GAAeukF,EAAUC,EAC3C,CCfe,SAASG,EAA2BhhF,EAAMrD,GACvD,GAAIA,IAA2B,YAAlB,OAAQA,IAAsC,mBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAI2C,UAAU,4DAGtB,OAAO,EAAA2hF,EAAA,GAAsBjhF,EAC/B,CCVe,SAASkhF,EAAgBzhF,GAItC,OAHAyhF,EAAkB9kF,OAAOC,eAAiBD,OAAOk3D,eAAerwD,OAAS,SAAyBxD,GAChG,OAAOA,EAAEnD,WAAaF,OAAOk3D,eAAe7zD,EAC9C,EACOyhF,EAAgBzhF,EACzB,6BCKA,SAAS0hF,EAAQ/pB,EAAQgqB,GAAkB,IAAIh7E,EAAOhK,OAAOgK,KAAKgxD,GAAS,GAAIh7D,OAAOuD,sBAAuB,CAAE,IAAI0hF,EAAUjlF,OAAOuD,sBAAsBy3D,GAAagqB,IAAkBC,EAAUA,EAAQ78E,QAAO,SAAU88E,GAAO,OAAOllF,OAAOo5D,yBAAyB4B,EAAQkqB,GAAKzpC,UAAY,KAAMzxC,EAAK5G,KAAKpC,MAAMgJ,EAAMi7E,EAAU,CAAE,OAAOj7E,CAAM,CAExV,SAASm7E,EAAc5mE,GAAU,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAI4X,EAAyB,MAAhB1X,UAAUF,GAAaE,UAAUF,GAAK,CAAC,EAAOA,EAAI,EAAKmkF,EAAQ/kF,OAAOwY,IAAS,GAAMjQ,SAAQ,SAAUnD,IAAO,OAAgBmZ,EAAQnZ,EAAKoT,EAAOpT,GAAO,IAAepF,OAAOolF,0BAA6BplF,OAAOqlF,iBAAiB9mE,EAAQve,OAAOolF,0BAA0B5sE,IAAmBusE,EAAQ/kF,OAAOwY,IAASjQ,SAAQ,SAAUnD,GAAOpF,OAAOgE,eAAeua,EAAQnZ,EAAKpF,OAAOo5D,yBAAyB5gD,EAAQpT,GAAO,GAAM,CAAE,OAAOmZ,CAAQ,CAErhB,IAAI+mE,EAAgB,CAClB50E,KAAM,SACNy1D,IAAK,SAAatyB,GAChB5yC,KAAK8yC,OAAO,MAAOF,EACrB,EACAvhC,KAAM,SAAcuhC,GAClB5yC,KAAK8yC,OAAO,OAAQF,EACtB,EACA/qC,MAAO,SAAe+qC,GACpB5yC,KAAK8yC,OAAO,QAASF,EACvB,EACAE,OAAQ,SAAgBrjC,EAAMmjC,GACxBxhC,SAAWA,QAAQ3B,IAAO2B,QAAQ3B,GAAM1P,MAAMqR,QAASwhC,EAC7D,GAGE0xC,EAAS,WACX,SAASA,EAAOC,GACd,IAAItzE,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAEnF,OAAgBG,KAAMskF,GAEtBtkF,KAAKwkF,KAAKD,EAAgBtzE,EAC5B,CAoEA,OAlEA,OAAaqzE,EAAQ,CAAC,CACpBngF,IAAK,OACLzD,MAAO,SAAc6jF,GACnB,IAAItzE,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFG,KAAK0L,OAASuF,EAAQvF,QAAU,WAChC1L,KAAKykF,OAASF,GAAkBF,EAChCrkF,KAAKiR,QAAUA,EACfjR,KAAK0kF,MAAQzzE,EAAQyzE,KACvB,GACC,CACDvgF,IAAK,WACLzD,MAAO,SAAkBikF,GACvB3kF,KAAK0kF,MAAQC,CACf,GACC,CACDxgF,IAAK,MACLzD,MAAO,WACL,IAAK,IAAIwhB,EAAOriB,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMgjB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EwwB,EAAKxwB,GAAQviB,UAAUuiB,GAGzB,OAAOpiB,KAAKg7D,QAAQpoB,EAAM,MAAO,IAAI,EACvC,GACC,CACDzuC,IAAK,OACLzD,MAAO,WACL,IAAK,IAAI+0C,EAAQ51C,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMu2C,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF9C,EAAK8C,GAAS71C,UAAU61C,GAG1B,OAAO11C,KAAKg7D,QAAQpoB,EAAM,OAAQ,IAAI,EACxC,GACC,CACDzuC,IAAK,QACLzD,MAAO,WACL,IAAK,IAAIkkF,EAAQ/kF,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAM0lF,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFjyC,EAAKiyC,GAAShlF,UAAUglF,GAG1B,OAAO7kF,KAAKg7D,QAAQpoB,EAAM,QAAS,GACrC,GACC,CACDzuC,IAAK,YACLzD,MAAO,WACL,IAAK,IAAIokF,EAAQjlF,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAM4lF,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFnyC,EAAKmyC,GAASllF,UAAUklF,GAG1B,OAAO/kF,KAAKg7D,QAAQpoB,EAAM,OAAQ,wBAAwB,EAC5D,GACC,CACDzuC,IAAK,UACLzD,MAAO,SAAiBkyC,EAAMoyC,EAAKt5E,EAAQu5E,GACzC,OAAIA,IAAcjlF,KAAK0kF,MAAc,MACd,iBAAZ9xC,EAAK,KAAiBA,EAAK,GAAK,GAAGh2B,OAAOlR,GAAQkR,OAAO5c,KAAK0L,OAAQ,KAAKkR,OAAOg2B,EAAK,KAC3F5yC,KAAKykF,OAAOO,GAAKpyC,GAC1B,GACC,CACDzuC,IAAK,SACLzD,MAAO,SAAgBwkF,GACrB,OAAO,IAAIZ,EAAOtkF,KAAKykF,OAAQP,EAAcA,EAAc,CAAC,EAAG,CAC7Dx4E,OAAQ,GAAGkR,OAAO5c,KAAK0L,OAAQ,KAAKkR,OAAOsoE,EAAY,OACrDllF,KAAKiR,SACX,KAGKqzE,CACT,CA5Ea,GA8ETa,EAAa,IAAIb,EAEjBc,EAAe,WACjB,SAASA,KACP,OAAgBplF,KAAMolF,GAEtBplF,KAAKqlF,UAAY,CAAC,CACpB,CAoDA,OAlDA,OAAaD,EAAc,CAAC,CAC1BjhF,IAAK,KACLzD,MAAO,SAAY4kF,EAAQhnE,GACzB,IAAIvF,EAAQ/Y,KAOZ,OALAslF,EAAOl8E,MAAM,KAAK9B,SAAQ,SAAUsc,GAClC7K,EAAMssE,UAAUzhE,GAAS7K,EAAMssE,UAAUzhE,IAAU,GAEnD7K,EAAMssE,UAAUzhE,GAAOzhB,KAAKmc,EAC9B,IACOte,IACT,GACC,CACDmE,IAAK,MACLzD,MAAO,SAAakjB,EAAOtF,GACpBte,KAAKqlF,UAAUzhE,KAEftF,EAKLte,KAAKqlF,UAAUzhE,GAAS5jB,KAAKqlF,UAAUzhE,GAAOzc,QAAO,SAAUhC,GAC7D,OAAOA,IAAMmZ,CACf,WANSte,KAAKqlF,UAAUzhE,GAO1B,GACC,CACDzf,IAAK,OACLzD,MAAO,SAAckjB,GACnB,IAAK,IAAI1B,EAAOriB,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMgjB,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClGwwB,EAAKxwB,EAAO,GAAKviB,UAAUuiB,GAG7B,GAAIpiB,KAAKqlF,UAAUzhE,GAAQ,CACzB,IAAI2hE,EAAS,GAAG3oE,OAAO5c,KAAKqlF,UAAUzhE,IACtC2hE,EAAOj+E,SAAQ,SAAUk+E,GACvBA,EAASzlF,WAAM,EAAQ6yC,EACzB,GACF,CAEA,GAAI5yC,KAAKqlF,UAAU,KAAM,CACvB,IAAII,EAAU,GAAG7oE,OAAO5c,KAAKqlF,UAAU,MAEvCI,EAAQn+E,SAAQ,SAAUk+E,GACxBA,EAASzlF,MAAMylF,EAAU,CAAC5hE,GAAOhH,OAAOg2B,GAC1C,GACF,CACF,KAGKwyC,CACT,CA1DmB,GA4DnB,SAAS1hB,IACP,IAAI1kD,EACA0mE,EACA51B,EAAU,IAAIxvD,SAAQ,SAAUC,EAASC,GAC3Cwe,EAAMze,EACNmlF,EAAMllF,CACR,IAGA,OAFAsvD,EAAQvvD,QAAUye,EAClB8wC,EAAQtvD,OAASklF,EACV51B,CACT,CACA,SAAS61B,EAAW5rB,GAClB,OAAc,MAAVA,EAAuB,GACpB,GAAKA,CACd,CACA,SAAS6rB,EAAK9hF,EAAGpE,EAAGD,GAClBqE,EAAEwD,SAAQ,SAAUnB,GACdzG,EAAEyG,KAAI1G,EAAE0G,GAAKzG,EAAEyG,GACrB,GACF,CAEA,SAAS0/E,EAAc9rB,EAAQ/rD,EAAM83E,GACnC,SAASC,EAAS5hF,GAChB,OAAOA,GAAOA,EAAI9B,QAAQ,QAAU,EAAI8B,EAAIqF,QAAQ,OAAQ,KAAOrF,CACrE,CAEA,SAAS6hF,IACP,OAAQjsB,GAA4B,iBAAXA,CAC3B,CAIA,IAFA,IAAIx6C,EAAwB,iBAATvR,EAAoB,GAAG4O,OAAO5O,GAAQA,EAAK5E,MAAM,KAE7DmW,EAAMzf,OAAS,GAAG,CACvB,GAAIkmF,IAAwB,MAAO,CAAC,EACpC,IAAI7hF,EAAM4hF,EAASxmE,EAAM2xC,UACpB6I,EAAO51D,IAAQ2hF,IAAO/rB,EAAO51D,GAAO,IAAI2hF,GAG3C/rB,EADEh7D,OAAOK,UAAUC,eAAeC,KAAKy6D,EAAQ51D,GACtC41D,EAAO51D,GAEP,CAAC,CAEd,CAEA,OAAI6hF,IAA+B,CAAC,EAC7B,CACL/lE,IAAK85C,EACLpxD,EAAGo9E,EAASxmE,EAAM2xC,SAEtB,CAEA,SAAS+0B,GAAQlsB,EAAQ/rD,EAAMyqC,GAC7B,IAAIytC,EAAiBL,EAAc9rB,EAAQ/rD,EAAMjP,QACvCmnF,EAAejmE,IACjBimE,EAAev9E,GAEd8vC,CACX,CAUA,SAAS0tC,GAAQpsB,EAAQ/rD,GACvB,IAAIo4E,EAAkBP,EAAc9rB,EAAQ/rD,GACxCiS,EAAMmmE,EAAgBnmE,IACtBtX,EAAIy9E,EAAgBz9E,EAExB,GAAKsX,EACL,OAAOA,EAAItX,EACb,CACA,SAAS09E,GAAoB/7E,EAAMg8E,EAAaniF,GAC9C,IAAIzD,EAAQylF,GAAQ77E,EAAMnG,GAE1B,YAAc2V,IAAVpZ,EACKA,EAGFylF,GAAQG,EAAaniF,EAC9B,CACA,SAASoiF,GAAWjpE,EAAQ/F,EAAQivE,GAClC,IAAK,IAAIl+D,KAAQ/Q,EACF,cAAT+Q,GAAiC,gBAATA,IACtBA,KAAQhL,EACkB,iBAAjBA,EAAOgL,IAAsBhL,EAAOgL,aAAiBnZ,QAAkC,iBAAjBoI,EAAO+Q,IAAsB/Q,EAAO+Q,aAAiBnZ,OAChIq3E,IAAWlpE,EAAOgL,GAAQ/Q,EAAO+Q,IAErCi+D,GAAWjpE,EAAOgL,GAAO/Q,EAAO+Q,GAAOk+D,GAGzClpE,EAAOgL,GAAQ/Q,EAAO+Q,IAK5B,OAAOhL,CACT,CACA,SAASmpE,GAAYllC,GACnB,OAAOA,EAAI/3C,QAAQ,sCAAuC,OAC5D,CACA,IAAIk9E,GAAa,CACf,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,QACL,IAAK,UAEP,SAAS,GAAOp8E,GACd,MAAoB,iBAATA,EACFA,EAAKd,QAAQ,cAAc,SAAU9J,GAC1C,OAAOgnF,GAAWhnF,EACpB,IAGK4K,CACT,CACA,IAAIq8E,GAA2B,oBAAXjkF,QAA0BA,OAAOsyD,gBAAuD,IAAnCtyD,OAAOsyD,UAAU4xB,eAAiClkF,OAAOsyD,UAAUC,WAAavyD,OAAOsyD,UAAUC,UAAU5yD,QAAQ,SAAW,EACnMwkF,GAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,KAwBjC,SAASC,GAAU/sB,EAAQgqB,GAAkB,IAAIh7E,EAAOhK,OAAOgK,KAAKgxD,GAAS,GAAIh7D,OAAOuD,sBAAuB,CAAE,IAAI0hF,EAAUjlF,OAAOuD,sBAAsBy3D,GAAagqB,IAAkBC,EAAUA,EAAQ78E,QAAO,SAAU88E,GAAO,OAAOllF,OAAOo5D,yBAAyB4B,EAAQkqB,GAAKzpC,UAAY,KAAMzxC,EAAK5G,KAAKpC,MAAMgJ,EAAMi7E,EAAU,CAAE,OAAOj7E,CAAM,CAE1V,SAASg+E,GAAgBzpE,GAAU,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAI4X,EAAyB,MAAhB1X,UAAUF,GAAaE,UAAUF,GAAK,CAAC,EAAOA,EAAI,EAAKmnF,GAAU/nF,OAAOwY,IAAS,GAAMjQ,SAAQ,SAAUnD,IAAO,OAAgBmZ,EAAQnZ,EAAKoT,EAAOpT,GAAO,IAAepF,OAAOolF,0BAA6BplF,OAAOqlF,iBAAiB9mE,EAAQve,OAAOolF,0BAA0B5sE,IAAmBuvE,GAAU/nF,OAAOwY,IAASjQ,SAAQ,SAAUnD,GAAOpF,OAAOgE,eAAeua,EAAQnZ,EAAKpF,OAAOo5D,yBAAyB5gD,EAAQpT,GAAO,GAAM,CAAE,OAAOmZ,CAAQ,CAE3hB,SAAS0pE,GAAaC,GAAW,IAAIC,EAErC,WAAuC,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhF/7E,QAAQnM,UAAUmoF,QAAQjoF,KAAK6nF,QAAQC,UAAU77E,QAAS,IAAI,WAAa,MAAY,CAAkC,CAA1B,MAAO1K,GAAK,OAAO,CAAO,CAAE,CAFvQ2mF,GAA6B,OAAO,WAAkC,IAAsCzmF,EAAlC0mF,EAAQ5D,EAAgBoD,GAAkB,GAAIC,EAA2B,CAAE,IAAIQ,EAAY7D,EAAgB7jF,MAAM2H,YAAa5G,EAASomF,QAAQC,UAAUK,EAAO5nF,UAAW6nF,EAAY,MAAS3mF,EAAS0mF,EAAM1nF,MAAMC,KAAMH,WAAc,OAAO8jF,EAA2B3jF,KAAMe,EAAS,CAAG,CAIxa,SAAS4mF,GAAS1nE,EAAKjS,GACrB,IAAI45E,EAAe/nF,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,IACvF,GAAKogB,EAAL,CACA,GAAIA,EAAIjS,GAAO,OAAOiS,EAAIjS,GAI1B,IAHA,IAAI65E,EAAQ75E,EAAK5E,MAAMw+E,GACnBrsE,EAAU0E,EAELtgB,EAAI,EAAGA,EAAIkoF,EAAM/nF,SAAUH,EAAG,CACrC,IAAK4b,EAAS,OAEd,GAAiC,iBAAtBA,EAAQssE,EAAMloF,KAAoBA,EAAI,EAAIkoF,EAAM/nF,OACzD,OAGF,QAA0Bga,IAAtByB,EAAQssE,EAAMloF,IAAmB,CAKnC,IAJA,IAAI2L,EAAI,EACJnM,EAAI0oF,EAAMxgF,MAAM1H,EAAGA,EAAI2L,GAAG/B,KAAKq+E,GAC/BE,EAAMvsE,EAAQpc,QAEH2a,IAARguE,GAAqBD,EAAM/nF,OAASH,EAAI2L,GAC7CA,IAEAw8E,EAAMvsE,EADNpc,EAAI0oF,EAAMxgF,MAAM1H,EAAGA,EAAI2L,GAAG/B,KAAKq+E,IAIjC,QAAY9tE,IAARguE,EAAmB,OACvB,GAAY,OAARA,EAAc,OAAO,KAEzB,GAAI95E,EAAKspD,SAASn4D,GAAI,CACpB,GAAmB,iBAAR2oF,EAAkB,OAAOA,EACpC,GAAI3oF,GAAuB,iBAAX2oF,EAAI3oF,GAAiB,OAAO2oF,EAAI3oF,EAClD,CAEA,IAAI4oF,EAAaF,EAAMxgF,MAAM1H,EAAI2L,GAAG/B,KAAKq+E,GACzC,OAAIG,EAAmBJ,GAASG,EAAKC,EAAYH,QACjD,CACF,CAEArsE,EAAUA,EAAQssE,EAAMloF,GAC1B,CAEA,OAAO4b,CAvCmB,CAwC5B,CAEA,IAAIysE,GAAgB,SAAUC,GAC5B3E,EAAU0E,EAAeC,GAEzB,IAAInvE,EAASkuE,GAAagB,GAE1B,SAASA,EAAc19E,GACrB,IAAIyO,EAEA9H,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAChFqoF,GAAI,CAAC,eACL7E,UAAW,eAsBb,OAnBA,OAAgBrjF,KAAMgoF,GAEtBjvE,EAAQD,EAAOxZ,KAAKU,MAEhB2mF,IACFvB,EAAa9lF,MAAK,OAAuByZ,IAG3CA,EAAMzO,KAAOA,GAAQ,CAAC,EACtByO,EAAM9H,QAAUA,OAEmB6I,IAA/Bf,EAAM9H,QAAQ22E,eAChB7uE,EAAM9H,QAAQ22E,aAAe,UAGW9tE,IAAtCf,EAAM9H,QAAQk3E,sBAChBpvE,EAAM9H,QAAQk3E,qBAAsB,GAG/BpvE,CACT,CA8IA,OA5IA,OAAaivE,EAAe,CAAC,CAC3B7jF,IAAK,gBACLzD,MAAO,SAAuBwnF,GACxBloF,KAAKiR,QAAQi3E,GAAG7lF,QAAQ6lF,GAAM,GAChCloF,KAAKiR,QAAQi3E,GAAG/lF,KAAK+lF,EAEzB,GACC,CACD/jF,IAAK,mBACLzD,MAAO,SAA0BwnF,GAC/B,IAAI5oE,EAAQtf,KAAKiR,QAAQi3E,GAAG7lF,QAAQ6lF,GAEhC5oE,GAAS,GACXtf,KAAKiR,QAAQi3E,GAAGnlD,OAAOzjB,EAAO,EAElC,GACC,CACDnb,IAAK,cACLzD,MAAO,SAAqB0nF,EAAKF,EAAI/jF,GACnC,IAAI8M,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E+nF,OAAwC9tE,IAAzB7I,EAAQ22E,aAA6B32E,EAAQ22E,aAAe5nF,KAAKiR,QAAQ22E,aACxFO,OAAsDruE,IAAhC7I,EAAQk3E,oBAAoCl3E,EAAQk3E,oBAAsBnoF,KAAKiR,QAAQk3E,oBAC7Gn6E,EAAO,CAACo6E,EAAKF,GACb/jF,GAAsB,iBAARA,IAAkB6J,EAAOA,EAAK4O,OAAOzY,IACnDA,GAAsB,iBAARA,IAAkB6J,EAAOA,EAAK4O,OAAOgrE,EAAezjF,EAAIiF,MAAMw+E,GAAgBzjF,IAE5FikF,EAAI/lF,QAAQ,MAAQ,IACtB2L,EAAOo6E,EAAIh/E,MAAM,MAGnB,IAAIrI,EAASolF,GAAQnmF,KAAKsK,KAAM0D,GAChC,OAAIjN,IAAWonF,GAAsC,iBAARhkF,EAAyBpD,EAC/D4mF,GAAS3nF,KAAKsK,MAAQtK,KAAKsK,KAAK89E,IAAQpoF,KAAKsK,KAAK89E,GAAKF,GAAK/jF,EAAKyjF,EAC1E,GACC,CACDzjF,IAAK,cACLzD,MAAO,SAAqB0nF,EAAKF,EAAI/jF,EAAKzD,GACxC,IAAIuQ,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAChFwoF,QAAQ,GAENT,EAAe5nF,KAAKiR,QAAQ22E,kBACX9tE,IAAjB8tE,IAA4BA,EAAe,KAC/C,IAAI55E,EAAO,CAACo6E,EAAKF,GACb/jF,IAAK6J,EAAOA,EAAK4O,OAAOgrE,EAAezjF,EAAIiF,MAAMw+E,GAAgBzjF,IAEjEikF,EAAI/lF,QAAQ,MAAQ,IAEtB3B,EAAQwnF,EACRA,GAFAl6E,EAAOo6E,EAAIh/E,MAAM,MAEP,IAGZpJ,KAAKsoF,cAAcJ,GACnBjC,GAAQjmF,KAAKsK,KAAM0D,EAAMtN,GACpBuQ,EAAQo3E,QAAQroF,KAAK28D,KAAK,QAASyrB,EAAKF,EAAI/jF,EAAKzD,EACxD,GACC,CACDyD,IAAK,eACLzD,MAAO,SAAsB0nF,EAAKF,EAAIK,GACpC,IAAIt3E,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAChFwoF,QAAQ,GAGV,IAAK,IAAIliF,KAAKoiF,EACgB,iBAAjBA,EAAUpiF,IAAqE,mBAAlDpH,OAAOK,UAAUsG,SAAS3F,MAAMwoF,EAAUpiF,KAA0BnG,KAAKwoF,YAAYJ,EAAKF,EAAI/hF,EAAGoiF,EAAUpiF,GAAI,CACrJkiF,QAAQ,IAIPp3E,EAAQo3E,QAAQroF,KAAK28D,KAAK,QAASyrB,EAAKF,EAAIK,EACnD,GACC,CACDpkF,IAAK,oBACLzD,MAAO,SAA2B0nF,EAAKF,EAAIK,EAAWE,EAAMjC,GAC1D,IAAIv1E,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAChFwoF,QAAQ,GAENr6E,EAAO,CAACo6E,EAAKF,GAEbE,EAAI/lF,QAAQ,MAAQ,IAEtBomF,EAAOF,EACPA,EAAYL,EACZA,GAHAl6E,EAAOo6E,EAAIh/E,MAAM,MAGP,IAGZpJ,KAAKsoF,cAAcJ,GACnB,IAAIQ,EAAOvC,GAAQnmF,KAAKsK,KAAM0D,IAAS,CAAC,EAEpCy6E,EACFlC,GAAWmC,EAAMH,EAAW/B,GAE5BkC,EAAO3B,GAAgBA,GAAgB,CAAC,EAAG2B,GAAOH,GAGpDtC,GAAQjmF,KAAKsK,KAAM0D,EAAM06E,GACpBz3E,EAAQo3E,QAAQroF,KAAK28D,KAAK,QAASyrB,EAAKF,EAAIK,EACnD,GACC,CACDpkF,IAAK,uBACLzD,MAAO,SAA8B0nF,EAAKF,GACpCloF,KAAK2oF,kBAAkBP,EAAKF,WACvBloF,KAAKsK,KAAK89E,GAAKF,GAGxBloF,KAAK4oF,iBAAiBV,GACtBloF,KAAK28D,KAAK,UAAWyrB,EAAKF,EAC5B,GACC,CACD/jF,IAAK,oBACLzD,MAAO,SAA2B0nF,EAAKF,GACrC,YAAqCpuE,IAA9B9Z,KAAK6oF,YAAYT,EAAKF,EAC/B,GACC,CACD/jF,IAAK,oBACLzD,MAAO,SAA2B0nF,EAAKF,GAErC,OADKA,IAAIA,EAAKloF,KAAKiR,QAAQoyE,WACW,OAAlCrjF,KAAKiR,QAAQ63E,iBAAkC/B,GAAgBA,GAAgB,CAAC,EAAG,CAAC,GAAI/mF,KAAK6oF,YAAYT,EAAKF,IAC3GloF,KAAK6oF,YAAYT,EAAKF,EAC/B,GACC,CACD/jF,IAAK,oBACLzD,MAAO,SAA2B0nF,GAChC,OAAOpoF,KAAKsK,KAAK89E,EACnB,GACC,CACDjkF,IAAK,8BACLzD,MAAO,SAAqC0nF,GAC1C,IAAI99E,EAAOtK,KAAK+oF,kBAAkBX,GAElC,SADQ99E,GAAQvL,OAAOgK,KAAKuB,IAAS,IAC1B0+E,MAAK,SAAUjnF,GACxB,OAAOuI,EAAKvI,IAAMhD,OAAOgK,KAAKuB,EAAKvI,IAAIjC,OAAS,CAClD,GACF,GACC,CACDqE,IAAK,SACLzD,MAAO,WACL,OAAOV,KAAKsK,IACd,KAGK09E,CACT,CAhLoB,CAgLlB5C,GAEE6D,GAAgB,CAClBC,WAAY,CAAC,EACbC,iBAAkB,SAA0B79B,GAC1CtrD,KAAKkpF,WAAW59B,EAAO7jD,MAAQ6jD,CACjC,EACA89B,OAAQ,SAAgBF,EAAYxoF,EAAOyD,EAAK8M,EAASo4E,GACvD,IAAItwE,EAAQ/Y,KAKZ,OAHAkpF,EAAW5hF,SAAQ,SAAUgiF,GACvBvwE,EAAMmwE,WAAWI,KAAY5oF,EAAQqY,EAAMmwE,WAAWI,GAAW3qC,QAAQj+C,EAAOyD,EAAK8M,EAASo4E,GACpG,IACO3oF,CACT,GAGF,SAAS6oF,GAAUxvB,EAAQgqB,GAAkB,IAAIh7E,EAAOhK,OAAOgK,KAAKgxD,GAAS,GAAIh7D,OAAOuD,sBAAuB,CAAE,IAAI0hF,EAAUjlF,OAAOuD,sBAAsBy3D,GAAagqB,IAAkBC,EAAUA,EAAQ78E,QAAO,SAAU88E,GAAO,OAAOllF,OAAOo5D,yBAAyB4B,EAAQkqB,GAAKzpC,UAAY,KAAMzxC,EAAK5G,KAAKpC,MAAMgJ,EAAMi7E,EAAU,CAAE,OAAOj7E,CAAM,CAE1V,SAASygF,GAAgBlsE,GAAU,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAI4X,EAAyB,MAAhB1X,UAAUF,GAAaE,UAAUF,GAAK,CAAC,EAAOA,EAAI,EAAK4pF,GAAUxqF,OAAOwY,IAAS,GAAMjQ,SAAQ,SAAUnD,IAAO,OAAgBmZ,EAAQnZ,EAAKoT,EAAOpT,GAAO,IAAepF,OAAOolF,0BAA6BplF,OAAOqlF,iBAAiB9mE,EAAQve,OAAOolF,0BAA0B5sE,IAAmBgyE,GAAUxqF,OAAOwY,IAASjQ,SAAQ,SAAUnD,GAAOpF,OAAOgE,eAAeua,EAAQnZ,EAAKpF,OAAOo5D,yBAAyB5gD,EAAQpT,GAAO,GAAM,CAAE,OAAOmZ,CAAQ,CAE3hB,SAASmsE,GAAexC,GAAW,IAAIC,EAEvC,WAAyC,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhF/7E,QAAQnM,UAAUmoF,QAAQjoF,KAAK6nF,QAAQC,UAAU77E,QAAS,IAAI,WAAa,MAAY,CAAkC,CAA1B,MAAO1K,GAAK,OAAO,CAAO,CAAE,CAFvQ6oF,GAA+B,OAAO,WAAkC,IAAsC3oF,EAAlC0mF,EAAQ5D,EAAgBoD,GAAkB,GAAIC,EAA2B,CAAE,IAAIQ,EAAY7D,EAAgB7jF,MAAM2H,YAAa5G,EAASomF,QAAQC,UAAUK,EAAO5nF,UAAW6nF,EAAY,MAAS3mF,EAAS0mF,EAAM1nF,MAAMC,KAAMH,WAAc,OAAO8jF,EAA2B3jF,KAAMe,EAAS,CAAG,CAG5a,IAAI4oF,GAAmB,CAAC,EAEpBC,GAAa,SAAU3B,GACzB3E,EAAUsG,EAAY3B,GAEtB,IAAInvE,EAAS2wE,GAAeG,GAE5B,SAASA,EAAWC,GAClB,IAAI9wE,EAEA9H,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAkBnF,OAhBA,OAAgBG,KAAM4pF,GAEtB7wE,EAAQD,EAAOxZ,KAAKU,MAEhB2mF,IACFvB,EAAa9lF,MAAK,OAAuByZ,IAG3C6sE,EAAK,CAAC,gBAAiB,gBAAiB,iBAAkB,eAAgB,mBAAoB,aAAc,SAAUiE,GAAU,OAAuB9wE,IACvJA,EAAM9H,QAAUA,OAEmB6I,IAA/Bf,EAAM9H,QAAQ22E,eAChB7uE,EAAM9H,QAAQ22E,aAAe,KAG/B7uE,EAAM0rE,OAASU,EAAW/3E,OAAO,cAC1B2L,CACT,CAwZA,OAtZA,OAAa6wE,EAAY,CAAC,CACxBzlF,IAAK,iBACLzD,MAAO,SAAwB0nF,GACzBA,IAAKpoF,KAAK8pF,SAAW1B,EAC3B,GACC,CACDjkF,IAAK,SACLzD,MAAO,SAAgByD,GACrB,IAAI8M,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAChFkqF,cAAe,CAAC,GAGlB,GAAI5lF,QACF,OAAO,EAGT,IAAI6lF,EAAWhqF,KAAKO,QAAQ4D,EAAK8M,GACjC,OAAO+4E,QAA6BlwE,IAAjBkwE,EAAShrE,GAC9B,GACC,CACD7a,IAAK,iBACLzD,MAAO,SAAwByD,EAAK8M,GAClC,IAAIg5E,OAAsCnwE,IAAxB7I,EAAQg5E,YAA4Bh5E,EAAQg5E,YAAcjqF,KAAKiR,QAAQg5E,iBACrEnwE,IAAhBmwE,IAA2BA,EAAc,KAC7C,IAAIrC,OAAwC9tE,IAAzB7I,EAAQ22E,aAA6B32E,EAAQ22E,aAAe5nF,KAAKiR,QAAQ22E,aACxFsC,EAAaj5E,EAAQi3E,IAAMloF,KAAKiR,QAAQoyE,WAAa,GACrD8G,EAAuBF,GAAe9lF,EAAI9B,QAAQ4nF,IAAgB,EAClEG,IAAwBpqF,KAAKiR,QAAQo5E,yBAA4Bp5E,EAAQ22E,cAAiB5nF,KAAKiR,QAAQq5E,wBAA2Br5E,EAAQg5E,aA7UpJ,SAA6B9lF,EAAK8lF,EAAarC,GAC7CqC,EAAcA,GAAe,GAC7BrC,EAAeA,GAAgB,GAC/B,IAAI2C,EAAgB1D,GAAM1/E,QAAO,SAAUnD,GACzC,OAAOimF,EAAY5nF,QAAQ2B,GAAK,GAAK4jF,EAAavlF,QAAQ2B,GAAK,CACjE,IACA,GAA6B,IAAzBumF,EAAczqF,OAAc,OAAO,EACvC,IAAIiE,EAAI,IAAI2nC,OAAO,IAAI9uB,OAAO2tE,EAAclhF,KAAI,SAAUrF,GACxD,MAAa,MAANA,EAAY,MAAQA,CAC7B,IAAGuF,KAAK,KAAM,MACVihF,GAAWzmF,EAAEmO,KAAK/N,GAEtB,IAAKqmF,EAAS,CACZ,IAAIC,EAAKtmF,EAAI9B,QAAQulF,GAEjB6C,EAAK,IAAM1mF,EAAEmO,KAAK/N,EAAIoL,UAAU,EAAGk7E,MACrCD,GAAU,EAEd,CAEA,OAAOA,CACT,CAwToKE,CAAoBvmF,EAAK8lF,EAAarC,IAEpM,GAAIuC,IAAyBC,EAAsB,CACjD,IAAIjkF,EAAIhC,EAAIoc,MAAMvgB,KAAK2qF,aAAaC,eAEpC,GAAIzkF,GAAKA,EAAErG,OAAS,EAClB,MAAO,CACLqE,IAAKA,EACL+lF,WAAYA,GAIhB,IAAI7qC,EAAQl7C,EAAIiF,MAAM6gF,IAClBA,IAAgBrC,GAAgBqC,IAAgBrC,GAAgB5nF,KAAKiR,QAAQi3E,GAAG7lF,QAAQg9C,EAAM,KAAO,KAAG6qC,EAAa7qC,EAAM6R,SAC/H/sD,EAAMk7C,EAAM91C,KAAKq+E,EACnB,CAGA,MAD0B,iBAAfsC,IAAyBA,EAAa,CAACA,IAC3C,CACL/lF,IAAKA,EACL+lF,WAAYA,EAEhB,GACC,CACD/lF,IAAK,YACLzD,MAAO,SAAmBqI,EAAMkI,EAAS45E,GACvC,IAAIC,EAAS9qF,KAOb,GALyB,YAArB,OAAQiR,IAAyBjR,KAAKiR,QAAQ85E,mCAChD95E,EAAUjR,KAAKiR,QAAQ85E,iCAAiClrF,YAGrDoR,IAASA,EAAU,CAAC,GACrBlI,QAAqC,MAAO,GAC3C7J,MAAMkU,QAAQrK,KAAOA,EAAO,CAACoG,OAAOpG,KACzC,IAAIiiF,OAA0ClxE,IAA1B7I,EAAQ+5E,cAA8B/5E,EAAQ+5E,cAAgBhrF,KAAKiR,QAAQ+5E,cAC3FpD,OAAwC9tE,IAAzB7I,EAAQ22E,aAA6B32E,EAAQ22E,aAAe5nF,KAAKiR,QAAQ22E,aAExFqD,EAAuBjrF,KAAKkrF,eAAeniF,EAAKA,EAAKjJ,OAAS,GAAImR,GAClE9M,EAAM8mF,EAAqB9mF,IAC3B+lF,EAAae,EAAqBf,WAElCiB,EAAYjB,EAAWA,EAAWpqF,OAAS,GAC3CsoF,EAAMn3E,EAAQm3E,KAAOpoF,KAAK8pF,SAC1BsB,EAA0Bn6E,EAAQm6E,yBAA2BprF,KAAKiR,QAAQm6E,wBAE9E,GAAIhD,GAA6B,WAAtBA,EAAIp0E,cAA4B,CACzC,GAAIo3E,EAAyB,CAC3B,IAAInB,EAAch5E,EAAQg5E,aAAejqF,KAAKiR,QAAQg5E,YAEtD,OAAIe,GACFhB,EAAShrE,IAAM,GAAGpC,OAAOuuE,GAAWvuE,OAAOqtE,GAAartE,OAAOzY,GACxD6lF,GAGF,GAAGptE,OAAOuuE,GAAWvuE,OAAOqtE,GAAartE,OAAOzY,EACzD,CAEA,OAAI6mF,GACFhB,EAAShrE,IAAM7a,EACR6lF,GAGF7lF,CACT,CAEA,IAAI6lF,EAAWhqF,KAAKO,QAAQwI,EAAMkI,GAC9B+N,EAAMgrE,GAAYA,EAAShrE,IAC3BqsE,EAAarB,GAAYA,EAASsB,SAAWnnF,EAC7ConF,EAAkBvB,GAAYA,EAASwB,cAAgBrnF,EACvDsnF,EAAU1sF,OAAOK,UAAUsG,SAAS3F,MAAMif,GAC1C0sE,EAAW,CAAC,kBAAmB,oBAAqB,mBACpDC,OAAoC7xE,IAAvB7I,EAAQ06E,WAA2B16E,EAAQ06E,WAAa3rF,KAAKiR,QAAQ06E,WAClFC,GAA8B5rF,KAAK6rF,YAAc7rF,KAAK6rF,WAAWC,eACjEA,EAAgC,iBAAR9sE,GAAmC,kBAARA,GAAoC,iBAARA,EAEnF,GAAI4sE,GAA8B5sE,GAAO8sE,GAAkBJ,EAASrpF,QAAQopF,GAAW,IAA6B,iBAAfE,GAAuC,mBAAZF,GAA+B,CAC7J,IAAKx6E,EAAQ86E,gBAAkB/rF,KAAKiR,QAAQ86E,cAAe,CACpD/rF,KAAKiR,QAAQ+6E,uBAChBhsF,KAAKykF,OAAOpzE,KAAK,mEAGnB,IAAItN,EAAI/D,KAAKiR,QAAQ+6E,sBAAwBhsF,KAAKiR,QAAQ+6E,sBAAsBX,EAAYrsE,EAAKwqE,GAAgBA,GAAgB,CAAC,EAAGv4E,GAAU,CAAC,EAAG,CACjJi3E,GAAIgC,KACA,QAAQttE,OAAOzY,EAAK,MAAMyY,OAAO5c,KAAK8pF,SAAU,4CAEtD,OAAIkB,GACFhB,EAAShrE,IAAMjb,EACRimF,GAGFjmF,CACT,CAEA,GAAI6jF,EAAc,CAChB,IAAIqE,EAA6B,mBAAZR,EACjB7F,EAAOqG,EAAiB,GAAK,CAAC,EAC9BC,EAAcD,EAAiBV,EAAkBF,EAErD,IAAK,IAAIllF,KAAK6Y,EACZ,GAAIjgB,OAAOK,UAAUC,eAAeC,KAAK0f,EAAK7Y,GAAI,CAChD,IAAIgmF,EAAU,GAAGvvE,OAAOsvE,GAAatvE,OAAOgrE,GAAchrE,OAAOzW,GACjEy/E,EAAKz/E,GAAKnG,KAAKosF,UAAUD,EAAS3C,GAAgBA,GAAgB,CAAC,EAAGv4E,GAAU,CAC9E06E,YAAY,EACZzD,GAAIgC,KAEFtE,EAAKz/E,KAAOgmF,IAASvG,EAAKz/E,GAAK6Y,EAAI7Y,GACzC,CAGF6Y,EAAM4mE,CACR,CACF,MAAO,GAAIgG,GAAoD,iBAAfD,GAAuC,mBAAZF,GACzEzsE,EAAMA,EAAIzV,KAAKoiF,MACN3sE,EAAMhf,KAAKqsF,kBAAkBrtE,EAAKjW,EAAMkI,EAAS45E,QACrD,CACL,IAAIyB,GAAc,EACdhB,GAAU,EACViB,OAAwCzyE,IAAlB7I,EAAQu7E,OAAgD,iBAAlBv7E,EAAQu7E,MACpEC,EAAkB7C,EAAW6C,gBAAgBx7E,GAC7Cy7E,EAAqBH,EAAsBvsF,KAAK2sF,eAAeC,UAAUxE,EAAKn3E,EAAQu7E,MAAOv7E,GAAW,GACxG47E,EAAe57E,EAAQ,eAAe2L,OAAO8vE,KAAwBz7E,EAAQ47E,cAE5E7sF,KAAK8sF,cAAc9tE,IAAQytE,IAC9BH,GAAc,EACdttE,EAAM6tE,GAGH7sF,KAAK8sF,cAAc9tE,KACtBssE,GAAU,EACVtsE,EAAM7a,GAGR,IAAI4oF,EAAiC97E,EAAQ87E,gCAAkC/sF,KAAKiR,QAAQ87E,+BACxFC,EAAgBD,GAAkCzB,OAAUxxE,EAAYkF,EACxEiuE,EAAgBR,GAAmBI,IAAiB7tE,GAAOhf,KAAKiR,QAAQg8E,cAE5E,GAAI3B,GAAWgB,GAAeW,EAAe,CAG3C,GAFAjtF,KAAKykF,OAAOvf,IAAI+nB,EAAgB,YAAc,aAAc7E,EAAK+C,EAAWhnF,EAAK8oF,EAAgBJ,EAAe7tE,GAE5G4oE,EAAc,CAChB,IAAIsF,EAAKltF,KAAKO,QAAQ4D,EAAKqlF,GAAgBA,GAAgB,CAAC,EAAGv4E,GAAU,CAAC,EAAG,CAC3E22E,cAAc,KAEZsF,GAAMA,EAAGluE,KAAKhf,KAAKykF,OAAOpzE,KAAK,kLACrC,CAEA,IAAI87E,EAAO,GACPC,EAAeptF,KAAKqtF,cAAcC,iBAAiBttF,KAAKiR,QAAQs8E,YAAat8E,EAAQm3E,KAAOpoF,KAAK8pF,UAErG,GAAmC,aAA/B9pF,KAAKiR,QAAQu8E,eAAgCJ,GAAgBA,EAAa,GAC5E,IAAK,IAAIztF,EAAI,EAAGA,EAAIytF,EAAattF,OAAQH,IACvCwtF,EAAKhrF,KAAKirF,EAAaztF,QAEe,QAA/BK,KAAKiR,QAAQu8E,cACtBL,EAAOntF,KAAKqtF,cAAcI,mBAAmBx8E,EAAQm3E,KAAOpoF,KAAK8pF,UAEjEqD,EAAKhrF,KAAK8O,EAAQm3E,KAAOpoF,KAAK8pF,UAGhC,IAAIj7B,EAAO,SAAc1pD,EAAGwD,EAAG+kF,GAC7B,IAAIC,EAAoBlB,GAAmBiB,IAAyB1uE,EAAM0uE,EAAuBV,EAE7FlC,EAAO75E,QAAQ28E,kBACjB9C,EAAO75E,QAAQ28E,kBAAkBzoF,EAAGgmF,EAAWxiF,EAAGglF,EAAmBV,EAAeh8E,GAC3E65E,EAAO+C,kBAAoB/C,EAAO+C,iBAAiBC,aAC5DhD,EAAO+C,iBAAiBC,YAAY3oF,EAAGgmF,EAAWxiF,EAAGglF,EAAmBV,EAAeh8E,GAGzF65E,EAAOnuB,KAAK,aAAcx3D,EAAGgmF,EAAWxiF,EAAGqW,EAC7C,EAEIhf,KAAKiR,QAAQ68E,cACX9tF,KAAKiR,QAAQ88E,oBAAsBxB,EACrCY,EAAK7lF,SAAQ,SAAUwiF,GACrBgB,EAAO6B,eAAeqB,YAAYlE,EAAU74E,GAAS3J,SAAQ,SAAUqE,GACrEkjD,EAAK,CAACi7B,GAAW3lF,EAAMwH,EAAQsF,EAAQ,eAAe2L,OAAOjR,KAAYkhF,EAC3E,GACF,IAEAh+B,EAAKs+B,EAAMhpF,EAAK0oF,GAGtB,CAEA7tE,EAAMhf,KAAKqsF,kBAAkBrtE,EAAKjW,EAAMkI,EAAS+4E,EAAUa,GACvDS,GAAWtsE,IAAQ7a,GAAOnE,KAAKiR,QAAQg9E,8BAA6BjvE,EAAM,GAAGpC,OAAOuuE,EAAW,KAAKvuE,OAAOzY,KAE1GmnF,GAAWgB,IAAgBtsF,KAAKiR,QAAQi9E,yBAEzClvE,EADoC,OAAlChf,KAAKiR,QAAQ63E,iBACT9oF,KAAKiR,QAAQi9E,uBAAuBluF,KAAKiR,QAAQg9E,4BAA8B,GAAGrxE,OAAOuuE,EAAW,KAAKvuE,OAAOzY,GAAOA,EAAKmoF,EAActtE,OAAMlF,GAEhJ9Z,KAAKiR,QAAQi9E,uBAAuBlvE,GAGhD,CAEA,OAAIgsE,GACFhB,EAAShrE,IAAMA,EACRgrE,GAGFhrE,CACT,GACC,CACD7a,IAAK,oBACLzD,MAAO,SAA2Bse,EAAK7a,EAAK8M,EAAS+4E,EAAUa,GAC7D,IAAIsD,EAASnuF,KAEb,GAAIA,KAAK6rF,YAAc7rF,KAAK6rF,WAAWnlF,MACrCsY,EAAMhf,KAAK6rF,WAAWnlF,MAAMsY,EAAKwqE,GAAgBA,GAAgB,CAAC,EAAGxpF,KAAKiR,QAAQ84E,cAAcqE,kBAAmBn9E,GAAU+4E,EAASqE,QAASrE,EAASsE,OAAQtE,EAASsB,QAAS,CAChLtB,SAAUA,SAEP,IAAK/4E,EAAQs9E,kBAAmB,CACjCt9E,EAAQ84E,eAAe/pF,KAAK2qF,aAAanG,KAAKgF,GAAgBA,GAAgB,CAAC,EAAGv4E,GAAU,CAC9F84E,cAAeP,GAAgBA,GAAgB,CAAC,EAAGxpF,KAAKiR,QAAQ84E,eAAgB94E,EAAQ84E,kBAE1F,IACIyE,EADAC,EAAiC,iBAARzvE,IAAqB/N,GAAWA,EAAQ84E,oBAA2DjwE,IAA1C7I,EAAQ84E,cAAc0E,gBAAgCx9E,EAAQ84E,cAAc0E,gBAAkBzuF,KAAKiR,QAAQ84E,cAAc0E,iBAG/M,GAAIA,EAAiB,CACnB,IAAIC,EAAK1vE,EAAIuB,MAAMvgB,KAAK2qF,aAAaC,eACrC4D,EAAUE,GAAMA,EAAG5uF,MACrB,CAEA,IAAIwK,EAAO2G,EAAQzH,SAAsC,iBAApByH,EAAQzH,QAAuByH,EAAQzH,QAAUyH,EAItF,GAHIjR,KAAKiR,QAAQ84E,cAAcqE,mBAAkB9jF,EAAOk/E,GAAgBA,GAAgB,CAAC,EAAGxpF,KAAKiR,QAAQ84E,cAAcqE,kBAAmB9jF,IAC1I0U,EAAMhf,KAAK2qF,aAAagE,YAAY3vE,EAAK1U,EAAM2G,EAAQm3E,KAAOpoF,KAAK8pF,SAAU74E,GAEzEw9E,EAAiB,CACnB,IAAIG,EAAK5vE,EAAIuB,MAAMvgB,KAAK2qF,aAAaC,eAEjC4D,GADUI,GAAMA,EAAG9uF,UACAmR,EAAQ49E,MAAO,EACxC,EAEqB,IAAjB59E,EAAQ49E,OAAgB7vE,EAAMhf,KAAK2qF,aAAakE,KAAK7vE,GAAK,WAC5D,IAAK,IAAIkD,EAAOriB,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMgjB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EwwB,EAAKxwB,GAAQviB,UAAUuiB,GAGzB,OAAIyoE,GAAWA,EAAQ,KAAOj4C,EAAK,KAAO3hC,EAAQ0J,SAChDwzE,EAAO1J,OAAOpzE,KAAK,6CAA6CuL,OAAOg2B,EAAK,GAAI,aAAah2B,OAAOzY,EAAI,KAEjG,MAGFgqF,EAAO/B,UAAUrsF,MAAMouF,EAAQv7C,EAAKh2B,OAAO,CAACzY,IACrD,GAAG8M,IACCA,EAAQ84E,eAAe/pF,KAAK2qF,aAAamE,OAC/C,CAEA,IAAIC,EAAc99E,EAAQ89E,aAAe/uF,KAAKiR,QAAQ89E,YAClDC,EAA4C,iBAAhBD,EAA2B,CAACA,GAAeA,EAQ3E,OANI/vE,SAAqCgwE,GAAsBA,EAAmBlvF,SAAyC,IAA/BmR,EAAQg+E,qBAClGjwE,EAAMiqE,GAAcG,OAAO4F,EAAoBhwE,EAAK7a,EAAKnE,KAAKiR,SAAWjR,KAAKiR,QAAQi+E,wBAA0B1F,GAAgB,CAC9H2F,aAAcnF,GACb/4E,GAAWA,EAASjR,OAGlBgf,CACT,GACC,CACD7a,IAAK,UACLzD,MAAO,SAAiBqI,GACtB,IAGIqmF,EACA9D,EACAE,EACA6C,EACAC,EAPAe,EAASrvF,KAETiR,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EA6EnF,MAvEoB,iBAATkJ,IAAmBA,EAAO,CAACA,IACtCA,EAAKzB,SAAQ,SAAUqB,GACrB,IAAI0mF,EAAOvC,cAAcsC,GAAzB,CAEA,IAAIE,EAAYD,EAAOnE,eAAeviF,EAAGsI,GAErC9M,EAAMmrF,EAAUnrF,IACpBmnF,EAAUnnF,EACV,IAAI+lF,EAAaoF,EAAUpF,WACvBmF,EAAOp+E,QAAQs+E,aAAYrF,EAAaA,EAAWttE,OAAOyyE,EAAOp+E,QAAQs+E,aAC7E,IAAIhD,OAAwCzyE,IAAlB7I,EAAQu7E,OAAgD,iBAAlBv7E,EAAQu7E,MAEpEgD,EAAwBjD,IAAwBt7E,EAAQw+E,SAA6B,IAAlBx+E,EAAQu7E,OAAe6C,EAAO1C,eAAe+C,mBAEhHC,OAA2C71E,IAApB7I,EAAQ0J,UAAqD,iBAApB1J,EAAQ0J,SAAmD,iBAApB1J,EAAQ0J,UAA6C,KAApB1J,EAAQ0J,QAChJi1E,EAAQ3+E,EAAQk8E,KAAOl8E,EAAQk8E,KAAOkC,EAAOhC,cAAcI,mBAAmBx8E,EAAQm3E,KAAOiH,EAAOvF,SAAU74E,EAAQs8E,aAC1HrD,EAAW5iF,SAAQ,SAAU4gF,GACvBmH,EAAOvC,cAAcsC,KACzBd,EAASpG,GAEJyB,GAAiB,GAAG/sE,OAAOgzE,EAAM,GAAI,KAAKhzE,OAAOsrE,KAAQmH,EAAO9jC,OAAS8jC,EAAO9jC,MAAMskC,qBAAuBR,EAAO9jC,MAAMskC,mBAAmBvB,KAChJ3E,GAAiB,GAAG/sE,OAAOgzE,EAAM,GAAI,KAAKhzE,OAAOsrE,KAAO,EAExDmH,EAAO5K,OAAOpzE,KAAK,QAASuL,OAAO0uE,EAAS,qBAAuB1uE,OAAOgzE,EAAMrmF,KAAK,MAAO,wCAAyCqT,OAAO0xE,EAAQ,wBAA0B,6NAGhLsB,EAAMtoF,SAAQ,SAAUuO,GACtB,IAAIw5E,EAAOvC,cAAcsC,GAAzB,CACAf,EAAUx4E,EACV,IA+BIi6E,EA/BAC,EAAY,CAAC5rF,GAEjB,GAAIkrF,EAAOxD,YAAcwD,EAAOxD,WAAWmE,cACzCX,EAAOxD,WAAWmE,cAAcD,EAAW5rF,EAAK0R,EAAMqyE,EAAIj3E,OACrD,CACL,IAAIg/E,EACA1D,IAAqB0D,EAAeZ,EAAO1C,eAAeC,UAAU/2E,EAAM5E,EAAQu7E,MAAOv7E,IAC7F,IAAIi/E,EAAa,GAAGtzE,OAAOyyE,EAAOp+E,QAAQk/E,gBAAiB,QAU3D,GARI5D,IACFwD,EAAU5tF,KAAKgC,EAAM8rF,GAEjBT,GACFO,EAAU5tF,KAAKgC,EAAM+rF,IAIrBP,EAAsB,CACxB,IAAIS,EAAa,GAAGxzE,OAAOzY,GAAKyY,OAAOyyE,EAAOp+E,QAAQo/E,kBAAkBzzE,OAAO3L,EAAQ0J,SACvFo1E,EAAU5tF,KAAKiuF,GAEX7D,IACFwD,EAAU5tF,KAAKiuF,EAAaH,GAExBT,GACFO,EAAU5tF,KAAKiuF,EAAaF,GAGlC,CACF,CAIA,KAAOJ,EAAcC,EAAU7tF,OACxBmtF,EAAOvC,cAAcsC,KACxB5D,EAAesE,EACfV,EAAQC,EAAOxG,YAAYhzE,EAAMqyE,EAAI4H,EAAa7+E,GAtCf,CAyCzC,IACF,GAnEuC,CAoEzC,IACO,CACL+N,IAAKowE,EACL9D,QAASA,EACTE,aAAcA,EACd6C,QAASA,EACTC,OAAQA,EAEZ,GACC,CACDnqF,IAAK,gBACLzD,MAAO,SAAuBse,GAC5B,aAAelF,IAARkF,IAAwBhf,KAAKiR,QAAQq/E,YAAsB,OAARtxE,IAAoBhf,KAAKiR,QAAQs/E,mBAA6B,KAARvxE,EAClH,GACC,CACD7a,IAAK,cACLzD,MAAO,SAAqBmV,EAAMqyE,EAAI/jF,GACpC,IAAI8M,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAIG,KAAK6rF,YAAc7rF,KAAK6rF,WAAWhD,YAAoB7oF,KAAK6rF,WAAWhD,YAAYhzE,EAAMqyE,EAAI/jF,EAAK8M,GAC/FjR,KAAKwwF,cAAc3H,YAAYhzE,EAAMqyE,EAAI/jF,EAAK8M,EACvD,IACE,CAAC,CACH9M,IAAK,kBACLzD,MAAO,SAAyBuQ,GAC9B,IAAIvF,EAAS,eAEb,IAAK,IAAI0rD,KAAUnmD,EACjB,GAAIlS,OAAOK,UAAUC,eAAeC,KAAK2R,EAASmmD,IAAW1rD,IAAW0rD,EAAO7nD,UAAU,EAAG7D,EAAO5L,cAAWga,IAAc7I,EAAQmmD,GAClI,OAAO,EAIX,OAAO,CACT,KAGKwyB,CACT,CApbiB,CAobfxE,GAEF,SAAS/vC,GAAWj1B,GAClB,OAAOA,EAAOjS,OAAO,GAAGmnC,cAAgBl1B,EAAO/Y,MAAM,EACvD,CAEA,IAAIopF,GAAe,WACjB,SAASA,EAAax/E,IACpB,OAAgBjR,KAAMywF,GAEtBzwF,KAAKiR,QAAUA,EACfjR,KAAK0wF,cAAgB1wF,KAAKiR,QAAQy/E,gBAAiB,EACnD1wF,KAAKykF,OAASU,EAAW/3E,OAAO,gBAClC,CAuIA,OArIA,OAAaqjF,EAAc,CAAC,CAC1BtsF,IAAK,wBACLzD,MAAO,SAA+BmV,GACpC,IAAKA,GAAQA,EAAKxT,QAAQ,KAAO,EAAG,OAAO,KAC3C,IAAIlD,EAAI0W,EAAKzM,MAAM,KACnB,OAAiB,IAAbjK,EAAEW,OAAqB,MAC3BX,EAAE+C,MACoC,MAAlC/C,EAAEA,EAAEW,OAAS,GAAGkU,cAA8B,KAC3ChU,KAAK2wF,mBAAmBxxF,EAAEoK,KAAK,MACxC,GACC,CACDpF,IAAK,0BACLzD,MAAO,SAAiCmV,GACtC,IAAKA,GAAQA,EAAKxT,QAAQ,KAAO,EAAG,OAAOwT,EAC3C,IAAI1W,EAAI0W,EAAKzM,MAAM,KACnB,OAAOpJ,KAAK2wF,mBAAmBxxF,EAAE,GACnC,GACC,CACDgF,IAAK,qBACLzD,MAAO,SAA4BmV,GACjC,GAAoB,iBAATA,GAAqBA,EAAKxT,QAAQ,MAAQ,EAAG,CACtD,IAAIuuF,EAAe,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAChEzxF,EAAI0W,EAAKzM,MAAM,KAkBnB,OAhBIpJ,KAAKiR,QAAQ4/E,aACf1xF,EAAIA,EAAEkK,KAAI,SAAUynF,GAClB,OAAOA,EAAK98E,aACd,IACsB,IAAb7U,EAAEW,QACXX,EAAE,GAAKA,EAAE,GAAG6U,cACZ7U,EAAE,GAAKA,EAAE,GAAGm2C,cACRs7C,EAAavuF,QAAQlD,EAAE,GAAG6U,gBAAkB,IAAG7U,EAAE,GAAKk2C,GAAWl2C,EAAE,GAAG6U,iBACpD,IAAb7U,EAAEW,SACXX,EAAE,GAAKA,EAAE,GAAG6U,cACQ,IAAhB7U,EAAE,GAAGW,SAAcX,EAAE,GAAKA,EAAE,GAAGm2C,eACtB,QAATn2C,EAAE,IAAgC,IAAhBA,EAAE,GAAGW,SAAcX,EAAE,GAAKA,EAAE,GAAGm2C,eACjDs7C,EAAavuF,QAAQlD,EAAE,GAAG6U,gBAAkB,IAAG7U,EAAE,GAAKk2C,GAAWl2C,EAAE,GAAG6U,gBACtE48E,EAAavuF,QAAQlD,EAAE,GAAG6U,gBAAkB,IAAG7U,EAAE,GAAKk2C,GAAWl2C,EAAE,GAAG6U,iBAGrE7U,EAAEoK,KAAK,IAChB,CAEA,OAAOvJ,KAAKiR,QAAQ8/E,WAAa/wF,KAAKiR,QAAQ4/E,aAAeh7E,EAAK7B,cAAgB6B,CACpF,GACC,CACD1R,IAAK,kBACLzD,MAAO,SAAyBmV,GAK9B,OAJ0B,iBAAtB7V,KAAKiR,QAAQ+/E,MAA2BhxF,KAAKiR,QAAQggF,4BACvDp7E,EAAO7V,KAAKkxF,wBAAwBr7E,KAG9B7V,KAAK0wF,gBAAkB1wF,KAAK0wF,cAAc5wF,QAAUE,KAAK0wF,cAAcruF,QAAQwT,IAAS,CAClG,GACC,CACD1R,IAAK,wBACLzD,MAAO,SAA+BkvF,GACpC,IAGIR,EAHAr2E,EAAQ/Y,KAEZ,OAAK4vF,GAELA,EAAMtoF,SAAQ,SAAUuO,GACtB,IAAIu5E,EAAJ,CAEA,IAAI+B,EAAap4E,EAAM43E,mBAAmB96E,GAErCkD,EAAM9H,QAAQy/E,gBAAiB33E,EAAMq4E,gBAAgBD,KAAa/B,EAAQ+B,EAJ9D,CAKnB,KAEK/B,GAASpvF,KAAKiR,QAAQy/E,eACzBd,EAAMtoF,SAAQ,SAAUuO,GACtB,IAAIu5E,EAAJ,CAEA,IAAIiC,EAAUt4E,EAAMm4E,wBAAwBr7E,GAE5C,GAAIkD,EAAMq4E,gBAAgBC,GAAU,OAAOjC,EAAQiC,EACnDjC,EAAQr2E,EAAM9H,QAAQy/E,cAAc1H,MAAK,SAAUsI,GACjD,GAAsC,IAAlCA,EAAajvF,QAAQgvF,GAAgB,OAAOC,CAClD,GAPiB,CAQnB,IAGGlC,IAAOA,EAAQpvF,KAAKstF,iBAAiBttF,KAAKiR,QAAQs8E,aAAa,IAC7D6B,GAxBY,IAyBrB,GACC,CACDjrF,IAAK,mBACLzD,MAAO,SAA0BogD,EAAWjrC,GAC1C,IAAKirC,EAAW,MAAO,GAGvB,GAFyB,mBAAdA,IAA0BA,EAAYA,EAAUjrC,IAClC,iBAAdirC,IAAwBA,EAAY,CAACA,IACG,mBAA/C/hD,OAAOK,UAAUsG,SAAS3F,MAAM+gD,GAAiC,OAAOA,EAC5E,IAAKjrC,EAAM,OAAOirC,EAAmB,SAAK,GAC1C,IAAIsuC,EAAQtuC,EAAUjrC,GAKtB,OAJKu5E,IAAOA,EAAQtuC,EAAU9gD,KAAKuxF,sBAAsB17E,KACpDu5E,IAAOA,EAAQtuC,EAAU9gD,KAAK2wF,mBAAmB96E,KACjDu5E,IAAOA,EAAQtuC,EAAU9gD,KAAKkxF,wBAAwBr7E,KACtDu5E,IAAOA,EAAQtuC,EAAmB,SAChCsuC,GAAS,EAClB,GACC,CACDjrF,IAAK,qBACLzD,MAAO,SAA4BmV,EAAM27E,GACvC,IAAI1G,EAAS9qF,KAETyxF,EAAgBzxF,KAAKstF,iBAAiBkE,GAAgBxxF,KAAKiR,QAAQs8E,aAAe,GAAI13E,GACtF+5E,EAAQ,GAER8B,EAAU,SAAiB1tF,GACxBA,IAED8mF,EAAOsG,gBAAgBptF,GACzB4rF,EAAMztF,KAAK6B,GAEX8mF,EAAOrG,OAAOpzE,KAAK,uDAAuDuL,OAAO5Y,IAErF,EAaA,MAXoB,iBAAT6R,GAAqBA,EAAKxT,QAAQ,MAAQ,GACzB,iBAAtBrC,KAAKiR,QAAQ+/E,MAAyBU,EAAQ1xF,KAAK2wF,mBAAmB96E,IAChD,iBAAtB7V,KAAKiR,QAAQ+/E,MAAiD,gBAAtBhxF,KAAKiR,QAAQ+/E,MAAwBU,EAAQ1xF,KAAKuxF,sBAAsB17E,IAC1F,gBAAtB7V,KAAKiR,QAAQ+/E,MAAwBU,EAAQ1xF,KAAKkxF,wBAAwBr7E,KACrD,iBAATA,GAChB67E,EAAQ1xF,KAAK2wF,mBAAmB96E,IAGlC47E,EAAcnqF,SAAQ,SAAUqqF,GAC1B/B,EAAMvtF,QAAQsvF,GAAM,GAAGD,EAAQ5G,EAAO6F,mBAAmBgB,GAC/D,IACO/B,CACT,KAGKa,CACT,CA/ImB,GAiJfmB,GAAO,CAAC,CACVzE,KAAM,CAAC,MAAO,KAAM,KAAM,MAAO,KAAM,MAAO,MAAO,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,MACjI0E,GAAI,CAAC,EAAG,GACRF,GAAI,GACH,CACDxE,KAAM,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,MAAO,MAAO,KAAM,QAAS,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACzY0E,GAAI,CAAC,EAAG,GACRF,GAAI,GACH,CACDxE,KAAM,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACxI0E,GAAI,CAAC,GACLF,GAAI,GACH,CACDxE,KAAM,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAClD0E,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,GACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KACrBF,GAAI,GACH,CACDxE,KAAM,CAAC,KAAM,MACb0E,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,GACH,CACDxE,KAAM,CAAC,MAAO,MACd0E,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,GACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,EAAG,GACdF,GAAI,GACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,GACRF,GAAI,GACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IACjBF,GAAI,IACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,EAAG,IACdF,GAAI,IACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,GACRF,GAAI,IACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,GACRF,GAAI,IACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,EAAG,GACdF,GAAI,IACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,IACXF,GAAI,IACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,IACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,GACRF,GAAI,IACH,CACDxE,KAAM,CAAC,OACP0E,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,IACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,GAAI,IACfF,GAAI,IACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,GACRF,GAAI,GACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,IACXF,GAAI,IACH,CACDxE,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,EAAG,GACdF,GAAI,IACH,CACDxE,KAAM,CAAC,KAAM,MACb0E,GAAI,CAAC,EAAG,EAAG,GAAI,IACfF,GAAI,KAEFG,GAAqB,CACvB,EAAG,SAAWlyF,GACZ,OAAO4sC,OAAO5sC,EAAI,EACpB,EACA,EAAG,SAAWA,GACZ,OAAO4sC,OAAY,GAAL5sC,EAChB,EACA,EAAG,SAAWA,GACZ,OAAO,CACT,EACA,EAAG,SAAWA,GACZ,OAAO4sC,OAAO5sC,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,IAAM,GAAKA,EAAI,IAAM,IAAMA,EAAI,IAAM,IAAMA,EAAI,KAAO,IAAM,EAAI,EACvH,EACA,EAAG,SAAWA,GACZ,OAAO4sC,OAAY,GAAL5sC,EAAS,EAAS,GAALA,EAAS,EAAS,GAALA,EAAS,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,KAAO,GAAK,EAAI,EAC/G,EACA,EAAG,SAAWA,GACZ,OAAO4sC,OAAY,GAAL5sC,EAAS,EAAIA,GAAK,GAAKA,GAAK,EAAI,EAAI,EACpD,EACA,EAAG,SAAWA,GACZ,OAAO4sC,OAAY,GAAL5sC,EAAS,EAAIA,EAAI,IAAM,GAAKA,EAAI,IAAM,IAAMA,EAAI,IAAM,IAAMA,EAAI,KAAO,IAAM,EAAI,EACjG,EACA,EAAG,SAAWA,GACZ,OAAO4sC,OAAY,GAAL5sC,EAAS,EAAS,GAALA,EAAS,EAAS,GAALA,GAAe,IAALA,EAAU,EAAI,EAClE,EACA,EAAG,SAAWA,GACZ,OAAO4sC,OAAO5sC,GAAK,EACrB,EACA,GAAI,SAAWA,GACb,OAAO4sC,OAAY,GAAL5sC,EAAS,EAAS,GAALA,EAAS,EAAIA,EAAI,EAAI,EAAIA,EAAI,GAAK,EAAI,EACnE,EACA,GAAI,SAAWA,GACb,OAAO4sC,OAAY,GAAL5sC,GAAe,IAALA,EAAU,EAAS,GAALA,GAAe,IAALA,EAAU,EAAIA,EAAI,GAAKA,EAAI,GAAK,EAAI,EACtF,EACA,GAAI,SAAWA,GACb,OAAO4sC,OAAO5sC,EAAI,IAAM,GAAKA,EAAI,KAAO,GAC1C,EACA,GAAI,SAAWA,GACb,OAAO4sC,OAAa,IAAN5sC,EAChB,EACA,GAAI,SAAWA,GACb,OAAO4sC,OAAY,GAAL5sC,EAAS,EAAS,GAALA,EAAS,EAAS,GAALA,EAAS,EAAI,EACvD,EACA,GAAI,SAAWA,GACb,OAAO4sC,OAAO5sC,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,IAAM,IAAMA,EAAI,IAAM,IAAMA,EAAI,KAAO,IAAM,EAAI,EACxG,EACA,GAAI,SAAWA,GACb,OAAO4sC,OAAO5sC,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAU,IAANA,EAAU,EAAI,EACjE,EACA,GAAI,SAAWA,GACb,OAAO4sC,OAAY,GAAL5sC,GAAUA,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAI,EAC7D,EACA,GAAI,SAAWA,GACb,OAAO4sC,OAAY,GAAL5sC,EAAS,EAAS,GAALA,EAAS,EAAI,EAC1C,EACA,GAAI,SAAWA,GACb,OAAO4sC,OAAY,GAAL5sC,EAAS,EAAS,GAALA,GAAUA,EAAI,IAAM,GAAKA,EAAI,IAAM,GAAK,EAAIA,EAAI,IAAM,IAAMA,EAAI,IAAM,GAAK,EAAI,EAC5G,EACA,GAAI,SAAWA,GACb,OAAO4sC,OAAY,GAAL5sC,EAAS,EAAS,GAALA,GAAUA,EAAI,IAAM,GAAKA,EAAI,IAAM,GAAK,EAAI,EACzE,EACA,GAAI,SAAWA,GACb,OAAO4sC,OAAO5sC,EAAI,KAAO,EAAI,EAAIA,EAAI,KAAO,EAAI,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,EAAI,EAAI,EACzF,EACA,GAAI,SAAWA,GACb,OAAO4sC,OAAY,GAAL5sC,EAAS,EAAS,GAALA,EAAS,GAAKA,EAAI,GAAKA,EAAI,KAAOA,EAAI,IAAM,EAAI,EAAI,EACjF,GAEEmyF,GAAyB,CAAC,KAAM,KAAM,MACtCC,GAAgB,CAClBC,KAAM,EACNC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,KAAM,EACN/uE,MAAO,GAGT,SAASgvE,KACP,IAAI5zC,EAAQ,CAAC,EASb,OARAkzC,GAAKtqF,SAAQ,SAAUlE,GACrBA,EAAI+pF,KAAK7lF,SAAQ,SAAUnC,GACzBu5C,EAAMv5C,GAAK,CACTotF,QAASnvF,EAAIyuF,GACbW,QAASV,GAAmB1uF,EAAIuuF,IAEpC,GACF,IACOjzC,CACT,CAEA,IAAI+zC,GAAiB,WACnB,SAASA,EAAepF,GACtB,IAAIp8E,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAEnF,OAAgBG,KAAMyyF,GAEtBzyF,KAAKqtF,cAAgBA,EACrBrtF,KAAKiR,QAAUA,EACfjR,KAAKykF,OAASU,EAAW/3E,OAAO,kBAE1BpN,KAAKiR,QAAQyhF,mBAAwD,OAAnC1yF,KAAKiR,QAAQyhF,mBAAgD,oBAATC,MAAyBA,KAAKC,cACxH5yF,KAAKiR,QAAQyhF,kBAAoB,KACjC1yF,KAAKykF,OAAO58E,MAAM,uJAGpB7H,KAAK0+C,MAAQ4zC,IACf,CA4HA,OA1HA,OAAaG,EAAgB,CAAC,CAC5BtuF,IAAK,UACLzD,MAAO,SAAiB0nF,EAAKnoE,GAC3BjgB,KAAK0+C,MAAM0pC,GAAOnoE,CACpB,GACC,CACD9b,IAAK,UACLzD,MAAO,SAAiBmV,GACtB,IAAI5E,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEnF,GAAIG,KAAK0vF,mBACP,IACE,OAAO,IAAIiD,KAAKC,YAAY/8E,EAAM,CAChCpG,KAAMwB,EAAQw+E,QAAU,UAAY,YAIxC,CAFE,MAAOoD,GACP,MACF,CAGF,OAAO7yF,KAAK0+C,MAAM7oC,IAAS7V,KAAK0+C,MAAM1+C,KAAKqtF,cAAc6D,wBAAwBr7E,GACnF,GACC,CACD1R,IAAK,cACLzD,MAAO,SAAqBmV,GAC1B,IAAI5E,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/Ei9C,EAAO98C,KAAK4+C,QAAQ/oC,EAAM5E,GAE9B,OAAIjR,KAAK0vF,mBACA5yC,GAAQA,EAAKg2C,kBAAkBC,iBAAiBjzF,OAAS,EAG3Dg9C,GAAQA,EAAKy1C,QAAQzyF,OAAS,CACvC,GACC,CACDqE,IAAK,sBACLzD,MAAO,SAA6BmV,EAAM1R,GACxC,IAAI8M,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAOG,KAAKguF,YAAYn4E,EAAM5E,GAAS5H,KAAI,SAAUsC,GACnD,MAAO,GAAGiR,OAAOzY,GAAKyY,OAAOjR,EAC/B,GACF,GACC,CACDxH,IAAK,cACLzD,MAAO,SAAqBmV,GAC1B,IAAIkD,EAAQ/Y,KAERiR,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/Ei9C,EAAO98C,KAAK4+C,QAAQ/oC,EAAM5E,GAE9B,OAAK6rC,EAID98C,KAAK0vF,mBACA5yC,EAAKg2C,kBAAkBC,iBAAiB/wE,MAAK,SAAUgxE,EAAiBC,GAC7E,OAAOjB,GAAcgB,GAAmBhB,GAAciB,EACxD,IAAG5pF,KAAI,SAAU6pF,GACf,MAAO,GAAGt2E,OAAO7D,EAAM9H,QAAQkiF,SAASv2E,OAAOs2E,EACjD,IAGKp2C,EAAKy1C,QAAQlpF,KAAI,SAAU+vC,GAChC,OAAOrgC,EAAM6zE,UAAU/2E,EAAMujC,EAAQnoC,EACvC,IAbS,EAcX,GACC,CACD9M,IAAK,YACLzD,MAAO,SAAmBmV,EAAM22E,GAC9B,IAAIv7E,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/Ei9C,EAAO98C,KAAK4+C,QAAQ/oC,EAAM5E,GAE9B,OAAI6rC,EACE98C,KAAK0vF,mBACA,GAAG9yE,OAAO5c,KAAKiR,QAAQkiF,SAASv2E,OAAOkgC,EAAKs2C,OAAO5G,IAGrDxsF,KAAKqzF,yBAAyBv2C,EAAM0vC,IAG7CxsF,KAAKykF,OAAOpzE,KAAK,6BAA6BuL,OAAO/G,IAC9C,GACT,GACC,CACD1R,IAAK,2BACLzD,MAAO,SAAkCo8C,EAAM0vC,GAC7C,IAAI1B,EAAS9qF,KAET8gC,EAAMgc,EAAKw2C,MAAQx2C,EAAK01C,QAAQhG,GAAS1vC,EAAK01C,QAAQxtF,KAAKopB,IAAIo+D,IAC/D7gF,EAASmxC,EAAKy1C,QAAQzxD,GAEtB9gC,KAAKiR,QAAQsiF,sBAAgD,IAAxBz2C,EAAKy1C,QAAQzyF,QAAoC,IAApBg9C,EAAKy1C,QAAQ,KAClE,IAAX5mF,EACFA,EAAS,SACW,IAAXA,IACTA,EAAS,KAIb,IAAI6nF,EAAe,WACjB,OAAO1I,EAAO75E,QAAQkiF,SAAWxnF,EAAOjG,WAAaolF,EAAO75E,QAAQkiF,QAAUxnF,EAAOjG,WAAaiG,EAAOjG,UAC3G,EAEA,MAAuC,OAAnC1F,KAAKiR,QAAQyhF,kBACA,IAAX/mF,EAAqB,GACH,iBAAXA,EAA4B,WAAWiR,OAAOjR,EAAOjG,YACzD8tF,IACqC,OAAnCxzF,KAAKiR,QAAQyhF,mBAEb1yF,KAAKiR,QAAQsiF,sBAAgD,IAAxBz2C,EAAKy1C,QAAQzyF,QAAoC,IAApBg9C,EAAKy1C,QAAQ,GADjFiB,IAKFxzF,KAAKiR,QAAQkiF,SAAWryD,EAAIp7B,WAAa1F,KAAKiR,QAAQkiF,QAAUryD,EAAIp7B,WAAao7B,EAAIp7B,UAC9F,GACC,CACDvB,IAAK,mBACLzD,MAAO,WACL,OAAQqxF,GAAuBxqF,SAASvH,KAAKiR,QAAQyhF,kBACvD,KAGKD,CACT,CA7IqB,GA+IrB,SAASgB,GAAU15B,EAAQgqB,GAAkB,IAAIh7E,EAAOhK,OAAOgK,KAAKgxD,GAAS,GAAIh7D,OAAOuD,sBAAuB,CAAE,IAAI0hF,EAAUjlF,OAAOuD,sBAAsBy3D,GAAagqB,IAAkBC,EAAUA,EAAQ78E,QAAO,SAAU88E,GAAO,OAAOllF,OAAOo5D,yBAAyB4B,EAAQkqB,GAAKzpC,UAAY,KAAMzxC,EAAK5G,KAAKpC,MAAMgJ,EAAMi7E,EAAU,CAAE,OAAOj7E,CAAM,CAE1V,SAAS2qF,GAAgBp2E,GAAU,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAI4X,EAAyB,MAAhB1X,UAAUF,GAAaE,UAAUF,GAAK,CAAC,EAAOA,EAAI,EAAK8zF,GAAU10F,OAAOwY,IAAS,GAAMjQ,SAAQ,SAAUnD,IAAO,OAAgBmZ,EAAQnZ,EAAKoT,EAAOpT,GAAO,IAAepF,OAAOolF,0BAA6BplF,OAAOqlF,iBAAiB9mE,EAAQve,OAAOolF,0BAA0B5sE,IAAmBk8E,GAAU10F,OAAOwY,IAASjQ,SAAQ,SAAUnD,GAAOpF,OAAOgE,eAAeua,EAAQnZ,EAAKpF,OAAOo5D,yBAAyB5gD,EAAQpT,GAAO,GAAM,CAAE,OAAOmZ,CAAQ,CAE3hB,IAAIq2E,GAAe,WACjB,SAASA,IACP,IAAI1iF,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAEnF,OAAgBG,KAAM2zF,GAEtB3zF,KAAKykF,OAASU,EAAW/3E,OAAO,gBAChCpN,KAAKiR,QAAUA,EAEfjR,KAAK4zF,OAAS3iF,EAAQ84E,eAAiB94E,EAAQ84E,cAAc6J,QAAU,SAAUlzF,GAC/E,OAAOA,CACT,EAEAV,KAAKwkF,KAAKvzE,EACZ,CAyMA,OAvMA,OAAa0iF,EAAc,CAAC,CAC1BxvF,IAAK,OACLzD,MAAO,WACL,IAAIuQ,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9EoR,EAAQ84E,gBAAe94E,EAAQ84E,cAAgB,CAClD8J,aAAa,IAEf,IAAIC,EAAQ7iF,EAAQ84E,cACpB/pF,KAAK+zF,YAA0Bj6E,IAAjBg6E,EAAMC,OAAuBD,EAAMC,OAAS,GAC1D/zF,KAAK6zF,iBAAoC/5E,IAAtBg6E,EAAMD,aAA4BC,EAAMD,YAC3D7zF,KAAKg0F,yBAAoDl6E,IAA9Bg6E,EAAME,qBAAoCF,EAAME,oBAC3Eh0F,KAAK0L,OAASooF,EAAMpoF,OAAS+6E,GAAYqN,EAAMpoF,QAAUooF,EAAMG,eAAiB,KAChFj0F,KAAK2L,OAASmoF,EAAMnoF,OAAS86E,GAAYqN,EAAMnoF,QAAUmoF,EAAMI,eAAiB,KAChFl0F,KAAKm0F,gBAAkBL,EAAMK,gBAAkBL,EAAMK,gBAAkBL,EAAMK,iBAAmB,IAChGn0F,KAAKo0F,eAAiBN,EAAMO,eAAiB,GAAKP,EAAMM,gBAAkB,IAC1Ep0F,KAAKq0F,eAAiBr0F,KAAKo0F,eAAiB,GAAKN,EAAMO,gBAAkB,GACzEr0F,KAAKs0F,cAAgBR,EAAMQ,cAAgB7N,GAAYqN,EAAMQ,eAAiBR,EAAMS,sBAAwB9N,GAAY,OACxHzmF,KAAKw0F,cAAgBV,EAAMU,cAAgB/N,GAAYqN,EAAMU,eAAiBV,EAAMW,sBAAwBhO,GAAY,KACxHzmF,KAAK00F,wBAA0BZ,EAAMY,wBAA0BZ,EAAMY,wBAA0BZ,EAAMY,yBAA2B,IAChI10F,KAAK20F,YAAcb,EAAMa,YAAcb,EAAMa,YAAc,IAC3D30F,KAAK40F,kBAAsC96E,IAAvBg6E,EAAMc,cAA6Bd,EAAMc,aAC7D50F,KAAK60F,aACP,GACC,CACD1wF,IAAK,QACLzD,MAAO,WACDV,KAAKiR,SAASjR,KAAKwkF,KAAKxkF,KAAKiR,QACnC,GACC,CACD9M,IAAK,cACLzD,MAAO,WACL,IAAIo0F,EAAY,GAAGl4E,OAAO5c,KAAK0L,OAAQ,SAASkR,OAAO5c,KAAK2L,QAC5D3L,KAAK+0F,OAAS,IAAIrpD,OAAOopD,EAAW,KACpC,IAAIE,EAAoB,GAAGp4E,OAAO5c,KAAK0L,QAAQkR,OAAO5c,KAAKo0F,eAAgB,SAASx3E,OAAO5c,KAAKq0F,gBAAgBz3E,OAAO5c,KAAK2L,QAC5H3L,KAAKi1F,eAAiB,IAAIvpD,OAAOspD,EAAmB,KACpD,IAAIE,EAAmB,GAAGt4E,OAAO5c,KAAKs0F,cAAe,SAAS13E,OAAO5c,KAAKw0F,eAC1Ex0F,KAAK4qF,cAAgB,IAAIl/C,OAAOwpD,EAAkB,IACpD,GACC,CACD/wF,IAAK,cACLzD,MAAO,SAAqB6gD,EAAKj3C,EAAM89E,EAAKn3E,GAC1C,IAEIsP,EACA7f,EACAy0F,EAJAp8E,EAAQ/Y,KAKRsmF,EAActmF,KAAKiR,SAAWjR,KAAKiR,QAAQ84E,eAAiB/pF,KAAKiR,QAAQ84E,cAAcqE,kBAAoB,CAAC,EAEhH,SAASgH,EAAU7oD,GACjB,OAAOA,EAAI/iC,QAAQ,MAAO,OAC5B,CAEA,IAAI6rF,EAAe,SAAsBlxF,GACvC,GAAIA,EAAI9B,QAAQ0W,EAAMo7E,iBAAmB,EAAG,CAC1C,IAAInmF,EAAOq4E,GAAoB/7E,EAAMg8E,EAAaniF,GAClD,OAAO4U,EAAM67E,aAAe77E,EAAM66E,OAAO5lF,OAAM8L,EAAWsuE,EAAKsL,GAAgBA,GAAgBA,GAAgB,CAAC,EAAGziF,GAAU3G,GAAO,CAAC,EAAG,CACtIgrF,iBAAkBnxF,KACd6J,CACR,CAEA,IAAI7O,EAAIgF,EAAIiF,MAAM2P,EAAMo7E,iBACpBxrF,EAAIxJ,EAAE+xD,QAAQ1lD,OACdpK,EAAIjC,EAAEoK,KAAKwP,EAAMo7E,iBAAiB3oF,OACtC,OAAOuN,EAAM66E,OAAOvN,GAAoB/7E,EAAMg8E,EAAa39E,GAAIvH,EAAGgnF,EAAKsL,GAAgBA,GAAgBA,GAAgB,CAAC,EAAGziF,GAAU3G,GAAO,CAAC,EAAG,CAC9IgrF,iBAAkB3sF,IAEtB,EAEA3I,KAAK60F,cACL,IAAIU,EAA8BtkF,GAAWA,EAAQskF,6BAA+Bv1F,KAAKiR,QAAQskF,4BAC7F9G,EAAkBx9E,GAAWA,EAAQ84E,oBAA2DjwE,IAA1C7I,EAAQ84E,cAAc0E,gBAAgCx9E,EAAQ84E,cAAc0E,gBAAkBzuF,KAAKiR,QAAQ84E,cAAc0E,gBAsDnL,MArDY,CAAC,CACX+G,MAAOx1F,KAAKi1F,eACZQ,UAAW,SAAmBlpD,GAC5B,OAAO6oD,EAAU7oD,EACnB,GACC,CACDipD,MAAOx1F,KAAK+0F,OACZU,UAAW,SAAmBlpD,GAC5B,OAAOxzB,EAAM86E,YAAcuB,EAAUr8E,EAAMg7E,OAAOxnD,IAAQ6oD,EAAU7oD,EACtE,IAEIjlC,SAAQ,SAAUouF,GAGtB,IAFAP,EAAW,EAEJ50E,EAAQm1E,EAAKF,MAAMh0E,KAAK+/B,IAAM,CACnC,IAAIo0C,EAAap1E,EAAM,GAAG/U,OAG1B,QAAcsO,KAFdpZ,EAAQ20F,EAAaM,IAGnB,GAA2C,mBAAhCJ,EAA4C,CACrD,IAAIK,EAAOL,EAA4Bh0C,EAAKhhC,EAAOtP,GACnDvQ,EAAwB,iBAATk1F,EAAoBA,EAAO,EAC5C,MAAO,GAAI3kF,GAAWA,EAAQ5R,eAAes2F,GAC3Cj1F,EAAQ,OACH,IAAI+tF,EAAiB,CAC1B/tF,EAAQ6f,EAAM,GACd,QACF,CACExH,EAAM0rE,OAAOpzE,KAAK,8BAA8BuL,OAAO+4E,EAAY,uBAAuB/4E,OAAO2kC,IAEjG7gD,EAAQ,EACV,KAC0B,iBAAVA,GAAuBqY,EAAMi7E,sBAC7CtzF,EAAQilF,EAAWjlF,IAGrB,IAAI+0F,EAAYC,EAAKD,UAAU/0F,GAY/B,GAXA6gD,EAAMA,EAAI/3C,QAAQ+W,EAAM,GAAIk1E,GAExBhH,GACFiH,EAAKF,MAAMK,WAAan1F,EAAMZ,OAC9B41F,EAAKF,MAAMK,WAAat1E,EAAM,GAAGzgB,QAEjC41F,EAAKF,MAAMK,UAAY,IAGzBV,GAEgBp8E,EAAM47E,YACpB,KAEJ,CACF,IACOpzC,CACT,GACC,CACDp9C,IAAK,OACLzD,MAAO,SAAc6gD,EAAKowC,GACxB,IAGIpxE,EACA7f,EAJAoqF,EAAS9qF,KAETiR,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAI/Ei2F,EAAgBpC,GAAgB,CAAC,EAAGziF,GAKxC,SAAS8kF,EAAiB5xF,EAAK6xF,GAC7B,IAAIC,EAAMj2F,KAAK00F,wBACf,GAAIvwF,EAAI9B,QAAQ4zF,GAAO,EAAG,OAAO9xF,EACjC,IAAIH,EAAIG,EAAIiF,MAAM,IAAIsiC,OAAO,GAAG9uB,OAAOq5E,EAAK,WACxCC,EAAgB,IAAIt5E,OAAO5Y,EAAE,IACjCG,EAAMH,EAAE,GAERkyF,GADAA,EAAgBl2F,KAAK2uF,YAAYuH,EAAeJ,IAClBtsF,QAAQ,KAAM,KAE5C,IACEssF,EAAgB1vF,KAAKM,MAAMwvF,GACvBF,IAAkBF,EAAgBpC,GAAgBA,GAAgB,CAAC,EAAGsC,GAAmBF,GAI/F,CAHE,MAAOj1F,GAEP,OADAb,KAAKykF,OAAOpzE,KAAK,oDAAoDuL,OAAOzY,GAAMtD,GAC3E,GAAG+b,OAAOzY,GAAKyY,OAAOq5E,GAAKr5E,OAAOs5E,EAC3C,CAGA,cADOJ,EAAcjJ,aACd1oF,CACT,CAEA,IAxBA2xF,EAAc7G,oBAAqB,SAC5B6G,EAAcjJ,aAuBdtsE,EAAQvgB,KAAK4qF,cAAcppE,KAAK+/B,IAAM,CAC3C,IAAI40C,EAAa,GACbC,GAAW,EAEf,IAAgD,IAA5C71E,EAAM,GAAGle,QAAQrC,KAAKm0F,mBAA4B,OAAOjiF,KAAKqO,EAAM,IAAK,CAC3E,IAAIxc,EAAIwc,EAAM,GAAGnX,MAAMpJ,KAAKm0F,iBAAiB9qF,KAAI,SAAUgtF,GACzD,OAAOA,EAAK7qF,MACd,IACA+U,EAAM,GAAKxc,EAAEmtD,QACbilC,EAAapyF,EACbqyF,GAAW,CACb,CAGA,IADA11F,EAAQixF,EAAGoE,EAAiBz2F,KAAKU,KAAMugB,EAAM,GAAG/U,OAAQsqF,GAAgBA,KAC3Dv1E,EAAM,KAAOghC,GAAwB,iBAAV7gD,EAAoB,OAAOA,EAC9C,iBAAVA,IAAoBA,EAAQilF,EAAWjlF,IAE7CA,IACHV,KAAKykF,OAAOpzE,KAAK,qBAAqBuL,OAAO2D,EAAM,GAAI,iBAAiB3D,OAAO2kC,IAC/E7gD,EAAQ,IAGN01F,IACF11F,EAAQy1F,EAAWntF,QAAO,SAAUjH,EAAGX,GACrC,OAAO0pF,EAAO8I,OAAO7xF,EAAGX,EAAG6P,EAAQm3E,IAAKsL,GAAgBA,GAAgB,CAAC,EAAGziF,GAAU,CAAC,EAAG,CACxFqkF,iBAAkB/0E,EAAM,GAAG/U,SAE/B,GAAG9K,EAAM8K,SAGX+1C,EAAMA,EAAI/3C,QAAQ+W,EAAM,GAAI7f,GAC5BV,KAAK+0F,OAAOc,UAAY,CAC1B,CAEA,OAAOt0C,CACT,KAGKoyC,CACT,CAxNmB,GA0NnB,SAAS2C,GAAUv8B,EAAQgqB,GAAkB,IAAIh7E,EAAOhK,OAAOgK,KAAKgxD,GAAS,GAAIh7D,OAAOuD,sBAAuB,CAAE,IAAI0hF,EAAUjlF,OAAOuD,sBAAsBy3D,GAAagqB,IAAkBC,EAAUA,EAAQ78E,QAAO,SAAU88E,GAAO,OAAOllF,OAAOo5D,yBAAyB4B,EAAQkqB,GAAKzpC,UAAY,KAAMzxC,EAAK5G,KAAKpC,MAAMgJ,EAAMi7E,EAAU,CAAE,OAAOj7E,CAAM,CAE1V,SAASwtF,GAAgBj5E,GAAU,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAI4X,EAAyB,MAAhB1X,UAAUF,GAAaE,UAAUF,GAAK,CAAC,EAAOA,EAAI,EAAK22F,GAAUv3F,OAAOwY,IAAS,GAAMjQ,SAAQ,SAAUnD,IAAO,OAAgBmZ,EAAQnZ,EAAKoT,EAAOpT,GAAO,IAAepF,OAAOolF,0BAA6BplF,OAAOqlF,iBAAiB9mE,EAAQve,OAAOolF,0BAA0B5sE,IAAmB++E,GAAUv3F,OAAOwY,IAASjQ,SAAQ,SAAUnD,GAAOpF,OAAOgE,eAAeua,EAAQnZ,EAAKpF,OAAOo5D,yBAAyB5gD,EAAQpT,GAAO,GAAM,CAAE,OAAOmZ,CAAQ,CAwC3hB,IAAIk5E,GAAY,WACd,SAASA,IACP,IAAIvlF,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAEnF,OAAgBG,KAAMw2F,GAEtBx2F,KAAKykF,OAASU,EAAW/3E,OAAO,aAChCpN,KAAKiR,QAAUA,EACfjR,KAAKy2F,QAAU,CACbr9C,OAAQ,SAAgB7M,EAAK67C,EAAKn3E,GAChC,OAAO,IAAI0hF,KAAK+D,aAAatO,EAAKn3E,GAAS2iF,OAAOrnD,EACpD,EACAoqD,SAAU,SAAkBpqD,EAAK67C,EAAKn3E,GACpC,OAAO,IAAI0hF,KAAK+D,aAAatO,EAAKmO,GAAgBA,GAAgB,CAAC,EAAGtlF,GAAU,CAAC,EAAG,CAClFkG,MAAO,cACLy8E,OAAOrnD,EACb,EACAkN,SAAU,SAAkBlN,EAAK67C,EAAKn3E,GACpC,OAAO,IAAI0hF,KAAKiE,eAAexO,EAAKmO,GAAgB,CAAC,EAAGtlF,IAAU2iF,OAAOrnD,EAC3E,EACAsqD,aAAc,SAAsBtqD,EAAK67C,EAAKn3E,GAC5C,OAAO,IAAI0hF,KAAKmE,mBAAmB1O,EAAKmO,GAAgB,CAAC,EAAGtlF,IAAU2iF,OAAOrnD,EAAKt7B,EAAQ8lF,OAAS,MACrG,EACA/mB,KAAM,SAAczjC,EAAK67C,EAAKn3E,GAC5B,OAAO,IAAI0hF,KAAKqE,WAAW5O,EAAKmO,GAAgB,CAAC,EAAGtlF,IAAU2iF,OAAOrnD,EACvE,GAEFvsC,KAAKwkF,KAAKvzE,EACZ,CAkDA,OAhDA,OAAaulF,EAAW,CAAC,CACvBryF,IAAK,OACLzD,MAAO,SAAcmpF,GACnB,IAAI54E,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAChFkqF,cAAe,CAAC,GAEd+J,EAAQ7iF,EAAQ84E,cACpB/pF,KAAKm0F,gBAAkBL,EAAMK,gBAAkBL,EAAMK,gBAAkBL,EAAMK,iBAAmB,GAClG,GACC,CACDhwF,IAAK,MACLzD,MAAO,SAAa+G,EAAMkqF,GACxB3xF,KAAKy2F,QAAQhvF,EAAKuM,cAAcxI,QAAUmmF,CAC5C,GACC,CACDxtF,IAAK,SACLzD,MAAO,SAAgBA,EAAOu2F,EAAS7O,EAAKn3E,GAC1C,IAAI8H,EAAQ/Y,KA2BZ,OAzBci3F,EAAQ7tF,MAAMpJ,KAAKm0F,iBAEZnrF,QAAO,SAAUkuF,EAAK91F,GACzC,IAAI+1F,EA1FZ,SAAwBC,GACtB,IAAIC,EAAaD,EAAUpjF,cAAcxI,OACrC8rF,EAAgB,CAAC,EAErB,GAAIF,EAAU/0F,QAAQ,MAAQ,EAAG,CAC/B,IAAIlD,EAAIi4F,EAAUhuF,MAAM,KACxBiuF,EAAal4F,EAAE,GAAG6U,cAAcxI,OAChC,IAAI+rF,EAASp4F,EAAE,GAAGoQ,UAAU,EAAGpQ,EAAE,GAAGW,OAAS,GAE1B,aAAfu3F,GAA6BE,EAAOl1F,QAAQ,KAAO,EAChDi1F,EAAcX,WAAUW,EAAcX,SAAWY,EAAO/rF,QACrC,iBAAf6rF,GAAiCE,EAAOl1F,QAAQ,KAAO,EAC3Di1F,EAAcP,QAAOO,EAAcP,MAAQQ,EAAO/rF,QAE5C+rF,EAAOnuF,MAAM,KACnB9B,SAAQ,SAAUuuD,GACrB,GAAKA,EAAL,CAEA,IAAI2hC,EAAa3hC,EAAIzsD,MAAM,KACvBquF,GAAc,OAASD,GACvBrzF,EAAMszF,EAAY,GAGlBlrD,EAFOkrD,EAAYpwF,MAAM,GAEdkC,KAAK,KAAKiC,OAAOhC,QAAQ,WAAY,IAC/C8tF,EAAcnzF,EAAIqH,UAAS8rF,EAAcnzF,EAAIqH,QAAU+gC,GAChD,UAARA,IAAiB+qD,EAAcnzF,EAAIqH,SAAU,GACrC,SAAR+gC,IAAgB+qD,EAAcnzF,EAAIqH,SAAU,GAC3C02C,MAAM3V,KAAM+qD,EAAcnzF,EAAIqH,QAAUqI,SAAS04B,EAAK,IAX3C,CAYlB,GAEJ,CAEA,MAAO,CACL8qD,WAAYA,EACZC,cAAeA,EAEnB,CAsD8BI,CAAet2F,GACjCi2F,EAAaF,EAAgBE,WAC7BC,EAAgBH,EAAgBG,cAEpC,GAAIv+E,EAAM09E,QAAQY,GAAa,CAC7B,IAAIM,EAAYT,EAEhB,IACE,IAAIU,EAAa3mF,GAAWA,EAAQ4mF,cAAgB5mF,EAAQ4mF,aAAa5mF,EAAQqkF,mBAAqB,CAAC,EACnGnwF,EAAIyyF,EAAWE,QAAUF,EAAWxP,KAAOn3E,EAAQ6mF,QAAU7mF,EAAQm3E,KAAOA,EAChFuP,EAAY5+E,EAAM09E,QAAQY,GAAYH,EAAK/xF,EAAGoxF,GAAgBA,GAAgBA,GAAgB,CAAC,EAAGe,GAAgBrmF,GAAU2mF,GAG9H,CAFE,MAAO/vF,GACPkR,EAAM0rE,OAAOpzE,KAAKxJ,EACpB,CAEA,OAAO8vF,CACT,CAIA,OAHE5+E,EAAM0rE,OAAOpzE,KAAK,oCAAoCuL,OAAOy6E,IAGxDH,CACT,GAAGx2F,EAEL,KAGK81F,CACT,CA/EgB,GAiFhB,SAASuB,GAAUh+B,EAAQgqB,GAAkB,IAAIh7E,EAAOhK,OAAOgK,KAAKgxD,GAAS,GAAIh7D,OAAOuD,sBAAuB,CAAE,IAAI0hF,EAAUjlF,OAAOuD,sBAAsBy3D,GAAagqB,IAAkBC,EAAUA,EAAQ78E,QAAO,SAAU88E,GAAO,OAAOllF,OAAOo5D,yBAAyB4B,EAAQkqB,GAAKzpC,UAAY,KAAMzxC,EAAK5G,KAAKpC,MAAMgJ,EAAMi7E,EAAU,CAAE,OAAOj7E,CAAM,CAE1V,SAASivF,GAAgB16E,GAAU,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAI4X,EAAyB,MAAhB1X,UAAUF,GAAaE,UAAUF,GAAK,CAAC,EAAOA,EAAI,EAAKo4F,GAAUh5F,OAAOwY,IAAS,GAAMjQ,SAAQ,SAAUnD,IAAO,OAAgBmZ,EAAQnZ,EAAKoT,EAAOpT,GAAO,IAAepF,OAAOolF,0BAA6BplF,OAAOqlF,iBAAiB9mE,EAAQve,OAAOolF,0BAA0B5sE,IAAmBwgF,GAAUh5F,OAAOwY,IAASjQ,SAAQ,SAAUnD,GAAOpF,OAAOgE,eAAeua,EAAQnZ,EAAKpF,OAAOo5D,yBAAyB5gD,EAAQpT,GAAO,GAAM,CAAE,OAAOmZ,CAAQ,CAE3hB,SAAS26E,GAAehR,GAAW,IAAIC,EAEvC,WAAyC,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhF/7E,QAAQnM,UAAUmoF,QAAQjoF,KAAK6nF,QAAQC,UAAU77E,QAAS,IAAI,WAAa,MAAY,CAAkC,CAA1B,MAAO1K,GAAK,OAAO,CAAO,CAAE,CAFvQq3F,GAA+B,OAAO,WAAkC,IAAsCn3F,EAAlC0mF,EAAQ5D,EAAgBoD,GAAkB,GAAIC,EAA2B,CAAE,IAAIQ,EAAY7D,EAAgB7jF,MAAM2H,YAAa5G,EAASomF,QAAQC,UAAUK,EAAO5nF,UAAW6nF,EAAY,MAAS3mF,EAAS0mF,EAAM1nF,MAAMC,KAAMH,WAAc,OAAO8jF,EAA2B3jF,KAAMe,EAAS,CAAG,CAW5a,IAAIo3F,GAAY,SAAUlQ,GACxB3E,EAAU6U,EAAWlQ,GAErB,IAAInvE,EAASm/E,GAAeE,GAE5B,SAASA,EAAUC,EAASC,EAAOxO,GACjC,IAAI9wE,EAEA9H,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EA0BnF,OAxBA,OAAgBG,KAAMm4F,GAEtBp/E,EAAQD,EAAOxZ,KAAKU,MAEhB2mF,IACFvB,EAAa9lF,MAAK,OAAuByZ,IAG3CA,EAAMq/E,QAAUA,EAChBr/E,EAAMs/E,MAAQA,EACdt/E,EAAM8wE,SAAWA,EACjB9wE,EAAMs0E,cAAgBxD,EAASwD,cAC/Bt0E,EAAM9H,QAAUA,EAChB8H,EAAM0rE,OAASU,EAAW/3E,OAAO,oBACjC2L,EAAMu/E,aAAe,GACrBv/E,EAAMw/E,iBAAmBtnF,EAAQsnF,kBAAoB,GACrDx/E,EAAMy/E,aAAe,EACrBz/E,EAAM/Q,MAAQ,CAAC,EACf+Q,EAAM0/E,MAAQ,GAEV1/E,EAAMq/E,SAAWr/E,EAAMq/E,QAAQ5T,MACjCzrE,EAAMq/E,QAAQ5T,KAAKqF,EAAU54E,EAAQmnF,QAASnnF,GAGzC8H,CACT,CAmNA,OAjNA,OAAao/E,EAAW,CAAC,CACvBh0F,IAAK,YACLzD,MAAO,SAAmBg4F,EAAWxO,EAAYj5E,EAASulB,GACxD,IAAIs0D,EAAS9qF,KAET24F,EAAS,CAAC,EACVC,EAAU,CAAC,EACXC,EAAkB,CAAC,EACnBC,EAAmB,CAAC,EA+BxB,OA9BAJ,EAAUpxF,SAAQ,SAAU8gF,GAC1B,IAAI2Q,GAAmB,EACvB7O,EAAW5iF,SAAQ,SAAU4gF,GAC3B,IAAIzgF,EAAO,GAAGmV,OAAOwrE,EAAK,KAAKxrE,OAAOsrE,IAEjCj3E,EAAQw6D,QAAUqf,EAAOuN,MAAM1P,kBAAkBP,EAAKF,GACzD4C,EAAO9iF,MAAMP,GAAQ,EACZqjF,EAAO9iF,MAAMP,GAAQ,IAAqC,IAAvBqjF,EAAO9iF,MAAMP,QACnCqS,IAAlB8+E,EAAQnxF,KAAqBmxF,EAAQnxF,IAAQ,IAEjDqjF,EAAO9iF,MAAMP,GAAQ,EACrBsxF,GAAmB,OACGj/E,IAAlB8+E,EAAQnxF,KAAqBmxF,EAAQnxF,IAAQ,QAC5BqS,IAAjB6+E,EAAOlxF,KAAqBkxF,EAAOlxF,IAAQ,QAClBqS,IAAzBg/E,EAAiB5Q,KAAmB4Q,EAAiB5Q,IAAM,IAEnE,IACK6Q,IAAkBF,EAAgBzQ,IAAO,EAChD,KAEIrpF,OAAOgK,KAAK4vF,GAAQ74F,QAAUf,OAAOgK,KAAK6vF,GAAS94F,SACrDE,KAAKy4F,MAAMt2F,KAAK,CACdy2F,QAASA,EACTI,aAAcj6F,OAAOgK,KAAK6vF,GAAS94F,OACnCm5F,OAAQ,CAAC,EACTC,OAAQ,GACR1iE,SAAUA,IAIP,CACLmiE,OAAQ55F,OAAOgK,KAAK4vF,GACpBC,QAAS75F,OAAOgK,KAAK6vF,GACrBC,gBAAiB95F,OAAOgK,KAAK8vF,GAC7BC,iBAAkB/5F,OAAOgK,KAAK+vF,GAElC,GACC,CACD30F,IAAK,SACLzD,MAAO,SAAgB+G,EAAMg9C,EAAKn6C,GAChC,IAAI5K,EAAI+H,EAAK2B,MAAM,KACfg/E,EAAM1oF,EAAE,GACRwoF,EAAKxoF,EAAE,GACP+kD,GAAKzkD,KAAK28D,KAAK,gBAAiByrB,EAAKF,EAAIzjC,GAEzCn6C,GACFtK,KAAKq4F,MAAMc,kBAAkB/Q,EAAKF,EAAI59E,GAGxCtK,KAAKgI,MAAMP,GAAQg9C,GAAO,EAAI,EAC9B,IAAIw0C,EAAS,CAAC,EACdj5F,KAAKy4F,MAAMnxF,SAAQ,SAAUgJ,GAjrDnC,IAAkBypD,EAActhB,EAAU77B,EACpCw8E,EACAn5E,EACAtX,EAHYoxD,EAkrDDzpD,EAAE2oF,OAlrDaxgD,EAkrDEyvC,EAjrD5BkR,EAAkBvT,EAAc9rB,EAirDX,CAACquB,GAjrDwBrpF,QAC9CkhB,EAAMm5E,EAAgBn5E,IACtBtX,EAAIywF,EAAgBzwF,EAExBsX,EAAItX,GAAKsX,EAAItX,IAAM,GACfiU,IAAQqD,EAAItX,GAAKsX,EAAItX,GAAGiU,OAAO67B,IAC9B77B,GAAQqD,EAAItX,GAAGxG,KAAKs2C,GAkkD3B,SAAuBnoC,EAAG7I,QACAqS,IAApBxJ,EAAEsoF,QAAQnxF,YACL6I,EAAEsoF,QAAQnxF,GACjB6I,EAAE0oF,eAEN,CAqGQK,CAAc/oF,EAAG7I,GACbg9C,GAAKn0C,EAAE4oF,OAAO/2F,KAAKsiD,GAEA,IAAnBn0C,EAAE0oF,cAAuB1oF,EAAEtP,OAC7BjC,OAAOgK,KAAKuH,EAAE2oF,QAAQ3xF,SAAQ,SAAUnC,GACjC8zF,EAAO9zF,KAAI8zF,EAAO9zF,GAAK,CAAC,GAC7B,IAAIm0F,EAAahpF,EAAE2oF,OAAO9zF,GAEtBm0F,EAAWx5F,QACbw5F,EAAWhyF,SAAQ,SAAU4gF,QACLpuE,IAAlBm/E,EAAO9zF,GAAG+iF,KAAmB+Q,EAAO9zF,GAAG+iF,IAAM,EACnD,GAEJ,IACA53E,EAAEtP,MAAO,EAELsP,EAAE4oF,OAAOp5F,OACXwQ,EAAEkmB,SAASlmB,EAAE4oF,QAEb5oF,EAAEkmB,WAGR,IACAx2B,KAAK28D,KAAK,SAAUs8B,GACpBj5F,KAAKy4F,MAAQz4F,KAAKy4F,MAAMtxF,QAAO,SAAUmJ,GACvC,OAAQA,EAAEtP,IACZ,GACF,GACC,CACDmD,IAAK,OACLzD,MAAO,SAAc0nF,EAAKF,EAAIqR,GAC5B,IAAIpL,EAASnuF,KAETw5F,EAAQ35F,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,EAC5Eg3C,EAAOh3C,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,IAC3E22B,EAAW32B,UAAUC,OAAS,EAAID,UAAU,QAAKia,EACrD,OAAKsuE,EAAItoF,OAELE,KAAKw4F,cAAgBx4F,KAAKu4F,sBAC5Bv4F,KAAKs4F,aAAan2F,KAAK,CACrBimF,IAAKA,EACLF,GAAIA,EACJqR,OAAQA,EACRC,MAAOA,EACP3iD,KAAMA,EACNrgB,SAAUA,KAKdx2B,KAAKw4F,eACEx4F,KAAKo4F,QAAQmB,GAAQnR,EAAKF,GAAI,SAAUzjC,EAAKn6C,GAClD,GAAIm6C,GAAOn6C,GAAQkvF,EAAQ,EACzB91F,YAAW,WACTyqF,EAAOhgC,KAAK7uD,KAAK6uF,EAAQ/F,EAAKF,EAAIqR,EAAQC,EAAQ,EAAU,EAAP3iD,EAAUrgB,EACjE,GAAGqgB,OAHL,CASA,GAFAs3C,EAAOqK,eAEHrK,EAAOmK,aAAax4F,OAAS,EAAG,CAClC,IAAIc,EAAOutF,EAAOmK,aAAapnC,QAE/Bi9B,EAAOhgC,KAAKvtD,EAAKwnF,IAAKxnF,EAAKsnF,GAAItnF,EAAK24F,OAAQ34F,EAAK44F,MAAO54F,EAAKi2C,KAAMj2C,EAAK41B,SAC1E,CAEAA,EAASiuB,EAAKn6C,EAVd,CAWF,KAhCwBksB,EAAS,KAAM,CAAC,EAiC1C,GACC,CACDryB,IAAK,iBACLzD,MAAO,SAAwBg4F,EAAWxO,GACxC,IAAImF,EAASrvF,KAETiR,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E22B,EAAW32B,UAAUC,OAAS,EAAID,UAAU,QAAKia,EAErD,IAAK9Z,KAAKo4F,QAER,OADAp4F,KAAKykF,OAAOpzE,KAAK,kEACVmlB,GAAYA,IAGI,iBAAdkiE,IAAwBA,EAAY14F,KAAKqtF,cAAcI,mBAAmBiL,IAC3D,iBAAfxO,IAAyBA,EAAa,CAACA,IAClD,IAAIyO,EAAS34F,KAAKy5F,UAAUf,EAAWxO,EAAYj5E,EAASulB,GAE5D,IAAKmiE,EAAOA,OAAO74F,OAEjB,OADK64F,EAAOC,QAAQ94F,QAAQ02B,IACrB,KAGTmiE,EAAOA,OAAOrxF,SAAQ,SAAUG,GAC9B4nF,EAAOqK,QAAQjyF,EACjB,GACF,GACC,CACDtD,IAAK,OACLzD,MAAO,SAAcg4F,EAAWxO,EAAY1zD,GAC1Cx2B,KAAK25F,eAAejB,EAAWxO,EAAY,CAAC,EAAG1zD,EACjD,GACC,CACDryB,IAAK,SACLzD,MAAO,SAAgBg4F,EAAWxO,EAAY1zD,GAC5Cx2B,KAAK25F,eAAejB,EAAWxO,EAAY,CACzCze,QAAQ,GACPj1C,EACL,GACC,CACDryB,IAAK,UACLzD,MAAO,SAAiB+G,GACtB,IAAImyF,EAAS55F,KAET0L,EAAS7L,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,GAC7EH,EAAI+H,EAAK2B,MAAM,KACfg/E,EAAM1oF,EAAE,GACRwoF,EAAKxoF,EAAE,GACXM,KAAKmuD,KAAKi6B,EAAKF,EAAI,YAAQpuE,OAAWA,GAAW,SAAU2qC,EAAKn6C,GAC1Dm6C,GAAKm1C,EAAOnV,OAAOpzE,KAAK,GAAGuL,OAAOlR,EAAQ,sBAAsBkR,OAAOsrE,EAAI,kBAAkBtrE,OAAOwrE,EAAK,WAAY3jC,IACpHA,GAAOn6C,GAAMsvF,EAAOnV,OAAOvf,IAAI,GAAGtoD,OAAOlR,EAAQ,qBAAqBkR,OAAOsrE,EAAI,kBAAkBtrE,OAAOwrE,GAAM99E,GAErHsvF,EAAOX,OAAOxxF,EAAMg9C,EAAKn6C,EAC3B,GACF,GACC,CACDnG,IAAK,cACLzD,MAAO,SAAqBg4F,EAAWvN,EAAWhnF,EAAK01F,EAAeC,GACpE,IAAI7oF,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE/EG,KAAK6pF,SAASt+B,OAASvrD,KAAK6pF,SAASt+B,MAAMskC,qBAAuB7vF,KAAK6pF,SAASt+B,MAAMskC,mBAAmB1E,GAC3GnrF,KAAKykF,OAAOpzE,KAAK,qBAAsBuL,OAAOzY,EAAK,wBAA0ByY,OAAOuuE,EAAW,wBAA0B,4NAIvHhnF,SAA6C,KAARA,IAErCnE,KAAKo4F,SAAWp4F,KAAKo4F,QAAQhrF,QAC/BpN,KAAKo4F,QAAQhrF,OAAOsrF,EAAWvN,EAAWhnF,EAAK01F,EAAe,KAAM7B,GAAgBA,GAAgB,CAAC,EAAG/mF,GAAU,CAAC,EAAG,CACpH6oF,SAAUA,KAITpB,GAAcA,EAAU,IAC7B14F,KAAKq4F,MAAM7P,YAAYkQ,EAAU,GAAIvN,EAAWhnF,EAAK01F,GACvD,KAGK1B,CACT,CAvPgB,CAuPd/S,GAEF,SAAS,KACP,MAAO,CACLV,OAAO,EACPqV,eAAe,EACf7R,GAAI,CAAC,eACL7E,UAAW,CAAC,eACZkK,YAAa,CAAC,OACdgC,YAAY,EACZmB,eAAe,EACfO,0BAA0B,EAC1BD,KAAM,MACNgJ,SAAS,EACTzG,sBAAsB,EACtB3L,aAAc,IACdqC,YAAa,IACbkG,gBAAiB,IACjBE,iBAAkB,IAClB4J,yBAAyB,EACzBnM,aAAa,EACbb,eAAe,EACfO,cAAe,WACfO,oBAAoB,EACpBH,mBAAmB,EACnB2H,6BAA6B,EAC7BxG,aAAa,EACbG,yBAAyB,EACzBoB,YAAY,EACZC,mBAAmB,EACnBxE,eAAe,EACfJ,YAAY,EACZK,uBAAuB,EACvBkC,wBAAwB,EACxBD,6BAA6B,EAC7B7C,yBAAyB,EACzBL,iCAAkC,SAAgBn4C,GAChD,IAAIsnD,EAAM,CAAC,EAKX,GAJyB,YAArB,OAAQtnD,EAAK,MAAkBsnD,EAAMtnD,EAAK,IACvB,iBAAZA,EAAK,KAAiBsnD,EAAIrN,aAAej6C,EAAK,IAClC,iBAAZA,EAAK,KAAiBsnD,EAAIC,aAAevnD,EAAK,IAEhC,YAArB,OAAQA,EAAK,KAAyC,YAArB,OAAQA,EAAK,IAAkB,CAClE,IAAI3hC,EAAU2hC,EAAK,IAAMA,EAAK,GAC9B7zC,OAAOgK,KAAKkI,GAAS3J,SAAQ,SAAUnD,GACrC+1F,EAAI/1F,GAAO8M,EAAQ9M,EACrB,GACF,CAEA,OAAO+1F,CACT,EACAnQ,cAAe,CACb8J,aAAa,EACbD,OAAQ,SAAgBlzF,EAAOu2F,EAAS7O,EAAKn3E,GAC3C,OAAOvQ,CACT,EACAgL,OAAQ,KACRC,OAAQ,KACRwoF,gBAAiB,IACjBC,eAAgB,IAChBE,cAAe,MACfE,cAAe,IACfE,wBAAyB,IACzBC,YAAa,IACblG,iBAAiB,GAGvB,CACA,SAAS2L,GAAiBnpF,GASxB,MAR0B,iBAAfA,EAAQi3E,KAAiBj3E,EAAQi3E,GAAK,CAACj3E,EAAQi3E,KACvB,iBAAxBj3E,EAAQs8E,cAA0Bt8E,EAAQs8E,YAAc,CAACt8E,EAAQs8E,cAC1C,iBAAvBt8E,EAAQs+E,aAAyBt+E,EAAQs+E,WAAa,CAACt+E,EAAQs+E,aAEtEt+E,EAAQy/E,eAAiBz/E,EAAQy/E,cAAcruF,QAAQ,UAAY,IACrE4O,EAAQy/E,cAAgBz/E,EAAQy/E,cAAc9zE,OAAO,CAAC,YAGjD3L,CACT,CAEA,SAASopF,GAAUtgC,EAAQgqB,GAAkB,IAAIh7E,EAAOhK,OAAOgK,KAAKgxD,GAAS,GAAIh7D,OAAOuD,sBAAuB,CAAE,IAAI0hF,EAAUjlF,OAAOuD,sBAAsBy3D,GAAagqB,IAAkBC,EAAUA,EAAQ78E,QAAO,SAAU88E,GAAO,OAAOllF,OAAOo5D,yBAAyB4B,EAAQkqB,GAAKzpC,UAAY,KAAMzxC,EAAK5G,KAAKpC,MAAMgJ,EAAMi7E,EAAU,CAAE,OAAOj7E,CAAM,CAE1V,SAASuxF,GAAgBh9E,GAAU,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAI4X,EAAyB,MAAhB1X,UAAUF,GAAaE,UAAUF,GAAK,CAAC,EAAOA,EAAI,EAAK06F,GAAUt7F,OAAOwY,IAAS,GAAMjQ,SAAQ,SAAUnD,IAAO,OAAgBmZ,EAAQnZ,EAAKoT,EAAOpT,GAAO,IAAepF,OAAOolF,0BAA6BplF,OAAOqlF,iBAAiB9mE,EAAQve,OAAOolF,0BAA0B5sE,IAAmB8iF,GAAUt7F,OAAOwY,IAASjQ,SAAQ,SAAUnD,GAAOpF,OAAOgE,eAAeua,EAAQnZ,EAAKpF,OAAOo5D,yBAAyB5gD,EAAQpT,GAAO,GAAM,CAAE,OAAOmZ,CAAQ,CAE3hB,SAASi9E,GAAetT,GAAW,IAAIC,EAEvC,WAAyC,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhF/7E,QAAQnM,UAAUmoF,QAAQjoF,KAAK6nF,QAAQC,UAAU77E,QAAS,IAAI,WAAa,MAAY,CAAkC,CAA1B,MAAO1K,GAAK,OAAO,CAAO,CAAE,CAFvQ25F,GAA+B,OAAO,WAAkC,IAAsCz5F,EAAlC0mF,EAAQ5D,EAAgBoD,GAAkB,GAAIC,EAA2B,CAAE,IAAIQ,EAAY7D,EAAgB7jF,MAAM2H,YAAa5G,EAASomF,QAAQC,UAAUK,EAAO5nF,UAAW6nF,EAAY,MAAS3mF,EAAS0mF,EAAM1nF,MAAMC,KAAMH,WAAc,OAAO8jF,EAA2B3jF,KAAMe,EAAS,CAAG,CAI5a,SAAS05F,KAAQ,CAEjB,SAASC,GAAoBC,GAChB57F,OAAO67F,oBAAoB77F,OAAOk3D,eAAe0kC,IACvDrzF,SAAQ,SAAU4vF,GACI,mBAAdyD,EAAKzD,KACdyD,EAAKzD,GAAOyD,EAAKzD,GAAKtxF,KAAK+0F,GAE/B,GACF,CAEA,IAAIE,GAAO,SAAU5S,GACnB3E,EAAUuX,EAAM5S,GAEhB,IAAInvE,EAASyhF,GAAeM,GAE5B,SAASA,IACP,IAAI9hF,EAEA9H,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E22B,EAAW32B,UAAUC,OAAS,EAAID,UAAU,QAAKia,EAkBrD,IAhBA,OAAgB9Z,KAAM66F,GAEtB9hF,EAAQD,EAAOxZ,KAAKU,MAEhB2mF,IACFvB,EAAa9lF,MAAK,OAAuByZ,IAG3CA,EAAM9H,QAAUmpF,GAAiBnpF,GACjC8H,EAAM8wE,SAAW,CAAC,EAClB9wE,EAAM0rE,OAASU,EACfpsE,EAAM+hF,QAAU,CACdC,SAAU,IAEZL,IAAoB,OAAuB3hF,IAEvCyd,IAAazd,EAAMiiF,gBAAkB/pF,EAAQgqF,QAAS,CACxD,IAAKliF,EAAM9H,QAAQ8oF,cAGjB,OAFAhhF,EAAMyrE,KAAKvzE,EAASulB,GAEbmtD,EAA2B5qE,GAAO,OAAuBA,IAGlErV,YAAW,WACTqV,EAAMyrE,KAAKvzE,EAASulB,EACtB,GAAG,EACL,CAEA,OAAOzd,CACT,CAiiBA,OA/hBA,OAAa8hF,EAAM,CAAC,CAClB12F,IAAK,OACLzD,MAAO,WACL,IAAIoqF,EAAS9qF,KAETiR,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E22B,EAAW32B,UAAUC,OAAS,EAAID,UAAU,QAAKia,EAE9B,mBAAZ7I,IACTulB,EAAWvlB,EACXA,EAAU,CAAC,IAGRA,EAAQoyE,WAAapyE,EAAQi3E,KACN,iBAAfj3E,EAAQi3E,GACjBj3E,EAAQoyE,UAAYpyE,EAAQi3E,GACnBj3E,EAAQi3E,GAAG7lF,QAAQ,eAAiB,IAC7C4O,EAAQoyE,UAAYpyE,EAAQi3E,GAAG,KAInC,IAAIgT,EAAU,KAed,SAASC,EAAoBC,GAC3B,OAAKA,EACwB,mBAAlBA,EAAqC,IAAIA,EAC7CA,EAFoB,IAG7B,CAEA,GApBAp7F,KAAKiR,QAAUqpF,GAAgBA,GAAgBA,GAAgB,CAAC,EAAGY,GAAUl7F,KAAKiR,SAAUmpF,GAAiBnpF,IAEvE,OAAlCjR,KAAKiR,QAAQ63E,mBACf9oF,KAAKiR,QAAQ84E,cAAgBuQ,GAAgBA,GAAgB,CAAC,EAAGY,EAAQnR,eAAgB/pF,KAAKiR,QAAQ84E,qBAG3EjwE,IAAzB7I,EAAQ22E,eACV5nF,KAAKiR,QAAQo5E,wBAA0Bp5E,EAAQ22E,mBAGrB9tE,IAAxB7I,EAAQg5E,cACVjqF,KAAKiR,QAAQq5E,uBAAyBr5E,EAAQg5E,cAS3CjqF,KAAKiR,QAAQgqF,QAAS,CAOzB,IAAII,EANAr7F,KAAK86F,QAAQrW,OACfU,EAAWX,KAAK2W,EAAoBn7F,KAAK86F,QAAQrW,QAASzkF,KAAKiR,SAE/Dk0E,EAAWX,KAAK,KAAMxkF,KAAKiR,SAKzBjR,KAAK86F,QAAQO,UACfA,EAAYr7F,KAAK86F,QAAQO,UACA,oBAAT1I,OAChB0I,EAAY7E,IAGd,IAAI8E,EAAK,IAAI7K,GAAazwF,KAAKiR,SAC/BjR,KAAKq4F,MAAQ,IAAIrQ,GAAchoF,KAAKiR,QAAQs3E,UAAWvoF,KAAKiR,SAC5D,IAAIvR,EAAIM,KAAK6pF,SACbnqF,EAAE+kF,OAASU,EACXzlF,EAAE8wF,cAAgBxwF,KAAKq4F,MACvB34F,EAAE2tF,cAAgBiO,EAClB57F,EAAEitF,eAAiB,IAAI8F,GAAe6I,EAAI,CACxCnI,QAASnzF,KAAKiR,QAAQk/E,gBACtBuC,kBAAmB1yF,KAAKiR,QAAQyhF,kBAChCa,qBAAsBvzF,KAAKiR,QAAQsiF,wBAGjC8H,GAAer7F,KAAKiR,QAAQ84E,cAAc6J,QAAU5zF,KAAKiR,QAAQ84E,cAAc6J,SAAWsH,EAAQnR,cAAc6J,SAClHl0F,EAAE27F,UAAYF,EAAoBE,GAClC37F,EAAE27F,UAAU7W,KAAK9kF,EAAGM,KAAKiR,SACzBjR,KAAKiR,QAAQ84E,cAAc6J,OAASl0F,EAAE27F,UAAUzH,OAAOhuF,KAAKlG,EAAE27F,YAGhE37F,EAAEirF,aAAe,IAAIgJ,GAAa3zF,KAAKiR,SACvCvR,EAAE6rD,MAAQ,CACRskC,mBAAoB7vF,KAAK6vF,mBAAmBjqF,KAAK5F,OAEnDN,EAAEmuF,iBAAmB,IAAIsK,GAAUgD,EAAoBn7F,KAAK86F,QAAQ1C,SAAU14F,EAAE8wF,cAAe9wF,EAAGM,KAAKiR,SACvGvR,EAAEmuF,iBAAiBrxB,GAAG,KAAK,SAAU54C,GACnC,IAAK,IAAI1B,EAAOriB,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMgjB,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClGwwB,EAAKxwB,EAAO,GAAKviB,UAAUuiB,GAG7B0oE,EAAOnuB,KAAK58D,MAAM+qF,EAAQ,CAAClnE,GAAOhH,OAAOg2B,GAC3C,IAEI5yC,KAAK86F,QAAQS,mBACf77F,EAAE67F,iBAAmBJ,EAAoBn7F,KAAK86F,QAAQS,kBACtD77F,EAAE67F,iBAAiB/W,KAAK9kF,EAAGM,KAAKiR,QAAQuqF,UAAWx7F,KAAKiR,UAGtDjR,KAAK86F,QAAQjP,aACfnsF,EAAEmsF,WAAasP,EAAoBn7F,KAAK86F,QAAQjP,YAC5CnsF,EAAEmsF,WAAWrH,MAAM9kF,EAAEmsF,WAAWrH,KAAKxkF,OAG3CA,KAAKqpF,WAAa,IAAIO,GAAW5pF,KAAK6pF,SAAU7pF,KAAKiR,SACrDjR,KAAKqpF,WAAW7sB,GAAG,KAAK,SAAU54C,GAChC,IAAK,IAAI6xB,EAAQ51C,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMu2C,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxG9C,EAAK8C,EAAQ,GAAK71C,UAAU61C,GAG9Bo1C,EAAOnuB,KAAK58D,MAAM+qF,EAAQ,CAAClnE,GAAOhH,OAAOg2B,GAC3C,IACA5yC,KAAK86F,QAAQC,SAASzzF,SAAQ,SAAUnB,GAClCA,EAAEq+E,MAAMr+E,EAAEq+E,KAAKsG,EACrB,GACF,CAKA,GAHA9qF,KAAK4zF,OAAS5zF,KAAKiR,QAAQ84E,cAAc6J,OACpCp9D,IAAUA,EAAWikE,IAEtBz6F,KAAKiR,QAAQs8E,cAAgBvtF,KAAK6pF,SAAS0R,mBAAqBv7F,KAAKiR,QAAQm3E,IAAK,CACpF,IAAIwH,EAAQ5vF,KAAK6pF,SAASwD,cAAcC,iBAAiBttF,KAAKiR,QAAQs8E,aAClEqC,EAAM9vF,OAAS,GAAkB,QAAb8vF,EAAM,KAAc5vF,KAAKiR,QAAQm3E,IAAMwH,EAAM,GACvE,CAEK5vF,KAAK6pF,SAAS0R,kBAAqBv7F,KAAKiR,QAAQm3E,KACnDpoF,KAAKykF,OAAOpzE,KAAK,2DAGnB,IAAIoqF,EAAW,CAAC,cAAe,oBAAqB,oBAAqB,qBACzEA,EAASn0F,SAAQ,SAAUiyF,GACzBzO,EAAOyO,GAAU,WACf,IAAImC,EAEJ,OAAQA,EAAe5Q,EAAOuN,OAAOkB,GAAQx5F,MAAM27F,EAAc77F,UACnE,CACF,IACA,IAAI87F,EAAkB,CAAC,cAAe,eAAgB,oBAAqB,wBAC3EA,EAAgBr0F,SAAQ,SAAUiyF,GAChCzO,EAAOyO,GAAU,WACf,IAAIqC,EAIJ,OAFCA,EAAgB9Q,EAAOuN,OAAOkB,GAAQx5F,MAAM67F,EAAe/7F,WAErDirF,CACT,CACF,IACA,IAAI+Q,EAAWn4B,IAEXstB,EAAO,WACT,IAAI8K,EAAS,SAAgBr3C,EAAKhlD,GAC5BqrF,EAAOkQ,gBAAkBlQ,EAAOiR,sBAAsBjR,EAAOrG,OAAOpzE,KAAK,yEAC7Ey5E,EAAOkQ,eAAgB,EAClBlQ,EAAO75E,QAAQgqF,SAASnQ,EAAOrG,OAAOvf,IAAI,cAAe4lB,EAAO75E,SAErE65E,EAAOnuB,KAAK,cAAemuB,EAAO75E,SAElC4qF,EAASt7F,QAAQd,GACjB+2B,EAASiuB,EAAKhlD,EAChB,EAEA,GAAIqrF,EAAO4N,WAAiD,OAApC5N,EAAO75E,QAAQ63E,mBAA8BgC,EAAOkQ,cAAe,OAAOc,EAAO,KAAMhR,EAAOrrF,EAAEmG,KAAKklF,IAE7HA,EAAOkR,eAAelR,EAAO75E,QAAQm3E,IAAK0T,EAC5C,EAQA,OANI97F,KAAKiR,QAAQs3E,YAAcvoF,KAAKiR,QAAQ8oF,cAC1C/I,IAEAttF,WAAWstF,EAAM,GAGZ6K,CACT,GACC,CACD13F,IAAK,gBACLzD,MAAO,SAAuBopF,GAC5B,IAAIqE,EAASnuF,KAETw2B,EAAW32B,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK46F,GAC/EwB,EAAezlE,EACf63D,EAA8B,iBAAbvE,EAAwBA,EAAW9pF,KAAK8pF,SAG7D,GAFwB,mBAAbA,IAAyBmS,EAAenS,IAE9C9pF,KAAKiR,QAAQs3E,WAAavoF,KAAKiR,QAAQgpF,wBAAyB,CACnE,GAAI5L,GAAqC,WAA1BA,EAAQr6E,cAA4B,OAAOioF,IAC1D,IAAItD,EAAS,GAEThyB,EAAS,SAAgByhB,GACtBA,GAEM+F,EAAOtE,SAASwD,cAAcI,mBAAmBrF,GAEvD9gF,SAAQ,SAAUnC,GACjBwzF,EAAOt2F,QAAQ8C,GAAK,GAAGwzF,EAAOx2F,KAAKgD,EACzC,GACF,EAEA,GAAKkpF,EAMH1nB,EAAO0nB,OANK,CACZ,IAAIvtC,EAAY9gD,KAAK6pF,SAASwD,cAAcC,iBAAiBttF,KAAKiR,QAAQs8E,aAC1EzsC,EAAUx5C,SAAQ,SAAUnC,GAC1B,OAAOwhE,EAAOxhE,EAChB,GACF,CAIInF,KAAKiR,QAAQ+oF,SACfh6F,KAAKiR,QAAQ+oF,QAAQ1yF,SAAQ,SAAUnC,GACrC,OAAOwhE,EAAOxhE,EAChB,IAGFnF,KAAK6pF,SAASgE,iBAAiBmD,KAAK2H,EAAQ34F,KAAKiR,QAAQi3E,IAAI,SAAUrnF,GAChEA,GAAMstF,EAAO+N,mBAAoB/N,EAAOrE,UAAUqE,EAAOgO,oBAAoBhO,EAAOrE,UACzFmS,EAAap7F,EACf,GACF,MACEo7F,EAAa,KAEjB,GACC,CACD93F,IAAK,kBACLzD,MAAO,SAAyBysF,EAAMjF,EAAI1xD,GACxC,IAAIqlE,EAAWn4B,IAQf,OAPKypB,IAAMA,EAAOntF,KAAK04F,WAClBxQ,IAAIA,EAAKloF,KAAKiR,QAAQi3E,IACtB1xD,IAAUA,EAAWikE,IAC1Bz6F,KAAK6pF,SAASgE,iBAAiBpiB,OAAO0hB,EAAMjF,GAAI,SAAUzjC,GACxDo3C,EAASt7F,UACTi2B,EAASiuB,EACX,IACOo3C,CACT,GACC,CACD13F,IAAK,MACLzD,MAAO,SAAa4qD,GAClB,IAAKA,EAAQ,MAAM,IAAIlnD,MAAM,iGAC7B,IAAKknD,EAAO77C,KAAM,MAAM,IAAIrL,MAAM,4FA8BlC,MA5BoB,YAAhBknD,EAAO77C,OACTzP,KAAK86F,QAAQ1C,QAAU9sC,IAGL,WAAhBA,EAAO77C,MAAqB67C,EAAO4Z,KAAO5Z,EAAOj6C,MAAQi6C,EAAOzjD,SAClE7H,KAAK86F,QAAQrW,OAASn5B,GAGJ,qBAAhBA,EAAO77C,OACTzP,KAAK86F,QAAQS,iBAAmBjwC,GAGd,eAAhBA,EAAO77C,OACTzP,KAAK86F,QAAQjP,WAAavgC,GAGR,kBAAhBA,EAAO77C,MACTw5E,GAAcE,iBAAiB79B,GAGb,cAAhBA,EAAO77C,OACTzP,KAAK86F,QAAQO,UAAY/vC,GAGP,aAAhBA,EAAO77C,MACTzP,KAAK86F,QAAQC,SAAS54F,KAAKmpD,GAGtBtrD,IACT,GACC,CACDmE,IAAK,sBACLzD,MAAO,SAA6ByE,GAClC,GAAKA,GAAMnF,KAAK04F,aACZ,CAAC,SAAU,OAAOr2F,QAAQ8C,IAAM,GAEpC,IAAK,IAAIi3F,EAAK,EAAGA,EAAKp8F,KAAK04F,UAAU54F,OAAQs8F,IAAM,CACjD,IAAIC,EAAYr8F,KAAK04F,UAAU0D,GAC/B,KAAI,CAAC,SAAU,OAAO/5F,QAAQg6F,IAAc,IAExCr8F,KAAKq4F,MAAMiE,4BAA4BD,GAAY,CACrDr8F,KAAKk8F,iBAAmBG,EACxB,KACF,CACF,CACF,GACC,CACDl4F,IAAK,iBACLzD,MAAO,SAAwB0nF,EAAK5xD,GAClC,IAAI64D,EAASrvF,KAEbA,KAAKu8F,qBAAuBnU,EAC5B,IAAIyT,EAAWn4B,IACf1jE,KAAK28D,KAAK,mBAAoByrB,GAE9B,IAAIoU,EAAc,SAAqBr3F,GACrCkqF,EAAOvF,SAAW3kF,EAClBkqF,EAAOqJ,UAAYrJ,EAAOxF,SAASwD,cAAcI,mBAAmBtoF,GACpEkqF,EAAO6M,sBAAmBpiF,EAE1Bu1E,EAAO8M,oBAAoBh3F,EAC7B,EAyBIs3F,EAAS,SAAgBtP,GACtB/E,GAAQ+E,IAAQkC,EAAOxF,SAAS0R,mBAAkBpO,EAAO,IAC9D,IAAIhoF,EAAoB,iBAATgoF,EAAoBA,EAAOkC,EAAOxF,SAASwD,cAAcqP,sBAAsBvP,GAE1FhoF,IACGkqF,EAAOvF,UACV0S,EAAYr3F,GAGTkqF,EAAOhG,WAAWS,UAAUuF,EAAOhG,WAAW2S,eAAe72F,GAC9DkqF,EAAOxF,SAAS0R,kBAAkBlM,EAAOxF,SAAS0R,iBAAiBoB,kBAAkBx3F,IAG3FkqF,EAAOjlB,cAAcjlE,GAAG,SAAUs/C,IApCzB,SAAcA,EAAKt/C,GACxBA,GACFq3F,EAAYr3F,GAEZkqF,EAAOhG,WAAW2S,eAAe72F,GAEjCkqF,EAAOkN,0BAAuBziF,EAE9Bu1E,EAAO1yB,KAAK,kBAAmBx3D,GAE/BkqF,EAAO5K,OAAOvf,IAAI,kBAAmB//D,IAErCkqF,EAAOkN,0BAAuBziF,EAGhC+hF,EAASt7F,SAAQ,WACf,OAAO8uF,EAAO5vF,EAAEM,MAAMsvF,EAAQxvF,UAChC,IACI22B,GAAUA,EAASiuB,GAAK,WAC1B,OAAO4qC,EAAO5vF,EAAEM,MAAMsvF,EAAQxvF,UAChC,GACF,CAgBImB,CAAKyjD,EAAKt/C,EACZ,GACF,EAUA,OARKijF,IAAOpoF,KAAK6pF,SAAS0R,kBAAqBv7F,KAAK6pF,SAAS0R,iBAAiB9xF,OAElE2+E,GAAOpoF,KAAK6pF,SAAS0R,kBAAoBv7F,KAAK6pF,SAAS0R,iBAAiB9xF,MAClFzJ,KAAK6pF,SAAS0R,iBAAiBqB,OAAOH,GAEtCA,EAAOrU,GAJPqU,EAAOz8F,KAAK6pF,SAAS0R,iBAAiBqB,UAOjCf,CACT,GACC,CACD13F,IAAK,YACLzD,MAAO,SAAmB0nF,EAAKF,EAAI2U,GACjC,IAAIjD,EAAS55F,KAET88F,EAAS,SAASA,EAAO34F,EAAKmW,GAChC,IAAIrJ,EAEJ,GAAsB,YAAlB,OAAQqJ,GAAoB,CAC9B,IAAK,IAAIsqE,EAAQ/kF,UAAUC,OAAQi9F,EAAO,IAAI79F,MAAM0lF,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGkY,EAAKlY,EAAQ,GAAKhlF,UAAUglF,GAG9B5zE,EAAU2oF,EAAO3oF,QAAQ85E,iCAAiC,CAAC5mF,EAAKmW,GAAMsC,OAAOmgF,GAC/E,MACE9rF,EAAUqpF,GAAgB,CAAC,EAAGhgF,GAGhCrJ,EAAQm3E,IAAMn3E,EAAQm3E,KAAO0U,EAAO1U,IACpCn3E,EAAQk8E,KAAOl8E,EAAQk8E,MAAQ2P,EAAO3P,KACtCl8E,EAAQi3E,GAAKj3E,EAAQi3E,IAAM4U,EAAO5U,GAClCj3E,EAAQ4rF,UAAY5rF,EAAQ4rF,WAAaA,GAAaC,EAAOD,UAC7D,IAAIjV,EAAegS,EAAO3oF,QAAQ22E,cAAgB,IAC9CoV,EAAY/rF,EAAQ4rF,UAAY,GAAGjgF,OAAO3L,EAAQ4rF,WAAWjgF,OAAOgrE,GAAchrE,OAAOzY,GAAOA,EACpG,OAAOy1F,EAAOn6F,EAAEu9F,EAAW/rF,EAC7B,EAUA,MARmB,iBAARm3E,EACT0U,EAAO1U,IAAMA,EAEb0U,EAAO3P,KAAO/E,EAGhB0U,EAAO5U,GAAKA,EACZ4U,EAAOD,UAAYA,EACZC,CACT,GACC,CACD34F,IAAK,IACLzD,MAAO,WACL,IAAIu8F,EAEJ,OAAOj9F,KAAKqpF,aAAe4T,EAAmBj9F,KAAKqpF,YAAY+C,UAAUrsF,MAAMk9F,EAAkBp9F,UACnG,GACC,CACDsE,IAAK,SACLzD,MAAO,WACL,IAAIw8F,EAEJ,OAAOl9F,KAAKqpF,aAAe6T,EAAoBl9F,KAAKqpF,YAAY8T,OAAOp9F,MAAMm9F,EAAmBr9F,UAClG,GACC,CACDsE,IAAK,sBACLzD,MAAO,SAA6BwnF,GAClCloF,KAAKiR,QAAQoyE,UAAY6E,CAC3B,GACC,CACD/jF,IAAK,qBACLzD,MAAO,SAA4BwnF,GACjC,IAAIkV,EAASp9F,KAETiR,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEnF,IAAKG,KAAKg7F,cAER,OADAh7F,KAAKykF,OAAOpzE,KAAK,kDAAmDrR,KAAK04F,YAClE,EAGT,IAAK14F,KAAK04F,YAAc14F,KAAK04F,UAAU54F,OAErC,OADAE,KAAKykF,OAAOpzE,KAAK,6DAA8DrR,KAAK04F,YAC7E,EAGT,IAAItQ,EAAMpoF,KAAKk8F,kBAAoBl8F,KAAK04F,UAAU,GAC9CnL,IAAcvtF,KAAKiR,SAAUjR,KAAKiR,QAAQs8E,YAC1C8P,EAAUr9F,KAAK04F,UAAU14F,KAAK04F,UAAU54F,OAAS,GACrD,GAA0B,WAAtBsoF,EAAIp0E,cAA4B,OAAO,EAE3C,IAAIspF,EAAiB,SAAwBn4F,EAAGvF,GAC9C,IAAI29F,EAAYH,EAAOvT,SAASgE,iBAAiB7lF,MAAM,GAAG4U,OAAOzX,EAAG,KAAKyX,OAAOhd,IAEhF,OAAsB,IAAf29F,GAAkC,IAAdA,CAC7B,EAEA,GAAItsF,EAAQusF,SAAU,CACpB,IAAIC,EAAYxsF,EAAQusF,SAASx9F,KAAMs9F,GACvC,QAAkBxjF,IAAd2jF,EAAyB,OAAOA,CACtC,CAEA,QAAIz9F,KAAK2oF,kBAAkBP,EAAKF,OAC3BloF,KAAK6pF,SAASgE,iBAAiBuK,WAAWp4F,KAAKiR,QAAQs3E,WAAcvoF,KAAKiR,QAAQgpF,8BACnFqD,EAAelV,EAAKF,IAASqF,IAAe+P,EAAeD,EAASnV,IAE1E,GACC,CACD/jF,IAAK,iBACLzD,MAAO,SAAwBwnF,EAAI1xD,GACjC,IAAIknE,EAAS19F,KAET67F,EAAWn4B,IAEf,OAAK1jE,KAAKiR,QAAQi3E,IAKA,iBAAPA,IAAiBA,EAAK,CAACA,IAClCA,EAAG5gF,SAAQ,SAAU1H,GACf89F,EAAOzsF,QAAQi3E,GAAG7lF,QAAQzC,GAAK,GAAG89F,EAAOzsF,QAAQi3E,GAAG/lF,KAAKvC,EAC/D,IACAI,KAAKoqE,eAAc,SAAU3lB,GAC3Bo3C,EAASt7F,UACLi2B,GAAUA,EAASiuB,EACzB,IACOo3C,IAZLrlE,GAAYA,IACLl2B,QAAQC,UAYnB,GACC,CACD4D,IAAK,gBACLzD,MAAO,SAAuBysF,EAAM32D,GAClC,IAAIqlE,EAAWn4B,IACK,iBAATypB,IAAmBA,EAAO,CAACA,IACtC,IAAIwQ,EAAY39F,KAAKiR,QAAQ+oF,SAAW,GACpC4D,EAAUzQ,EAAKhmF,QAAO,SAAUihF,GAClC,OAAOuV,EAAUt7F,QAAQ+lF,GAAO,CAClC,IAEA,OAAKwV,EAAQ99F,QAKbE,KAAKiR,QAAQ+oF,QAAU2D,EAAU/gF,OAAOghF,GACxC59F,KAAKoqE,eAAc,SAAU3lB,GAC3Bo3C,EAASt7F,UACLi2B,GAAUA,EAASiuB,EACzB,IACOo3C,IATDrlE,GAAUA,IACPl2B,QAAQC,UASnB,GACC,CACD4D,IAAK,MACLzD,MAAO,SAAa0nF,GAElB,GADKA,IAAKA,EAAMpoF,KAAKk8F,mBAAqBl8F,KAAK04F,WAAa14F,KAAK04F,UAAU54F,OAAS,EAAIE,KAAK04F,UAAU,GAAK14F,KAAK8pF,YAC5G1B,EAAK,MAAO,MAEjB,MADc,CAAC,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,OACja/lF,QAAQrC,KAAK6pF,SAASwD,cAAc6D,wBAAwB9I,KAAS,GAAKA,EAAIp0E,cAAc3R,QAAQ,SAAW,EAAI,MAAQ,KAC5I,GACC,CACD8B,IAAK,gBACLzD,MAAO,WACL,IAAIm9F,EAAS79F,KAETiR,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E22B,EAAW32B,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK46F,GAE/EqD,EAAgBxD,GAAgBA,GAAgBA,GAAgB,CAAC,EAAGt6F,KAAKiR,SAAUA,GAAU,CAC/FgqF,SAAS,IAGP1oD,EAAQ,IAAIsoD,EAAKiD,GACjBC,EAAgB,CAAC,QAAS,WAAY,YAqB1C,OApBAA,EAAcz2F,SAAQ,SAAUnB,GAC9BosC,EAAMpsC,GAAK03F,EAAO13F,EACpB,IACAosC,EAAMs3C,SAAWyQ,GAAgB,CAAC,EAAGt6F,KAAK6pF,UAC1Ct3C,EAAMs3C,SAASt+B,MAAQ,CACrBskC,mBAAoBt9C,EAAMs9C,mBAAmBjqF,KAAK2sC,IAEpDA,EAAM82C,WAAa,IAAIO,GAAWr3C,EAAMs3C,SAAUt3C,EAAMthC,SACxDshC,EAAM82C,WAAW7sB,GAAG,KAAK,SAAU54C,GACjC,IAAK,IAAIkhE,EAAQjlF,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAM4lF,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGnyC,EAAKmyC,EAAQ,GAAKllF,UAAUklF,GAG9BxyC,EAAMoqB,KAAK58D,MAAMwyC,EAAO,CAAC3uB,GAAOhH,OAAOg2B,GACzC,IACAL,EAAMiyC,KAAKsZ,EAAetnE,GAC1B+b,EAAM82C,WAAWp4E,QAAUshC,EAAMthC,QACjCshC,EAAM82C,WAAWwE,iBAAiBhE,SAASt+B,MAAQ,CACjDskC,mBAAoBt9C,EAAMs9C,mBAAmBjqF,KAAK2sC,IAE7CA,CACT,GACC,CACDpuC,IAAK,SACLzD,MAAO,WACL,MAAO,CACLuQ,QAASjR,KAAKiR,QACdonF,MAAOr4F,KAAKq4F,MACZvO,SAAU9pF,KAAK8pF,SACf4O,UAAW14F,KAAK04F,UAChBwD,iBAAkBl8F,KAAKk8F,iBAE3B,KAGKrB,CACT,CA1kBW,CA0kBTzV,IAEF,OAAgByV,GAAM,kBAAkB,WACtC,IAAI5pF,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E22B,EAAW32B,UAAUC,OAAS,EAAID,UAAU,QAAKia,EACrD,OAAO,IAAI+gF,GAAK5pF,EAASulB,EAC3B,IAEA,IAAI3yB,GAAWg3F,GAAK5rC,iBACpBprD,GAASorD,eAAiB4rC,GAAK5rC,eAEVprD,GAASorD,eACnBprD,GAAS2gF,KACA3gF,GAASumE,cACPvmE,GAASm6F,gBACrBn6F,GAAS2tD,IACE3tD,GAASm4F,eACdn4F,GAASo6F,UACjBp6F,GAASpE,EACJoE,GAASs5F,OACIt5F,GAASq6F,oBACVr6F,GAASgsF,mBACbhsF,GAASs6F,eACVt6F,GAASu6F,cAZ7B,IAcA,yn0BCpuFAhb,GAAAA,IAASib,EAAAA,IAAkB7Z,KAAK,CAC9B+D,UAAW,CACT+V,GAAI,CAAEC,YAAaD,IACnBE,GAAI,CAAED,YAAaC,IACnBC,GAAI,CAAEF,YAAaE,IACnBC,GAAI,CAAEH,YAAaG,IACnBC,GAAI,CAAEJ,YAAaI,KAErBpR,YAAaqR,EAAAA,GAAAA,aAAAA,oBACblO,cAAe,IAAIkO,EAAAA,GAAAA,SAAmB,gBACtC7U,cAAe,CACb8J,aAAa,KAIjB,UCrBO,SAASgL,GAAT,GAA4C,IAAf,SAAEtkF,GAAY,EAChD,OAAO,gBAAC4oE,EAAD,CAAiBC,KAAMA,IAAO7oE,EACtC,CCLD,SAASukF,KACP,OACE,gCACE,gBAACnxB,EAAA,EAAD,KACE,8BACI,SAAUjuE,EAAGyF,EAAGxF,GAChB,GAAsB,oBAAX+C,QAA8C,oBAAb0L,SAA0B,CACpE1L,OAAOyC,GAAKzC,OAAOyC,IAAM,GACzBzC,OAAOyC,GAAGhD,KAAK,CAAE,aAAa,IAAIqD,MAAOu5F,UAAWn7E,MAAO,WAC3D,MAAMxiB,EAAIgN,SAASqxD,qBAAqB//D,GAAG,GACrC4L,EAAI8C,SAAS6I,cAAcvX,GAC3Bs/F,EAAqC,GAC3C1zF,EAAE7B,OAAQ,EACV6B,EAAEsiE,IAAO,yDAAiDoxB,IAC1D59F,EAAEu+D,WAAWhkB,aAAarwC,EAAGlK,EAC9B,CACF,CAXC,CAWC,SAAU,eAGjB,gCACE,0BACE8Y,MAAM,OACN0zD,IAAM,0DACN/oD,OAAO,IACPoH,MAAM,IACN9U,MAAO,CAAEC,QAAS,OAAQ2gB,WAAY,aAK/C,CDnBD8mE,GAAoB7zE,aAAe,CACjCzQ,SAAU,MCsBZukF,GAAiB9zE,aAAe,CAAC,EAEjC,UCjBA,OAdA,SAA0BjO,GACxB,OAAI,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,WAGhB,IAAQD,EAAAA,GAAQC,EAAAA,GAAAA,YAGhBkB,EAAAA,GALK,gBAAC,GAA6B1lE,GAShC,IACR,eChBD,SAASkiF,KACP,OAAIC,EAAAA,GAAAA,MACK,KAGP,gBAACvxB,EAAA,EAAD,KACE,0BAAQl+D,KAAK,kBAAkB0vF,QAAQ,QAAQ11F,OAAK,EAACmkE,IAAI,kDACzD,0BAAQn+D,KAAK,kBAAkB0vF,QAAQ,QAAQ11F,OAAK,EAACmkE,IAAI,wDAG9D,CAIDqxB,GAAaj0E,aAAe,CAAC,EAE7B,UChBA,SAASi0E,KACP,OAAIC,EAAAA,GAAAA,MACK,KAGP,gBAACvxB,EAAA,EAAD,KACE,0BAAQl+D,KAAK,kBAAkB0vF,QAAQ,QAAQvxB,IAAI,iDAAiDnkE,OAAK,IACzG,0BACEgG,KAAK,kBACL0vF,QAAQ,QACRvxB,IAAI,wDACJnkE,OAAK,IAIZ,CAIDw1F,GAAaj0E,aAAe,CAAC,EAE7B,UCFA,OAdA,SAAsBjO,GACpB,OAAI,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,WAGhB,IAAQD,EAAAA,GAAQC,EAAAA,GAAAA,UAFX,gBAAC,GAAyBxkE,GAK/B,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,WACX,gBAAC,GAA0BxkE,GAG7B,IACR,ECgBD,OAhCA,WACE,OAAImiF,EAAAA,GAAAA,MACK,KAKL,gBAACvxB,EAAA,EAAD,KACE,+BACcznE,EAYTxD,OAZYN,EAYJgM,SAXTlI,EAAEk5F,GACAl5F,EAAEk5F,IACF,YACGl5F,EAAEk5F,GAAG9uF,EAAIpK,EAAEk5F,GAAG9uF,GAAK,IAAInO,KAAKtC,UAC9B,EACHqG,EAAEm5F,YAAc,CAAEC,KAAM3gD,SAA8B4gD,KAAM,GAC5Dz7F,EAAI1B,EAAEq9D,qBAAqB,QAAQ,IACnC17D,EAAI3B,EAAE6U,cAAc,WAClBxN,MAAQ,EACV1F,EAAE6pE,IAEiB,sCAFP1nE,EAAEm5F,YAAYC,KAEgC,UAFrBp5F,EAAEm5F,YAAYE,UACnDz7F,EAAE0T,YAAYzT,MAXd,IAAUmC,EAAG9D,EAAS0B,EAAGC,CAmBpC,ECjBD,OARA,WACE,OAAI,IAAQu9E,EAAAA,GAAQC,EAAAA,GAAAA,WAAqB,IAAQD,EAAAA,GAAQC,EAAAA,GAAAA,WAChD,gBAAC,GAAD,MAGF,IACR,ECYD,OAvBA,WACE,OACE,gBAAC5T,EAAA,EAAD,KACE,wBAAM6xB,IAAI,UAAUl7B,GAAG,QAAQlvD,KAAK,wCACpC,wBAAMoqF,IAAI,aAAapqF,KAAK,wCAC5B,wBACEkvD,GAAG,OACHD,YAAY,YACZjvD,KAAK,yEACLoqF,IAAI,UACJ/vF,KAAK,eAEP,wBACE60D,GAAG,OACHD,YAAY,YACZjvD,KAAK,6EACLoqF,IAAI,UACJ/vF,KAAK,eAIZ,ECZD,OATA,WACE,OACE,gBAACk+D,EAAA,EAAD,KACE,wBAAMv4D,KAAK,yEAAyEoqF,IAAI,eACxF,wBAAMpqF,KAAK,6DAA6DoqF,IAAI,eAGjF,ECwBD,OA/BA,WACE,OACE,gBAAC7xB,EAAA,EAAD,KACE,wBAAMv4D,KAAK,6DAA6DoqF,IAAI,eAC5E,wBAAMA,IAAI,UAAUl7B,GAAG,QAAQlvD,KAAK,wCACpC,wBAAMoqF,IAAI,aAAapqF,KAAK,wCAC5B,wBACEkvD,GAAG,OACHD,YAAY,YACZjvD,KAAK,2CACLoqF,IAAI,UACJ/vF,KAAK,kBAEP,wBACE60D,GAAG,OACHD,YAAY,YACZjvD,KAAK,2CACLoqF,IAAI,UACJ/vF,KAAK,kBAEP,wBACE60D,GAAG,OACHD,YAAY,YACZjvD,KAAK,6CACLoqF,IAAI,UACJ/vF,KAAK,kBAIZ,ECpBD,OATA,WACE,OACE,gBAACk+D,EAAA,EAAD,KACE,wBAAM6xB,IAAI,UAAUl7B,GAAG,QAAQlvD,KAAK,wCACpC,wBAAMoqF,IAAI,aAAapqF,KAAK,wCAGjC,ECED,OATA,WACE,OACE,gBAACu4D,EAAA,EAAD,KACE,wBAAM6xB,IAAI,UAAUl7B,GAAG,QAAQlvD,KAAK,wCACpC,wBAAMoqF,IAAI,aAAapqF,KAAK,wCAGjC,ECID,OAXA,WACE,OACE,gBAACu4D,EAAA,EAAD,KACE,wBACEv4D,KAAK,iKACLoqF,IAAI,eAIX,EC4BD,OA3BA,SAAsBziF,GACpB,OAAI,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,WAGhB,IAAQD,EAAAA,GAAQC,EAAAA,GAAAA,UAFX,gBAAC,GAAyBxkE,GAM/B,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,oBACX,gBAAC,GAAmCxkE,GAEzC,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,UACX,gBAAC,GAAyBxkE,GAE/B,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,WACX,gBAAC,GAA0BxkE,GAEhC,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,kBACX,gBAAC,GAAiCxkE,GAEvC,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,aACX,gBAAC,GAA4BxkE,GAG/B,IACR,ECAD,OAlCA,WACE,MAAM0iF,GAAoB5gC,EAAAA,EAAAA,gBAAe,cAsBnC6gC,EAAkBv8F,IAAIs8F,EAAmB,oEAEzC7qF,EAAO,0EADIzR,IAAIu8F,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECED,OAlCA,WACE,MAAM6qF,GAAoB5gC,EAAAA,EAAAA,gBAAe,cAsBnC6gC,EAAkBv8F,IAAIs8F,EAAmB,oEAEzC7qF,EAAO,0EADIzR,IAAIu8F,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECED,OAlCA,WACE,MAAM6qF,GAAoB5gC,EAAAA,EAAAA,gBAAe,cAsBnC6gC,EAAkBv8F,IAAIs8F,EAAmB,oEAEzC7qF,EAAO,0EADIzR,IAAIu8F,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECKD,OArCA,WACE,MAAM6qF,GAAoB5gC,EAAAA,EAAAA,gBAAe,YAyBnC6gC,EAAkBv8F,IAAIs8F,EAAmB,oEAEzC7qF,EAAO,0EADIzR,IAAIu8F,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECDD,OAlCA,WACE,MAAM6qF,GAAoB5gC,EAAAA,EAAAA,gBAAe,cAsBnC6gC,EAAkBv8F,IAAIs8F,EAAmB,oEAEzC7qF,EAAO,0EADIzR,IAAIu8F,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECKD,OArCA,WACE,MAAM6qF,GAAoB5gC,EAAAA,EAAAA,gBAAe,YAyBnC6gC,EAAkBv8F,IAAIs8F,EAAmB,oEAEzC7qF,EAAO,0EADIzR,IAAIu8F,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECED,OArCA,WACE,MAAM6qF,GAAoB5gC,EAAAA,EAAAA,gBAAe,cAyBnC6gC,EAAkBv8F,IAAIs8F,EAAmB,oEAEzC7qF,EAAO,0EADIzR,IAAIu8F,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECCD,OApCA,WACE,MAAM6qF,GAAoB5gC,EAAAA,EAAAA,gBAAe,cAsBnC6gC,EAAkBv8F,IAAIs8F,EAAmB,oEACzCE,EAAWx8F,IAAIu8F,EAAiB,aAChC9qF,EAAO,0EAA+G+qF,IAC5H,OAAIA,EAEA,gBAAChyB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,KAI1C,IACR,ECFD,OAhCA,WACE,MAAMgrF,GAAoB/gC,EAAAA,EAAAA,gBAAe,cAoBnC6gC,EAAkBv8F,IAAIy8F,EAAmB,oEAEzChrF,EAAO,0EADIzR,IAAIu8F,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECID,OAlCA,WACE,MAAMgrF,GAAoB/gC,EAAAA,EAAAA,gBAAe,cAsBnC6gC,EAAkBv8F,IAAIy8F,EAAmB,oEAEzChrF,EAAO,0EADIzR,IAAIu8F,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECAD,OAhCA,WACE,MAAMgrF,GAAoB/gC,EAAAA,EAAAA,gBAAe,cAoBnC6gC,EAAkB,IAAIE,EAAmB,oEAEzChrF,EAAO,0EADI,IAAI8qF,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECOD,OArCA,WACE,MAAM6qF,GAAoB5gC,EAAAA,EAAAA,gBAAe,aAyBnC6gC,EAAkBv8F,IAAIs8F,EAAmB,oEAEzC7qF,EAAO,0EADIzR,IAAIu8F,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECHD,OAhCA,WACE,MAAMgrF,GAAoB/gC,EAAAA,EAAAA,gBAAe,cAoBnC6gC,EAAkBv8F,IAAIy8F,EAAmB,oEAEzChrF,EAAO,0EADIzR,IAAIu8F,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECOD,OArCA,WACE,MAAM6qF,GAAoB5gC,EAAAA,EAAAA,gBAAe,cAyBnC6gC,EAAkBv8F,IAAIs8F,EAAmB,oEAEzC7qF,EAAO,0EADIzR,IAAIu8F,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECHD,OAhCA,WACE,MAAMgrF,GAAoB/gC,EAAAA,EAAAA,gBAAe,cAoBnC6gC,EAAkBv8F,IAAIy8F,EAAmB,oEAEzChrF,EAAO,0EADIzR,IAAIu8F,EAAiB,eAGtC,OACE,gBAAC/xB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,OAAO/vF,KAAK,eAAe2F,KAAMR,IAGhD,ECsCD,OAlDA,SAAiBmI,GACf,OAAIskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,UACX,gBAAC,GAAoBxkE,GAE1BskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,WACX,gBAAC,GAAqBxkE,GAE3BskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,UACX,gBAAC,GAAoBxkE,GAE1BskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,oBACX,gBAAC,GAA8BxkE,GAEpCskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,QACX,gBAAC,GAAkBxkE,GAExBskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,UACX,gBAAC,GAAoBxkE,GAE1BskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,UACX,gBAAC,GAAoBxkE,GAE1BskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,aACX,gBAAC,GAAuBxkE,GAE7BskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,UACX,gBAAC,GAAoBxkE,GAE1BskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,aACX,gBAAC,GAAuBxkE,GAE7BskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,YACX,gBAAC,GAAsBxkE,GAE5BskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,WACX,gBAAC,GAAqBxkE,GAE3BskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,kBACX,gBAAC,GAA4BxkE,GAElCskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,cACX,gBAAC,GAAwBxkE,GAE9BskE,IAAQC,EAAAA,GAAQC,EAAAA,GAAAA,aACX,gBAAC,GAAuBxkE,GAG1B,IACR,ECvDD,OAZA,WACE,MAAK4hC,CAAAA,EAAYkhD,qCAKf,gBAAClyB,EAAA,EAAD,KACE,wBAAMlmE,KAAK,+BAA+Bqd,QAAS65B,CAAAA,EAAYkhD,wCAL1D,IAQV,ECPc,SAASC,KACtB,OAAO,IACR,WAPDC,GAAAA,KAAiB,CACfnrF,IAAK+pC,+CACLqhD,OAAQrhD,6BCaV,OARA,SAAmB5hC,GACjB,OAAI,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,WAAqB,IAAQD,EAAAA,GAAQC,EAAAA,GAAAA,YAAsB,IAAQD,EAAAA,GAAQC,EAAAA,GAAAA,UACtF,gBAAC,GAAoBxkE,GAGvB,IACR,ECiBD,MAAMtC,GAAqBxS,KAEzBwW,EAAAA,EAAAA,WAASxW,aAAA,EAAAA,EAAUkS,WAAY,IAAK,CAAE3Q,SAAS,GAA/C,EAGF,SAASy2F,GAAT,GAAmC,IAAd,QAAEvyE,GAAW,EAChC,MAAMoqE,EAAS30F,IAAIy7F,EAAAA,GAAU,CAAC,eAAgB,WAAY,SAC1D,OACE,gCACE,gBAAC,GAAD,MACA,gBAAC,GAAD,MACA,gBAAC,GAAD,MACA,gBAAC,GAAD,MACA,gBAAC,GAAD,MACA,gBAAC,GAAD,MACA,gBAACjxB,EAAA,EAAD,KACE,wBAAM6xB,IAAI,aAAapqF,KAAK,iCAC5B,wBAAMoqF,IAAI,aAAapqF,KAAK,4BAA4BivD,YAAY,cACpE,wBAAMm7B,IAAI,aAAapqF,KAAK,0BAA0BivD,YAAY,cAClE,wBAAMm7B,IAAI,aAAapqF,KAAK,wBAAwBivD,YAAY,eAElE,gBAAC,GAAD,MACA,gBAAC4e,EAAD,KACE,gBAAC4b,GAAD,KACE,gBAAC,IAAD,KACE,gBAAC,IAAD,KACE,gBAAC,EAAD,KACE,gBAAC,IAAD,KACE,gBAAC,IAAD,KACE,gBAAC,IAAD,KACE,gBAAC,EAAAnwF,EAAD,KACE,gBAACwxF,EAAA,EAAD,KACE,gBAAC,IAAD,KACE,gBAAC,KAAD,CACEnyF,OAAQ4wC,CAAAA,EAAYwhD,oBACpBt3F,SAAU81C,CAAAA,EAAYyhD,sBACtBtvF,oBAAqB,CAAE0D,aAAcmqC,CAAAA,EAAY0hD,2BACjD5lF,mBAAoBA,IACpB,gBAAC,KAAD,CACEq9E,OAAQA,EACRwI,oBAAqB3hD,qBAA4Bp3C,SAAS,YACzDmmB,eAgBhC,CAODuyE,GAAYj1E,aAAe,CACzB0C,QAAS,KACT3Q,MAAO,MAGT,UC9EA,OAdA,SAAqBA,GACnB,OAAI,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,WAGhB,IAAQD,EAAAA,GAAQC,EAAAA,GAAAA,YAGhBkB,EAAAA,GALK,gBAAC,GAAwB1lE,GAS3B,IACR,yKCsBGwjF,GAA+B,cAAiB,SAAyBxjF,EAAOuF,GAClF,IAAIzI,EAASkD,EAAMlD,OACf2I,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClB/K,EAAUqF,EAAMrF,QAChB8oF,EAAczjF,EAAMqH,KACpBA,OAAuB,IAAhBo8E,EAAyB,QAAUA,EAC1Cl9E,GAAQ,QAAyBvG,EAAO,CAAC,SAAU,UAAW,YAAa,UAAW,SAE1F,OAAoB,gBAAoBkqB,GAAA,GAAO,QAAS,CACtD7iB,KAAMA,EACNlB,QAAQ,EACRsV,UAAW,EACX/V,WAAW,QAAKD,EAAQyB,KAAMxB,GAC9BH,IAAKA,GACJgB,GAAqB,gBAAoB,MAAO,CACjDb,UAAWD,EAAQ9K,SAClBA,GAAUmC,EAAsB,gBAAoB,MAAO,CAC5D4I,UAAWD,EAAQ3I,QAClBA,GAAU,KACf,IAiCA,IAAe,EAAA6U,GAAA,IAvFK,SAAgBrK,GAClC,IAAIo8E,EAAkC,UAAvBp8E,EAAMY,QAAQxV,KAAmB,GAAM,IAClDuV,GAAkB,SAAUX,EAAMY,QAAQsiB,WAAW1kC,QAAS49F,GAClE,MAAO,CAELx8E,MAAM,QAAS,CAAC,EAAGI,EAAMgY,WAAWsN,OAAO,OAAgB,CACzDnW,MAAOnP,EAAMY,QAAQirB,gBAAgBlrB,GACrCA,gBAAiBA,EACjB5N,QAAS,OACTuQ,WAAY,SACZmrD,SAAU,OACV/sD,QAAS,WACTR,aAAclB,EAAMoB,MAAMF,aAC1B6B,SAAU,GACT/C,EAAMukB,YAAYC,GAAG,MAAO,CAC7BzhB,SAAU,UACVuuD,SAAU,OAIZj+D,QAAS,CACPqO,QAAS,SAIXlM,OAAQ,CACNzC,QAAS,OACTuQ,WAAY,SACZ8U,WAAY,OACZoD,YAAa,GACbnD,aAAc,GAGpB,GAsDkC,CAChCj1B,KAAM,sBADR,CAEG84F,ICdCG,GAAwB,cAAiB,SAAkB3jF,EAAOuF,GACpE,IAAIzI,EAASkD,EAAMlD,OACf8mF,EAAsB5jF,EAAM6jF,aAM5BC,GALJF,OAA8C,IAAxBA,EAAiC,CACrDE,SAAU,SACVC,WAAY,UACVH,GAE+BE,SAC/BC,EAAaH,EAAoBG,WACjCC,EAAwBhkF,EAAMikF,iBAC9BA,OAA6C,IAA1BD,EAAmC,KAAOA,EAC7DxmF,EAAWwC,EAAMxC,SACjBiI,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClBw+E,EAAyBlkF,EAAMkkF,uBAC/BC,EAAenkF,EAAMmkF,aACrBC,EAAwBpkF,EAAMqkF,0BAC9BA,OAAsD,IAA1BD,GAA2CA,EACvEzpF,EAAUqF,EAAMrF,QAChBkhB,EAAU7b,EAAM6b,QAChBhD,EAAU7Y,EAAM6Y,QAChBC,EAAY9Y,EAAM8Y,UAClBC,EAAa/Y,EAAM+Y,WACnBC,EAAShZ,EAAMgZ,OACfrN,EAAW3L,EAAM2L,SACjBsN,EAAYjZ,EAAMiZ,UAClBqrE,EAAetkF,EAAMskF,aACrBlxE,EAAepT,EAAMoT,aACrBlb,EAAO8H,EAAM9H,KACbqsF,EAAqBvkF,EAAMukF,mBAC3Bn+E,EAAwBpG,EAAMqG,oBAC9BA,OAAgD,IAA1BD,EAAmCmY,GAAA,EAAOnY,EAChE8V,EAAwBlc,EAAM0K,mBAC9BA,OAA+C,IAA1BwR,EAAmC,CAC1DtP,MAAO,qBACPD,KAAM,qBACJuP,EACA5V,EAAkBtG,EAAMsG,gBACxBC,GAAQ,QAAyBvG,EAAO,CAAC,SAAU,eAAgB,mBAAoB,WAAY,UAAW,YAAa,yBAA0B,eAAgB,4BAA6B,UAAW,UAAW,UAAW,YAAa,aAAc,SAAU,WAAY,YAAa,eAAgB,eAAgB,OAAQ,qBAAsB,sBAAuB,qBAAsB,oBAE5YwkF,EAAgB,WAEhB91E,EAAkB,YAAe,GACjCqa,EAASra,EAAgB,GACzBsa,EAAYta,EAAgB,GAE5Bmb,GAAc,EAAAva,GAAA,IAAiB,WAC7BuM,GACFA,EAAQ74B,WAAM,EAAQF,UAE1B,IACI2hG,GAAmB,EAAAn1E,GAAA,IAAiB,SAAUo1E,GAC3C7oE,GAAoC,MAAzB6oE,IAIhB16F,aAAaw6F,EAAchmF,SAC3BgmF,EAAchmF,QAAU7X,YAAW,WACjCkjC,EAAY,KAAM,UACpB,GAAG66D,GACL,IACA,aAAgB,WAKd,OAJIxsF,GACFusF,EAAiBR,GAGZ,WACLj6F,aAAaw6F,EAAchmF,QAC7B,CACF,GAAG,CAACtG,EAAM+rF,EAAkBQ,IAG5B,IAAIE,EAAc,WAChB36F,aAAaw6F,EAAchmF,QAC7B,EAIIomF,EAAe,eAAkB,WACX,MAApBX,GACFQ,EAAuC,MAAtBF,EAA6BA,EAAwC,GAAnBN,EAEvE,GAAG,CAACA,EAAkBM,EAAoBE,IA6C1C,OAbA,aAAgB,WACd,IAAKJ,GAA6BnsF,EAGhC,OAFAvS,OAAOsE,iBAAiB,QAAS26F,GACjCj/F,OAAOsE,iBAAiB,OAAQ06F,GACzB,WACLh/F,OAAOmE,oBAAoB,QAAS86F,GACpCj/F,OAAOmE,oBAAoB,OAAQ66F,EACrC,CAIJ,GAAG,CAACN,EAA2BO,EAAc1sF,KAExCA,GAAQ6wB,EACJ,KAGW,gBAAoB87D,GAAA,GAAmB,QAAS,CAClE3tE,YAhCoB,SAAyBrQ,GACzCgV,GACFA,EAAQhV,EAAO,YAEnB,GA6BGq9E,GAAsC,gBAAoB,OAAO,QAAS,CAC3Ex+E,WAAW,QAAKD,EAAQyB,KAAMzB,EAAQ,eAAe5F,QAAO,QAAWikF,IAAWjkF,QAAO,QAAWkkF,KAAer+E,GACnH4+E,aAnDqB,SAA0Bz9E,GAC3Cy9E,GACFA,EAAaz9E,GAGf89E,GACF,EA8CEvxE,aA5CqB,SAA0BvM,GAC3CuM,GACFA,EAAavM,GAGf+9E,GACF,EAuCEr/E,IAAKA,GACJgB,GAAqB,gBAAoBF,GAAqB,QAAS,CACxEoH,QAAQ,EACRrG,GAAIlP,EACJ2gB,SAAS,EAAAkR,GAAA,IA/BO,WAChBf,GAAU,EACZ,GA6B8CnQ,GAC5CC,UAAWA,EACXC,WAAYA,EACZC,OAAQA,EACRrN,UAAU,EAAAoe,GAAA,IAvCO,WACjBf,GAAU,EACZ,GAqCgDrd,GAC9CsN,UAAWA,EACXjsB,QAAS0d,EACT2R,UAAwB,QAAbynE,EAAqB,OAAS,MACxCx9E,GAAkB9I,GAAyB,gBAAoB,IAAiB,QAAS,CAC1F7C,QAASA,EACTmC,OAAQA,GACPqnF,MACL,IAoKA,IAAe,EAAAxyE,GAAA,IAnYK,SAAgBrK,GAClC,IAAIw9E,EAAO,CACTl9E,IAAK,GAEHm9E,EAAU,CACZj6E,OAAQ,GAENjD,EAAQ,CACVgD,eAAgB,YAEdlD,EAAO,CACTkD,eAAgB,cAEdm6E,EAAO,CACTp9E,IAAK,IAEHq9E,EAAU,CACZn6E,OAAQ,IAENo6E,EAAS,CACXr9E,MAAO,IAELs9E,EAAQ,CACVx9E,KAAM,IAEJ+H,EAAS,CACX/H,KAAM,MACNE,MAAO,OACPyC,UAAW,oBAEb,MAAO,CAELpD,KAAM,CACJyD,OAAQrD,EAAMqD,OAAOqtB,SACrBtwB,SAAU,QACVrN,QAAS,OACTsN,KAAM,EACNE,MAAO,EACPgD,eAAgB,SAChBD,WAAY,UAIdw6E,uBAAuB,QAAS,CAAC,EAAGN,GAAM,OAAgB,CAAC,EAAGx9E,EAAMukB,YAAYC,GAAG,OAAO,QAAS,CAAC,EAAGk5D,EAAMt1E,KAG7G21E,0BAA0B,QAAS,CAAC,EAAGN,GAAS,OAAgB,CAAC,EAAGz9E,EAAMukB,YAAYC,GAAG,OAAO,QAAS,CAAC,EAAGm5D,EAASv1E,KAGtH41E,sBAAsB,QAAS,CAAC,EAAGR,EAAMj9E,GAAO,OAAgB,CAAC,EAAGP,EAAMukB,YAAYC,GAAG,OAAO,QAAS,CACvGnkB,KAAM,QACLq9E,EAAME,KAGTK,yBAAyB,QAAS,CAAC,EAAGR,EAASl9E,GAAO,OAAgB,CAAC,EAAGP,EAAMukB,YAAYC,GAAG,OAAO,QAAS,CAC7GnkB,KAAM,QACLs9E,EAASC,KAGZM,qBAAqB,QAAS,CAAC,EAAGV,EAAMn9E,GAAM,OAAgB,CAAC,EAAGL,EAAMukB,YAAYC,GAAG,OAAO,QAAS,CACrGjkB,MAAO,QACNm9E,EAAMG,KAGTM,wBAAwB,QAAS,CAAC,EAAGV,EAASp9E,GAAM,OAAgB,CAAC,EAAGL,EAAMukB,YAAYC,GAAG,OAAO,QAAS,CAC3GjkB,MAAO,QACNo9E,EAASE,KAEhB,GA+TkC,CAChChzE,MAAM,EACNznB,KAAM,eAFR,CAGGi5F,iBC/YH,IAAe,EAAAhqD,GAAA,GAA4B,gBAAoB,OAAQ,CACrE73C,EAAG,8OACD,mBCFJ,IAAe,EAAA63C,GAAA,GAA4B,gBAAoB,OAAQ,CACrE73C,EAAG,qFACD,yBCFJ,IAAe,EAAA63C,GAAA,GAA4B,gBAAoB,OAAQ,CACrE73C,EAAG,4KACD,gBCFJ,IAAe,EAAA63C,GAAA,GAA4B,gBAAoB,OAAQ,CACrE73C,EAAG,8MACD,gBCFJ,IAAe,EAAA63C,GAAA,GAA4B,gBAAoB,OAAQ,CACrE73C,EAAG,0GACD,sBC8IA4jG,GAAqB,CACvB5yD,QAAsB,gBAAoB6yD,GAAqB,CAC7DtmE,SAAU,YAEZqT,QAAsB,gBAAoBkzD,GAA2B,CACnEvmE,SAAU,YAEZv0B,MAAoB,gBAAoB+6F,GAAkB,CACxDxmE,SAAU,YAEZuT,KAAmB,gBAAoBkzD,GAAkB,CACvDzmE,SAAU,aAIVzd,GAAoB,gBAAoBmkF,GAAW,CACrD1mE,SAAU,UAGR2mE,GAAqB,cAAiB,SAAehmF,EAAOuF,GAC9D,IAAIzI,EAASkD,EAAMlD,OACfU,EAAWwC,EAAMxC,SACjBiI,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClBugF,EAAmBjmF,EAAMkmF,UACzBA,OAAiC,IAArBD,EAA8B,QAAUA,EACpDxvE,EAAQzW,EAAMyW,MACdqb,EAAO9xB,EAAM8xB,KACbq0D,EAAqBnmF,EAAMomF,YAC3BA,OAAqC,IAAvBD,EAAgCT,GAAqBS,EACnEtqE,EAAU7b,EAAM6b,QAChB4nE,EAAczjF,EAAMqH,KACpBA,OAAuB,IAAhBo8E,EAAyB,QAAUA,EAC1C4C,EAAkBrmF,EAAMsmF,SACxBA,OAA+B,IAApBD,EAA6B,UAAYA,EACpDlqE,EAAiBnc,EAAMoc,QACvBA,OAA6B,IAAnBD,EAA4B,WAAaA,EACnD5V,GAAQ,QAAyBvG,EAAO,CAAC,SAAU,WAAY,UAAW,YAAa,YAAa,QAAS,OAAQ,cAAe,UAAW,OAAQ,WAAY,YAEvK,OAAoB,gBAAoBkqB,GAAA,GAAO,QAAS,CACtD7iB,KAAMA,EACNlB,QAAQ,EACRsV,UAAW,EACX/V,WAAW,QAAKD,EAAQyB,KAAMzB,EAAQ,GAAG5F,OAAOuc,GAASvc,QAAO,QAAW4W,GAAS6vE,KAAa5gF,GACjGH,IAAKA,GACJgB,IAAiB,IAATurB,EAA8B,gBAAoB,MAAO,CAClEpsB,UAAWD,EAAQqsB,MAClBA,GAAQs0D,EAAYE,IAAaZ,GAAmBY,IAAa,KAAmB,gBAAoB,MAAO,CAChH5gF,UAAWD,EAAQ9K,SAClB6C,GAAqB,MAAVV,EAA8B,gBAAoB,MAAO,CACrE4I,UAAWD,EAAQ3I,QAClBA,GAAU,KAAgB,MAAVA,GAAkB+e,EAAuB,gBAAoB,MAAO,CACrFnW,UAAWD,EAAQ3I,QACL,gBAAoB8hB,GAAA,EAAY,CAC9CzrB,KAAM,QACN,aAAc+yF,EACd/oF,MAAO+oF,EACPzvE,MAAO,UACPlN,QAASsS,GACRja,KAAS,KACd,IAkFA,IAAe,EAAA+P,GAAA,IAtRK,SAAgBrK,GAClC,IAAIi/E,EAAkC,UAAvBj/E,EAAMY,QAAQxV,KAAmB,MAAS,MACrD8zF,EAA4C,UAAvBl/E,EAAMY,QAAQxV,KAAmB,MAAU,MACpE,MAAO,CAELwU,MAAM,QAAS,CAAC,EAAGI,EAAMgY,WAAWsN,MAAO,CACzCpkB,aAAclB,EAAMoB,MAAMF,aAC1BP,gBAAiB,cACjB5N,QAAS,OACT2O,QAAS,aAIXy9E,gBAAiB,CACfhwE,MAAO8vE,EAASj/E,EAAMY,QAAQ4qB,QAAQ/S,KAAM,IAC5C9X,gBAAiBu+E,EAAmBl/E,EAAMY,QAAQ4qB,QAAQ/S,KAAM,IAChE,UAAW,CACTtJ,MAAOnP,EAAMY,QAAQ4qB,QAAQ/S,OAKjC2mE,aAAc,CACZjwE,MAAO8vE,EAASj/E,EAAMY,QAAQ0qB,KAAK7S,KAAM,IACzC9X,gBAAiBu+E,EAAmBl/E,EAAMY,QAAQ0qB,KAAK7S,KAAM,IAC7D,UAAW,CACTtJ,MAAOnP,EAAMY,QAAQ0qB,KAAK7S,OAK9B4mE,gBAAiB,CACflwE,MAAO8vE,EAASj/E,EAAMY,QAAQwqB,QAAQ3S,KAAM,IAC5C9X,gBAAiBu+E,EAAmBl/E,EAAMY,QAAQwqB,QAAQ3S,KAAM,IAChE,UAAW,CACTtJ,MAAOnP,EAAMY,QAAQwqB,QAAQ3S,OAKjC6mE,cAAe,CACbnwE,MAAO8vE,EAASj/E,EAAMY,QAAQpd,MAAMi1B,KAAM,IAC1C9X,gBAAiBu+E,EAAmBl/E,EAAMY,QAAQpd,MAAMi1B,KAAM,IAC9D,UAAW,CACTtJ,MAAOnP,EAAMY,QAAQpd,MAAMi1B,OAK/B8mE,gBAAiB,CACfpwE,MAAO8vE,EAASj/E,EAAMY,QAAQ4qB,QAAQ/S,KAAM,IAC5C1J,OAAQ,aAAaxW,OAAOyH,EAAMY,QAAQ4qB,QAAQ/S,MAClD,UAAW,CACTtJ,MAAOnP,EAAMY,QAAQ4qB,QAAQ/S,OAKjC+mE,aAAc,CACZrwE,MAAO8vE,EAASj/E,EAAMY,QAAQ0qB,KAAK7S,KAAM,IACzC1J,OAAQ,aAAaxW,OAAOyH,EAAMY,QAAQ0qB,KAAK7S,MAC/C,UAAW,CACTtJ,MAAOnP,EAAMY,QAAQ0qB,KAAK7S,OAK9BgnE,gBAAiB,CACftwE,MAAO8vE,EAASj/E,EAAMY,QAAQwqB,QAAQ3S,KAAM,IAC5C1J,OAAQ,aAAaxW,OAAOyH,EAAMY,QAAQwqB,QAAQ3S,MAClD,UAAW,CACTtJ,MAAOnP,EAAMY,QAAQwqB,QAAQ3S,OAKjCinE,cAAe,CACbvwE,MAAO8vE,EAASj/E,EAAMY,QAAQpd,MAAMi1B,KAAM,IAC1C1J,OAAQ,aAAaxW,OAAOyH,EAAMY,QAAQpd,MAAMi1B,MAChD,UAAW,CACTtJ,MAAOnP,EAAMY,QAAQpd,MAAMi1B,OAK/BknE,cAAe,CACbxwE,MAAO,OACP0e,WAAY7tB,EAAMgY,WAAWoV,iBAC7BzsB,gBAAiBX,EAAMY,QAAQ4qB,QAAQ/S,MAIzCmnE,WAAY,CACVzwE,MAAO,OACP0e,WAAY7tB,EAAMgY,WAAWoV,iBAC7BzsB,gBAAiBX,EAAMY,QAAQ0qB,KAAK7S,MAItConE,cAAe,CACb1wE,MAAO,OACP0e,WAAY7tB,EAAMgY,WAAWoV,iBAC7BzsB,gBAAiBX,EAAMY,QAAQwqB,QAAQ3S,MAIzCqnE,YAAa,CACX3wE,MAAO,OACP0e,WAAY7tB,EAAMgY,WAAWoV,iBAC7BzsB,gBAAiBX,EAAMY,QAAQpd,MAAMi1B,MAIvC+R,KAAM,CACJnS,YAAa,GACb3W,QAAS,QACT3O,QAAS,OACTglB,SAAU,GACVrX,QAAS,IAIXrN,QAAS,CACPqO,QAAS,SAIXlM,OAAQ,CACNzC,QAAS,OACTuQ,WAAY,SACZ8U,WAAY,OACZoD,YAAa,GACbnD,aAAc,GAGpB,GA+IkC,CAChCj1B,KAAM,YADR,CAEGs7F,8BC5NH,SAASA,GAAMhmF,GACb,OAAO,gBAAC,GAAD,eAAUyb,UAAW,EAAGW,QAAQ,UAAapc,GACrD,CAED,SAASqnF,GAAT,GAAwC,IAAvB,QAAE5hF,EAAF,QAAW9K,GAAW,EACrC,MAAM,cAAE2sF,IAAkBC,EAAAA,EAAAA,KAEpB/+F,EAAK,IAAImS,EAAS,MAClB8vB,EAAO,IAAI9vB,EAAS,QAEpB6sF,GAAe3oF,EAAAA,EAAAA,cACnB,CAACgI,EAAOyzB,KACF,IAAQA,EAAQ,cAGpBgtD,EAAc9+F,EAAd,GAEF,CAAC8+F,EAAe9+F,IAIlB,OACE,gBAAC,GAAD,CACEy7F,iBAAkB,IAClBJ,aAAc,CAAEC,SAAU,SAAUC,WAAY,QAChDloE,QAAS2rE,EACTtvF,MAAI,GACJ,gBAAC,GAAD,CACE2jB,QAAS2rE,EACT9hF,UAAWD,EAAQsC,QACnBu+E,SAAU,IAAI3rF,EAAS,QAAQ1D,cAC/BmvF,YAAa,CACXtzD,QAAS,gBAAC20D,GAAA,EAAD,CAAWpoE,SAAS,YAC7Bv0B,MAAO,gBAAC,KAAD,CAA2Bu0B,SAAS,cAE5CoL,GAIR,CAQD48D,GAAQp5E,aAAe,CACrBtT,QAAS,KACT8K,QAAS,CAAC,EACVC,UAAW,MAGb,QAAeiM,EAAAA,GAAAA,IAlHArK,IAAK,CAClBS,QAAS,IACJT,EAAMgY,WAAWsN,MACpBhiB,WAAY,SACZ3C,gBAAiB,IAAkB,IAC7BA,GADY,QAAEtN,GAAc,EAGhC,OAAQ,IAAIA,EAAS,SACnB,KAAK+sF,EAAAA,GAAAA,MACHz/E,EAAkBX,EAAMY,QAAQpd,MAAM0mC,MACtC,MACF,KAAKk2D,EAAAA,GAAAA,QACHz/E,EAAkBX,EAAMY,QAAQ4qB,QAAQtB,MACxC,MACF,KAAKk2D,EAAAA,GAAAA,QACHz/E,EAAkBX,EAAMY,QAAQwqB,QAAQlB,MACxC,MACF,KAAKk2D,EAAAA,GAAAA,KACHz/E,EAAkBX,EAAMY,QAAQ0qB,KAAKpB,MACrC,MACF,QACEvpB,EAAkBX,EAAMY,QAAQ0rB,KAAK,KAGzC,OAAO3rB,CAAP,EAEFO,aAAc,EACd+hB,UAAW,OACX9T,MAAOnP,EAAMY,QAAQuiB,KAAK3K,QAC1BzlB,QAAS,OACT2O,QAAS,eACT,yBAA0B,CACxBowB,KAAM,IAAkB,IAClBuuD,GADC,QAAEhtF,GAAc,EAGrB,OAAQ,IAAIA,EAAS,SACnB,KAAK+sF,EAAAA,GAAAA,MACHC,EAAYrgF,EAAMY,QAAQpd,MAAMi1B,KAChC,MACF,KAAK2nE,EAAAA,GAAAA,QACHC,EAAYrgF,EAAMY,QAAQ4qB,QAAQ/S,KAClC,MACF,KAAK2nE,EAAAA,GAAAA,QACHC,EAAYrgF,EAAMY,QAAQwqB,QAAQ3S,KAClC,MACF,KAAK2nE,EAAAA,GAAAA,KACHC,EAAYrgF,EAAMY,QAAQ0qB,KAAK7S,KAC/B,MACF,QACE4nE,EAAYrgF,EAAMY,QAAQ0rB,KAAK,KAGnC,OAAO+zD,CAAP,GAGJ,sBAAuB,CACrBzmE,WAAY,YA0DlB,CAAkCmmE,ICvHlC,SAASO,KACP,MAAM,SAAEC,IAAaN,EAAAA,EAAAA,KAErB,OAAO,IAAIM,GAAUltF,GAAW,gBAAC,GAAD,CAASvT,IAAK,IAAIuT,EAAS,MAAOA,QAASA,KAC5E,CAIDitF,GAAa35E,aAAe,CAAC,EAE7B,UCKA,OAdA,SAAsBjO,GACpB,OAAI,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,WAGhB,IAAQD,EAAAA,GAAQC,EAAAA,GAAAA,YAGhB,IAAQD,EAAAA,GAAQC,EAAAA,GAAAA,UALX,gBAAC,GAAyBxkE,GAS5B,IACR,+HCmBD,SAAS8nF,GAAT,GAAuD,IAAzB,QAAEriF,EAAF,UAAWC,GAAa,EACpD,MAAM,SAAErI,IAAamgD,EAAAA,GAAAA,gBACf,YAAEuqC,EAAF,aAAeC,EAAf,WAA6BC,IAAeC,EAAAA,EAAAA,KAE5CC,EAAaH,EAAa,8BAE1BI,GAAqB9oF,EAAAA,EAAAA,UAAQ,IAC1B,IAAI2oF,EAAY,qDACtB,CAACA,IAEEI,GAA+B/oF,EAAAA,EAAAA,UAAQ,KAC3C,MAAMgpF,EAnBV,SAAoCF,EAAoB/qF,GACtD,OAAO,KAAK+qF,EAAoB,CAC9BG,cAAe,CACbz4C,SAAUzyC,IAGf,CAamCmrF,CAA2BJ,EAAoB/qF,GAE/E,IAAIF,EAAQ,IAAImrF,EAAyB,2BAKzC,OAJI,KAAQnrF,KACVA,EAAQ,IAAImrF,EAAyB,wBAGhCnrF,CAAP,GACC,CAACirF,EAAoB/qF,IAElBorF,GAA+B5pF,EAAAA,EAAAA,cAAY,KAC/CkpF,GAAa,GACZ,CAACA,IAEJ,OACE,gBAAC5sE,GAAA,GAAD,CAAQE,OAAO,OAAO3V,WAAWgjF,EAAAA,GAAAA,GAAKjjF,EAAQyB,KAAMxB,GAAYxN,KAAMiwF,EAAYtsE,QAASksE,GACzF,gBAACn8D,GAAA,EAAD,CAASlmB,UAAWD,EAAQwmB,SAC1B,gBAACY,GAAA,EAAD,CAAYzQ,QAAQ,MAAMisE,GAC1B,gBAACzpE,GAAA,EAAD,CAAY7U,KAAK,MAAM,aAAW,QAAQrE,UAAWD,EAAQkjF,WAAYp/E,QAASw+E,GAChF,gBAAC,KAAD,CAAOriF,UAAWD,EAAQqsB,SAG9B,uBAAKpsB,UAAWD,EAAQsC,SACtB,gBAAC6gF,GAAA,EAAD,CAAoBr7F,KAAM66F,EAAoBS,yBAA0BJ,KAI/E,CAQDX,GAAqB75E,aAAe,CAClCxI,QAAS,CAAC,EACVC,UAAW,CAAC,EACZlI,SAAU,QAGZ,QAAemU,EAAAA,GAAAA,IA9EArK,IAAK,CAClBJ,KAAM,CAAC,EACPa,QAAS,CACP6J,SAAU,QAEZqa,QAAS,CACPjjB,QAAS,OACT6B,eAAgB,iBAElB89E,WAAY,CACV3/E,QAAS,QAEX8oB,KAAM,CACJzS,SAAU,OACV5I,MAAOnP,EAAMY,QAAQ+X,UAAUF,SAgEnC,CAAkC+nE,ICxElC,OAXA,SAA8B9nF,GAC5B,OAAI,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,WAGhB,IAAQD,EAAAA,GAAQC,EAAAA,GAAAA,WAFX,gBAAC,GAAiCxkE,GAMpC,IACR,ECVD,SAAS8oF,GAAT,GAAmC,IAAd,QAAEn4E,GAAW,EAKhC,OAJApS,EAAAA,EAAAA,YAAU,MACRwqF,EAAAA,GAAAA,KAAU,IAIV,gCACE,gBAAC,GAAD,MACA,gBAAC,GAAD,MACCp4E,EAGN,CAODm4E,GAAY76E,aAAe,CACzB0C,QAAS,KACT3Q,MAAO,MAGT,UCTA,OAdA,SAAqBA,GACnB,OAAI,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,WAGhB,IAAQD,EAAAA,GAAQC,EAAAA,GAAAA,YAGhBkB,EAAAA,GALK,gBAAC,GAAwB1lE,GAS3B,IACR,ECbM,MAAMowD,GAAkBpwD,GACtB,gBAAC,GAAgBA,GAGbmxD,GAAkBnxD,GACtB,gBAAC,GAAgBA,yJCR1B,MAAMgpF,GAA0BntF,EAAAA,EAAAA,eAAc,CAC5CotF,UAAW,CAAC,EACZC,gBAAiB,OACjBC,eAAgB,SAGZC,EAAe,CAAC,EAEtB,SAASvsF,EAAQ5R,EAAO6R,GACtB,OAAQ,IAAIA,EAAQ,SAClB,IAAK,kBAEH,MAAO,IAAK7R,EAAOg+F,UADH,IAAInsF,EAAQ,oBAG9B,IAAK,iBACH,OAAOssF,EAET,QACE,MAAM,IAAI/hG,MAAO,0BAAyB,IAAIyV,EAAQ,WAG3D,CAEM,SAASusF,EAAT,GAAiD,IAAf,SAAE7rF,GAAY,EACrD,MAAM,EAACvS,EAAD,EAAQmT,IAAYD,EAAAA,EAAAA,YAAWtB,EAASusF,GAExC/pF,GAAeC,EAAAA,EAAAA,UAAQ,KAQpB,CACL2pF,UAAW,IAAIh+F,EAAO,aACtBi+F,gBATsBI,IACtBlrF,EAAS,CAAE1L,KAAM,kBAAmBmD,QAAS,CAAEyzF,YAA/C,EASAH,eAPqB,KACrB/qF,EAAS,CAAE1L,KAAM,iBAAkBmD,QAAS,CAAC,GAA7C,KAQD,CAAC5K,IAEJ,OAAO,gBAAC+9F,EAAwBzpF,SAAzB,CAAkC5b,MAAO0b,GAAe7B,EAChE,CAUM,SAAS+rF,IACd,MAAM3rF,GAAU6B,EAAAA,EAAAA,YAAWupF,GAC3B,GAAI,IAAMprF,GACR,MAAM,IAAIvW,MAAM,4DAElB,OAAOuW,CACR,CAVDyrF,EAAyBp7E,aAAe,CACtCzQ,SAAU,kNChDZ,MAAMgsF,GAAiB3tF,EAAAA,EAAAA,eAAc,CACnC4tF,eAAgB,IAAM,OAGjB,SAASC,EAAT,GAAwC,IAAf,SAAElsF,GAAY,EAC5C,MAAM4H,GAAQ08C,EAAAA,EAAAA,gBAAe,cA8LvBziD,GAAeC,EAAAA,EAAAA,UAAQ,KA2BpB,CACLmqF,eA3BqBE,IACrB,MAAMC,EAAmB,IAAIxkF,EAAO,kCAC9BykF,EAAmB,IAAIzkF,EAAO,kCAC9B0kF,EAAoB,IAAI1kF,EAAO,mCAC/B2kF,EAAa,IAAI3kF,EAAO,4BACxB4kF,EAAkB,IAAI5kF,EAAO,iCAC7B6kF,EAAe,IAAI7kF,EAAO,2BAC1B8kF,EAAiB,IAAI9kF,EAAO,+BAE5B+kF,EAAkBC,GACf,IAAOA,GAAO18E,GACZ,IAAQ,IAAIA,EAAM,0BAA2B,IAAIi8E,EAAS,cAIrE,MAAO,CACLU,aAAcF,EAAgBP,GAC9BU,aAAcH,EAAgBN,GAC9BU,cAAeJ,EAAgBL,GAC/BU,OAAQL,EAAgBJ,GACxBU,YAAaN,EAAgBH,GAC7BU,SAAUP,EAAgBF,GAC1BU,WAAYR,EAAgBD,GAP9B,KAcD,CAAC9kF,IAEJ,OAAO,gBAACokF,EAAejqF,SAAhB,CAAyB5b,MAAO0b,GAAe7B,EACvD,CAUM,SAASotF,IACd,MAAMhtF,GAAU6B,EAAAA,EAAAA,YAAW+pF,GAC3B,GAAI,IAAM5rF,GACR,MAAM,IAAIvW,MAAM,oDAElB,OAAOuW,CACR,CAVD8rF,EAAgBz7E,aAAe,CAC7BzQ,SAAU,4JC3OZ,MAAM2lF,GAAuBtnF,EAAAA,EAAAA,eAAc,CACzCgvF,cAAe,OACfC,sBAAuB,OACvBC,WAAY,OACZC,iBAAkB,OAClBC,yBAA0B,OAC1BC,cAAe,OACfC,YAAa,SAGT/B,EAAe,CAAC,EAEtB,SAASvsF,EAAQ5R,EAAO6R,GACtB,OAAQ1W,IAAI0W,EAAQ,SAClB,IAAK,mBAAoB,CACvB,MAAMsuF,EAAahlG,IAAI0W,EAAQ,sBACzBuuF,EAAYjlG,IAAI0W,EAAQ,qBAC9B,MAAO,IACF7R,EACH,CAACogG,GAAY,IACRpgG,EAAMogG,GACTD,cAGL,CAED,IAAK,2BAA4B,CAC/B,MAAME,EAAqBllG,IAAI0W,EAAQ,8BACjCuuF,EAAYjlG,IAAI0W,EAAQ,qBAC9B,MAAO,IACF7R,EACH,CAACogG,GAAY,IACRpgG,EAAMogG,GACTC,sBAGL,CACD,IAAK,gBAAiB,CACpB,MAAM/rC,EAAUn5D,IAAI0W,EAAQ,mBACtBuuF,EAAYjlG,IAAI0W,EAAQ,qBAC9B,MAAO,IACF7R,EACH,CAACogG,GAAY,IACRpgG,EAAMogG,GACT9rC,WAGL,CACD,IAAK,cACH,OAAO6pC,EAET,QACE,MAAM,IAAI/hG,MAAO,0BAAyBjB,IAAI0W,EAAQ,WAG3D,CAEM,SAASyuF,EAAT,GAAqD,IAAf,SAAE/tF,GAAY,EACzD,MAAM,EAACvS,EAAD,EAAQmT,IAAYD,EAAAA,EAAAA,YAAWtB,EAASusF,GAExC/pF,GAAeC,EAAAA,EAAAA,UAAQ,KAiBpB,CACLurF,cAAeQ,GACNjlG,IAAI6E,EAAQ,GAAEogG,eAAwB,IAE/CP,sBAAuBO,GACdjlG,IAAI6E,EAAQ,GAAEogG,uBAAgC,IAEvDN,WAAYM,GACHjlG,IAAI6E,EAAQ,GAAEogG,YAAqB,IAE5CL,iBA1BuB,CAACK,EAAWD,KACnChtF,EAAS,CAAE1L,KAAM,mBAAoBmD,QAAS,CAAEw1F,YAAWD,eAA3D,EA0BAH,yBAvB+B,CAACI,EAAWC,KAC3CltF,EAAS,CAAE1L,KAAM,2BAA4BmD,QAAS,CAAEw1F,YAAWC,uBAAnE,EAuBAJ,cApBoB,CAACG,EAAW9rC,KAChCnhD,EAAS,CAAE1L,KAAM,gBAAiBmD,QAAS,CAAEw1F,YAAW9rC,YAAxD,EAoBA4rC,YAjBkB,KAClB/sF,EAAS,CAAE1L,KAAM,cAAemD,QAAS,CAAC,GAA1C,KAkBD,CAAC5K,IAEJ,OAAO,gBAACk4F,EAAqB5jF,SAAtB,CAA+B5b,MAAO0b,GAAe7B,EAC7D,CAUM,SAASguF,IACd,MAAM5tF,GAAU6B,EAAAA,EAAAA,YAAW0jF,GAC3B,GAAIsI,IAAM7tF,GACR,MAAM,IAAIvW,MAAM,6EAElB,OAAOuW,CACR,CAVD2tF,EAA6Bt9E,aAAe,CAC1CzQ,SAAU,gLCvGZ,MAAMkuF,GAAgB7vF,EAAAA,EAAAA,eAAc,CAClC8vF,WAAY,KACZC,WAAY,OACZC,YAAa,OACbC,aAAc,SAGV1C,EAAe,CAAE1+F,KAAM,KAAM6C,KAAM,MAEzC,SAASsP,EAAQ5R,EAAO6R,GACtB,OAAQ,IAAIA,EAAQ,SAClB,IAAK,aAIH,MAAO,IAAK7R,EAAOP,KAHN,IAAIoS,EAAQ,gBAGAvP,KAFZ,IAAIuP,EAAQ,iBAI3B,IAAK,cACH,OAAOssF,EAET,QACE,MAAM,IAAI/hG,MAAO,0BAAyB,IAAIyV,EAAQ,WAG3D,CAEM,SAASivF,EAAT,GAAuC,IAAf,SAAEvuF,GAAY,EAC3C,MAAM,EAACvS,EAAD,EAAQmT,IAAYD,EAAAA,EAAAA,YAAWtB,EAASusF,GAExC/pF,GAAeC,EAAAA,EAAAA,UAAQ,KAapB,CACLqsF,WAAY,IAAI1gG,EAAO,QACvB2gG,WAdiB,CAAClhG,EAAM6C,KACxB6Q,EAAS,CAAE1L,KAAM,aAAcmD,QAAS,CAAEnL,OAAM6C,SAAhD,EAcAs+F,YAXkB,KAClBztF,EAAS,CAAE1L,KAAM,cAAemD,QAAS,CAAC,GAA1C,EAWAi2F,aARmBphG,GACZ,IAAQA,EAAM,IAAIO,EAAO,YASjC,CAACA,IAEJ,OAAO,gBAACygG,EAAcnsF,SAAf,CAAwB5b,MAAO0b,GAAe7B,EACtD,CAUM,SAASwuF,IACd,MAAMpuF,GAAU6B,EAAAA,EAAAA,YAAWisF,GAC3B,GAAI,IAAM9tF,GACR,MAAM,IAAIvW,MAAM,kDAElB,OAAOuW,CACR,CAVDmuF,EAAe99E,aAAe,CAC5BzQ,SAAU,iLC1DZ,MAAMyuF,GAAgBpwF,EAAAA,EAAAA,eAAc,CAClCosF,WAAY,KACZiE,WAAY,OACZnE,YAAa,OACbC,aAAc,SAGVoB,EAAe,CAAE1+F,KAAM,KAAM6C,KAAM,MAEzC,SAASsP,EAAQ5R,EAAO6R,GACtB,OAAQ,IAAIA,EAAQ,SAClB,IAAK,aAIH,MAAO,IAAK7R,EAAOP,KAHN,IAAIoS,EAAQ,gBAGAvP,KAFZ,IAAIuP,EAAQ,iBAI3B,IAAK,cACH,OAAOssF,EAET,QACE,MAAM,IAAI/hG,MAAO,0BAAyB,IAAIyV,EAAQ,WAG3D,CAEM,SAASqvF,EAAT,GAAuC,IAAf,SAAE3uF,GAAY,EAC3C,MAAM,EAACvS,EAAD,EAAQmT,IAAYD,EAAAA,EAAAA,YAAWtB,EAASusF,GAExC/pF,GAAeC,EAAAA,EAAAA,UAAQ,KAapB,CACL2oF,WAAY,IAAIh9F,EAAO,QACvBihG,WAdiB,CAACxhG,EAAM6C,KACxB6Q,EAAS,CAAE1L,KAAM,aAAcmD,QAAS,CAAEnL,OAAM6C,SAAhD,EAcAw6F,YAXkB,KAClB3pF,EAAS,CAAE1L,KAAM,cAAemD,QAAS,CAAC,GAA1C,EAWAmyF,aARmBt9F,GACZ,IAAQA,EAAM,IAAIO,EAAO,YASjC,CAACA,IAEJ,OAAO,gBAACghG,EAAc1sF,SAAf,CAAwB5b,MAAO0b,GAAe7B,EACtD,CAUM,SAAS0qF,IACd,MAAMtqF,GAAU6B,EAAAA,EAAAA,YAAWwsF,GAC3B,GAAI,IAAMruF,GACR,MAAM,IAAIvW,MAAM,kDAElB,OAAOuW,CACR,CAVDuuF,EAAel+E,aAAe,CAC5BzQ,SAAU,4JCzDZ,MAAM4uF,GAAqBvwF,EAAAA,EAAAA,eAAc,CACvCwwF,kBAAmB,OACnBC,cAAc,EACdC,aAAa,IAGTnD,EAAe,CACnBmD,aAAa,GAGf,SAAS1vF,EAAQ5R,EAAO6R,GACtB,GACO,sBADC,IAAIA,EAAQ,QACQ,CAExB,MAAO,IAAK7R,EAAOshG,YADC,IAAIzvF,EAAQ,uBAEjC,CAEC,MAAM,IAAIzV,MAAO,0BAAyB,IAAIyV,EAAQ,UAG3D,CAEM,SAAS0vF,EAAT,GAA4C,IAAf,SAAEhvF,GAAY,EAChD,MAAM,EAACvS,EAAD,EAAQmT,IAAYD,EAAAA,EAAAA,YAAWtB,EAASusF,GAExC/pF,GAAeC,EAAAA,EAAAA,UAAQ,KAKpB,CACLitF,YAAa,IAAIthG,EAAO,eACxBohG,kBANwBE,IACxBnuF,EAAS,CAAE1L,KAAM,oBAAqBmD,QAAS,CAAE02F,gBAAjD,KAOD,CAACthG,IAEJ,OAAO,gBAACmhG,EAAmB7sF,SAApB,CAA6B5b,MAAO0b,GAAe7B,EAC3D,CAUM,SAASivF,IACd,MAAM7uF,GAAU6B,EAAAA,EAAAA,YAAW2sF,GAC3B,GAAI,IAAMxuF,GACR,MAAM,IAAIvW,MAAM,uDAElB,OAAOuW,CACR,CAVD4uF,EAAoBv+E,aAAe,CACjCzQ,SAAU,4PCtCZ,MAAMkvF,GAAiB7wF,EAAAA,EAAAA,eAAc,CACnCgsF,SAAU,GACVP,cAAe,OACfqF,mBAAoB,OACpBC,kBAAmB,OACnBC,qBAAsB,OACtBC,qBAAsB,SAGlB1D,EAAe,GAErB,SAASvsF,EAAQ5R,EAAO6R,GACtB,OAAQ1W,IAAI0W,EAAQ,SAClB,IAAK,gBACH,OAAO+C,IAAO,GAAI5U,EAAO,CACvBzC,GAAIpC,IAAI0W,EAAQ,cAChBpK,KAAMtM,IAAI0W,EAAQ,gBAClB2tB,KAAMrkC,IAAI0W,EAAQ,gBAClB5I,QAAS9N,IAAI0W,EAAQ,mBACrBmH,MAAO7d,IAAI0W,EAAQ,mBAGvB,IAAK,gBACH,OAAO1S,IAAOa,GAAO0P,IAAY2pE,IAAQl+E,IAAIuU,EAAS,MAAOvU,IAAI0W,EAAQ,iBAE3E,QACE,MAAM,IAAIzV,MAAO,0BAAyBjB,IAAI0W,EAAQ,WAG3D,CAEM,SAASiwF,EAAT,GAAwC,IAAf,SAAEvvF,GAAY,EAC5C,MAAM,EAACvS,EAAD,EAAQmT,IAAYD,EAAAA,EAAAA,YAAWtB,EAASusF,GAExC/pF,GAAeC,EAAAA,EAAAA,UAAQ,KAoCpB,CACLuoF,SAAU58F,EACVq8F,cArCoB9+F,IACpB4V,EAAS,CACP1L,KAAM,gBACNmD,QAAS,CAAErN,OAFb,EAqCAmkG,mBA/ByB,CAACliE,EAAMv2B,EAAS+P,KACzC7F,EAAS,CACP1L,KAAM,gBACNmD,QAAS,CAAErN,GAAI,IAASk/F,EAAAA,GAAAA,OAAqBh1F,KAAMg1F,EAAAA,GAAAA,MAAoBj9D,OAAMv2B,UAAS+P,UAFxF,EA+BA2oF,kBAzBwB,CAACniE,EAAMv2B,EAAS+P,KACxC7F,EAAS,CACP1L,KAAM,gBACNmD,QAAS,CAAErN,GAAI,IAASk/F,EAAAA,GAAAA,MAAoBh1F,KAAMg1F,EAAAA,GAAAA,KAAmBj9D,OAAMv2B,UAAS+P,UAFtF,EAyBA4oF,qBAnB2B,CAACpiE,EAAMv2B,EAAS+P,KAC3C7F,EAAS,CACP1L,KAAM,gBACNmD,QAAS,CAAErN,GAAI,IAASk/F,EAAAA,GAAAA,SAAuBh1F,KAAMg1F,EAAAA,GAAAA,QAAsBj9D,OAAMv2B,UAAS+P,UAF5F,EAmBA6oF,qBAb2B,CAACriE,EAAMv2B,EAAS+P,KAC3C7F,EAAS,CACP1L,KAAM,gBACNmD,QAAS,CAAErN,GAAI,IAASk/F,EAAAA,GAAAA,SAAuBh1F,KAAMg1F,EAAAA,GAAAA,QAAsBj9D,OAAMv2B,UAAS+P,UAF5F,KAcD,CAAChZ,IAEJ,OAAO,gBAACyhG,EAAentF,SAAhB,CAAyB5b,MAAO0b,GAAe7B,EACvD,CAUM,SAAS+pF,IACd,MAAM3pF,GAAU6B,EAAAA,EAAAA,YAAWitF,GAC3B,GAAI,IAAM9uF,GACR,MAAM,IAAIvW,MAAM,oDAElB,OAAOuW,CACR,CAVDmvF,EAAgB9+E,aAAe,CAC7BzQ,SAAU,iLC/FZ,MAAMwvF,GAAenxF,EAAAA,EAAAA,eAAc,CACjCoxF,eAAe,EACfC,UAAW,OACXC,WAAY,OACZC,YAAa,SAGThE,EAAe,CAAE1+F,KAAM,KAAMuiG,eAAe,GAElD,SAASpwF,EAAQ5R,EAAO6R,GACtB,OAAQ,IAAIA,EAAQ,SAClB,IAAK,YAGH,MAAO,IAAK7R,EAAOP,KAFN,IAAIoS,EAAQ,iBAI3B,IAAK,aACH,MAAO,CAAEpS,KAAM,KAAMuiG,eAAe,GAGtC,QACE,MAAM,IAAI5lG,MAAO,0BAAyB,IAAIyV,EAAQ,WAG3D,CAEM,SAASuwF,EAAT,GAAsC,IAAf,SAAE7vF,GAAY,EAC1C,MAAM,EAACvS,EAAD,EAAQmT,IAAYD,EAAAA,EAAAA,YAAWtB,EAASusF,GAExC/pF,GAAeC,EAAAA,EAAAA,UAAQ,KAapB,CACL2tF,cAAe,IAAIhiG,EAAO,iBAC1BiiG,UAdgBxiG,IAChB0T,EAAS,CAAE1L,KAAM,YAAamD,QAAS,CAAEnL,SAAzC,EAcAyiG,WAXiB,KACjB/uF,EAAS,CAAE1L,KAAM,aAAcmD,QAAS,CAAC,GAAzC,EAWAu3F,YARkB1iG,GACX,IAAQA,EAAM,IAAIO,EAAO,YASjC,CAACA,IAEJ,OAAO,gBAAC+hG,EAAaztF,SAAd,CAAuB5b,MAAO0b,GAAe7B,EACrD,CAUM,SAAS8vF,IACd,MAAM1vF,GAAU6B,EAAAA,EAAAA,YAAWutF,GAC3B,GAAI,IAAMpvF,GACR,MAAM,IAAIvW,MAAM,iDAElB,OAAOuW,CACR,CAVDyvF,EAAcp/E,aAAe,CAC3BzQ,SAAU,6MCnDZ,SAAS2iB,EAAT,GAA4E,IAA9D,QAAE1a,EAAF,UAAWC,EAAX,SAAsBlI,EAAtB,GAAgCmE,EAAhC,OAAoCpB,KAAWgtF,GAAc,EACzE,MAAMC,GAAWluF,EAAAA,EAAAA,UAAQ,IAAM,YAAYnK,KAAKwM,IAAK,CAACA,IAEtD,OAAI,IAAQA,GAER,wCAAU4rF,EAAV,CAAsB7nF,WAAWgjF,EAAAA,EAAAA,GAAKjjF,EAAQyB,KAAMxB,KACjDlI,GAIHgwF,GAAuB,WAAXjtF,EAEZ,gBAAC,IAAD,iBAAagtF,EAAb,CAAyB3jF,UAAW6jF,EAAAA,KAAY/nF,WAAWgjF,EAAAA,EAAAA,GAAKjjF,EAAQyB,KAAMxB,GAAY/D,GAAIA,IAC3FnE,GAML,gBAAC,IAAD,iBAAa+vF,EAAb,CAAyBhtF,OAAQA,EAAQmF,WAAWgjF,EAAAA,EAAAA,GAAKjjF,EAAQyB,KAAMxB,GAAYrN,KAAMsJ,IACtFnE,EAGN,CAUD2iB,EAAKlS,aAAe,CAClBxI,QAAS,CAAC,EACVC,UAAW,KACXlI,SAAU,KACVmE,GAAI,KACJpB,OAAQ,MAGV,OAAeoR,EAAAA,EAAAA,IA7CA,MACbzK,KAAM,CAAC,KA4CT,CAAkCiZ,GC9BlC,MAdA,SAAcngB,GACZ,OAAI,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,WAGhB,IAAQD,EAAAA,GAAQC,EAAAA,GAAAA,YAGhBkB,EAAAA,GALK,gBAAC,EAAiB1lE,GASpB,IACR,6UCFG0tF,EAAuC,cAAiB,SAAiC1tF,EAAOuF,GAClG,IAAIE,EAAUzF,EAAMyF,QAChBC,EAAY1F,EAAM0F,UAClBa,GAAQ,OAAyBvG,EAAO,CAAC,UAAW,cAExD,OAAoB,gBAAoB,OAAO,OAAS,CACtD0F,WAAW,OAAKD,EAAQyB,KAAMxB,GAC9BH,IAAKA,GACJgB,GACL,IAuBAmnF,EAAwBv0D,QAAU,0BAClC,OAAe,EAAAxnB,EAAA,GA9CK,CAElBzK,KAAM,CACJQ,SAAU,WACVG,MAAO,GACPD,IAAK,MACL0C,UAAW,qBAwCmB,CAChC5f,KAAM,8BADR,CAEGgjG,uFCkDH,SAASC,EAAqBvF,EAAoBwF,GAChD,MAAMC,EAAoB,IAAKzF,EAAoB,CACjD5/F,GAAIolG,IAGN,OAAO,IAAQC,GAAqB,KAAOA,CAC5C,CAED,SAASjF,EAAT,GAAyG,IAA7E,QAAEnjF,EAAF,UAAWC,EAAWnY,KAAM66F,EAA5B,yBAAgDS,GAA4B,EACtG,MAAM,EAAEnmG,IAAMorG,EAAAA,EAAAA,MACR,SAAEzwF,IAAamgD,EAAAA,EAAAA,gBAEf,EAACuwC,EAAD,EAA0BC,IAA8BhwF,EAAAA,EAAAA,UAAS,MAEjEsqF,GAA0BhpF,EAAAA,EAAAA,UAAQ,IA5B1C,SAAoC8oF,EAAoB/qF,GACtD,OAAO,IAAK+qF,EAAoB,CAC9BG,cAAe,CACbz4C,SAAUzyC,IAGf,CAuBUmrF,CAA2BJ,EAAoB/qF,IACrD,CAAC+qF,EAAoB/qF,IAElB4wF,GAA6B3uF,EAAAA,EAAAA,UAAQ,IAxB7C,SAAuC8oF,EAAoB2F,GACzD,OAAO,IAAO3F,GAAoByF,GACzB,IAAQ,IAAIA,EAAmB,8BAA+B,IAAIE,EAAyB,QAErG,CAqBUG,CAA8B9F,EAAoB2F,IACxD,CAAC3F,EAAoB2F,IAElBI,GAAkBtvF,EAAAA,EAAAA,cAAY,KAClC,MAAM+uF,EAAsB,IAAIG,EAAyB,8BACnDF,EAAoBF,EAAqBvF,EAAoBwF,GACnEI,EAA2BH,EAA3B,GACC,CAACzF,EAAoB2F,IAElBK,GAAkBvvF,EAAAA,EAAAA,cACtBgvF,GAAqB,KACnBG,EAA2BH,EAA3B,GAEF,IAGIQ,GAAkBxvF,EAAAA,EAAAA,cACtBgvF,GAAqB,KACnBhF,EAAyBgF,EAAzB,GAEF,CAAChF,KAGHtqF,EAAAA,EAAAA,YAAU,KACR,MAAMqvF,EAAsB,IAAItF,EAAyB,8BACnDuF,EAAoBF,EAAqBvF,EAAoBwF,GACnEI,EAA2BH,EAA3B,GACC,CAACzF,EAAoBE,IAExB,MAAMgG,EAAa,CACjBx+C,SAAU,IAAIi+C,EAAyB,0BACvC5wF,MAAO,IAAI4wF,EAAyB,wBAOtC,OAJI,IAAQO,EAAWnxF,SAAW,IAAQ4wF,KACxCO,EAAWnxF,MAAQ,IAAI4wF,EAAyB,UAIhD,gBAACptE,EAAA,EAAD,CAAM/W,UAAU,MAAMlE,WAAWgjF,EAAAA,EAAAA,GAAKjjF,EAAQyB,KAAMxB,IAClD,gBAAC6oF,EAAA,EAAD,CAAS3zE,OAAQ,IAAQmzE,IACvB,gBAAC1sE,EAAA,EAAD,CAAU3b,UAAWD,EAAQ+oF,uBAC3B,gBAACruE,EAAA,EAAD,CACExe,GAAI2sF,EAAWx+C,SACfvmC,QAAS8kF,EAAgBN,GACzBroF,UAAWD,EAAQgpF,2BACnB,gBAAC5hE,EAAA,EAAD,CAAYnnB,UAAWD,EAAQipF,oBAAqBJ,EAAWnxF,OAC/D,gBAACwxF,EAAA,EAAD,CAAoBjpF,UAAWD,EAAQqsB,SAI3C,gBAACzQ,EAAA,EAAD,CAAUj6B,IAAI,OAAOse,UAAWD,EAAQmpF,UACtC,uBAAKlpF,UAAWD,EAAQopF,kBACtB,gBAACz8E,EAAA,EAAD,CAAY7I,QAAS4kF,EAAiBzoF,UAAWD,EAAQqpF,iBACvD,gBAACC,EAAA,EAAD,CAAmBrpF,UAAWD,EAAQqsB,OACtC,gBAACjF,EAAA,EAAD,CAAYnnB,UAAWD,EAAQhhB,OAAQ/B,EAAE,6BAI/C,uBAAKgjB,UAAWD,EAAQupF,kBAEzB,IAAIf,GAA4BJ,IAC/B,MAAMD,EAAsB,IAAIC,EAAmB,MAC7CoB,EAAwB,IAAIpB,EAAmB,yBAC/C/9C,EAAW,IAAI+9C,EAAmB,0BAExC,IAAI1wF,EAAQ,IAAI0wF,EAAmB,2BAQnC,OANI,IAAQ1wF,KACVA,EAAQ,IAAI0wF,EAAmB,wBAE7B,IAAQ1wF,KACVA,EAAQ,IAAI0wF,EAAmB,UAG/B,gCACE,gBAACxsE,EAAA,EAAD,CAAUj6B,IAAKwmG,EAAqBloF,UAAWD,EAAQmpF,UACrD,uBAAKlpF,UAAWD,EAAQypF,mBACtB,gBAAC/uE,EAAA,EAAD,CACExe,GAAImuC,EACJpqC,UAAWD,EAAQw6B,KACnBkvD,gBAAiB1pF,EAAQ+tD,WACzBjqD,QAAS8kF,EAAgBR,IACxB1wF,IAGL,gBAACoxF,EAAA,EAAD,CAAS3zE,OAAQ,IAAQq0E,IACvB,gBAAC,EAAD,CAAyBvpF,UAAWD,EAAQ2pF,sBAC1C,gBAACxwE,EAAA,EAAD,CAAYrV,QAAS6kF,EAAgBP,GAAoBnoF,UAAWD,EAAQ4pF,aAC1E,gBAACV,EAAA,EAAD,CAAoBjpF,UAAWD,EAAQqsB,WAK/C,uBAAKpsB,UAAWD,EAAQupF,iBApB5B,IA0BP,CASDpG,EAAmB36E,aAAe,CAChCxI,QAAS,CAAC,EACVC,UAAW,KACXnY,KAAM,KACNs7F,yBAA0B,QAG5B,OAAel3E,EAAAA,EAAAA,IAxNArK,IAAK,CAClBJ,KAAM,CACJ8B,QAAS,KAEXwlF,sBAAuB,CACrBn0F,QAAS,QACT4P,UAAW,OACXhC,gBAAiBX,EAAMY,QAAQ8rD,iBAAiBI,6BAChDprD,QAAS,uBAEXylF,0BAA2B,CACzBp0F,QAAS,OACTwQ,eAAgB,gBAChBirD,aAAc,SACdlrD,WAAY,SACZ,UAAW,CACT4L,eAAgB,SAGpBk4E,mBAAoB,CAClBj4E,MAAOnP,EAAMY,QAAQ8rD,iBAAiBK,wBACtCh1C,SAAU,OACV8V,WAAY,QAEd25D,gBAAiB,CAAE9lF,QAAS,OAC5BqmF,YAAa,CAAErmF,QAAS,OACxB8oB,KAAM,CAAEzS,SAAU,SAAU5I,MAAOnP,EAAMY,QAAQ8rD,iBAAiBliC,KAAM1pB,OAAQ,OAChF3jB,MAAO,CACLgyB,MAAOnP,EAAMY,QAAQ8rD,iBAAiBvpC,KACtC/K,WAAY,OACZL,SAAU,OACV8V,WAAY,OACZE,cAAe,QACftB,cAAe,aAEjB66D,SAAU,CACR5lF,QAAS,KACT0U,aAAe,aAAYpW,EAAMY,QAAQ8rD,iBAAiBG,2BAE5D+6B,kBAAmB,CACjB7kF,SAAU,IACVsV,YAAa,QAEf2vE,WAAY,CAAExnF,OAAQ,QAEtB+mF,iBAAkB,CAChBxkF,SAAU,IACVrB,QAAS,gBAEXi3B,KAAM,CACJxpB,MAAOnP,EAAMY,QAAQ8rD,iBAAiBvpC,KACtCpwB,QAAS,QACTglB,SAAU,OACV8V,WAAY,OACZE,cAAe,QACfrsB,QAAS,sBACT+qB,cAAe,aAEjBy/B,WAAY,CACV/8C,MAAOnP,EAAMY,QAAQtS,OAAO29D,WAAWC,YAEzC47B,qBAAsB,CACpBvnF,MAAO,KAETmnF,eAAgB,CAAC,KAwJnB,CAAkCpG,oFCvHlC,SAAS2G,EAA4BnH,EAAoByF,GACvD,MAAM9oE,EAAS,IAAOqjE,GAAoBz3E,GACjC,IAAQ,IAAIA,EAAS,MAAO,IAAIk9E,EAAmB,iCAE5D,OAAO,IAAI9oE,EAAQ,IAAK,KACzB,CACD,SAASyqE,EAAwB3B,EAAmB4B,EAAOC,GAQzDA,EAPgB,CACdlnG,GAAI,IAAIqlG,EAAmB,MAC3B/9C,SAAU,IAAI+9C,EAAmB,0BACjCrwF,SAAU,IAAIqwF,EAAmB,yBACjC1wF,MAAO,IAAI0wF,EAAmB,SAC9BtrF,MAAO,IAAQ,IAAIsrF,EAAmB,SAAU4B,GAAS,EAAI,GAGhE,CAED,SAAS9B,EAAqBvF,EAAoBwF,GAChD,MAAMC,EAAoB,IAAKzF,EAAoB,CACjD5/F,GAAIolG,IAGN,OAAO,IAAQC,GAAqB,KAAOA,CAC5C,CAED,SAASjF,EAAT,GAAyG,IAA7E,QAAEnjF,EAAF,UAAWC,EAAWnY,KAAM66F,EAA5B,yBAAgDS,GAA4B,EACtG,MAAM4G,EAAQ,IAAIE,EAAAA,GAAoB,SAChCC,EAAU,IAAID,EAAAA,GAAoB,YAClC,EAAEjtG,IAAMorG,EAAAA,EAAAA,MACR,SAAEzwF,IAAamgD,EAAAA,EAAAA,gBACf,UAAEyrC,EAAF,gBAAaC,IAAoBK,EAAAA,EAAAA,MAEjC,EAACwE,EAAD,EAA0BC,IAA8BhwF,EAAAA,EAAAA,UAAS,MAEjEsqF,GAA0BhpF,EAAAA,EAAAA,UAAQ,IA/C1C,SAAoC8oF,EAAoB/qF,GACtD,OAAO,IAAK+qF,EAAoB,CAC9BG,cAAe,CACbz4C,SAAUzyC,IAGf,CA0CUmrF,CAA2BJ,EAAoB/qF,IACrD,CAAC+qF,EAAoB/qF,IAElB4wF,GAA6B3uF,EAAAA,EAAAA,UAAQ,IA3C7C,SAAuC8oF,EAAoB2F,GACzD,OAAO,IAAO3F,GAAoByF,GACzB,IAAQ,IAAIA,EAAmB,8BAA+B,IAAIE,EAAyB,QAErG,CAwCUG,CAA8B9F,EAAoB2F,IACxD,CAAC3F,EAAoB2F,IAElBI,GAAkBtvF,EAAAA,EAAAA,cAAY,KAClC,MAAM+uF,EAAsB,IAAIG,EAAyB,8BACnDF,EAAoBF,EAAqBvF,EAAoBwF,GACnEI,EAA2BH,EAA3B,GACC,CAACzF,EAAoB2F,IAElBK,GAAkBvvF,EAAAA,EAAAA,cACtBgvF,GAAqB,MACf,IAAQ,IAAIA,EAAmB,SAAU4B,IAAU,IAAQ,IAAI5B,EAAmB,SAAU+B,KAC9FJ,EAAwB3B,EAAmB4B,EAAOvG,GAEpD8E,EAA2BH,EAA3B,GAEF,IAGIQ,GAAkBxvF,EAAAA,EAAAA,cACtBgvF,GAAqB,KACnB,IAAIgC,EAAiBN,EAA4BnH,EAAoByF,GACrE,KAAO,IAAIgC,EAAgB,8BAA8B,IACvDA,EAAiBN,EAA4BnH,EAAoByH,GAE/D,IAAQA,GACVL,EAAwB3B,EAAmB4B,EAAOvG,GAElDsG,EAAwBK,EAAgBJ,EAAOvG,GAEjDL,EAAyBgF,EAAzB,GAEF,CAAChF,IA0BH,OAvBAtqF,EAAAA,EAAAA,YAAU,KACR,MAAMqvF,EAAsB,IAAItF,EAAyB,8BACnDuF,EAAoBF,EAAqBvF,EAAoBwF,GAGnE,GAFAI,EAA2BH,GAEvB,IAAOE,KACL,IAAQ,IAAI9E,EAAW,SAAUwG,IAAU,IAAQ,IAAIxG,EAAW,SAAU2G,IAAU,CACxF,MAAME,EAAwBnC,EAAqBvF,EAAoB,IAAIa,EAAW,OACtF+E,EAA2B8B,EAC5B,CAGH,IAAID,EAAiBN,EAA4BnH,EAAoByF,GACrE,KAAO,IAAIgC,EAAgB,8BAA8B,IACvDA,EAAiBN,EAA4BnH,EAAoByH,GAE/D,IAAQA,GACVL,EAAwB3B,EAAmB4B,EAAOvG,GAElDsG,EAAwBK,EAAgBJ,EAAOvG,EAChD,GACA,CAACd,EAAoBE,IAGtB,gBAAC3nE,EAAA,EAAD,CAAM/W,UAAU,MAAMlE,WAAWgjF,EAAAA,EAAAA,GAAKjjF,EAAQyB,KAAMxB,IAClD,gBAAC6oF,EAAA,EAAD,CAAS3zE,OAAQ,IAAQmzE,IACvB,gBAAC5tE,EAAA,EAAD,CACExe,GAAI,IAAIosF,EAAyB,0BACjCxkF,QAAS8kF,EAAgBN,GACzBroF,WAAWgjF,EAAAA,EAAAA,GACTjjF,EAAQsqF,uBACR,IAAQ,IAAI9G,EAAW,SAAUwG,GAAShqF,EAAQuqF,YAAc,KAChE,IAAQ,IAAI/G,EAAW,SAAU2G,GAAWnqF,EAAQwqF,cAAgB,OAEtE,uBAAKvqF,UAAWD,EAAQipF,oBACrB,IAAQ,IAAIX,EAAyB,SAAU0B,GAC9C,uBAAK5+B,IAAKq/B,EAAAA,EAAeC,IAAI,OAAOjhF,MAAM,KAAKpH,OAAO,KAAKpC,UAAWD,EAAQ2qF,MAAOC,QAAQ,SAC3F,KACH,IAAQ,IAAItC,EAAyB,SAAU6B,GAC9C,uBAAK/+B,IAAKy/B,EAAAA,EAAkBH,IAAI,OAAOjhF,MAAM,KAAKpH,OAAO,KAAKpC,UAAWD,EAAQ2qF,MAAOC,QAAQ,SAC9F,KACF,IAAQ,IAAItC,EAAyB,4BAEnC,IAAIA,EAAyB,SAD7B,IAAIA,EAAyB,4BAGnC,gBAACY,EAAA,EAAD,OAEF,uBACEjpF,WAAWgjF,EAAAA,EAAAA,GACT,IAAQ,IAAIO,EAAW,SAAUwG,GAAShqF,EAAQgqF,MAAQ,KAC1D,IAAQ,IAAIxG,EAAW,SAAU2G,GAAWnqF,EAAQmqF,QAAU,OAEhE,gBAACx9E,EAAA,EAAD,CAAY7I,QAAS4kF,EAAiBzoF,UAAWD,EAAQ4pF,aACvD,gBAACN,EAAA,EAAD,CAAmBrpF,UAAWD,EAAQqsB,OACtC,gBAACjF,EAAA,EAAD,CAAYnnB,UAAWD,EAAQhhB,OAAQ/B,EAAE,6BAI9C,IAAIurG,GAA4BJ,IAC/B,MAAMD,EAAsB,IAAIC,EAAmB,MAC7CoB,EAAwB,IAAIpB,EAAmB,yBAC/C/9C,EAAW,IAAI+9C,EAAmB,0BACxC,IAAI0C,GAAY,GACZ,IAAQ,IAAI1C,EAAmB,SAAU4B,IAAU,IAAQ,IAAI5B,EAAmB,SAAU+B,MAC9FW,GAAY,GAEd,IAAIpzF,EAAQ,IAAI0wF,EAAmB,2BAQnC,OAPI,IAAQ1wF,KACVA,EAAQ,IAAI0wF,EAAmB,wBAE7B,IAAQ1wF,KACVA,EAAQ,IAAI0wF,EAAmB,UAI/B,gCACG,IAAQ,IAAIA,EAAmB,SAAU+B,IACxC,gBAACvuE,EAAA,EAAD,CACEj6B,IAAKwmG,EACLloF,WAAWgjF,EAAAA,EAAAA,GACTjjF,EAAQmpF,SACR,IAAQ,IAAI3F,EAAW,SAAU2G,GAAWnqF,EAAQwqF,cAAgBxqF,EAAQmqF,UAE9E,gBAACzvE,EAAA,EAAD,CACExe,GAAImuC,EACJpqC,WAAWgjF,EAAAA,EAAAA,GACTjjF,EAAQw6B,KACR,IAAQ,IAAIgpD,EAAW,SAAU2G,GAAWnqF,EAAQwqF,cAAgBxqF,EAAQmqF,SAE9ET,gBAAiB,KACjBqB,iBAAe,EACfjnF,QAAS8kF,EAAgBR,IACzB,uBACEh9B,IAAK,IAAQ,IAAIo4B,EAAW,SAAU2G,GAAWU,EAAAA,EAAmBG,EAAAA,EACpEN,IAAI,OACJjhF,MAAM,KACNpH,OAAO,KACPpC,UAAWD,EAAQ2qF,MACnBC,QAAQ,SAETlzF,GAEH,gBAACoxF,EAAA,EAAD,CAAS3zE,OAAQ,IAAQq0E,IACvB,uBAAKvpF,WAAWgjF,EAAAA,EAAAA,GAAKjjF,EAAQ2pF,uBAC3B,gBAACxwE,EAAA,EAAD,CAAYrV,QAAS6kF,EAAgBP,GAAoBnoF,UAAWD,EAAQ4pF,aAC1E,gBAACV,EAAA,EAAD,CAAoBjpF,UAAWD,EAAQirF,gBAMhD,IAAQ,IAAI7C,EAAmB,SAAU4B,IACxC,gBAACpuE,EAAA,EAAD,CACEj6B,IAAKwmG,EACLloF,WAAWgjF,EAAAA,EAAAA,GACTjjF,EAAQmpF,SACR,IAAQ,IAAI3F,EAAW,SAAUwG,GAAShqF,EAAQuqF,YAAcvqF,EAAQgqF,QAE1E,gBAACtvE,EAAA,EAAD,CACExe,GAAImuC,EACJpqC,WAAWgjF,EAAAA,EAAAA,GACTjjF,EAAQw6B,KACR,IAAQ,IAAIgpD,EAAW,SAAUwG,GAAShqF,EAAQuqF,YAAcvqF,EAAQgqF,OAE1EN,gBAAiB,KACjBqB,iBAAe,EACfjnF,QAAS8kF,EAAgBR,IACzB,uBACEh9B,IAAK,IAAQ,IAAIo4B,EAAW,SAAUwG,GAASS,EAAAA,EAAgBS,EAAAA,EAC/DR,IAAI,OACJjhF,MAAM,KACNpH,OAAO,KACPpC,UAAWD,EAAQ2qF,MACnBC,QAAQ,SAETlzF,GAEH,gBAACoxF,EAAA,EAAD,CAAS3zE,OAAQ,IAAQq0E,IACvB,uBAAKvpF,WAAWgjF,EAAAA,EAAAA,GAAKjjF,EAAQ2pF,uBAC3B,gBAACxwE,EAAA,EAAD,CAAYrV,QAAS6kF,EAAgBP,GAAoBnoF,UAAWD,EAAQ4pF,aAC1E,gBAACV,EAAA,EAAD,CAAoBjpF,UAAWD,EAAQirF,iBAM/CH,GACA,gBAAClvE,EAAA,EAAD,CAAUj6B,IAAKwmG,EAAqBloF,WAAWgjF,EAAAA,EAAAA,GAAKjjF,EAAQmpF,WAC1D,gBAACzuE,EAAA,EAAD,CACExe,GAAImuC,EACJpqC,UAAWD,EAAQw6B,KACnBkvD,gBAAiB1pF,EAAQ+tD,WACzBg9B,iBAAe,EACfjnF,QAAS8kF,EAAgBR,IACxB1wF,GAEH,gBAACoxF,EAAA,EAAD,CAAS3zE,OAAQ,IAAQq0E,IACvB,uBAAKvpF,UAAWD,EAAQ2pF,sBACtB,gBAACxwE,EAAA,EAAD,CAAYrV,QAAS6kF,EAAgBP,GAAoBnoF,UAAWD,EAAQ4pF,aAC1E,gBAACV,EAAA,EAAD,CAAoBjpF,UAAWD,EAAQqsB,WArFrD,IAgGP,CASD82D,EAAmB36E,aAAe,CAChCxI,QAAS,CAAC,EACVC,UAAW,KACXnY,KAAM,KACNs7F,yBAA0B,QAG5B,OAAel3E,EAAAA,EAAAA,IArWArK,IAAK,CAClBJ,KAAM,CACJ8B,QAAS,KAEXwlF,sBAAuB,CACrBn0F,QAAS,QACTyN,OAAQ,OACRG,gBAAiBX,EAAMY,QAAQ8rD,iBAAiBI,6BAChDprD,QAAS,uBAEX+mF,uBAAwB,CACtB11F,QAAS,OACT4P,UAAW,OACXjB,QAAS,sBACT6B,eAAgB,gBAChBirD,aAAc,SACdlrD,WAAY,SACZ6L,MAAO,UACP4I,SAAU,OACV8V,WAAY,OACZ,UAAW,CACT3e,eAAgB,SAGpBk4E,mBAAoB,CAClBr0F,QAAS,OACTwQ,eAAgB,aAChBirD,aAAc,SACdlrD,WAAY,UAEdykF,YAAa,CAAErmF,QAAS,OAAQyN,MAAO,WACvCqb,KAAM,CAAEzS,SAAU,OAAQ5I,MAAOnP,EAAMY,QAAQ8rD,iBAAiBliC,MAChE4+D,UAAW,CAAErxE,SAAU,OAAQ5I,MAAO,WACtChyB,MAAO,CACLi7B,WAAY,OACZL,SAAU,OACV8V,WAAY,OACZE,cAAe,SAEjBu5D,SAAU,CACR5lF,QAAS,KACT0U,aAAe,aAAYpW,EAAMY,QAAQ8rD,iBAAiBG,2BAG5Dm7B,WAAY,CAAExnF,OAAQ,QAEtBm4B,KAAM,CACJ5lC,QAAS,OACTuQ,WAAY,SACZC,eAAgB,aAChBZ,UAAW,OACXI,SAAU,IACVrB,QAAS,sBACTyN,MAAOnP,EAAMY,QAAQ8rD,iBAAiBvpC,KACtCpL,SAAU,OACV8V,WAAY,OACZE,cAAe,SAEjBm+B,WAAY,CACV/8C,MAAOnP,EAAMY,QAAQtS,OAAO29D,WAAWC,YAEzC47B,qBAAsB,CACpBvnF,MAAO,KAGT+nF,QAAS,CACP3nF,gBAAiBX,EAAMY,QAAQyrB,OAAO4nC,YAGxC00B,cAAe,CACbhoF,gBAAiBX,EAAMY,QAAQyrB,OAAOkhC,UACtCp+C,MAAOnP,EAAMY,QAAQyrB,OAAOxC,OAE9Bs+D,MAAO,CACLxnF,gBAAiBX,EAAMY,QAAQyrB,OAAO0nC,YAGxC20B,YAAa,CACX/nF,gBAAiBX,EAAMY,QAAQyrB,OAAOwnC,WACtC1kD,MAAOnP,EAAMY,QAAQyrB,OAAOxC,OAE9Bi/D,MAAO,CAAEzwE,YAAa,UAoRxB,CAAkCipE,kDCtUlC,SAASA,GAAT,GAAyG,IAA7E,QAAEnjF,EAAF,UAAWC,EAAWnY,KAAM66F,EAA5B,yBAAgDS,GAA4B,EACtG,MAAM,SAAExrF,IAAamgD,EAAAA,EAAAA,eAEf8qC,GAA0BhpF,EAAAA,EAAAA,UAAQ,IAX1C,SAAoC8oF,EAAoB/qF,GACtD,OAAO,IAAK+qF,EAAoB,CAC9BG,cAAe,CACbz4C,SAAUzyC,IAGf,CAMUmrF,CAA2BJ,EAAoB/qF,IACrD,CAAC+qF,EAAoB/qF,IAElBgxF,GAAkBxvF,EAAAA,EAAAA,cACtBgvF,GAAqB,KACnBhF,EAAyBgF,EAAzB,GAEF,CAAChF,IAGG+H,EAAmB,GACnBC,EAAqB,CAAC,EAe5B,OAbAzI,EAAmB97F,KAAIuhG,IACrB,MAAMiD,EAAW,IAAIjD,EAAmB,8BACnC,IAAQiD,GAOXF,EAAiBxrG,KAAKyoG,GANjB,IAAQ,IAAIgD,EAAoBC,IAGnCD,EAAmBC,GAAY,CAACjD,GAFhCgD,EAAmBC,GAAU1rG,KAAKyoG,EAMrC,IAID,gBAACltE,EAAA,EAAD,CAAM/W,UAAU,MAAMlE,WAAWgjF,EAAAA,EAAAA,GAAKjjF,EAAQyB,KAAMxB,IACjD,IAAIkrF,GAAkB/C,IACrB,MAAMD,EAAsB,IAAIC,EAAmB,MAC7CoB,EAAwB,IAAIpB,EAAmB,yBAC/C/9C,EAAW,IAAI+9C,EAAmB,0BAExC,IAAI1wF,EAAQ,IAAI0wF,EAAmB,2BASnC,OAPI,IAAQ1wF,KACVA,EAAQ,IAAI0wF,EAAmB,wBAE7B,IAAQ1wF,KACVA,EAAQ,IAAI0wF,EAAmB,UAG7BoB,EAEA,gBAAC3pF,EAAA,EAAD,CACEM,gBAAiB,IACf,IAAI0iF,EAAyB,8BAC7BsF,IAEF,gBAAC1kF,EAAA,EAAD,CACEC,WAAY,gBAAC4nF,EAAA,EAAD,MACZ,gBAAgB,GAAEnD,YAClBplG,GAAK,GAAEolG,YACP,gBAAC/gE,EAAA,EAAD,CAAYnnB,WAAWgjF,EAAAA,EAAAA,GAAKjjF,EAAQw6B,KAAMx6B,EAAQurF,cAAe7B,gBAAiB1pF,EAAQ+tD,YACvFr2D,IAGJ8xF,GACC,gBAAClmF,EAAA,EAAD,CAAkBrD,UAAWD,EAAQwrF,kBAClCnhD,GACC,gBAAC3vB,EAAA,EAAD,CACExe,GAAImuC,EACJpqC,WAAWgjF,EAAAA,EAAAA,GAAKjjF,EAAQw6B,KAAMx6B,EAAQyrF,kBAAmBzrF,EAAQ0rF,mBACjEhC,gBAAiB1pF,EAAQ+tD,WACzBjqD,QAAS8kF,EAAgBR,IACxB1wF,GAGJ,IAAI,IAAI0zF,EAAoBjD,IAAsBwD,GAE/C,gBAACjxE,EAAA,EAAD,CACExe,GAAI,IAAIyvF,EAAsB,0BAC9B1rF,WAAWgjF,EAAAA,EAAAA,GAAKjjF,EAAQw6B,KAAMx6B,EAAQyrF,mBACtC/B,gBAAiB1pF,EAAQ+tD,WACzBjqD,QAAS8kF,EAAgB+C,IACxB,IAAIA,EAAsB,cAWzC,gBAACjxE,EAAA,EAAD,CACExe,GAAImuC,EACJpqC,WAAWgjF,EAAAA,EAAAA,GAAKjjF,EAAQw6B,KAAMx6B,EAAQurF,aAAcvrF,EAAQ4rF,sBAC5DlC,gBAAiB1pF,EAAQ+tD,WACzBjqD,QAAS8kF,EAAgBR,IACxB1wF,EANL,IAYP,CASDyrF,GAAmB36E,aAAe,CAChCxI,QAAS,CAAC,EACVC,UAAW,KACXnY,KAAM,KACNs7F,yBAA0B,QAG5B,QAAel3E,EAAAA,EAAAA,IA/JArK,IAAK,CAClBJ,KAAM,CACJ8B,QAAS,KAEXioF,iBAAkB,CAChBj0E,cAAe,UAEjBijB,KAAM,CACJ5lC,QAAS,QACTglB,SAAU,OACVgW,cAAe,SAEjB27D,aAAc,CACZ77D,WAAY,OACZpB,cAAe,aAEjBs9D,qBAAsB,CACpB3zE,aAAc,+BACdjH,MAAOnP,EAAMY,QAAQ8rD,iBAAiBvpC,KACtCzhB,QAAS1B,EAAM2B,QAAQ,IAAK,EAAG,IAAK,IAEtCioF,kBAAmB,CACjBz6E,MAAOnP,EAAMY,QAAQ8rD,iBAAiBvpC,KACtCzhB,QAAS1B,EAAM2B,QAAQ,IAAK,EAAG,IAAK,IAEtCkoF,kBAAmB,CACjBh8D,WAAY,QAEdq+B,WAAY,CACV/8C,MAAOnP,EAAMY,QAAQtS,OAAO29D,WAAWC,WACvCr+B,WAAY,WAiIhB,CAAkCyzD,IC/IlC,OAjBA,SAA4B5oF,GAC1B,OAAI,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,UACX,gBAAC,EAA+BxkE,GAErC,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,WACX,gBAAC,EAAgCxkE,GAEtC,IAAQukE,EAAAA,GAAQC,EAAAA,GAAAA,UACX,gBAAC,GAA+BxkE,GAErC0lE,EAAAA,GACK,gBAAC,EAA+B1lE,GAGlC,IACR,+FCxBc,SAASuuF,EAAT,GAAiD,IAAhC,SAAE/wF,EAAF,QAAY8zF,EAAZ,OAAqB12E,GAAU,EAC7D,OAAK02E,GAAW12E,EACP,KAGFpd,CACR,CAED+wF,EAAQvgF,UAAY,CAClBxQ,SAAU4tD,IAAAA,KACVkmC,QAASlmC,IAAAA,KACTxwC,OAAQwwC,IAAAA,MAGVmjC,EAAQtgF,aAAe,CACrBzQ,SAAU,KACV8zF,SAAS,EACT12E,QAAQ,ycCnBH,MAAM22E,EAAyB,CACpCC,MAAO,kBACPC,UAAW,YACXC,YAAa,wBACbC,aAAc,qBACdC,sBAAuB,oBACvBC,aAAc,yBACdC,YAAa,wBACbC,WAAY,uBACZC,WAAY,uBACZC,kBAAmB,8BACnBC,gBAAiB,4BACjBC,YAAa,wBACbC,YAAa,wBACbC,kBAAmB,8BACnBC,sBAAuB,kCACvBC,qBAAsB,iCACtBC,oBAAqB,gCACrBC,gBAAiB,4BACjBC,gBAAiB,4BACjBC,kBAAmB,8BACnBC,mBAAoB,+BACpBC,eAAgB,2BAChBC,YAAa,wBACbC,iBAAkB,6BAClBC,yBAA0B,+BAC1BC,mBAAoB,+BACpBC,gBAAiB,4BACjBC,iBAAkB,6BAClBC,QAAS,oBACTC,WAAY,uBACZC,YAAa,kBACbC,QAAS,oBACTC,SAAU,qBACVC,MAAO,kBACPC,UAAW,sBACXC,MAAO,kBACPC,aAAc,yBACdC,gBAAiB,4BACjBC,qBAAsB,iCACtBC,WAAY,uBACZC,aAAc,yBACdC,wBAAyB,oCACzBC,YAAa,wBACbC,gBAAiB,4BACjBC,MAAO,kBACPC,iBAAkB,6BAClBC,YAAa,wBACbC,aAAc,yBACdC,oBAAqB,gCACrBC,oBAAqB,gCACrBC,MAAO,kBACPC,gBAAiB,6BAGNC,EAAsB,CACjCC,QAAS,iBACTC,UAAW,oBAGAC,EAAsB,CACjCC,YAAa,cACbC,YAAa,cACbC,cAAe,gBACfC,WAAY,aACZC,eAAgB,iBAChBC,WAAY,aACZC,iBAAkB,oBAOP5N,EAAe,CAC1BzkC,QAAS,UACTsyC,QAAS,UACTluG,MAAO,QACPmuG,KAAM,QAGKhxB,EAAU,CACrBixB,SAAU,WACVC,UAAW,YACXC,SAAU,WACVC,SAAU,WACVC,OAAQ,SACRC,mBAAoB,sBACpBC,SAAU,WACVC,YAAa,cACbC,SAAU,WACVC,YAAa,cACbC,WAAY,aACZC,UAAW,YACXC,iBAAkB,eAClBC,aAAc,eACdC,YAAa,eAGF5G,EAAqB,CAChCF,MAAO,QACPG,QAAS,WAGE7qB,EAA0B,CACrCyxB,WAAY,QAEDz/B,EAA+B,CAC1Cy/B,WAAY,QAEDC,EAA6B,CACxCD,WAAY,QAEDE,EAAkC,CAC7CF,WAAY,OAaDhlC,EATJ,CACLthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MAUKqmE,EAHJ,KAKIC,EAAsB,CACjCnB,SAAU,mDACVC,UAAW,sCAEAmB,EAAS,CACpBpB,SAAU,CACR,+BACA,4BACA,8BACA,4BACA,YAEFC,UAAW,CAAC,eAGDoB,EAAsB,CACjCC,WAAY,CAAC,8BAGFC,EAA0B,CACrCtB,UAAW,cACXD,SAAU,cACVE,SAAU,yFACVsB,oBAAqB,mCACrBC,qBAAsB,oBAGXC,EAA2B,CACtCC,MAAO,YACPC,aAAc,iBACdC,uBAAwB,8BACxBC,WAAY,4BACZC,QAAS,sBACTC,mBAAoB,iCACpBC,YAAa,kLCtJf,MAnBiB,CACfC,SAAU,CACR,CACEhO,QAAS,cACTrO,MAAO,cACPP,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aACvBC,eAAgB,YAItBC,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCKzB,MApBiB,CACfN,SAAU,CACR,CACEhO,QAAS,eACTrO,MAAO,eACPP,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,WACvBI,mBAAoB,WACpBH,eAAgB,aAItBC,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCKzB,MArBiB,CACfvyB,WAAW,EACXiyB,SAAU,CACR,CACEhO,QAAS,eAETrO,MAAO,cACPP,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aACvBC,eAAgB,YAItBC,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCCzB,MAlBiB,CACfvyB,WAAW,EACXiyB,SAAU,CACR,CACEhO,QAAS,cACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,cAI7BE,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCYzB,MA1BiB,CACfvyB,WAAW,EACXiyB,SAAU,CACR,CACEhO,QAAS,YACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAG3B,CACEnO,QAAS,YACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,cAI7BE,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCIzB,MA1BiB,CACfvyB,WAAW,EACXiyB,SAAU,CACR,CACEhO,QAAS,yBACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAG3B,CACEnO,QAAS,yBACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,cAI7BE,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCIzB,MA1BiB,CACfvyB,WAAW,EACXiyB,SAAU,CACR,CACEhO,QAAS,cACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAG3B,CACEnO,QAAS,cACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,cAI7BE,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCIzB,MA1BiB,CACfvyB,WAAW,EACXiyB,SAAU,CACR,CACEhO,QAAS,iBACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAG3B,CACEnO,QAAS,iBACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,cAI7BE,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCJzB,MAlBiB,CACfvyB,WAAW,EACXiyB,SAAU,CACR,CACEhO,QAAS,cACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAI7BE,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCYzB,MA1BiB,CACfvyB,WAAW,EACXiyB,SAAU,CACR,CACEhO,QAAS,iBACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,YAG3B,CACEnO,QAAS,iBACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAI7BE,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCJzB,MAlBiB,CACfvyB,WAAW,EACXiyB,SAAU,CACR,CACEhO,QAAS,mBACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAI7BE,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCYzB,MA1BiB,CACfvyB,WAAW,EACXiyB,SAAU,CACR,CACEhO,QAAS,eACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAG3B,CACEnO,QAAS,eACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAI7BE,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCJzB,MAlBiB,CACfvyB,WAAW,EACXiyB,SAAU,CACR,CACEhO,QAAS,uBACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAI7BE,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCoBzB,MAlCiB,CACfvyB,WAAW,EACXiyB,SAAU,CACR,CACEhO,QAAS,mBACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAG3B,CACEnO,QAAS,mBACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAG3B,CACEnO,QAAS,mBACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAI7BE,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCZzB,MAlBiB,CACfvyB,WAAW,EACXiyB,SAAU,CACR,CACEhO,QAAS,kBACT5O,OAAQ,QACR6c,aAAc,KACdC,MAAO,CACLC,sBAAuB,aAI7BE,aAAc,CACZlyG,QAAS,QACTmyG,oBAAqB,OCMlB,MAAM1zB,EAAS3iC,WAETigD,EACPvd,IAAQC,EAAQC,EAAAA,GAAAA,UACX2zB,EAEL7zB,IAAQC,EAAQC,EAAAA,GAAAA,WACX4zB,EAEL9zB,IAAQC,EAAQC,EAAAA,GAAAA,UACX6zB,EAEL/zB,IAAQC,EAAQC,EAAAA,GAAAA,UACX8zB,EAELh0B,IAAQC,EAAQC,EAAAA,GAAAA,QACX+zB,EAELj0B,IAAQC,EAAQC,EAAAA,GAAAA,oBACXg0B,EAELl0B,IAAQC,EAAQC,EAAAA,GAAAA,UACXi0B,EAELn0B,IAAQC,EAAQC,EAAAA,GAAAA,aACXk0B,EAELp0B,IAAQC,EAAQC,EAAAA,GAAAA,UACXm0B,EAELr0B,IAAQC,EAAQC,EAAAA,GAAAA,aACXo0B,EAELt0B,IAAQC,EAAQC,EAAAA,GAAAA,YACXq0B,EAELv0B,IAAQC,EAAQC,EAAAA,GAAAA,WACXs0B,EAELx0B,IAAQC,EAAQC,EAAAA,GAAAA,kBACXu0B,EAELz0B,IAAQC,EAAQC,EAAAA,GAAAA,cACXw0B,EAEL10B,IAAQC,EAAQC,EAAAA,GAAAA,aACXy0B,EAGF,CAAC,GAGG,UAAEvzB,GAAcmc,2HChEtB,MAAMjzD,EAAS,CACpBsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACTnJ,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACVC,KAAM,oBACNC,UAAW,qBACX+I,SAAU,qBACV5I,MAAO,oBACPC,WAAY,qBACZ4I,UAAW,mBACXnG,OAAQ,qBACRqG,YAAa,qBACbD,WAAY,gBACZhJ,IAAK,mBACL+mC,SAAU,sBACV79B,WAAY,sBACZ89B,YAAa,qBACb/mC,QAAS,mBACTyC,UAAW,gBACXyG,YAAa,kBACbC,WAAY,mBACZzG,aAAc,UACd2G,WAAY,UACZC,aAAc,UACd09B,aAAc,UACd59B,YAAa,qBAEbG,YAAa,UACbC,YAAa,WAGTt0D,GAAQ0uB,EAAAA,EAAAA,GAAY,CAAC,GACrBw7B,EAAc,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MAGA+oE,GAAerjE,EAAAA,EAAAA,GAAY,CAC/BnK,YAAa,CACXhf,OAAQ2kD,GAEVxlC,OAAQ,CACNC,QAAS,CACPhiB,UAAW,SAGfqV,WAAY,CACV6U,WAAY,2BACZG,gBAAiB,MACjBE,kBAAmB,MACnBE,iBAAkB,MAClBE,eAAgB,MAChBzI,GAAI,CACFgI,WAAY,sBACZ9U,SAAU,UACV8V,WAAY,MACZC,WAAY,OACZ9sB,aAAc,OACd,CAAChB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,aAGd+M,GAAI,CACF+H,WAAY,sBACZ9U,SAAU,WACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,OACd,CAAChB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,aAGdgN,GAAI,CACF8H,WAAY,sBACZ9U,SAAU,WACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,OACd,CAAChB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,WAGdiN,GAAI,CACF6H,WAAY,sBACZ9U,SAAU,OACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,OACd,CAAChB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,YAGdkN,GAAI,CACF4H,WAAY,sBACZ9U,SAAU,OACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,OACd,CAAChB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,YAGdmN,GAAI,CACF2H,WAAY,6BACZ9U,SAAU,OACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,OACd,CAAChB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,YAGdoO,QAAS,CACPpO,SAAU,UACVoyC,UAAW,SACXr8B,WAAY,OAEd1H,SAAU,CACRrO,SAAU,UACV8V,WAAY,OAEdxI,MAAO,CACLwH,WAAY,2BACZ9U,SAAU,WACV+V,WAAY,MACZ,CAAC9tB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,SAGduN,MAAO,CACLuH,WAAY,2BACZ9U,SAAU,UACV+V,WAAY,MAEZ,CAAC9tB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,aAGdqyC,eAAgB,CACdryC,SAAU,OACV8U,WAAY,yBACZgB,WAAY,OACZ1e,MAAOmY,EAAOimC,WAEhBlD,eAAgB,CACdtyC,SAAU,YAGdnX,QAAS,CACPyrB,OAAQ,CACNzC,MAAOtC,EAAOsC,MACdC,MAAOvC,EAAOuC,MACdygC,KAAMhjC,EAAOgjC,KACbC,UAAWjjC,EAAOijC,UAClBC,YAAaljC,EAAOkjC,YACpBC,WAAYnjC,EAAOmjC,WACnBC,SAAUpjC,EAAOojC,SACjBC,KAAMrjC,EAAOqjC,KACbC,UAAWtjC,EAAOsjC,UAClBC,IAAKvjC,EAAOujC,IACZC,QAASxjC,EAAOwjC,QAChBC,MAAOzjC,EAAOyjC,MACdC,WAAY1jC,EAAO0jC,WACnBuC,UAAWjmC,EAAOimC,UAClByG,YAAa1sC,EAAO0sC,YACpBH,WAAYvsC,EAAOusC,WACnBE,WAAYzsC,EAAOysC,WACnBE,WAAY3sC,EAAO2sC,YAErBz7C,QAAS,CACPC,KAAM6O,EAAOsC,MACbsC,aAAc5E,EAAOmsC,SAEvB96C,UAAW,CACTF,KAAM6O,EAAO0sC,YACb9pC,MAAO5C,EAAO4sC,aAEhB/wC,KAAM,CACJ3K,QAAS8O,EAAO0sC,YAChBr7C,UAAW2O,EAAOuC,MAClBK,MAAO5C,EAAOuC,OAEhB3G,WAAY,CACV1kC,QAAS8oC,EAAOuC,MAChBohC,YAAa3jC,EAAOijC,UACpBW,UAAW5jC,EAAOijC,UAClBY,cAAe,cACfC,WAAY,eAEd5nE,MAAO,CACLi1B,KAAM6O,EAAOujC,IACb3gC,MAAO5C,EAAOuqE,aAEhBrmE,QAAS,CACP/S,KAAM6O,EAAOyjC,MACb7gC,MAAO5C,EAAO0jC,YAEhB5/B,QAAS,CACP3S,KAAM6O,EAAOkmC,aACbtjC,MAAO5C,EAAO4sC,aAEhB5oC,KAAM,CACJ7S,KAAM6O,EAAOqjC,KACbzgC,MAAO5C,EAAOsjC,WAEhBS,kBAAmB,CAAEx+B,WAAY,uBACjChsB,QAASymB,EAAOijC,UAChBe,SAAU,CACRzoC,SAAU,CACRK,WAAYoE,EAAO2sC,WACnB9wC,KAAMmE,EAAOimC,WAEfpqC,KAAMmE,EAAOimC,UACbhC,UAAWjkC,EAAOqsC,UAGpBnI,OAAQ,CACNz8C,OAAQ,CACNI,MAAOmY,EAAOqsC,SACd/rD,MAAO,OAET/G,QAASymB,EAAO0sC,YAChB7wC,KAAMmE,EAAOuC,MACb3G,WAAYoE,EAAO0sC,YACnBvI,kBAAmBnkC,EAAOijC,UAC1B7oD,QAAS,CACP8B,OAAQ,QAEVkoD,QAAS,CACPC,KAAM,CACJ,iBAAkB,CAChBx8C,MAAOmY,EAAOuC,QAGlB+hC,MAAO,CAAEz8C,MAAOmY,EAAOuC,SAG3Bv7B,OAAQ,CACNsrB,WAAY,OACZuJ,KAAMmE,EAAO0sC,YACb9wC,WAAYoE,EAAOuC,MACnB9a,OAAQ,CACNjc,MAAO,QACPqc,MAAOmY,EAAO0jC,YAEhBiB,WAAY,CACVC,WAAY5kC,EAAOssC,UACnBzH,iBAAkB7kC,EAAOqsC,SACzBpI,UAAWjkC,EAAOssC,UAClBxH,kBAAmB9kC,EAAO0jC,WAC1BqB,oBAAqB/kC,EAAOqsC,UAE9BrH,MAAO,CACLn9C,MAAOmY,EAAOuC,MACdlpB,gBAAiB2mB,EAAO0sC,cAG5B38D,OAAQ,CACNk1D,YAAa,CACXC,eAAgB,CACd7rD,gBAAiB2mB,EAAO0jC,YAE1ByB,WAAY,CACVt9C,MAAOmY,EAAOsC,QAGlBooE,QAAS,CACPn8F,MAAO,CACLkiB,SAAU,QAEZj1B,OAAQ,CACN+S,MAAO,CACLkiB,SAAU,aAEZ56B,MAAO,CACL46B,SAAU,cAKlB20C,iBAAkB,CAChBvpC,KAAMmE,EAAO0sC,YACbxpC,KAAMlD,EAAO0sC,YACbrH,gBAAiBrlC,EAAO2sC,WACxBrH,oBAAqBtlC,EAAOqsC,SAC5B9G,wBAAyBvlC,EAAOijC,UAChCuC,6BAA8BxlC,EAAO0jC,WACrC+B,wBAAyBzlC,EAAOqsC,UAElC3G,YAAa,CACXC,sBAAuB3lC,EAAO0jC,WAC9BkC,cAAe,CACbC,OAAQ7lC,EAAOkmC,aACfC,OAAQnmC,EAAO8sC,aACfrJ,MAAOzjC,EAAO+sC,YACdhH,MAAO/lC,EAAOgtC,YACd3J,KAAMrjC,EAAO6sC,YAEfxG,SAAU,CACRC,UAAW,CACTz+C,MAAOmY,EAAO0sC,YACdqJ,eAAgB/1C,EAAO0sC,YACvBjmB,YAAa,CACXuvB,kBAAmBh2C,EAAOssC,UAC1B2J,YAAaj2C,EAAOuC,OAEtBgkC,YAAa,CACXyP,kBAAmBh2C,EAAO0jC,WAC1BuS,YAAaj2C,EAAO0sC,YACpBlG,YAAaxmC,EAAOimC,aAI1BsB,OAAQ,CACNC,eAAgB,EAChB5rC,WAAYoE,EAAOsjC,UACnB/pD,QAASymB,EAAOqsC,UAElB5E,gBAAiBznC,EAAOusC,YAE1B7E,MAAO,CACL7rC,KAAMmE,EAAOssC,UACb77C,SAAU,QAEZjK,OAAQ,CACN+f,WAAY,OACZpB,cAAe,UACf,CAACzsB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtCpnB,QAAS,wBAGbutD,iBAAkB,CAChBC,MAAO,CAAEvuD,gBAAiB2mB,EAAOwsC,YAAa3kD,MAAOmY,EAAOsC,QAE9D+O,KAAM,CACJA,KAAMrR,EAAOqsC,SACbz7C,OAAQoP,EAAOqsC,SACfj4C,MAAO4L,EAAOqsC,UAEhBpE,cAAe,CACbC,YAAa,CACX51C,WAAY5Z,EAAM2B,QAAQ,IAC1B,CAAC3B,EAAMukB,YAAYC,GAAGi5C,EAAAA,GAAAA,aAAsC,CAC1D7jD,WAAY5Z,EAAM2B,QAAQ,MAG9BswF,aAAc,CACZ3qE,OAAQ,CACN4qE,UAAW,UACXC,WAAY7qE,EAAOuC,QAGvB6lC,mBAAoB,CAClB91C,WAAY5Z,EAAM2B,QAAQ,IAC1B,CAAC3B,EAAMukB,YAAYC,GAAG0lC,EAAYrhC,KAAM,CACtCjP,WAAY5Z,EAAM2B,QAAQ,MAG9B67D,WAAY,CACV5jD,WAAY5Z,EAAM2B,QAAQ,IAC1B,CAAC3B,EAAMukB,YAAYC,GAAG0lC,EAAYrhC,KAAM,CACtCjP,WAAY5Z,EAAM2B,QAAQ,OAIhCguD,yBAA0B,CACxBzsC,WAAYoE,EAAOusC,WACnBn4C,MAAO,CACLwH,WAAYoE,EAAOssC,WAErBp1D,SAAU,CACR0kB,WAAYoE,EAAOijC,YAGvBqF,kBAAmB,CACjBjvD,gBAAiB2mB,EAAOwqE,aACxB3iF,MAAO,UACPzN,QAAS1B,EAAM2B,QAAQ,KACvBb,OAAQd,EAAM2B,QAAQ,EAAG,EAAG,EAAG,GAC/B,CAAC3B,EAAMukB,YAAYC,GAAGi5C,EAAAA,GAAAA,aAAsC,CAC1D38D,OAAQd,EAAM2B,QAAQ,EAAG,EAAG,EAAG,KAGnCkuD,cAAe,CACbhjC,WAAY,KACZijC,kBAAmB,OAIvBlC,UAAW,CACTjtD,gBAAiB2mB,EAAOuC,MACxB1a,MAAOmY,EAAOqsC,SACd5kD,OAAQ,GACRlN,WAAY,CACVlB,gBAAiB2mB,EAAOkjC,YACxB9uC,MAAO,CACL/a,gBAAiB2mB,EAAOgjC,QAI9ByF,iBAAkB,CAChB5gD,MAAOmY,EAAOsC,MACd7a,OAAQ,CACNI,MAAOmY,EAAOsC,MACdhiB,MAAO,OAET9G,OAAQ,KAEVkvD,gBAAiB,CACfC,aAAc,CACZ/B,SAAU,OAEZgC,YAAa,CAAC,GAEhBC,MAAO,CACLphD,OAAS,aAAYuY,EAAOsC,QAC5B1oB,aAAc,EACdk2B,KAAM,CACJz2B,gBAAiB2mB,EAAOsC,MACxBza,MAAOmY,EAAOuC,OAEhBumC,IAAK,CACHC,KAAM,CACJ1vD,gBAAiBX,EAAMY,QAAQpL,OAAOkmB,SAI5C40C,gBAAiB,CACf7vD,QAAS,CAAC,GAEZ8vD,OAAQ,CACNC,YAAa,CAAC,GAEhBC,GAAI,CAAC,EACLC,cAAe,CACbC,SAAU,CAAC,GAEbpxD,MAAO,CACLK,KAAM,CAAC,EACPgxD,IAAK,CAAC,EACN37B,MAAO,CAAC,EACR7xC,KAAM,CAAC,EACPytE,iBAAkB,CAAC,EACnBrmC,KAAM,CAAC,GAET4E,UAAW,CACT4hC,UAAW,CACTpxD,KAAM,CACJqjB,UAAW,QAEb1K,aAAc,CACZpJ,MAAOmY,EAAOsC,MACdjpB,gBAAiB2mB,EAAOuC,QAG5BonC,WAAY,CACVxsC,QAAS,CAAC,EACVlL,MAAO,CACLpK,MAAOmY,EAAOuC,QAGlBqnC,UAAW,CACTtxD,KAAM,CACJgI,MAAO,QACPmqB,WAAY,GAEd5c,MAAO,CACLvN,MAAO,QACPuH,MAAOmY,EAAOsC,MACdjpB,gBAAiB2mB,EAAOuC,QAG5BsnC,QAAS,CACPvxD,KAAM,CACJuP,MAAOmY,EAAOqsC,WAGlBvC,UAAW,CACTj8C,MAAO,CACLrU,OAAQ,QAGZuwD,UAAW,CACTzxD,KAAM,CACJitB,WAAY,sBACZJ,cAAe,UACfvrB,aAAc,MACdQ,QAAS,YACTqW,SAAU,OACVu5C,SAAU,KAEZ14C,UAAW,CACTlX,QAAS,WACTR,aAAc,MACd6W,SAAU,aAEZw5C,iBAAkB,CAChBtuC,UAAW,OACXlU,OAAQ,wBACRpO,gBAAiB2mB,EAAOusC,WACxB1kD,MAAOmY,EAAOuC,MACd,UAAW,CACTlpB,gBAAiB2mB,EAAOuC,MACxB9a,OAAS,aAAYuY,EAAOusC,aAC5B1kD,MAAOmY,EAAOusC,WACd,uBAAwB,CACtBlzD,gBAAiB2mB,EAAOuC,QAG5B,aAAc,CACZ1a,MAAOmY,EAAOmjC,WACd/pD,QAAS,KAGb8wD,gBAAiB,CACfziD,OAAS,aAAYuY,EAAOusC,aAC5B1kD,MAAOmY,EAAOusC,WACd,UAAW,CACTlzD,gBAAiB2mB,EAAOusC,WACxB9kD,OAAS,wBACTI,MAAOmY,EAAOuC,MACd,uBAAwB,CACtBlpB,gBAAiB2mB,EAAOusC,aAG5B,aAAc,CACZ1kD,MAAOmY,EAAOsC,MACdlpB,QAAS,MAIf+wD,eAAgB,CACd7xD,KAAM,CACJuP,MAAOmY,EAAOojC,UAEhBgH,UAAW,CACT35C,SAAU,SACVK,WAAY,OACZC,YAAa,SAGjBs5C,iBAAkB,CAChB/xD,KAAM,CACJ8B,QAAS,UACT,CAAC1B,EAAMukB,YAAYC,GAAG,OAAQ,CAC5B9iB,QAAS,cAIfkwD,aAAc,CACZhyD,KAAM,CACJmP,OAAQ,YACR8iD,YAAavqC,EAAOgjC,KACpBhgD,SAAU,SACV3J,gBAAiB2mB,EAAO0jC,WACxB,yBAA0B,CACxB6G,YAAavqC,EAAOgjC,MAEtB,UAAW,CACTn7C,MAAOmY,EAAOgjC,MAEhB,YAAa,CACXrnC,UAAW,kCACX4uC,YAAavqC,EAAO0jC,WACpBrqD,gBAAiB2mB,EAAOuC,MACxB,yBAA0B,CACxBgoC,YAAavqC,EAAO0jC,aAGxB,wBAAyB,CACvB6G,YAAa7xD,EAAMY,QAAQpd,MAAMi1B,KACjC,yBAA0B,CACxBo5C,YAAa7xD,EAAMY,QAAQpd,MAAMi1B,OAGrC,aAAc,CACZ9X,gBAAiB2mB,EAAOijC,YAG5BuH,aAAc,CACZt2C,YAAa,UAEfu2C,WAAY,CACVt2C,aAAc,UAEhB6oB,MAAO,CACLvsB,SAAU,OACVrW,QAAS,gBACT,sBAAuB,CACrB8Z,YAAa,UAEf,qBAAsB,CACpBC,aAAc,UAEhB,iBAAkB,CAChB0uC,UAAW,YAIjB6H,cAAe,CACbpyD,KAAM,CACJ6sB,cAAe,YACfrU,WAAY,WAEd65C,OAAQ,CACNlxD,UAAW,OACXiC,UAAW,iCAGfkvD,aAAc,CACZtyD,KAAM,CACJuP,MAAOmY,EAAOimC,UACd,UAAW,CACTp+C,MAAOmY,EAAOwjC,UAGlBqH,SAAU,CACR,UAAW,CACThjD,MAAOmY,EAAOwjC,WAIpBsH,kBAAmB,CACjBxyD,KAAM,CACJuP,MAAOmY,EAAOimC,UACdn1C,WAAY,UACZ,UAAW,CACTjJ,MAAOnP,EAAMY,QAAQpd,MAAMi1B,QAIjC45C,YAAa,CACXzyD,KAAM,CACJuP,MAAOmY,EAAO0sC,YACd2J,gBAAiBr2C,EAAOijC,UACxB,YAAa,CACXp7C,MAAOmY,EAAO0sC,YACd2J,gBAAiBr2C,EAAOuC,SAI9B0oC,eAAgB,CACd3yD,KAAM,CACJoB,aAAchB,EAAM2B,QAAQ,KAGhC6wD,cAAe,CACb5yD,KAAM,CACJ,iBAAkB,CAChBuP,MAAOmY,EAAOqsC,YAIpBlB,QAAS,CACP7yD,KAAM,CACJ+Z,UAAW,SACX,iBAAkB,CAChBxK,MAAOmY,EAAOqsC,YAIpBjB,YAAa,CACXp/C,OAAQ,CACN,eAAgB,CACdI,WAAY,UACZlT,OAAQ,UAIdmyD,kBAAmB,CACjBC,YAAa,CACX,iBAAkB,CAChBjyD,gBAAiB2mB,EAAOssC,UACxBzkD,MAAOmY,EAAOuC,MACdgE,WAAY,UAIlBglC,UAAW,CACTC,MAAO,CACL3jD,MAAOmY,EAAOssC,UACd,UAAW,CACT7gE,QAAS,SAGbggE,MAAO,CACL5jD,MAAOmY,EAAOssC,YAGlBZ,kBAAmB,CACjBC,OAAQ,CACN/xD,aAAc,OAEhB/jB,MAAO,CACLgyB,MAAOmY,EAAOuC,MACdgE,WAAY,QAEdqlC,OAAQ,CACN5yD,IAAK,KAIX5H,MAAO,CACLs4D,UAAW,CACT7hD,MAAO,WAETgkD,cAAe,CACbhkD,MAAO,WAETkiD,UAAW,CACTliD,MAAO,UACP2F,QAAS,aAEXq8C,QAAS,CACPr8C,QAAS,SAEXs+C,aAAc,CACZz4C,gBAAgB,GAElB82C,eAAgB,CACdC,UAAW,KAEb2B,SAAU,CACRC,kBAAkB,GAEpBtB,cAAe,CACbC,QAAQ,GAEVI,YAAa,CACXkB,YAAa,gBAAC,IAAD,UAKnB,+HCxuBO,MAAMjsC,EAAS,CACpBsC,MAAO,eACPC,MAAO,qBACP4pC,QAAS,2BACT2+B,iBAAkB,2BAClB9nC,KAAM,qBACNE,YAAa,qBACbD,UAAW,qBACXE,WAAY,qBACZiJ,YAAa,qBACbhJ,SAAU,kBACV2nC,WAAY,qBACZ1nC,KAAM,oBACNC,UAAW,qBACX0nC,qBAAsB,2BACtBC,YAAa,qBACbxnC,MAAO,oBACPC,WAAY,qBACZwnC,sBAAuB,2BACvBC,aAAc,qBACdrlC,OAAQ,oBACR8G,YAAa,qBACbw+B,cAAe,qBACfC,uBAAwB,2BACxBC,eAAgB,UAEhB/nC,IAAK,mBACLC,QAAS,oBACT8mC,SAAU,qBAEViB,WAAY,UACZ1+B,WAAY,UACZ2+B,aAAc,UAEdz+B,YAAa,UACbC,YAAa,UAEbhH,KAAM,mBACNC,UAAW,UACXC,aAAc,UACdC,OAAQ,UACRC,UAAW,sBAGP1tD,GAAQ0uB,EAAAA,EAAAA,GAAY,CAAC,GACrBw7B,EAAc,CAClBthC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,MAEA+oE,GAAerjE,EAAAA,EAAAA,GAAY,CAC/BnK,YAAa,CACXhf,OAAQ2kD,GAEVxlC,OAAQ,CACNC,QAAS,CACPhiB,UAAW,SAGfqV,WAAY,CACV6U,WAAY,2BACZG,gBAAiB,MACjBE,kBAAmB,MACnBE,iBAAkB,MAClBE,eAAgB,MAChBzI,GAAI,CACFgI,WAAY,4BACZ9U,SAAU,UACV8V,WAAY,MACZC,WAAY,OACZ9sB,aAAc,OACd,CAAChB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,aAGd+M,GAAI,CACF+H,WAAY,4BACZ9U,SAAU,WACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,OACd,CAAChB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,WAGdgN,GAAI,CACF8H,WAAY,4BACZ9U,SAAU,WACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,QAEhBgkB,GAAI,CACF6H,WAAY,4BACZ9U,SAAU,OACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,QAEhBikB,GAAI,CACF4H,WAAY,4BACZ9U,SAAU,OACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,QAEhBkkB,GAAI,CACF2H,WAAY,6BACZ9U,SAAU,OACV8V,WAAY,MACZC,WAAY,SACZ9sB,aAAc,QAEhBmlB,QAAS,CACPpO,SAAU,UACVoyC,UAAW,SACXr8B,WAAY,OAEd1H,SAAU,CACRrO,SAAU,UACV8V,WAAY,OAEdxI,MAAO,CACLwH,WAAY,2BACZ9U,SAAU,WACV,CAAC/X,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,SAGduN,MAAO,CACLuH,WAAY,2BACZ9U,SAAU,UACV,CAAC/X,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtC/Q,SAAU,aAGdqyC,eAAgB,CACdryC,SAAU,OACV8U,WAAY,2BACZgB,WAAY,OACZ1e,MAAOmY,EAAOsC,OAEhBygC,eAAgB,CACdtyC,SAAU,YAGdnX,QAAS,CACPyrB,OAAQ,CACNzC,MAAOtC,EAAOsC,MACdC,MAAOvC,EAAOuC,MACdygC,KAAMhjC,EAAOgjC,KACbC,UAAWjjC,EAAOijC,UAClBC,YAAaljC,EAAOkjC,YACpBC,WAAYnjC,EAAOmjC,WACnBC,SAAUpjC,EAAOojC,SACjBC,KAAMrjC,EAAOqjC,KACbC,UAAWtjC,EAAOsjC,UAClBC,IAAKvjC,EAAOujC,IACZC,QAASxjC,EAAOwjC,QAChBC,MAAOzjC,EAAOyjC,MACdC,WAAY1jC,EAAO0jC,YAErBxyC,QAAS,CACPC,KAAM6O,EAAOsC,MACbsC,aAAc5E,EAAOmsC,SAEvB96C,UAAW,CACTF,KAAM6O,EAAOojC,SACbxgC,MAAO5C,EAAO4sC,aAEhB/wC,KAAM,CACJ3K,QAAS8O,EAAOojC,SAChB/xC,UAAW2O,EAAOuC,MAClBK,MAAO5C,EAAOuC,OAEhB3G,WAAY,CACV1kC,QAAS8oC,EAAOuC,MAChBohC,YAAa3jC,EAAOijC,UACpBW,UAAW5jC,EAAOijC,UAClBY,cAAe,cACfC,WAAY,eAEd5nE,MAAO,CACLi1B,KAAM6O,EAAOujC,IACb3gC,MAAO5C,EAAOsqE,UAEhBpmE,QAAS,CACP/S,KAAM6O,EAAOyjC,MACb7gC,MAAO5C,EAAOmrE,cAEhBrnE,QAAS,CACP3S,KAAM6O,EAAOkmC,aACbtjC,MAAO5C,EAAOorE,eAEhBpnE,KAAM,CACJ7S,KAAM6O,EAAOqjC,KACbzgC,MAAO5C,EAAOirE,aAEhBlnC,kBAAmB,CAAEx+B,WAAY,6BACjChsB,QAASymB,EAAOijC,UAChBe,SAAU,CACRzoC,SAAU,CACRK,WAAYoE,EAAOijC,UACnBpnC,KAAMmE,EAAOujC,KAEf1nC,KAAMmE,EAAOmjC,WACbc,UAAWjkC,EAAOujC,KAEpBW,OAAQ,CACNz8C,OAAQ,CACNI,MAAOmY,EAAOujC,IACdjjD,MAAO,OAET/G,QAASymB,EAAOyjC,MAChB5nC,KAAMmE,EAAOsC,MACb1G,WAAYoE,EAAOuC,MACnB4hC,kBAAmBnkC,EAAOijC,UAC1B7oD,QAAS,CACP8B,OAAQ,QAEVkoD,QAAS,CACPC,KAAM,MAERC,MAAO,MAETt9D,OAAQ,CACN60B,KAAMmE,EAAOsC,MACb1G,WAAYoE,EAAOuC,MACnB9a,OAAQ,CACN88C,YAAa,MACb/4D,MAAO,QACPqc,MAAOmY,EAAOujC,KAEhBloD,UAAW,OACXmpD,gBAAiB,OACjBlyC,WAAY,IACZmyC,kBAAmBzkC,EAAOyjC,MAC1BiB,kBAAmB1kC,EAAOujC,IAC1BoB,WAAY,CACVC,WAAY5kC,EAAOujC,IACnBsB,iBAAmB,aAAY7kC,EAAOyjC,QACtCQ,UAAWjkC,EAAOujC,IAClBuB,kBAAmB9kC,EAAOkjC,YAC1B6B,oBAAqB/kC,EAAOujC,KAE9ByB,MAAO,CACLn9C,MAAO,KACPxO,gBAAiB,gBAGrBtJ,OAAQ,CACNk1D,YAAa,CACXC,eAAgB,CACd7rD,gBAAiB2mB,EAAOuC,MACxB,CAAC7pB,EAAMukB,YAAYC,GAAG,OAAQ,CAC5B7jB,gBAAiB2mB,EAAOyjC,QAG5B0B,WAAY,CACVt9C,MAAOmY,EAAOuC,SAIpB6iC,iBAAkB,CAChBvpC,KAAMmE,EAAOsC,MACbY,KAAMlD,EAAOujC,IACb8B,gBAAiBrlC,EAAOkjC,YACxBoC,oBAAqBtlC,EAAOujC,IAC5BgC,wBAAyBvlC,EAAOijC,UAChCuC,6BAA8BxlC,EAAOkjC,YACrCuC,wBAAyBzlC,EAAOujC,KAElCmC,YAAa,CACXC,sBAAuB3lC,EAAOkjC,YAC9B0C,cAAe,CACbC,OAAQ7lC,EAAOurE,WACfzlC,OAAQ9lC,EAAOwrE,aACf/nC,MAAOzjC,EAAO+sC,YACdhH,MAAO/lC,EAAOgtC,YACd3J,KAAMrjC,EAAO6sC,WAEb7G,KAAMhmC,EAAOgmC,KACbC,UAAWjmC,EAAOimC,UAClBC,aAAclmC,EAAOkmC,aACrBC,OAAQnmC,EAAOmmC,OACfC,UAAWpmC,EAAOomC,WAEpBC,SAAU,CACRC,UAAW,CACTz+C,MAAOmY,EAAOujC,IACdgD,YAAa,CACXC,YAAaxmC,EAAO+qE,cAI1BxjC,OAAQ,CACNC,eAAgB9uD,EAAM2B,QAAQ,EAAG,EAAG,EAAG,GACvCuhB,WAAYoE,EAAOkjC,YACnB3pD,QAASymB,EAAO+qE,YAElBtjC,gBAAiBznC,EAAOujC,KAE1BmE,MAAO,CACL7rC,KAAMmE,EAAOyjC,MACbhzC,SAAU,QAEZjK,OAAQ,CACN+f,WAAY,OACZpB,cAAe,YACf,CAACzsB,EAAMukB,YAAYC,GAAG0lC,EAAYphC,KAAM,CACtCpnB,QAAS,wBAGbutD,iBAAkB,CAChBC,MAAO,CAAEvuD,gBAAiB2mB,EAAOyjC,MAAO57C,MAAOmY,EAAOsC,QAExD+O,KAAM,CACJA,KAAMrR,EAAOujC,IACb3yC,OAAQoP,EAAOujC,IACfnvC,MAAO4L,EAAOujC,KAEhB0E,cAAe,CACbC,YAAa,CACX51C,WAAY5Z,EAAM2B,QAAQ,IAE1B,CAAC3B,EAAMukB,YAAYC,GAAGirC,EAAAA,GAAAA,aAA2C,CAC/D71C,WAAY5Z,EAAM2B,QAAQ,MAG9B+tD,mBAAoB,CAClB91C,WAAY5Z,EAAM2B,QAAQ,IAC1B,CAAC3B,EAAMukB,YAAYC,GAAGirC,EAAAA,GAAAA,aAA2C,CAC/D71C,WAAY5Z,EAAM2B,QAAQ,MAG9B67D,WAAY,CACV5jD,WAAY5Z,EAAM2B,QAAQ,IAC1B,CAAC3B,EAAMukB,YAAYC,GAAGirC,EAAAA,GAAAA,aAA2C,CAC/D71C,WAAY5Z,EAAM2B,QAAQ,OAIhCguD,yBAA0B,CACxBzsC,WAAYoE,EAAOyjC,MACnBrvC,MAAO,CACLwH,WAAYoE,EAAO0jC,YAErBxsD,SAAU,CACR0kB,WAAYoE,EAAOyjC,QAGvB6E,kBAAmB,CACjBjvD,gBAAiB2mB,EAAOsrE,eACxBzjF,MAAO,UACPzN,QAAS1B,EAAM2B,QAAQ,KACvBb,OAAQd,EAAM2B,SAAS,EAAG,EAAG,EAAG,GAChC,CAAC3B,EAAMukB,YAAYC,GAAGirC,EAAAA,GAAAA,aAA2C,CAC/D3uD,OAAQd,EAAM2B,SAAS,EAAG,EAAG,EAAG,KAGpCkuD,cAAe,CACbhjC,WAAY,2BACZijC,kBAAmBxoC,EAAOujC,MAI9B+C,UAAW,CACTjtD,gBAAiB2mB,EAAOuC,MACxB1a,MAAOmY,EAAOwjC,QACd/7C,OAAQ,GACRlN,WAAY,CACVlB,gBAAiB2mB,EAAOkjC,YACxB9uC,MAAO,CACL/a,gBAAiB2mB,EAAOgjC,QAI9ByF,iBAAkB,CAChB5gD,MAAOmY,EAAOsC,MACd7a,OAAQ,CACNI,MAAOmY,EAAOsC,MACdhiB,MAAO,OAET9G,OAAQ,KAEVkvD,gBAAiB,CACfC,aAAc,CACZ/B,SAAU,OAEZgC,YAAa,CAAC,GAEhBC,MAAO,CACLphD,OAAS,aAAYuY,EAAOsC,QAC5B1oB,aAAc,EACdk2B,KAAM,CACJz2B,gBAAiB2mB,EAAOsC,MACxBza,MAAOmY,EAAOuC,OAEhBumC,IAAK,CACHC,KAAM,CACJ1vD,gBAAiBX,EAAMY,QAAQpL,OAAOkmB,SAI5C40C,gBAAiB,CACf7vD,QAAS,CAAC,GAEZ8vD,OAAQ,CACNC,YAAa,CAAC,GAEhBC,GAAI,CAAC,EAELC,cAAe,CACbC,SAAU,CAAC,GAEbpxD,MAAO,CACLK,KAAM,CAAC,EACPgxD,IAAK,CAAC,EACN37B,MAAO,CAAC,EACR7xC,KAAM,CAAC,EACPytE,iBAAkB,CAAC,EACnBrmC,KAAM,CAAC,GAET4E,UAAW,CACT4hC,UAAW,CACTpxD,KAAM,CACJqjB,UAAW,OACXtiB,gBAAiB,eAEnB4X,aAAc,CACZpJ,MAAOmY,EAAOsC,MACdjpB,gBAAiB2mB,EAAOuC,QAG5BonC,WAAY,CACVxsC,QAAS,CAAC,EACVlL,MAAO,CACLpK,MAAOmY,EAAOuC,QAGlBqnC,UAAW,CACTtxD,KAAM,CACJgI,MAAO,QACPmqB,WAAY,GAEd5c,MAAO,CACLvN,MAAO,QACPuH,MAAOmY,EAAOsC,MACdjpB,gBAAiB2mB,EAAOuC,MACxBqkC,SAAU,SAGdiD,QAAS,CACPvxD,KAAM,CACJuP,MAAOmY,EAAOujC,MAGlBuG,UAAW,CACTj8C,MAAO,CACLrU,OAAQ,QAGZuwD,UAAW,CACTzxD,KAAM,CACJ6sB,cAAe,UACfvrB,aAAc,MACdQ,QAAS,YACTqW,SAAU,OACVu5C,SAAU,KAEZ14C,UAAW,CACTlX,QAAS,WACTR,aAAc,MACd6W,SAAU,aAEZw5C,iBAAkB,CAChBtuC,UAAW,OACXlU,OAAQ,wBACRpO,gBAAiB2mB,EAAOujC,IACxB17C,MAAOmY,EAAOuC,MACd,UAAW,CACTlpB,gBAAiB2mB,EAAOuC,MACxB9a,OAAS,aAAYuY,EAAOujC,MAC5B5nC,UAAW,OACX9T,MAAOmY,EAAOujC,IACd,uBAAwB,CACtBlqD,gBAAiB2mB,EAAOuC,QAG5B,aAAc,CACZ1a,MAAOmY,EAAOsC,MACdlpB,QAAS,KAGb8wD,gBAAiB,CACfziD,OAAS,aAAYuY,EAAOujC,MAC5B17C,MAAOmY,EAAOujC,IACd,UAAW,CACTlqD,gBAAiB2mB,EAAOujC,IACxB97C,OAAS,wBACTI,MAAOmY,EAAOuC,MACd,uBAAwB,CACtBlpB,gBAAiB2mB,EAAOujC,QAKhC4G,eAAgB,CACd7xD,KAAM,CACJuP,MAAOmY,EAAOojC,UAEhBgH,UAAW,CACT35C,SAAU,SACVK,WAAY,OACZC,YAAa,SAGjBs5C,iBAAkB,CAChB/xD,KAAM,CACJ8B,QAAS,UACT,CAAC1B,EAAMukB,YAAYC,GAAG,OAAQ,CAC5B9iB,QAAS,cAIfkwD,aAAc,CACZhyD,KAAM,CACJmP,OAAQ,YACR8iD,YAAavqC,EAAOgjC,KACpBhgD,SAAU,SACV3J,gBAAiB2mB,EAAOijC,UACxB,yBAA0B,CACxBsH,YAAavqC,EAAOgjC,MAEtB,UAAW,CACTn7C,MAAOmY,EAAOgjC,MAEhB,YAAa,CACXrnC,UAAW,kCACX4uC,YAAavqC,EAAOyjC,MACpB,yBAA0B,CACxB8G,YAAavqC,EAAOyjC,QAGxB,wBAAyB,CACvB8G,YAAa7xD,EAAMY,QAAQpd,MAAMi1B,KACjC,yBAA0B,CACxBo5C,YAAa7xD,EAAMY,QAAQpd,MAAMi1B,OAGrC,aAAc,CACZ9X,gBAAiB2mB,EAAOijC,YAG5BuH,aAAc,CACZt2C,YAAa,UAEfu2C,WAAY,CACVt2C,aAAc,UAEhB6oB,MAAO,CACLvsB,SAAU,OACVrW,QAAS,gBACT,sBAAuB,CACrB8Z,YAAa,UAEf,qBAAsB,CACpBC,aAAc,UAEhB,iBAAkB,CAChB0uC,UAAW,YAIjB6H,cAAe,CACbpyD,KAAM,CACJ6sB,cAAe,YACfrU,WAAY,WAEd65C,OAAQ,CACNlxD,UAAW,OACXiC,UAAW,iCAGfkvD,aAAc,CACZtyD,KAAM,CACJuP,MAAOmY,EAAOojC,SACd,UAAW,CACTv7C,MAAOmY,EAAOwjC,UAGlBqH,SAAU,CACR,UAAW,CACThjD,MAAOmY,EAAOojC,YAIpB0H,kBAAmB,CACjBxyD,KAAM,CACJuP,MAAOmY,EAAOojC,SACdtyC,WAAY,UACZ,UAAW,CACTjJ,MAAOmY,EAAOwjC,WAKpBuH,YAAa,CACXzyD,KAAM,CACJuP,MAAOmY,EAAOojC,SACd,YAAa,CACXv7C,MAAOmY,EAAOojC,YAIpB6H,eAAgB,CACd3yD,KAAM,CACJoB,aAAchB,EAAM2B,QAAQ,KAGhC6wD,cAAe,CACb5yD,KAAM,CACJ,iBAAkB,CAChBuP,MAAOmY,EAAOujC,OAIpB4H,QAAS,CACP7yD,KAAM,CACJ+Z,UAAW,SACX,iBAAkB,CAChBxK,MAAOmY,EAAOujC,OAIpB6H,YAAa,CACXp/C,OAAQ,CACN,eAAgB,CACdI,WAAY,UACZlT,OAAQ,UAIdmyD,kBAAmB,CACjBC,YAAa,CACX,iBAAkB,CAChBjyD,gBAAiB2mB,EAAOujC,IACxB17C,MAAOmY,EAAOuC,MACdgE,WAAY,UAIlBglC,UAAW,CACTC,MAAO,CACL3jD,MAAOmY,EAAOujC,IACd,UAAW,CACT93D,QAAS,SAGbggE,MAAO,CACL5jD,MAAOmY,EAAOujC,MAGlBmI,kBAAmB,CACjBC,OAAQ,CACN/xD,aAAc,OAEhB/jB,MAAO,CACLgyB,MAAOmY,EAAOuC,MACdgE,WAAY,QAEdqlC,OAAQ,CACN5yD,IAAK,KAIX5H,MAAO,CACLs4D,UAAW,CACT7hD,MAAO,WAETgkD,cAAe,CACbhkD,MAAO,WAETkiD,UAAW,CACTliD,MAAO,UACP2F,QAAS,aAEXq8C,QAAS,CACPr8C,QAAS,SAEXs+C,aAAc,CACZz4C,gBAAgB,GAElB82C,eAAgB,CACdC,UAAW,KAEb2B,SAAU,CACRC,kBAAkB,GAEpBtB,cAAe,CACbC,QAAQ,GAEVI,YAAa,CACXkB,YAAa,gBAAC,IAAD,UAKnB,weC1sBInvE,gIACA2uG,EAAQ,IAAI1uG,WAAW,IACZ,SAAS2uG,IAEtB,IAAK5uG,KAGHA,EAAoC,oBAAXF,QAA0BA,OAAOE,iBAAmBF,OAAOE,gBAAgB7C,KAAK2C,SAA+B,oBAAb+uG,UAAgE,mBAA7BA,SAAS7uG,iBAAkC6uG,SAAS7uG,gBAAgB7C,KAAK0xG,WAGrO,MAAM,IAAIlzG,MAAM,4GAIpB,OAAOqE,EAAgB2uG,EACzB,CClBA,4HCQA,ICFA,MAJA,SAAkBG,GAChB,MAAuB,iBAATA,GAAqB,OAAWA,EAChD,EDEIC,EAAY,GAEP73G,EAAI,EAAGA,EAAI,MAAOA,EACzB63G,EAAUr1G,MAAMxC,EAAI,KAAO+F,SAAS,IAAI2Z,OAAO,IAoBjD,MAjBA,SAAmBo2C,GACjB,IAAI8hB,EAAS13E,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,EAG7E03G,GAAQC,EAAU/hD,EAAI8hB,EAAS,IAAMigC,EAAU/hD,EAAI8hB,EAAS,IAAMigC,EAAU/hD,EAAI8hB,EAAS,IAAMigC,EAAU/hD,EAAI8hB,EAAS,IAAM,IAAMigC,EAAU/hD,EAAI8hB,EAAS,IAAMigC,EAAU/hD,EAAI8hB,EAAS,IAAM,IAAMigC,EAAU/hD,EAAI8hB,EAAS,IAAMigC,EAAU/hD,EAAI8hB,EAAS,IAAM,IAAMigC,EAAU/hD,EAAI8hB,EAAS,IAAMigC,EAAU/hD,EAAI8hB,EAAS,IAAM,IAAMigC,EAAU/hD,EAAI8hB,EAAS,KAAOigC,EAAU/hD,EAAI8hB,EAAS,KAAOigC,EAAU/hD,EAAI8hB,EAAS,KAAOigC,EAAU/hD,EAAI8hB,EAAS,KAAOigC,EAAU/hD,EAAI8hB,EAAS,KAAOigC,EAAU/hD,EAAI8hB,EAAS,MAAMvjE,cAMzf,IAAK,EAASujG,GACZ,MAAMt1G,UAAU,+BAGlB,OAAOs1G,CACT,EEJA,MApBA,SAAYtmG,EAASwmG,EAAKlgC,GAExB,IAAImgC,GADJzmG,EAAUA,GAAW,CAAC,GACH/L,SAAW+L,EAAQomG,KAAOA,KAK7C,GAHAK,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvBD,EAAK,CACPlgC,EAASA,GAAU,EAEnB,IAAK,IAAI53E,EAAI,EAAGA,EAAI,KAAMA,EACxB83G,EAAIlgC,EAAS53E,GAAK+3G,EAAK/3G,GAGzB,OAAO83G,CACT,CAEA,OAAO,EAAUC,EACnB,0BCdA,MAAMC,EAAkBC,IACtB,IAAIC,EAAQ,IAAID,EAAa,kBAI7B,OAHI,IAAQC,KACVA,EAAQ,IAAID,EAAa,uBAEpBC,CAAP,EAGIC,EAAqBF,IACzB,IAAIjoC,EAAW,IAAIioC,EAAa,sBAIhC,OAHI,IAAQjoC,KACVA,EAAW,IAAIioC,EAAa,2BAEvBjoC,CAAP,EAaIooC,EAA0BC,IAC9B,MAAMlgB,EAAS,IAAIkgB,EAAc,iBACjC,OAAO,IAAQlgB,EAAQ,SAAW,MAAQ,KAA1C,EAGWgO,EAAW,KACtB,MAAMmS,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAIVA,EAAU91G,KAAK,CAAEyhB,MAAO,YAAxB,EAGWs0F,EAAuBvoC,IAClC,MAAMsoC,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAIVA,EAAU91G,KAAK,CAAEyhB,MAAO,cAAeu0F,kBAAmBxoC,GAA1D,EAGWyoC,EAAeR,IAC1B,MAAMK,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAAc,IAAML,KAI9BK,EAAU91G,KAAK,CAAEk2G,UAAW,OAC5BJ,EAAU91G,KAAK,CACbyhB,MAAO,cACPy0F,UAAW,CACTC,MAAO,CACL,CACEC,UAAW,IAAIX,EAAa,QAC5BY,QAAS,IAAIZ,EAAa,OAC1BjlC,MAAO,IAAIilC,EAAa,SACxBa,WAAYd,EAAgBC,GAC5Bc,cAAeZ,EAAmBF,GAClCe,eAAgB,iBAChBC,SAAU,OAXlB,EAkBWC,EAAcjB,IACzB,MAAMK,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAAc,IAAML,KAI9BK,EAAU91G,KAAK,CAAEk2G,UAAW,OAC5BJ,EAAU91G,KAAK,CACbyhB,MAAO,YACPy0F,UAAW,CACTC,MAAO,CACL,CACEC,UAAW,IAAIX,EAAa,QAC5BY,QAAS,IAAIZ,EAAa,OAC1BjlC,MAAO,IAAIilC,EAAa,SACxBa,WAAYd,EAAgBC,GAC5Bc,cAAeZ,EAAmBF,GAClCgB,SAAU,OAVlB,EAiBWE,EAAed,IAC1B,MAAMC,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAAc,IAAQD,KAIhCC,EAAU91G,KAAK,CAAEk2G,UAAW,OAC5BJ,EAAU91G,KAAK,CACbyhB,MAAO,iBACPy0F,UAAW,CACTC,MAAO,IAAIN,GAAc,CAACJ,EAAat4F,KAC9B,CACLi5F,UAAW,IAAIX,EAAa,QAC5BY,QAAS,IAAIZ,EAAa,OAC1BjlC,MAAO,IAAIilC,EAAa,SACxBa,WAAYd,EAAgBC,GAC5Bc,cAAeZ,EAAmBF,GAClCt4F,QACAq5F,eAAgB,wBAXxB,EAkBWI,EAAWf,IACtB,MAAMC,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAE5D,GAAI,IAAMu1G,IAAc,IAAQD,GAC9B,OAGF,MAAMgB,EAAejB,EAAwBC,GACvCiB,EAxHsBjB,IACrB,IACLA,GACA,CAACiB,EAAYrB,IACJqB,EAAantE,WAAW,IAAI8rE,EAAa,WAElD,GAkHiBsB,CAAsBlB,GAEzCC,EAAU91G,KAAK,CAAEk2G,UAAW,OAC5BJ,EAAU91G,KAAK,CACbyhB,MAAO,YACPy0F,UAAW,CACT1hB,SAAUqiB,EACVt4G,MAAOu4G,EACPX,MAAO,IAAIN,GAAc,CAACJ,EAAauB,KAC9B,CACLZ,UAAW,IAAIX,EAAa,QAC5BY,QAAS,IAAIZ,EAAa,OAC1Ba,WAAYd,EAAgBC,GAC5Bc,cAAeZ,EAAmBF,GAClCe,eAAgB,cAChBr5F,MAAO65F,EACPxmC,MAAO,IAAIilC,EAAa,SACxBgB,SAAU,QAdlB,EAqBWQ,EAAYxB,IACvB,MAAMK,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAAc,IAAML,KAI9BK,EAAU91G,KAAK,CAAEk2G,UAAW,OAC5BJ,EAAU91G,KAAK,CACbyhB,MAAO,cACPy0F,UAAW,CACTC,MAAO,CACL,CACEC,UAAW,IAAIX,EAAa,QAC5BY,QAAS,IAAIZ,EAAa,OAC1BjlC,MAAO,IAAIilC,EAAa,SACxBa,WAAYd,EAAgBC,GAC5Bc,cAAeZ,EAAmBF,GAClCgB,SAAU,OAVlB,EAiBWS,EAAiBzB,IAC5B,MAAMK,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAAc,IAAML,KAI9BK,EAAU91G,KAAK,CAAEk2G,UAAW,OAC5BJ,EAAU91G,KAAK,CACbyhB,MAAO,mBACPy0F,UAAW,CACTC,MAAO,CACL,CACEC,UAAW,IAAIX,EAAa,QAC5BY,QAAS,IAAIZ,EAAa,OAC1BjlC,MAAO,IAAIilC,EAAa,SACxBa,WAAYd,EAAgBC,GAC5Bc,cAAeZ,EAAmBF,GAClCgB,SAAU,OAVlB,EAiBWU,EAAkB,CAAC1B,EAAa2B,KAC3C,MAAMtB,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAE5D,GAAI,IAAMu1G,IAAc,IAAML,GAC5B,OAGF,MAAMoB,EAAejB,EAAwB,CAACH,KAE9C4B,EAAAA,EAAAA,IAAoB5B,EAAa2B,IACjCE,EAAAA,EAAAA,IAAqB7B,GAErBK,EAAU91G,KAAK,CAAEk2G,UAAW,OAC5BJ,EAAU91G,KAAK,CACbyhB,MAAO,WACPy0F,UAAW,CACTqB,eAAgBnC,IAChBoC,YAAa,IAAI/B,EAAa,4BAC9Bl3G,MAAO,IAAIk3G,EAAa,SACxBjhB,SAAUqiB,EACVV,MAAO,CACL,CACEC,UAAW,IAAIX,EAAa,QAC5BY,QAAS,IAAIZ,EAAa,OAC1BjlC,MAAO,IAAIilC,EAAa,SACxBa,WAAYd,EAAgBC,GAC5Bc,cAAeZ,EAAmBF,GAClCgB,SAAU,MAdlB,EAqBWgB,EAA0B,KACrC,MAAM3B,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAIVA,EAAU91G,KAAK,CAAEyhB,MAAO,4BAAxB,EAGWi2F,EAAsB,KACjC,MAAM5B,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAIVA,EAAU91G,KAAK,CAAEyhB,MAAO,uBAAxB,EAGWk2F,EAAmB,KAC9B,MAAM7B,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAIVA,EAAU91G,KAAK,CAAEyhB,MAAO,eAAxB,EAGWm2F,EAAiB,KAC5B,MAAM9B,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAIVA,EAAU91G,KAAK,CAAEyhB,MAAO,aAAxB,EAGWo2F,EAAc,CAAC7R,EAAY8R,EAAmBC,KACzD,MAAMjC,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IACxD,IAAMu1G,IAIVA,EAAU91G,KAAK,CACbyhB,MAAO,eACPukF,aACAgS,cAAeF,EACfC,cAJF,EAQWE,EAAY,KACvB,MAAMnC,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAGVA,EAAU91G,KAAK,CAAEyhB,MAAO,aAAxB,EAGWy2F,EAA2B,KACtC,MAAMpC,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAGVA,EAAU91G,KAAK,CAAEyhB,MAAO,uBAAxB,EAGW02F,EAAyB,KACpC,MAAMrC,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,IAGVA,EAAU91G,KAAK,CAAEyhB,MAAO,0BAAxB,EAGW22F,EAAeC,IAC1B,MAAMvC,GAAY/Y,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,YAAa,IAExD,IAAMu1G,KAGVA,EAAU91G,KAAK,CAAEk2G,UAAW,OAC5BJ,EAAU91G,KAAK,CACbyhB,MAAO,iBACPy0F,UAAW,CACToC,cAAe,GACfC,cAAe,GACfC,aAAc,IAAIH,EAAc,WAAY,IAC5CI,eAAgB,IAAIJ,EAAc,QAAS,IAC3ClC,MAAO,CACL,CACEC,UAAW,IAAIiC,EAAc,uCAAwC,IACrEhC,QAAS,IAAIgC,EAAc,sCAAuC,IAClE/B,WAAY,IAAI+B,EAAc,iDAAkD,IAChF7nC,MAAO,IACL6nC,EACA,0EACA,IAAIA,EAAc,wCAAyC,KAE7D9B,cAAe,IAAI8B,EAAc,qDAAsD,IACvF5B,SAAU,OAlBlB,oVC7UF,MAAMjB,EAAkBC,IACtB,IAAIC,EAAQ,IAAID,EAAa,kBAO7B,OANI,IAAQC,KACVA,EAAQ,IAAID,EAAa,uBAEvB,IAAQC,KACVA,EAAQ,IAEHA,CAAP,EAGIC,EAAqBF,IACzB,IAAIjoC,EAAW,IAAIioC,EAAa,sBAOhC,OANI,IAAQjoC,KACVA,EAAW,IAAIioC,EAAa,2BAE1B,IAAQjoC,KACVA,EAAW,IAENA,CAAP,EAGIkrC,EAAkBjD,IACtB,IAAIjlC,EAAQ,IAAIilC,EAAa,SAM7B,OALAjlC,EAAQ7mC,WAAW6mC,GAAOlmC,QAAQ,GAClCkmC,EAAQ,IAAQA,EAAO,IAAK,IACxB,IAAQA,KACVA,EAAQ,IAEHA,CAAP,EAEImoC,EAAyBlD,IAC7B,IAAIjlC,EAAQ,IAAIilC,EAAa,0CAA2C,IAKxE,OAJK,IAAQjlC,KACXA,EAAQ7mC,WAAW6mC,GAAOlmC,QAAQ,GAClCkmC,EAAQ,IAAQA,EAAO,IAAK,KAEvBA,CAAP,EAGWooC,EAAyB,KACpC,MAAMC,GAAiBC,EAAAA,EAAAA,MACvB,IAAIC,EAAe,GACnB,GAAI,IAASF,EAAgB,gBAAiB,CAC5C,MAAM/5F,EAAS,IAAM+5F,EAAgB,KACrC,IAAK/5F,GAAQk6F,IACP,IAASA,EAAO,kBAClBD,EAAe,IAAI,IAAMC,EAAO,KAAM,IAAK,IAC5C,GAEJ,CACD,OAAOD,CAAP,EAGW1B,EAAsB/vG,MAAOmuG,EAAa2B,KACrD,IACE,MAAM6B,EAAgBL,IACtB,OAAO/rD,IAAAA,KAAY,sCAAiD,CAClE,CACEqsD,eAAgB9B,EAChB+B,iBAAkBxD,EAAmBF,GACrC2D,WAAY,IAAI3D,EAAa,MAAO,IACpC4D,aAAc,IAAI5D,EAAa,6BAA8B,IAC7D6D,cAAe,IAAI7D,EAAa,OAAQ,IACxC8D,aAAc,IAAI9D,EAAa,kCAAmC,IAClE+D,cAAed,EAAgBjD,GAC/BgE,cAAejE,EAAgBC,GAC/BiE,aAAcT,IAKnB,CAFC,MAAOvzG,GACPuJ,QAAQvJ,MAAMA,EACf,CACD,OAAO,IAAP,EAGWi0G,EAAkB,CAAChuC,EAAU8pC,KACxC,MAAMmE,GAAQ7c,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,QAAS,IAEhD,IAAMq5G,IAGVA,EAAM55G,KAAK,CACTsN,KAAM,SACNzB,KAAM8/D,EACNytC,WAAY,IAAI3D,EAAa,MAAO,MAAQ,IAAIA,EAAa,OAAS,IAHxE,EAOW6B,EAAuB7B,IAClC,MAAMmE,GAAQ7c,EAAAA,EAAAA,MAAU,KAAO,IAAIx8F,OAAQ,QAAS,IACpD,GAAI,IAAMq5G,GACR,OAEF,MAAMC,EAASC,EAAAA,GAAAA,MAAeC,SAAS,gBAEjCvpC,EAAQ,IAAQmoC,EAAuBlD,IACzCiD,EAAgBjD,GAChBkD,EAAuBlD,GAC3BmE,EAAM55G,KAAK,CACTsN,KAAM,mBACN8rG,WAAY,IAAI3D,EAAa,MAAO,IACpCuE,QAASH,EACTL,cAAehpC,GAJjB,8LCtGK,MAAMusB,EAAQ,IACZ7d,WAAe3+E,OAAQ,aAGnB05G,EAAgB,IACpBld,SAAUplF,EAAY3W,IAAIT,OAAQ,iBAG9B25G,EAAoB,IACxBnd,SAAUplF,EAAY3W,IAAIT,OAAQ,qBAE9Bu4G,EAA0B,IAC9B/b,SAAUplF,EAAY3W,IAAIT,OAAQ,4vBCXvCsJ,EAAa,SAAoBoU,EAAQ1E,GAC3C,OAAO0E,EAAOf,OAAO,EAAG3D,EAAO5b,UAAY4b,CAC7C,EAuBI2E,EAAO,SAAcC,EAAQZ,GAW/B,IAVA,IAAIa,OAAQ,EACRC,OAAW,EAGXC,EADaf,EAAItW,MAAM,KACE,GAEzBsX,EAAcC,EAAWF,GACzBG,EAA+B,KAAnBF,EAAY,GACxBG,EAASC,EAAWR,GAEf3gB,EAAI,EAAGwF,EAAI0b,EAAO/gB,OAAQH,EAAIwF,EAAGxF,IAAK,CAC7C,IAAIohB,GAAS,EACTC,EAAQH,EAAOlhB,GAAGqhB,MAEtB,GAAIA,EAAMne,QACR2d,EAAW,CACTQ,MAAOA,EACPC,OAAQ,CAAC,EACTvB,IAAKA,OAJT,CAcA,IALA,IAAIwB,EAAgBP,EAAWK,EAAMhT,MACjCiT,EAAS,CAAC,EACV/Z,EAAMlC,KAAKkC,IAAIwZ,EAAY5gB,OAAQohB,EAAcphB,QACjDwf,EAAQ,EAELA,EAAQpY,EAAKoY,IAAS,CAC3B,IAAI6B,EAAeD,EAAc5B,GAC7B8B,EAAaV,EAAYpB,GAE7B,GAAI+B,EAAQF,GAAe,CAKzBF,EADYE,EAAa9Z,MAAM,IAAM,KACrBqZ,EAAYrZ,MAAMiY,GAAOjW,IAAIH,oBAAoBK,KAAK,KACtE,KACF,CAEA,QAAmBuQ,IAAfsH,EAA0B,CAI5BL,GAAS,EACT,KACF,CAEA,IAAIO,EAAeC,EAAQC,KAAKL,GAEhC,GAAIG,IAAiBV,EAAW,EACuC,IAA5Ca,EAAcpf,QAAQif,EAAa,KAC6J,KAAU,GACnO,IAAI5gB,EAAQwI,mBAAmBkY,GAC/BH,EAAOK,EAAa,IAAM5gB,CAC5B,MAAO,GAAIygB,IAAiBC,EAAY,CAItCL,GAAS,EACT,KACF,CACF,CAEA,IAAKA,EAAQ,CACXR,EAAQ,CACNS,MAAOA,EACPC,OAAQA,EACRvB,IAAK,IAAMgB,EAAYrZ,MAAM,EAAGiY,GAAO/V,KAAK,MAE9C,KACF,CAnDA,CAoDF,CAEA,OAAOgX,GAASC,GAAY,IAC9B,EAIID,EAAQ,SAAevS,EAAM0R,GAC/B,OAAOW,EAAK,CAAC,CAAErS,KAAMA,IAAS0R,EAChC,EA4BInf,EAAU,SAAiBme,EAAI49F,GAEjC,GAAItwG,EAAW0S,EAAI,KACjB,OAAOA,EAGT,IAAI69F,EAAY79F,EAAGtV,MAAM,KACrBozG,EAAaD,EAAU,GACvBE,EAAUF,EAAU,GAGpBG,EADcJ,EAAKlzG,MAAM,KACE,GAE3BuzG,EAAah8F,EAAW67F,GACxBI,EAAej8F,EAAW+7F,GAG9B,GAAsB,KAAlBC,EAAW,GACb,OAAO16F,EAASy6F,EAAcD,GAIhC,IAAKzwG,EAAW2wG,EAAW,GAAI,KAAM,CACnC,IAAIviG,EAAWwiG,EAAahgG,OAAO+/F,GAAYpzG,KAAK,KACpD,OAAO0Y,GAA2B,MAAjBy6F,EAAuB,GAAK,KAAOtiG,EAAUqiG,EAChE,CASA,IAFA,IAAII,EAAcD,EAAahgG,OAAO+/F,GAClCG,EAAW,GACNn9G,EAAI,EAAGwF,EAAI03G,EAAY/8G,OAAQH,EAAIwF,EAAGxF,IAAK,CAClD,IAAIgiB,EAAUk7F,EAAYl9G,GACV,OAAZgiB,EAAkBm7F,EAAS56G,MAA2B,MAAZyf,GAAiBm7F,EAAS36G,KAAKwf,EAC/E,CAEA,OAAOM,EAAS,IAAM66F,EAASvzG,KAAK,KAAMkzG,EAC5C,EAKIM,EAAe,SAAsB/uG,EAAMiT,GAC7C,IAAI+7F,EAAchvG,EAAK5E,MAAM,KACzB6zG,EAAWD,EAAY,GACvBE,EAAeF,EAAY,GAC3B76F,OAAyBrI,IAAjBojG,EAA6B,GAAKA,EAG1CC,EAAkB,IADPx8F,EAAWs8F,GACW5zG,KAAI,SAAUsY,GACjD,IAAIpB,EAAQgB,EAAQC,KAAKG,GACzB,OAAOpB,EAAQU,EAAOV,EAAM,IAAMoB,CACpC,IAAGpY,KAAK,KACJ6zG,EAAmBn8F,EAAOrS,SAE1ByuG,GADJD,OAAwCtjG,IAArBsjG,EAAiC,CAAC,EAAIA,GACZ1hG,OAGzC4hG,QAFmCxjG,IAA1BujG,EAAsC,GAAKA,GAE/Bj0G,MAAM,KAAK,IAAM,GAE1C,OADA+zG,EAAkBl7F,EAASk7F,EAAiBh7F,EAAOm7F,EAErD,EAaI/7F,EAAU,SAWVG,EAAY,SAAmBC,GACjC,OAAOJ,EAAQrP,KAAKyP,EACtB,EACIN,EAAU,SAAiBM,GAC7B,OAAOA,GAA0B,MAAfA,EAAQ,EAC5B,EAEIC,EAAY,SAAmBZ,EAAO1B,GAMxC,MAAO,CAAE0B,MAAOA,EAAOa,MALXb,EAAMne,QAAU,EAAI8d,EAAWK,EAAMhT,MAAMhF,QAAO,SAAU6Y,EAAOF,GAG7E,OAFAE,GAlBiB,GAMD,SAAuBF,GACzC,MAAmB,KAAZA,CACT,CAWQG,CAAcH,GAAwCD,EAAUC,GAAUE,GAjB7D,EAiB8FR,EAAQM,GAAUE,GAASE,EAAoCF,GAlB9J,EAkBYA,GAfd,EAgBPA,CACT,GAAG,GACkCvC,MAAOA,EAC9C,EAEIwB,EAAa,SAAoBR,GACnC,OAAOA,EAAOjX,IAAIuY,GAAWI,MAAK,SAAUle,EAAGhF,GAC7C,OAAOgF,EAAE+d,MAAQ/iB,EAAE+iB,MAAQ,EAAI/d,EAAE+d,MAAQ/iB,EAAE+iB,OAAS,EAAI/d,EAAEwb,MAAQxgB,EAAEwgB,KACtE,GACF,EAEIqB,EAAa,SAAoBjB,GACnC,OAAOA,EAENlW,QAAQ,eAAgB,IAAIJ,MAAM,IACrC,EAEI6Y,EAAW,SAAkB7H,GAC/B,IAAK,IAAI8H,EAAOriB,UAAUC,OAAQqiB,EAAQjjB,MAAMgjB,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAC/FD,EAAMC,EAAO,GAAKviB,UAAUuiB,GAM9B,OAAOhI,IAHP+H,EAAQA,EAAMhb,QAAO,SAAUmJ,GAC7B,OAAOA,GAAKA,EAAExQ,OAAS,CACzB,MAC4BqiB,EAAMriB,OAAS,EAAI,IAAMqiB,EAAM5Y,KAAK,KAAO,GACzE,EAEIkY,EAAgB,CAAC,MAAO,QC3QxBpE,EAAWte,OAAOS,QAAU,SAAU8d,GAAU,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAI4X,EAAS1X,UAAUF,GAAI,IAAK,IAAIwE,KAAOoT,EAAcxY,OAAOK,UAAUC,eAAeC,KAAKiY,EAAQpT,KAAQmZ,EAAOnZ,GAAOoT,EAAOpT,GAAU,CAAE,OAAOmZ,CAAQ,EAE3PC,EAAc,SAAqBhG,GACrC,IAAIiG,EAAmBjG,EAAO3I,SAC1B8M,EAAS8B,EAAiB9B,OAC1B+B,EAAOD,EAAiBC,KACxBrI,EAAOoI,EAAiBpI,KACxBD,EAASqI,EAAiBrI,OAC1BtG,EAAW2O,EAAiB3O,SAC5B6O,EAAOF,EAAiBE,KACxBC,EAAWH,EAAiBG,SAC5BC,EAAOJ,EAAiBI,KACxBxD,EAAW7C,EAAO3I,SAASwL,UAG1BA,GAAYhF,GAAQyI,IAEvBzD,EADU,IAAI1K,IAAI0F,GACHgF,UAGjB,MAAO,CACLA,SAAU0D,UAAUC,UAAU3D,IAC9BsB,OAAQA,EACR+B,KAAMA,EACNrI,KAAMA,EACND,OAAQA,EACRtG,SAAUA,EACV6O,KAAMA,EACNC,SAAUA,EACVC,KAAMA,EACN5V,MAAOuP,EAAOyC,QAAQhS,MACtB7D,IAAKoT,EAAOyC,QAAQhS,OAASuP,EAAOyC,QAAQhS,MAAM7D,KAAO,UAE7D,EAEI6Z,EAAgB,SAAuBzG,EAAQtG,GACjD,IAAIgN,EAAY,GACZrP,EAAW2O,EAAYhG,GACvB2G,GAAgB,EAChBC,EAAoB,WAA8B,EAEtD,MAAO,CACDvP,eACF,OAAOA,CACT,EAEIsP,oBACF,OAAOA,CACT,EAEAE,sBAAuB,WACrBF,GAAgB,EAChBC,GACF,EACAE,OAAQ,SAAgBC,GACtBL,EAAU9b,KAAKmc,GAEf,IAAIC,EAAmB,WACrB3P,EAAW2O,EAAYhG,GACvB+G,EAAS,CAAE1P,SAAUA,EAAUiL,OAAQ,OACzC,EAIA,OAFAtC,EAAOvQ,iBAAiB,WAAYuX,GAE7B,WACLhH,EAAO1Q,oBAAoB,WAAY0X,GACvCN,EAAYA,EAAU9W,QAAO,SAAUqX,GACrC,OAAOA,IAAOF,CAChB,GACF,CACF,EACAG,SAAU,SAAkBC,GAC1B,IAAIC,EAAO9e,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5EmI,EAAQ2W,EAAK3W,MACb4W,EAAeD,EAAKnV,QACpBA,OAA2BsQ,IAAjB8E,GAAqCA,EAEnD,GAAkB,iBAAPF,EACTnH,EAAOyC,QAAQ6E,GAAGH,OACb,CACL1W,EAAQqV,EAAS,CAAC,EAAGrV,EAAO,CAAE7D,IAAKqB,KAAKC,MAAQ,KAEhD,IACMyY,GAAiB1U,EACnB+N,EAAOyC,QAAQC,aAAajS,EAAO,KAAM0W,GAEzCnH,EAAOyC,QAAQ8E,UAAU9W,EAAO,KAAM0W,EAI1C,CAFE,MAAO7d,GACP0W,EAAO3I,SAASpF,EAAU,UAAY,UAAUkV,EAClD,CACF,CAEA9P,EAAW2O,EAAYhG,GACvB2G,GAAgB,EAChB,IAAIa,EAAa,IAAIze,SAAQ,SAAU0e,GACrC,OAAOb,EAAoBa,CAC7B,IAIA,OAHAf,EAAU3W,SAAQ,SAAUgX,GAC1B,OAAOA,EAAS,CAAE1P,SAAUA,EAAUiL,OAAQ,QAChD,IACOkF,CACT,EAEJ,EAIIE,EAAqB,WACvB,IAAIC,EAAcrf,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,IAElFsf,EAAcD,EAAY7c,QAAQ,KAClC+c,EAAkB,CACpBhF,SAAU+E,GAAe,EAAID,EAAYG,OAAO,EAAGF,GAAeD,EAClExD,OAAQyD,GAAe,EAAID,EAAYG,OAAOF,GAAe,IAE3DG,EAAQ,EACRC,EAAQ,CAACH,GACTI,EAAS,CAAC,MAEd,MAAO,CACD5Q,eACF,OAAO2Q,EAAMD,EACf,EACAtY,iBAAkB,SAA0BS,EAAM+W,GAAK,EACvD3X,oBAAqB,SAA6BY,EAAM+W,GAAK,EAE7DxE,QAAS,CACHyF,cACF,OAAOF,CACT,EACID,YACF,OAAOA,CACT,EACItX,YACF,OAAOwX,EAAOF,EAChB,EACAR,UAAW,SAAmB9W,EAAOzG,EAAGme,GACtC,IAAIC,EAAaD,EAAItW,MAAM,KACvBgR,EAAWuF,EAAW,GACtBC,EAAcD,EAAW,GACzBjE,OAAyB5B,IAAhB8F,EAA4B,GAAKA,EAE9CN,IACAC,EAAMpd,KAAK,CAAEiY,SAAUA,EAAUsB,OAAQA,EAAO5b,OAAS,IAAM4b,EAASA,IACxE8D,EAAOrd,KAAK6F,EACd,EACAiS,aAAc,SAAsBjS,EAAOzG,EAAGme,GAC5C,IAAIG,EAAcH,EAAItW,MAAM,KACxBgR,EAAWyF,EAAY,GACvBC,EAAeD,EAAY,GAC3BnE,OAA0B5B,IAAjBgG,EAA6B,GAAKA,EAE/CP,EAAMD,GAAS,CAAElF,SAAUA,EAAUsB,OAAQA,GAC7C8D,EAAOF,GAAStX,CAClB,EACA6W,GAAI,SAAYH,GACd,IAAIqB,EAAWT,EAAQZ,EAEnBqB,EAAW,GAAKA,EAAWP,EAAO1f,OAAS,IAI/Cwf,EAAQS,EACV,GAGN,EAKIlC,IAAiC,oBAAXnb,SAA0BA,OAAO0L,WAAY1L,OAAO0L,SAAS6I,eAKnF+I,EAAgBhC,EAHXH,EAAYnb,OAASuc,KAI1B,EAAWe,EAAcvB,SClLzB,EAAW1f,OAAOS,QAAU,SAAU8d,GAAU,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAI4X,EAAS1X,UAAUF,GAAI,IAAK,IAAIwE,KAAOoT,EAAcxY,OAAOK,UAAUC,eAAeC,KAAKiY,EAAQpT,KAAQmZ,EAAOnZ,GAAOoT,EAAOpT,GAAU,CAAE,OAAOmZ,CAAQ,EAE/P,SAASigG,EAAyBt9F,EAAKlX,GAAQ,IAAIuU,EAAS,CAAC,EAAG,IAAK,IAAI3d,KAAKsgB,EAAWlX,EAAK1G,QAAQ1C,IAAM,GAAkBZ,OAAOK,UAAUC,eAAeC,KAAK2gB,EAAKtgB,KAAc2d,EAAO3d,GAAKsgB,EAAItgB,IAAM,OAAO2d,CAAQ,CAE3N,SAASkgG,EAAgB35G,EAAU45G,GAAe,KAAM55G,aAAoB45G,GAAgB,MAAM,IAAIx7G,UAAU,oCAAwC,CAExJ,SAAS0hF,EAA2BhhF,EAAMrD,GAAQ,IAAKqD,EAAQ,MAAM,IAAI+6G,eAAe,6DAAgE,OAAOp+G,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BqD,EAAPrD,CAAa,CAE/O,SAASgkF,EAAUC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIvhF,UAAU,kEAAoEuhF,GAAeD,EAASnkF,UAAYL,OAAOqO,OAAOo2E,GAAcA,EAAWpkF,UAAW,CAAEuI,YAAa,CAAEjH,MAAO6iF,EAAU/oC,YAAY,EAAOipC,UAAU,EAAMC,cAAc,KAAeF,IAAYzkF,OAAOC,eAAiBD,OAAOC,eAAeukF,EAAUC,GAAcD,EAAStkF,UAAYukF,EAAY,CAY7e,IAAIm6B,EAAqB,SAA4Bl2G,EAAMolF,GACzD,IAAI+wB,GAAM,IAAAhlG,eAAci0E,GAExB,OADA+wB,EAAIjnE,YAAclvC,EACXm2G,CACT,EAIIC,EAAkBF,EAAmB,YAIrCvyC,EAAW,SAAkBzsD,GAC/B,IAAIpE,EAAWoE,EAAKpE,SACpB,OAAO,gBACLsjG,EAAgBj/C,SAChB,MACA,SAAUjkD,GACR,OAAOA,EAAUJ,EAASI,GAAW,gBACnCgtD,EACA,KACAptD,EAEJ,GAEJ,EAEIotD,EAAmB,SAAU79C,GAG/B,SAAS69C,IACP,IAAIm2C,EAAO/kG,EAEXykG,EAAgBx9G,KAAM2nE,GAEtB,IAAK,IAAIzlD,EAAOriB,UAAUC,OAAQ8yC,EAAO1zC,MAAMgjB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC3EwwB,EAAKxwB,GAAQviB,UAAUuiB,GAGzB,OAAe07F,EAAS/kG,EAAQ4qE,EAA2B3jF,KAAM8pB,EAAiBxqB,KAAKS,MAAM+pB,EAAkB,CAAC9pB,MAAM4c,OAAOg2B,KAAiB75B,EAAM/Q,MAAQ,CAC1J2S,QAAS5B,EAAMglG,aACf32D,KAAM,CAAE42D,SAAU,OACTr6B,EAA2B5qE,EAAnC+kG,EACL,CAiEA,OAhFAx6B,EAAU3b,EAAkB79C,GAiB5B69C,EAAiBvoE,UAAU2+G,WAAa,WACtC,IAAIE,EAAiBj+G,KAAK+c,MAAM/C,QAIhC,MAAO,CAAEyE,SAHMw/F,EAAex/F,SAGD7P,SAFdqvG,EAAervG,SAGhC,EAEA+4D,EAAiBvoE,UAAU8+G,kBAAoB,SAA2Br2G,EAAO8nC,GAC/E,IAAIwuE,EAAWt2G,GAKb,MAAMA,GAFNu2G,EAFgBp+G,KAAK+c,MAAM/C,QAAQyE,UAEzB5W,EAAM6X,IAAK,CAAElW,SAAS,GAIpC,EAEAm+D,EAAiBvoE,UAAUw6D,mBAAqB,SAA4BV,EAAWiR,GACjFA,EAAUxvD,QAAQ/L,WAAa5O,KAAKgI,MAAM2S,QAAQ/L,UACpD5O,KAAK+c,MAAM/C,QAAQoE,uBAEvB,EAEAupD,EAAiBvoE,UAAU+qB,kBAAoB,WAC7C,IAAI2gE,EAAS9qF,KAETonD,EAAOpnD,KAAKgI,MAAMo/C,KAClBptC,EAAUha,KAAK+c,MAAM/C,QAEzBA,EAAQoE,wBACRgpC,EAAK42D,SAAWhkG,EAAQqE,QAAO,WAC7B/d,QAAQC,UAAUU,MAAK,WAErB83D,uBAAsB,WACf+xB,EAAOuzB,WACVvzB,EAAOzgE,UAAS,WACd,MAAO,CAAE1P,QAASmwE,EAAOizB,aAC3B,GAEJ,GACF,GACF,GACF,EAEAp2C,EAAiBvoE,UAAUkrB,qBAAuB,WAChD,IAAI88B,EAAOpnD,KAAKgI,MAAMo/C,KAEtBpnD,KAAKq+G,WAAY,EACjBj3D,EAAK42D,UACP,EAEAr2C,EAAiBvoE,UAAUurB,OAAS,WAClC,IAAIhQ,EAAU3a,KAAKgI,MAAM2S,QACrBJ,EAAWva,KAAK+c,MAAMxC,SAE1B,OAAO,gBACLsjG,EAAgBvhG,SAChB,CAAE5b,MAAOia,GACW,mBAAbJ,EAA0BA,EAASI,GAAWJ,GAAY,KAErE,EAEOotD,CACT,CAlFuB,CAkFrB,aAKFA,EAAiB38C,aAAe,CAC9BhR,QAASgG,GAKX,IAAIs+F,EAAiB,SAAwB3nF,GAC3C,IAAI/hB,EAAM+hB,EAAM/hB,IACZ2F,EAAWoc,EAAMpc,SAEjB4E,EAAcvK,EAAIvS,QAAQ,KAE1B+X,OAAW,EACXsB,EAAS,GAUb,OAZmByD,GAAe,GAMhC/E,EAAWxF,EAAIrF,UAAU,EAAG4P,GAC5BzD,EAAS9G,EAAIrF,UAAU4P,IAEvB/E,EAAWxF,EAGN,gBACLipG,EAAgBvhG,SAChB,CACE5b,MAAO,CACLkO,SAAU,CACRwL,SAAUA,EACVsB,OAAQA,EACR+B,KAhBG,IAkBLgB,SAAU,WACR,MAAM,IAAIra,MAAM,yCAClB,IAGJmW,EAEJ,EAGIwwD,EAAc4yC,EAAmB,OAAQ,CAC3C3yC,QAAS,IACTC,SAAU,IACVxsD,SAAUuB,EAAcvB,WAKtB6sD,EAAS,SAAgBvuD,GAC3B,OAAO,gBACLguD,EAAYnM,SACZ,MACA,SAAU2/C,GACR,OAAO,gBACLnzC,EACA,MACA,SAAUozC,GACR,OAAO,gBAAoBC,EAAY,EAAS,CAAC,EAAGF,EAAaC,EAAiBzhG,GACpF,GAEJ,GAEJ,EAEI0hG,EAAa,SAAUC,GAGzB,SAASD,IAGP,OAFAjB,EAAgBx9G,KAAMy+G,GAEf96B,EAA2B3jF,KAAM0+G,EAAqB3+G,MAAMC,KAAMH,WAC3E,CAiFA,OAvFAyjF,EAAUm7B,EAAYC,GAQtBD,EAAWr/G,UAAUurB,OAAS,WAC5B,IAAIg0F,EAAS3+G,KAAK+c,MACdnO,EAAW+vG,EAAO/vG,SAClBgwG,EAAaD,EAAOlgG,SACpBwsD,EAAW0zC,EAAO1zC,SAClBpuC,EAAU8hF,EAAO9hF,QACjBtiB,EAAWokG,EAAOpkG,SAElBiV,GADUmvF,EAAO3zC,QACE2zC,EAAOh4F,WAC1BA,OAAiC7M,IAArB0V,EAAiC,MAAQA,EACrDqvF,EAAWtB,EAAyBoB,EAAQ,CAAC,WAAY,WAAY,WAAY,UAAW,WAAY,UAAW,cAEnHr+F,EAAS,mBAAuB/F,GAAUvR,QAAO,SAAU81G,EAAO52F,GACpE,IAAI5H,EAASy+F,GAAY9zC,EAAZ8zC,CAAsB72F,GACnC,OAAO42F,EAAMliG,OAAO0D,EACtB,GAAG,IACClG,EAAWxL,EAASwL,SAGpBmG,EAAQF,EAAKC,EAAQlG,GAEzB,GAAImG,EAAO,CACT,IAAIU,EAASV,EAAMU,OACfvB,EAAMa,EAAMb,IACZsB,EAAQT,EAAMS,MACd0M,EAAUnN,EAAMS,MAAMtgB,MAI1BuqE,EAAWjqD,EAAMne,QAAUooE,EAAWjqD,EAAMhT,KAAKxE,QAAQ,MAAO,IAEhE,IAAIuT,EAAQ,EAAS,CAAC,EAAGkE,EAAQ,CAC/BvB,IAAKA,EACL9Q,SAAUA,EACV6P,SAAU,SAAkBC,EAAIzN,GAC9B,OAAO2tG,EAAWr+G,EAAQme,EAAIgB,GAAMzO,EACtC,IAGEshC,EAAQ,eAAmB7kB,EAAS3Q,EAAO2Q,EAAQ3Q,MAAMxC,SAAW,gBACtE+wD,EACA,CAAE18D,SAAUA,EAAUiuB,QAASA,GAC/BnP,EAAQ3Q,MAAMxC,eACZT,GAGAklG,EAAeniF,EAAUoiF,EAAet4F,EAExCu4F,EAAeriF,EAAU,EAAS,CAAEnd,IAAKA,EAAK9Q,SAAUA,EAAU+X,UAAWA,GAAak4F,GAAYA,EAE1G,OAAO,gBACL9zC,EAAYzuD,SACZ,CACE5b,MAAO,CAAEsqE,QAAStrD,EAAKurD,SAAUA,EAAUxsD,SAAU1B,EAAM0B,WAE7D,gBACEugG,EACAE,EACA3sE,GAGN,CAcE,OAAO,IAEX,EAEOksE,CACT,CAzFiB,CAyFf,iBAEFA,EAAWzzF,aAAe,CACxB6R,SAAS,GAIX,IAAIsiF,EAAexB,EAAmB,SAElCsB,EAAe,SAAsBt3D,GACvC,IAAIjoC,EAAMioC,EAAMjoC,IACZ9Q,EAAW+4C,EAAM/4C,SACjB+X,EAAYghC,EAAMhhC,UAClBk4F,EAAWtB,EAAyB51D,EAAO,CAAC,MAAO,WAAY,cAEnE,OAAO,gBACLw3D,EAAavgD,SACb,MACA,SAAUwgD,GACR,OAAO,gBAAoBC,EAAkB,EAAS,CAAC,EAAGR,EAAU,CAClEl4F,UAAWA,EACXy4F,aAAcA,EACd1/F,IAAKA,EACL9Q,SAAUA,IAEd,GAEJ,EAGI0wG,GAAgB,EAChBC,EAAoB,EAEpBF,EAAmB,SAAUG,GAG/B,SAASH,IACP,IAAII,EAAQpwB,EAEZmuB,EAAgBx9G,KAAMq/G,GAEtB,IAAK,IAAI5pE,EAAQ51C,UAAUC,OAAQ8yC,EAAO1zC,MAAMu2C,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAChF9C,EAAK8C,GAAS71C,UAAU61C,GAG1B,OAAgB+pE,EAAUpwB,EAAS1L,EAA2B3jF,KAAMw/G,EAAkBlgH,KAAKS,MAAMy/G,EAAmB,CAACx/G,MAAM4c,OAAOg2B,KAAkBy8C,EAAOrnF,MAAQ,CAAC,EAAGqnF,EAAO+vB,aAAe,SAAU30F,IAChM4kE,EAAOrnF,MAAM03G,aAAej1F,GAC/BA,EAAKvD,OAET,EAAYy8D,EAA2B0L,EAApCowB,EACL,CA2FA,OA3GAn8B,EAAU+7B,EAAkBG,GAkB5BH,EAAiB90F,yBAA2B,SAAkC/B,EAAW2hD,GAEvF,GAD+B,MAAjBA,EAAUzqD,IAEtB,OAAO,EAAS,CACdggG,aAAa,GACZl3F,GAEH,IAAIm3F,EAAen3F,EAAU9I,MAAQyqD,EAAUzqD,IAC3CkgG,EAAkBz1C,EAAUv7D,SAASwL,WAAaoO,EAAU5Z,SAASwL,UAAYoO,EAAU5Z,SAASwL,WAAaoO,EAAU9I,IAC/H,OAAO,EAAS,CACdggG,YAAaC,GAAgBC,GAC5Bp3F,EAEP,EAEA62F,EAAiBjgH,UAAU+qB,kBAAoB,WAC7Co1F,IACAv/G,KAAKknB,OACP,EAEAm4F,EAAiBjgH,UAAUkrB,qBAAuB,WAEtB,MAD1Bi1F,IAEED,GAAgB,EAEpB,EAEAD,EAAiBjgH,UAAUw6D,mBAAqB,SAA4BV,EAAWiR,GACjFjR,EAAUtqD,WAAa5O,KAAK+c,MAAMnO,UAAY5O,KAAKgI,MAAM03G,aAC3D1/G,KAAKknB,OAET,EAEAm4F,EAAiBjgH,UAAU8nB,MAAQ,WAQjC,IAAIk4F,EAAep/G,KAAK+c,MAAMqiG,aAG1BA,EACFA,EAAap/G,KAAKyqB,MAEd60F,EACFA,GAAgB,EACPt/G,KAAKyqB,OAGTzqB,KAAKyqB,KAAKpT,SAASjJ,SAAS21B,gBAC/B/jC,KAAKyqB,KAAKvD,QAIlB,EAEAm4F,EAAiBjgH,UAAUurB,OAAS,WAClC,IAAIivE,EAAS55F,KAET6/G,EAAU7/G,KAAK+c,MAEf5F,GADW0oG,EAAQtlG,SACXslG,EAAQ1oG,OAEhB2oG,GADeD,EAAQT,aACHS,EAAQl5F,WAC5Bo5F,OAA6BjmG,IAAtBgmG,EAAkC,MAAQA,EAGjDjB,GAFMgB,EAAQngG,IACHmgG,EAAQjxG,SACR2uG,EAAyBsC,EAAS,CAAC,WAAY,QAAS,eAAgB,YAAa,MAAO,cAE3G,OAAO,gBACLE,EACA,EAAS,CACP5oG,MAAO,EAAS,CAAEgc,QAAS,QAAUhc,GACrC4P,SAAU,KACVzE,IAAK,SAAa1iB,GAChB,OAAOg6F,EAAOnvE,KAAO7qB,CACvB,GACCi/G,GACH,gBACEM,EAAa7iG,SACb,CAAE5b,MAAOV,KAAKo/G,cACdp/G,KAAK+c,MAAMxC,UAGjB,EAEO8kG,CACT,CA7GuB,CA6GrB,cAEF,OAASA,GAET,IAAI12G,EAAI,WAAc,EAGlBq3G,EAAa,kBAES,IAAfA,IACTA,EAAa,SAAoBv0G,GAC/B,OAAOA,CACT,GAGF,IAAIyxB,EAAO8iF,GAAW,SAAUn4D,EAAOvlC,GACrC,IAAIm7B,EAAWoK,EAAMpK,SACjB1gC,EAAQwgG,EAAyB11D,EAAO,CAAC,aAE7C,OAAO,gBACLkjB,EAAYnM,SACZ,MACA,SAAUqhD,GACOA,EAAMh1C,SAArB,IACID,EAAUi1C,EAAMj1C,QACpB,OAAO,gBACLI,EACA,MACA,SAAU80C,GACR,IAAItxG,EAAWsxG,EAAMtxG,SACjB6P,EAAWyhG,EAAMzhG,SAEjBC,EAAK3B,EAAM2B,GACX1W,EAAQ+U,EAAM/U,MACdwB,EAAUuT,EAAMvT,QAChB22G,EAAkBpjG,EAAMqjG,SACxBA,OAA+BtmG,IAApBqmG,EAAgCx3G,EAAIw3G,EAC/CE,EAAc9C,EAAyBxgG,EAAO,CAAC,KAAM,QAAS,UAAW,aAEzE3H,EAAO7U,EAAQme,EAAIssD,GACnBs1C,EAAcxiG,UAAU1I,GACxBmrG,EAAY3xG,EAASwL,WAAakmG,EAClCE,EAAqBx0G,EAAW4C,EAASwL,SAAUkmG,GAEvD,OAAO,gBAAoB,IAAK,EAAS,CACvCh+F,IAAKA,GAAOm7B,EACZ,eAAgB8iE,EAAY,YAASzmG,GACpCumG,EAAaD,EAAS,CAAEG,UAAWA,EAAWC,mBAAoBA,EAAoBprG,KAAMA,EAAMxG,SAAUA,IAAa,CAC1HwG,KAAMA,EACNkR,QAAS,SAAiB1C,GAExB,GADIy8F,EAAY/5F,SAAS+5F,EAAY/5F,QAAQ1C,GACzC68F,GAAe78F,GAAQ,CACzBA,EAAM+N,iBACN,IAAI+uF,EAAgBl3G,EACpB,GAAuB,kBAAZA,GAAyB+2G,EAAW,CAC7C,IAAII,EAAkB,EAAS,CAAC,EAAG/xG,EAAS5G,OAExC44G,GADMD,EAAgBx8G,IACVo5G,EAAyBoD,EAAiB,CAAC,SFtNhCE,EEwNI,EAAS,CAAC,EAAG74G,GFxNX84G,EEwNmBF,EAApDF,GFvNZK,EAAWhiH,OAAOgK,KAAK83G,IACX/gH,SAAWf,OAAOgK,KAAK+3G,GAAMhhH,QAAUihH,EAASC,OAAM,SAAU78G,GAC9E,OAAO28G,EAAKzhH,eAAe8E,IAAQ08G,EAAK18G,KAAS28G,EAAK38G,EACxD,GEqNc,CACAsa,EAASrJ,EAAM,CACbpN,MAAOA,EACPwB,QAASk3G,GAEb,CF9NO,IAAwBG,EAAMC,EAC7CC,CE8NM,IAEJ,GAEJ,GAEJ,IASA,SAASE,EAAgBvhG,GACvB1f,KAAK0f,IAAMA,CACb,CATAwd,EAAKyZ,YAAc,OAWnB,IAAIwnE,EAAa,SAAoB/7G,GACnC,OAAOA,aAAa6+G,CACtB,EAEIC,EAAa,SAAoBxiG,GACnC,MAAM,IAAIuiG,EAAgBviG,EAC5B,EAEIyiG,EAAe,SAAUC,GAG3B,SAASD,IAGP,OAFA3D,EAAgBx9G,KAAMmhH,GAEfx9B,EAA2B3jF,KAAMohH,EAAkBrhH,MAAMC,KAAMH,WACxE,CAqCA,OA3CAyjF,EAAU69B,EAAcC,GASxBD,EAAa/hH,UAAU+qB,kBAAoB,WACzC,IAAIk3F,EAAUrhH,KAAK+c,MACf0B,EAAW4iG,EAAQ5iG,SACnBC,EAAK2iG,EAAQ3iG,GAEb4iG,GADOD,EAAQ74G,KACG64G,EAAQ73G,SAC1BA,OAA8BsQ,IAApBwnG,GAAuCA,EACjDt5G,EAAQq5G,EAAQr5G,MAEhBgjE,GADUq2C,EAAQE,QACRF,EAAQr2C,SAClBjuD,EAAQwgG,EAAyB8D,EAAS,CAAC,WAAY,KAAM,OAAQ,UAAW,QAAS,UAAW,YAExG/gH,QAAQC,UAAUU,MAAK,WACrB,IAAIugH,EAAajhH,EAAQme,EAAIssD,GAC7BvsD,EAASs+F,EAAayE,EAAYzkG,GAAQ,CAAEvT,QAASA,EAASxB,MAAOA,GACvE,GACF,EAEAm5G,EAAa/hH,UAAUurB,OAAS,WAC9B,IAAI82F,EAAUzhH,KAAK+c,MAEf2B,GADW+iG,EAAQhjG,SACdgjG,EAAQ/iG,IAIb6iG,GAHOE,EAAQj5G,KACLi5G,EAAQj4G,QACVi4G,EAAQz5G,MACNy5G,EAAQF,SAClBv2C,EAAUy2C,EAAQz2C,QAClBjuD,EAAQwgG,EAAyBkE,EAAS,CAAC,WAAY,KAAM,OAAQ,UAAW,QAAS,UAAW,YAEpGD,EAAajhH,EAAQme,EAAIssD,GAE7B,OADKu2C,GAASL,EAAWnE,EAAayE,EAAYzkG,IAC3C,IACT,EAEOokG,CACT,CA7CmB,CA6CjB,aAEEO,EAAW,SAAkB3kG,GAC/B,OAAO,gBACLguD,EAAYnM,SACZ,MACA,SAAU+iD,GACR,IAAI32C,EAAU22C,EAAM32C,QACpB,OAAO,gBACLI,EACA,MACA,SAAUozC,GACR,OAAO,gBAAoB2C,EAAc,EAAS,CAAC,EAAG3C,EAAiB,CAAExzC,QAASA,GAAWjuD,GAC/F,GAEJ,GAEJ,EAQI6kG,EAAQ,SAAeC,GACzB,IAAI7zG,EAAO6zG,EAAM7zG,KACbuM,EAAWsnG,EAAMtnG,SACrB,OAAO,gBACLwwD,EAAYnM,SACZ,MACA,SAAUkjD,GACR,IAAI92C,EAAU82C,EAAM92C,QACpB,OAAO,gBACLI,EACA,MACA,SAAU22C,GACR,IAAItjG,EAAWsjG,EAAOtjG,SAClB7P,EAAWmzG,EAAOnzG,SAElBozG,EAAezhH,EAAQyN,EAAMg9D,GAC7BjqE,EAASwf,EAAMyhG,EAAcpzG,EAASwL,UAC1C,OAAOG,EAAS,CACdkE,SAAUA,EACV7P,SAAUA,EACV2R,MAAOxf,EAAS,EAAS,CAAC,EAAGA,EAAOkgB,OAAQ,CAC1CvB,IAAK3e,EAAO2e,IACZ1R,KAAMA,IACH,MAET,GAEJ,GAEJ,EAKIusD,GAAc,WAChB,IAAI5/C,GAAU,IAAA6B,YAAWqhG,GAEzB,IAAKljG,EACH,MAAM,IAAIvW,MAAM,8JAGlB,OAAOuW,EAAQ/L,QACjB,EAEIqzG,GAAc,WAChB,IAAItnG,GAAU,IAAA6B,YAAWuuD,GAEzB,IAAKpwD,EACH,MAAM,IAAIvW,MAAM,0JAGlB,OAAOuW,EAAQ8D,QACjB,EAEIyjG,GAAY,WACd,IAAIvnG,GAAU,IAAA6B,YAAWuuD,GAEzB,IAAKpwD,EACH,MAAM,IAAIvW,MAAM,4JAGlB,IAAIwK,EAAW2rD,KAEX+B,EAAU/7C,EAAM5F,EAAQswD,SAAUr8D,EAASwL,UAE/C,OAAOkiD,EAAUA,EAAQr7C,OAAS,IACpC,EAEIkhG,GAAW,SAAkBn0G,GAC/B,IAAKA,EACH,MAAM,IAAI5J,MAAM,4EAElB,IAAIuW,GAAU,IAAA6B,YAAWuuD,GAEzB,IAAKpwD,EACH,MAAM,IAAIvW,MAAM,2JAGlB,IAAIwK,EAAW2rD,KAEXynD,EAAezhH,EAAQyN,EAAM2M,EAAQqwD,SACrCjqE,EAASwf,EAAMyhG,EAAcpzG,EAASwL,UAC1C,OAAOrZ,EAAS,EAAS,CAAC,EAAGA,EAAOkgB,OAAQ,CAC1CvB,IAAK3e,EAAO2e,IACZ1R,KAAMA,IACH,IACP,EAIIo0G,GAAe,SAAsB7gE,GACvC,OAAOA,EAAI/3C,QAAQ,eAAgB,GACrC,EAEIu1G,GAAc,SAASA,EAAY9zC,GACrC,OAAO,SAAUv9C,GACf,IAAKA,EACH,OAAO,KAGT,GAAIA,EAAQje,OAAS,YAAkBie,EAAQ3Q,MAAMxC,SACnD,OAAO,eAAmBmT,EAAQ3Q,MAAMxC,SAAUwkG,EAAY9zC,IFze7C,IAA0BziE,EAAMkW,EACjDvX,EEgfF,GANEumB,EAAQ3Q,MAAM/O,MAAQ0f,EAAQ3Q,MAAMla,SAAW6qB,EAAQje,OAASiyG,GAAuN,KAAU,GAEhSh0F,EAAQje,OAASiyG,GAAch0F,EAAQ3Q,MAAMvU,MAASklB,EAAQ3Q,MAAM2B,IAAqN,KAAU,GAEnSgP,EAAQje,OAASiyG,IF/eyBl5G,EE+eKklB,EAAQ3Q,MAAMvU,KF/ebkW,EE+emBgP,EAAQ3Q,MAAM2B,GF9elFvX,EAAS,SAAgBwa,GAC3B,OAAOD,EAAUC,EACnB,EACiBhB,EAAWnY,GAAMrB,OAAOA,GAAQ6a,OAAOzY,KAAK,OAC9CoX,EAAWjC,GAAIvX,OAAOA,GAAQ6a,OAAOzY,KAAK,OE0eyQ,KAAU,GAEtUmkB,EAAQ3Q,MAAMla,QAChB,MAAO,CAAEnC,MAAOgtB,EAAS7qB,SAAS,GAGpC,IAAIw/G,EAAc30F,EAAQje,OAASiyG,EAAWh0F,EAAQ3Q,MAAMvU,KAAOklB,EAAQ3Q,MAAM/O,KAE7EA,EAAuB,MAAhBq0G,EAAsBp3C,EAAWm3C,GAAan3C,GAAY,IAAMm3C,GAAaC,GAExF,MAAO,CACL3hH,MAAOgtB,EACP7qB,QAAS6qB,EAAQ3Q,MAAMla,QACvBmL,KAAM0f,EAAQ3Q,MAAMxC,SAAW6nG,GAAap0G,GAAQ,KAAOA,EAE/D,CACF,EAEIyyG,GAAiB,SAAwB78F,GAC3C,OAAQA,EAAM4O,kBAAqC,IAAjB5O,EAAMuO,UAAkBvO,EAAM81B,SAAW91B,EAAM+1B,QAAU/1B,EAAMg2B,SAAWh2B,EAAMygB,SACpH,uCC/sBA,IAAIi+E,EAAU,EAAQ,QAMlBC,EAAgB,CAClBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACd13F,cAAc,EACd2rB,aAAa,EACbgsE,iBAAiB,EACjBC,0BAA0B,EAC1Br4F,0BAA0B,EAC1Bwe,QAAQ,EACRhe,WAAW,EACXtb,MAAM,GAEJozG,EAAgB,CAClBp7G,MAAM,EACN3H,QAAQ,EACRV,WAAW,EACX0jH,QAAQ,EACRC,QAAQ,EACRljH,WAAW,EACXmjH,OAAO,GASLC,EAAe,CACjB,UAAY,EACZC,SAAS,EACTl4F,cAAc,EACd2rB,aAAa,EACb5rB,WAAW,EACXtb,MAAM,GAEJ0zG,EAAe,CAAC,EAIpB,SAASC,EAAWz8F,GAElB,OAAI27F,EAAQe,OAAO18F,GACVs8F,EAIFE,EAAax8F,EAAoB,WAAM47F,CAChD,CAXAY,EAAab,EAAQgB,YAhBK,CACxB,UAAY,EACZ34F,QAAQ,EACRK,cAAc,EACd2rB,aAAa,EACb5rB,WAAW,GAYbo4F,EAAab,EAAQiB,MAAQN,EAY7B,IAAIlgH,EAAiBhE,OAAOgE,eACxB63F,EAAsB77F,OAAO67F,oBAC7Bt4F,EAAwBvD,OAAOuD,sBAC/B61D,EAA2Bp5D,OAAOo5D,yBAClClC,EAAiBl3D,OAAOk3D,eACxButD,EAAkBzkH,OAAOK,UAsC7BksD,EAAOxoD,QArCP,SAAS2gH,EAAqBC,EAAiBC,EAAiBljF,GAC9D,GAA+B,iBAApBkjF,EAA8B,CAEvC,GAAIH,EAAiB,CACnB,IAAII,EAAqB3tD,EAAe0tD,GAEpCC,GAAsBA,IAAuBJ,GAC/CC,EAAqBC,EAAiBE,EAAoBnjF,EAE9D,CAEA,IAAI13B,EAAO6xF,EAAoB+oB,GAE3BrhH,IACFyG,EAAOA,EAAK6T,OAAOta,EAAsBqhH,KAM3C,IAHA,IAAIE,EAAgBT,EAAWM,GAC3BI,EAAgBV,EAAWO,GAEtBhkH,EAAI,EAAGA,EAAIoJ,EAAKjJ,SAAUH,EAAG,CACpC,IAAIwE,EAAM4E,EAAKpJ,GAEf,KAAKkjH,EAAc1+G,IAAUs8B,GAAaA,EAAUt8B,IAAW2/G,GAAiBA,EAAc3/G,IAAW0/G,GAAiBA,EAAc1/G,IAAO,CAC7I,IAAI4/G,EAAa5rD,EAAyBwrD,EAAiBx/G,GAE3D,IAEEpB,EAAe2gH,EAAiBv/G,EAAK4/G,EAC1B,CAAX,MAAOljH,GAAI,CACf,CACF,CACF,CAEA,OAAO6iH,CACT,qCC3Fa,IAAI5kH,EAAE,mBAAoB+C,QAAQA,OAAOq6C,IAAIl4C,EAAElF,EAAE+C,OAAOq6C,IAAI,iBAAiB,MAAMr9C,EAAEC,EAAE+C,OAAOq6C,IAAI,gBAAgB,MAAMr7C,EAAE/B,EAAE+C,OAAOq6C,IAAI,kBAAkB,MAAM96C,EAAEtC,EAAE+C,OAAOq6C,IAAI,qBAAqB,MAAM56C,EAAExC,EAAE+C,OAAOq6C,IAAI,kBAAkB,MAAMh2C,EAAEpH,EAAE+C,OAAOq6C,IAAI,kBAAkB,MAAMvzC,EAAE7J,EAAE+C,OAAOq6C,IAAI,iBAAiB,MAAM/2C,EAAErG,EAAE+C,OAAOq6C,IAAI,oBAAoB,MAAM/1C,EAAErH,EAAE+C,OAAOq6C,IAAI,yBAAyB,MAAMt8C,EAAEd,EAAE+C,OAAOq6C,IAAI,qBAAqB,MAAM/8C,EAAEL,EAAE+C,OAAOq6C,IAAI,kBAAkB,MAAM5rC,EAAExR,EACpf+C,OAAOq6C,IAAI,uBAAuB,MAAMn4C,EAAEjF,EAAE+C,OAAOq6C,IAAI,cAAc,MAAMz8C,EAAEX,EAAE+C,OAAOq6C,IAAI,cAAc,MAAMn6C,EAAEjD,EAAE+C,OAAOq6C,IAAI,eAAe,MAAM5zC,EAAExJ,EAAE+C,OAAOq6C,IAAI,qBAAqB,MAAMhwC,EAAEpN,EAAE+C,OAAOq6C,IAAI,mBAAmB,MAAM76C,EAAEvC,EAAE+C,OAAOq6C,IAAI,eAAe,MAClQ,SAASrwC,EAAE/H,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIiB,EAAEjB,EAAEkgH,SAAS,OAAOj/G,GAAG,KAAKf,EAAE,OAAOF,EAAEA,EAAE2L,MAAQ,KAAKtK,EAAE,KAAKgB,EAAE,KAAKtF,EAAE,KAAKS,EAAE,KAAKF,EAAE,KAAKjC,EAAE,OAAO2E,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEkgH,UAAY,KAAKr7G,EAAE,KAAK/I,EAAE,KAAKH,EAAE,KAAKsE,EAAE,KAAKmC,EAAE,OAAOpC,EAAE,QAAQ,OAAOiB,GAAG,KAAKlG,EAAE,OAAOkG,EAAE,CAAC,CAAC,SAAS+K,EAAEhM,GAAG,OAAO+H,EAAE/H,KAAKqC,CAAC,CAACrD,EAAQmhH,UAAU9+G,EAAErC,EAAQohH,eAAe/9G,EAAErD,EAAQqhH,gBAAgBx7G,EAAE7F,EAAQshH,gBAAgBl+G,EAAEpD,EAAQuhH,QAAQrgH,EAAElB,EAAQwgH,WAAW1jH,EAAEkD,EAAQwhH,SAASzjH,EAAEiC,EAAQyhH,KAAK9kH,EAAEqD,EAAQygH,KAAKx/G,EAAEjB,EAAQikC,OAAOloC,EAChfiE,EAAQ0hH,SAASljH,EAAEwB,EAAQ2hH,WAAWrjH,EAAE0B,EAAQ4hH,SAASvlH,EAAE2D,EAAQ6hH,YAAY,SAAS7gH,GAAG,OAAOgM,EAAEhM,IAAI+H,EAAE/H,KAAKqB,CAAC,EAAErC,EAAQ8hH,iBAAiB90G,EAAEhN,EAAQ+hH,kBAAkB,SAAS/gH,GAAG,OAAO+H,EAAE/H,KAAK6E,CAAC,EAAE7F,EAAQgiH,kBAAkB,SAAShhH,GAAG,OAAO+H,EAAE/H,KAAKoC,CAAC,EAAEpD,EAAQiiH,UAAU,SAASjhH,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEkgH,WAAWhgH,CAAC,EAAElB,EAAQkiH,aAAa,SAASlhH,GAAG,OAAO+H,EAAE/H,KAAKlE,CAAC,EAAEkD,EAAQmiH,WAAW,SAASnhH,GAAG,OAAO+H,EAAE/H,KAAKjD,CAAC,EAAEiC,EAAQoiH,OAAO,SAASphH,GAAG,OAAO+H,EAAE/H,KAAKrE,CAAC,EAC1dqD,EAAQugH,OAAO,SAASv/G,GAAG,OAAO+H,EAAE/H,KAAKC,CAAC,EAAEjB,EAAQqiH,SAAS,SAASrhH,GAAG,OAAO+H,EAAE/H,KAAKjF,CAAC,EAAEiE,EAAQsiH,WAAW,SAASthH,GAAG,OAAO+H,EAAE/H,KAAKxC,CAAC,EAAEwB,EAAQuiH,aAAa,SAASvhH,GAAG,OAAO+H,EAAE/H,KAAK1C,CAAC,EAAE0B,EAAQwiH,WAAW,SAASxhH,GAAG,OAAO+H,EAAE/H,KAAK3E,CAAC,EAC1O2D,EAAQyiH,mBAAmB,SAASzhH,GAAG,MAAM,iBAAkBA,GAAG,mBAAoBA,GAAGA,IAAIjD,GAAGiD,IAAIqC,GAAGrC,IAAIxC,GAAGwC,IAAI1C,GAAG0C,IAAI3E,GAAG2E,IAAIwM,GAAG,iBAAkBxM,GAAG,OAAOA,IAAIA,EAAEkgH,WAAWvkH,GAAGqE,EAAEkgH,WAAWjgH,GAAGD,EAAEkgH,WAAW99G,GAAGpC,EAAEkgH,WAAWr7G,GAAG7E,EAAEkgH,WAAWpkH,GAAGkE,EAAEkgH,WAAW17G,GAAGxE,EAAEkgH,WAAW93G,GAAGpI,EAAEkgH,WAAW3iH,GAAGyC,EAAEkgH,WAAWjiH,EAAE,EAAEe,EAAQ0iH,OAAO35G,uCCXjUy/C,EAAOxoD,QAAU,EAAjB,yCC6CFwoD,EAAOxoD,QA5BS,SAAS2iH,EAAW7xB,EAAQ9vF,EAAGhF,EAAGkF,EAAGnF,EAAGgC,EAAGO,GAOzD,IAAKqkH,EAAW,CACd,IAAI59G,EACJ,QAAeiS,IAAX85E,EACF/rF,EAAQ,IAAIzD,MACV,qIAGG,CACL,IAAIwuC,EAAO,CAAC9uC,EAAGhF,EAAGkF,EAAGnF,EAAGgC,EAAGO,GACvBskH,EAAW,GACf79G,EAAQ,IAAIzD,MACVwvF,EAAOpqF,QAAQ,OAAO,WAAa,OAAOopC,EAAK8yE,IAAa,MAExDj+G,KAAO,qBACf,CAGA,MADAI,EAAM89G,YAAc,EACd99G,CACR,CACF,uCC9CA,IAAI+9G,EAA4B,mBAAX/jH,QAAoD,iBAApBA,OAAOC,SAAwB,SAAUme,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAyB,mBAAXpe,QAAyBoe,EAAItY,cAAgB9F,QAAUoe,IAAQpe,OAAOzC,UAAY,gBAAkB6gB,CAAK,EAEhQ4lG,EAAgF,YAAjD,oBAAXnjH,OAAyB,YAAckjH,EAAQljH,UAAiG,YAAnD,oBAAb0L,SAA2B,YAAcw3G,EAAQx3G,YAAiD,IAAtBA,SAASuyB,SAEpM,2SCIImlF,EAA0B,CAAC,EAAEn+G,YACjC,SAASo+G,EAAW5uG,GAClB,GAAa,MAATA,GAAkC,iBAAVA,EAAoB,OAAOA,EACvD,GAAIjY,MAAMkU,QAAQ+D,GAAQ,OAAOA,EAAM9N,IAAI08G,GAC3C,GAAI5uG,EAAMxP,cAAgBm+G,EAAyB,OAAO3uG,EAC1D,IAAI2uC,EAAW,CAAC,EAEhB,IAAK,IAAIr+C,KAAQ0P,EACf2uC,EAASr+C,GAAQs+G,EAAW5uG,EAAM1P,IAGpC,OAAOq+C,CACT,CAMA,SAAS5G,EAAWz3C,EAAMo2C,EAAM5sC,QACjB,IAATxJ,IACFA,EAAO,WAGT,IAAIkzC,EAAM1pC,EAAQ0pC,IACdqrE,EAAWD,EAAWloE,GACtBf,EAAOnC,EAAIkB,QAAQ+B,aAAan2C,EAAMu+G,EAAU/0G,GACpD,OAAI6rC,IAEAr1C,EAAK,GAIF,KACT,CAEA,IAAI8B,EAAO,SAAc7I,EAAOulH,GAG9B,IAFA,IAAIllH,EAAS,GAEJpB,EAAI,EAAGA,EAAIe,EAAMZ,QAEP,eAAbY,EAAMf,GAFsBA,IAG5BoB,IAAQA,GAAUklH,GACtBllH,GAAUL,EAAMf,GAGlB,OAAOoB,CACT,EAWImlH,EAAa,SAAoBxlH,GACnC,IAAKxB,MAAMkU,QAAQ1S,GAAQ,OAAOA,EAClC,IAAIylH,EAAW,GAEf,GAAIjnH,MAAMkU,QAAQ1S,EAAM,IACtB,IAAK,IAAIf,EAAI,EAAGA,EAAIe,EAAMZ,QACP,eAAbY,EAAMf,GADsBA,IAE5BwmH,IAAUA,GAAY,MAC1BA,GAAY58G,EAAK7I,EAAMf,GAAI,UAExBwmH,EAAW58G,EAAK7I,EAAO,MAO9B,MAJgC,eAA5BA,EAAMA,EAAMZ,OAAS,KACvBqmH,GAAY,eAGPA,CACT,EAEA,SAASC,EAAqBn1G,GAC5B,OAAIA,IAA8B,IAAnBA,EAAQ2iF,OACd,CACLyyB,UAAW,GACXC,MAAO,IAIJ,CACLD,UAAW,KACXC,MAAO,IAEX,CAOA,SAASC,EAAUhlE,EAAKilE,GAGtB,IAFA,IAAIzlH,EAAS,GAEJue,EAAQ,EAAGA,EAAQknG,EAAQlnG,IAClCve,GAAU,KAGZ,OAAOA,EAASwgD,CAClB,CAMA,SAASklE,EAAMjoE,EAAUrnC,EAAOlG,QACd,IAAZA,IACFA,EAAU,CAAC,GAGb,IAAIlQ,EAAS,GACb,IAAKoW,EAAO,OAAOpW,EACnB,IACI2lH,EADWz1G,EACgBu1G,OAC3BA,OAA6B,IAApBE,EAA6B,EAAIA,EAC1C5lE,EAAY3pC,EAAM2pC,WAEC,IAAnB7vC,EAAQ2iF,SACV4yB,GAAUG,KAGZ,IAAIC,EAAwBR,EAAqBn1G,GAC7Co1G,EAAYO,EAAsBP,UAClCC,EAAQM,EAAsBN,MAIlC,GAFI9nE,GAAUgoE,IAEV1lE,EAEF,GAAI5hD,MAAMkU,QAAQ0tC,GAChB,IAAK,IAAIxhC,EAAQ,EAAGA,EAAQwhC,EAAUhhD,OAAQwf,IAAS,CACrD,IAAIunG,EAAW/lE,EAAUxhC,GAEzB,IAAK,IAAIgJ,KAAQu+F,EAAU,CACzB,IAAInmH,EAAQmmH,EAASv+F,GAER,MAAT5nB,IACEK,IAAQA,GAAUslH,GACtBtlH,GAAUwlH,EAAUj+F,EAAO,IAAMg+F,EAAQJ,EAAWxlH,GAAS,IAAK8lH,GAEtE,CACF,MAGA,IAAK,IAAIpoE,KAAS0C,EAAW,CAC3B,IAAIgmE,EAAShmE,EAAU1C,GAET,MAAV0oE,IACE/lH,IAAQA,GAAUslH,GACtBtlH,GAAUwlH,EAAUnoE,EAAQ,IAAMkoE,EAAQJ,EAAWY,GAAU,IAAKN,GAExE,CAIJ,IAAK,IAAIO,KAAU5vG,EAAO,CACxB,IAAI6vG,EAAU7vG,EAAM4vG,GAEL,MAAXC,GAA8B,cAAXD,IACjBhmH,IAAQA,GAAUslH,GACtBtlH,GAAUwlH,EAAUQ,EAAS,IAAMT,EAAQJ,EAAWc,GAAW,IAAKR,GAE1E,CAGA,OAAKzlH,GAAWkQ,EAAQg2G,aAEnBzoE,GAEDz9C,IAAQA,EAAS,GAAKslH,EAAYtlH,EAASslH,GACxCE,EAAU,GAAK/nE,EAAW8nE,EAAQ,IAAMvlH,IAF/CylH,GAEiED,EAAU,IAAKC,IALrCzlH,CAM7C,CAEA,IAAImmH,EAAc,+BACdC,EAA8B,oBAARjmE,KAAuBA,IAAI6yC,OACjDA,EAAS,SAAWxyC,GACtB,OAAO4lE,EAAeA,EAAa5lE,GAAOA,EAAI/3C,QAAQ09G,EAAa,OACpE,EAEGE,EAEJ,WACE,SAASA,EAAcjjH,EAAKgT,EAAOlG,GACjCjR,KAAKyP,KAAO,QACZzP,KAAKy+C,aAAc,EACnB,IAAIR,EAAQhtC,EAAQgtC,MAChBopE,EAAWp2G,EAAQo2G,SACvBrnH,KAAKmE,IAAMA,EACXnE,KAAKiR,QAAUA,EACfjR,KAAKmX,MAAQA,EACT8mC,EAAOj+C,KAAKisE,SAAWhuB,EAAMguB,SAAkBo7C,IAAUrnH,KAAKisE,SAAW,IAAIo7C,EACnF,CA0CA,OApCaD,EAAchoH,UAEpBkpB,KAAO,SAAc7gB,EAAM/G,EAAOuQ,GAEvC,QAAc6I,IAAVpZ,EAAqB,OAAOV,KAAKmX,MAAM1P,GAE3C,IAAI6/G,IAAQr2G,GAAUA,EAAQq2G,MAC9B,IAAKA,GAAStnH,KAAKmX,MAAM1P,KAAU/G,EAAO,OAAOV,KACjD,IAAIy4C,EAAW/3C,EAEVuQ,IAA+B,IAApBA,EAAQ0tC,UACtBlG,EAAWz4C,KAAKiR,QAAQ0pC,IAAIkB,QAAQkF,cAAcrgD,EAAO+G,EAAMzH,OAGjE,IAAIunH,EAAsB,MAAZ9uE,IAAiC,IAAbA,EAC9B+uE,EAAY//G,KAAQzH,KAAKmX,MAE7B,GAAIowG,IAAYC,IAAcF,EAAO,OAAOtnH,KAE5C,IAAI8L,EAASy7G,GAAWC,EAGxB,GAFI17G,SAAe9L,KAAKmX,MAAM1P,GAAWzH,KAAKmX,MAAM1P,GAAQgxC,EAExDz4C,KAAKynH,YAAcznH,KAAKisE,SAE1B,OADIngE,EAAQ9L,KAAKisE,SAAS/pC,eAAeliC,KAAKynH,WAAYhgH,GAAWzH,KAAKisE,SAAS9pC,YAAYniC,KAAKynH,WAAYhgH,EAAMgxC,GAC/Gz4C,KAGT,IAAIi+C,EAAQj+C,KAAKiR,QAAQgtC,MAMzB,OAJIA,GAASA,EAAMypE,SAIZ1nH,IACT,EAEOonH,CACT,CArDA,GAsDIO,EAEJ,SAAUC,GAGR,SAASD,EAAUxjH,EAAKgT,EAAOlG,GAC7B,IAAI8H,EAEJA,EAAQ6uG,EAAetoH,KAAKU,KAAMmE,EAAKgT,EAAOlG,IAAYjR,KAC1D,IAAIw+C,EAAWvtC,EAAQutC,SACnBc,EAASruC,EAAQquC,OACjBrB,EAAQhtC,EAAQgtC,MAChBsJ,EAAat2C,EAAQs2C,WASzB,OAPI/I,EACFzlC,EAAM8uG,aAAerpE,GACD,IAAXc,IACTvmC,EAAMxT,GAAKgiD,GAAW,QAAuB,OAAuBxuC,IAASklC,GAC7EllC,EAAM8uG,aAAe,IAAM9zB,EAAOh7E,EAAMxT,KAGnCwT,CACT,EAnBA,OAAe4uG,EAAWC,GA2B1B,IAAIE,EAAUH,EAAUvoH,UAwExB,OAnEA0oH,EAAQC,QAAU,SAAiBN,GACjC,IAAIx7C,EAAWjsE,KAAKisE,SAEpB,GAAIA,EAAU,CACZ,IAAIriE,EAAO5J,KAAKmyD,SAEhB,IAAK,IAAI7pC,KAAQ1e,EACfqiE,EAAS9pC,YAAYslF,EAAYn/F,EAAM1e,EAAK0e,GAEhD,CAEA,OAAOtoB,IACT,EAQA8nH,EAAQ31D,OAAS,WACf,IAAIvoD,EAAO,CAAC,EAEZ,IAAK,IAAI0e,KAAQtoB,KAAKmX,MAAO,CAC3B,IAAIzW,EAAQV,KAAKmX,MAAMmR,GACF,iBAAV5nB,EAAoBkJ,EAAK0e,GAAQ5nB,EAAexB,MAAMkU,QAAQ1S,KAAQkJ,EAAK0e,GAAQ49F,EAAWxlH,GAC3G,CAEA,OAAOkJ,CACT,EAMAk+G,EAAQpiH,SAAW,SAAkBuL,GACnC,IAAIgtC,EAAQj+C,KAAKiR,QAAQgtC,MAErB3jC,IADO2jC,GAAQA,EAAMhtC,QAAQ+rC,MACf,OAAS,CAAC,EAAG/rC,EAAS,CACtCg2G,YAAY,IACTh2G,EACL,OAAOw1G,EAAMzmH,KAAK6nH,aAAc7nH,KAAKmX,MAAOmD,EAC9C,GAEA,OAAaqtG,EAAW,CAAC,CACvBxjH,IAAK,WACLf,IAAK,SAAao7C,GAChB,GAAIA,IAAax+C,KAAK6nH,aAAtB,CACA7nH,KAAK6nH,aAAerpE,EACpB,IAAIytB,EAAWjsE,KAAKisE,SAChBw7C,EAAaznH,KAAKynH,WACtB,GAAKA,GAAex7C,EACHA,EAAS+7C,YAAYP,EAAYjpE,IAGhDytB,EAASltB,YAAY0oE,EAAYznH,KARO,CAU5C,EAKAmD,IAAK,WACH,OAAOnD,KAAK6nH,YACd,KAGKF,CACT,CArGA,CAqGEP,GACEa,EAAkB,CACpBrqE,aAAc,SAAsBz5C,EAAKgT,EAAOlG,GAC9C,MAAe,MAAX9M,EAAI,IAAc8M,EAAQ6wB,QAAkC,cAAxB7wB,EAAQ6wB,OAAOryB,KAC9C,KAGF,IAAIk4G,EAAUxjH,EAAKgT,EAAOlG,EACnC,GAGEi3G,EAAyB,CAC3B1B,OAAQ,EACRjsG,UAAU,GAER4tG,EAAW,YAKXC,EAEJ,WACE,SAASA,EAAgBjkH,EAAK22B,EAAQ7pB,GACpCjR,KAAKyP,KAAO,cACZzP,KAAKy+C,aAAc,EACnBz+C,KAAKmE,IAAMA,EACX,IAAIkkH,EAAUlkH,EAAIoc,MAAM4nG,GASxB,IAAK,IAAI1gH,KARTzH,KAAKq+C,GAAKgqE,EAAUA,EAAQ,GAAK,UAEjCroH,KAAKmiB,MAAQlR,EAAQxJ,MAAQ,IAAMzH,KAAKq+C,GACxCr+C,KAAKiR,QAAUA,EACfjR,KAAK0+C,MAAQ,IAAI4pE,GAAS,OAAS,CAAC,EAAGr3G,EAAS,CAC9C6wB,OAAQ9hC,QAGO86B,EACf96B,KAAK0+C,MAAM/3C,IAAIc,EAAMqzB,EAAOrzB,IAG9BzH,KAAK0+C,MAAMC,SACb,CAMA,IAAIz0B,EAASk+F,EAAgBhpH,UA0D7B,OAxDA8qB,EAAO00B,QAAU,SAAiBn3C,GAChC,OAAOzH,KAAK0+C,MAAMv7C,IAAIsE,EACxB,EAMAyiB,EAAO7nB,QAAU,SAAiBy6C,GAChC,OAAO98C,KAAK0+C,MAAMr8C,QAAQy6C,EAC5B,EAMA5yB,EAAO20B,QAAU,SAAiBp3C,EAAM0P,EAAOlG,GAC7C,IAAI6rC,EAAO98C,KAAK0+C,MAAM/3C,IAAIc,EAAM0P,EAAOlG,GACvC,OAAK6rC,GACL98C,KAAKiR,QAAQ0pC,IAAIkB,QAAQiD,cAAchC,GAChCA,GAFW,IAGpB,EAMA5yB,EAAO60B,YAAc,SAAqBt3C,EAAM0P,EAAOlG,GACrD,IAAI+tC,EAAUh/C,KAAK0+C,MAAMl1C,QAAQ/B,EAAM0P,EAAOlG,GAE9C,OADI+tC,GAASh/C,KAAKiR,QAAQ0pC,IAAIkB,QAAQiD,cAAcE,GAC7CA,CACT,EAMA90B,EAAOxkB,SAAW,SAAkBuL,QAClB,IAAZA,IACFA,EAAUi3G,GAGZ,IACI7B,EADwBD,EAAqBn1G,GACXo1G,UAKtC,GAHsB,MAAlBp1G,EAAQu1G,SAAgBv1G,EAAQu1G,OAAS0B,EAAuB1B,QAC5C,MAApBv1G,EAAQsJ,WAAkBtJ,EAAQsJ,SAAW2tG,EAAuB3tG,WAE/C,IAArBtJ,EAAQsJ,SACV,OAAOva,KAAKmiB,MAAQ,MAGtB,IAAI5H,EAAWva,KAAK0+C,MAAMh5C,SAASuL,GACnC,OAAOsJ,EAAWva,KAAKmiB,MAAQ,KAAOkkG,EAAY9rG,EAAW8rG,EAAY,IAAM,EACjF,EAEO+B,CACT,CApFA,GAqFIG,EAAY,sBACZC,EAAwB,CAC1B5qE,aAAc,SAAsBz5C,EAAK22B,EAAQ7pB,GAC/C,OAAOs3G,EAAUr2G,KAAK/N,GAAO,IAAIikH,EAAgBjkH,EAAK22B,EAAQ7pB,GAAW,IAC3E,GAGEw3G,EAA2B,CAC7BjC,OAAQ,EACRjsG,UAAU,GAERmuG,EAAa,wBAKbC,EAEJ,WACE,SAASA,EAAcxkH,EAAKykH,EAAQ33G,GAClCjR,KAAKyP,KAAO,YACZzP,KAAKq+C,GAAK,aACVr+C,KAAKy+C,aAAc,EACnB,IAAIoqE,EAAY1kH,EAAIoc,MAAMmoG,GAEtBG,GAAaA,EAAU,GACzB7oH,KAAKyH,KAAOohH,EAAU,GAEtB7oH,KAAKyH,KAAO,SAIdzH,KAAKmE,IAAMnE,KAAKyP,KAAO,IAAMzP,KAAKyH,KAClCzH,KAAKiR,QAAUA,EACf,IAAIquC,EAASruC,EAAQquC,OACjBrB,EAAQhtC,EAAQgtC,MAChBsJ,EAAat2C,EAAQs2C,WAMzB,IAAK,IAAI9/C,KALTzH,KAAKuF,IAAgB,IAAX+5C,EAAmBt/C,KAAKyH,KAAOssF,EAAOxsC,EAAWvnD,KAAMi+C,IACjEj+C,KAAK0+C,MAAQ,IAAI4pE,GAAS,OAAS,CAAC,EAAGr3G,EAAS,CAC9C6wB,OAAQ9hC,QAGO4oH,EACf5oH,KAAK0+C,MAAM/3C,IAAIc,EAAMmhH,EAAOnhH,IAAO,OAAS,CAAC,EAAGwJ,EAAS,CACvD6wB,OAAQ9hC,QAIZA,KAAK0+C,MAAMC,SACb,CA4BA,OAtBagqE,EAAcvpH,UAEpBsG,SAAW,SAAkBuL,QAClB,IAAZA,IACFA,EAAUw3G,GAGZ,IACIpC,EADwBD,EAAqBn1G,GACXo1G,UAKtC,GAHsB,MAAlBp1G,EAAQu1G,SAAgBv1G,EAAQu1G,OAASiC,EAAyBjC,QAC9C,MAApBv1G,EAAQsJ,WAAkBtJ,EAAQsJ,SAAWkuG,EAAyBluG,WAEjD,IAArBtJ,EAAQsJ,SACV,OAAOva,KAAKq+C,GAAK,IAAMr+C,KAAKuF,GAAK,MAGnC,IAAIgV,EAAWva,KAAK0+C,MAAMh5C,SAASuL,GAEnC,OADIsJ,IAAUA,EAAW,GAAK8rG,EAAY9rG,EAAW8rG,GAC9CrmH,KAAKq+C,GAAK,IAAMr+C,KAAKuF,GAAK,KAAOgV,EAAW,GACrD,EAEOouG,CACT,CA5DA,GA6DIG,EAAc,gBACdppE,EAAY,cAEZqpE,EAAyB,SAAgCx8E,EAAKy8E,GAChE,MAAmB,iBAARz8E,EACFA,EAAI/iC,QAAQk2C,GAAW,SAAUn/B,EAAO9Y,GAC7C,OAAIA,KAAQuhH,EACHA,EAAUvhH,GAIZ8Y,CACT,IAGKgsB,CACT,EAMI8T,EAAa,SAAoBlpC,EAAOmR,EAAM0gG,GAChD,IAAItoH,EAAQyW,EAAMmR,GACd2gG,EAAcF,EAAuBroH,EAAOsoH,GAE5CC,IAAgBvoH,IAClByW,EAAMmR,GAAQ2gG,EAElB,EAEIC,EAAsB,CACxBtrE,aAAc,SAAsBz5C,EAAKykH,EAAQ33G,GAC/C,MAAsB,iBAAR9M,GAAoB2kH,EAAY52G,KAAK/N,GAAO,IAAIwkH,EAAcxkH,EAAKykH,EAAQ33G,GAAW,IACtG,EAEA6sC,eAAgB,SAAwB3mC,EAAO2lC,EAAMmB,GACnD,MAAkB,UAAdnB,EAAKrtC,MAAqBwuC,GAC1B,mBAAoB9mC,GAAOkpC,EAAWlpC,EAAO,iBAAkB8mC,EAAM+qE,WACrE,cAAe7xG,GAAOkpC,EAAWlpC,EAAO,YAAa8mC,EAAM+qE,WACxD7xG,GAHqCA,CAI9C,EACA4pC,cAAe,SAAuBxU,EAAKjkB,EAAMw0B,GAC/C,IAAImB,EAAQnB,EAAK7rC,QAAQgtC,MAEzB,IAAKA,EACH,OAAO1R,EAGT,OAAQjkB,GACN,IAAK,YAGL,IAAK,iBACH,OAAOygG,EAAuBx8E,EAAK0R,EAAM+qE,WAE3C,QACE,OAAOz8E,EAEb,GAGE48E,EAEJ,SAAUvB,GAGR,SAASuB,IACP,OAAOvB,EAAe7nH,MAAMC,KAAMH,YAAcG,IAClD,CAgBA,OApBA,OAAempH,EAAcvB,GAMhBuB,EAAa/pH,UAKnBsG,SAAW,SAAkBuL,GAClC,IAAIgtC,EAAQj+C,KAAKiR,QAAQgtC,MAErB3jC,IADO2jC,GAAQA,EAAMhtC,QAAQ+rC,MACf,OAAS,CAAC,EAAG/rC,EAAS,CACtCg2G,YAAY,IACTh2G,EACL,OAAOw1G,EAAMzmH,KAAKmE,IAAKnE,KAAKmX,MAAOmD,EACrC,EAEO6uG,CACT,CAtBA,CAsBE/B,GACEgC,EAAqB,CACvBxrE,aAAc,SAAsBz5C,EAAKgT,EAAOlG,GAC9C,OAAIA,EAAQ6wB,QAAkC,cAAxB7wB,EAAQ6wB,OAAOryB,KAC5B,IAAI05G,EAAahlH,EAAKgT,EAAOlG,GAG/B,IACT,GAGEo4G,EAEJ,WACE,SAASA,EAAallH,EAAKgT,EAAOlG,GAChCjR,KAAKyP,KAAO,YACZzP,KAAKq+C,GAAK,aACVr+C,KAAKy+C,aAAc,EACnBz+C,KAAKmE,IAAMA,EACXnE,KAAKmX,MAAQA,EACbnX,KAAKiR,QAAUA,CACjB,CA0BA,OApBao4G,EAAajqH,UAEnBsG,SAAW,SAAkBuL,GAClC,IACIo1G,EADwBD,EAAqBn1G,GACXo1G,UAEtC,GAAInnH,MAAMkU,QAAQpT,KAAKmX,OAAQ,CAG7B,IAFA,IAAIoqC,EAAM,GAEDjiC,EAAQ,EAAGA,EAAQtf,KAAKmX,MAAMrX,OAAQwf,IAC7CiiC,GAAOklE,EAAMzmH,KAAKq+C,GAAIr+C,KAAKmX,MAAMmI,IAC7Btf,KAAKmX,MAAMmI,EAAQ,KAAIiiC,GAAO8kE,GAGpC,OAAO9kE,CACT,CAEA,OAAOklE,EAAMzmH,KAAKq+C,GAAIr+C,KAAKmX,MAAOlG,EACpC,EAEOo4G,CACT,CAnCA,GAoCIC,EAAc,aACdC,EAAqB,CACvB3rE,aAAc,SAAsBz5C,EAAKgT,EAAOlG,GAC9C,OAAOq4G,EAAYp3G,KAAK/N,GAAO,IAAIklH,EAAallH,EAAKgT,EAAOlG,GAAW,IACzE,GAGEu4G,EAEJ,WACE,SAASA,EAAarlH,EAAKgT,EAAOlG,GAChCjR,KAAKyP,KAAO,WACZzP,KAAKq+C,GAAK,YACVr+C,KAAKy+C,aAAc,EACnBz+C,KAAKmE,IAAMA,EACXnE,KAAKmX,MAAQA,EACbnX,KAAKiR,QAAUA,CACjB,CAYA,OANau4G,EAAapqH,UAEnBsG,SAAW,SAAkBuL,GAClC,OAAOw1G,EAAMzmH,KAAKmE,IAAKnE,KAAKmX,MAAOlG,EACrC,EAEOu4G,CACT,CArBA,GAsBIC,EAAqB,CACvB7rE,aAAc,SAAsBz5C,EAAKgT,EAAOlG,GAC9C,MAAe,cAAR9M,GAA+B,kBAARA,EAA0B,IAAIqlH,EAAarlH,EAAKgT,EAAOlG,GAAW,IAClG,GAGEy4G,EAEJ,WACE,SAASA,EAAWvlH,EAAKzD,EAAOuQ,GAC9BjR,KAAKyP,KAAO,SACZzP,KAAKy+C,aAAc,EACnBz+C,KAAKmE,IAAMA,EACXnE,KAAKU,MAAQA,EACbV,KAAKiR,QAAUA,CACjB,CAwBA,OAjBay4G,EAAWtqH,UAEjBsG,SAAW,SAAkBuL,GAClC,GAAI/R,MAAMkU,QAAQpT,KAAKU,OAAQ,CAG7B,IAFA,IAAI6gD,EAAM,GAEDjiC,EAAQ,EAAGA,EAAQtf,KAAKU,MAAMZ,OAAQwf,IAC7CiiC,GAAOvhD,KAAKmE,IAAM,IAAMnE,KAAKU,MAAM4e,GAAS,IACxCtf,KAAKU,MAAM4e,EAAQ,KAAIiiC,GAAO,MAGpC,OAAOA,CACT,CAEA,OAAOvhD,KAAKmE,IAAM,IAAMnE,KAAKU,MAAQ,GACvC,EAEOgpH,CACT,CAhCA,GAiCIC,EAAU,CACZ,YAAY,EACZ,WAAW,EACX,cAAc,GAQZ9tE,EAAU,CAACosE,EAAiBO,EAAuBU,EAAqBE,EAAoBG,EAAoBE,EAN7F,CACrB7rE,aAAc,SAAsBz5C,EAAKzD,EAAOuQ,GAC9C,OAAO9M,KAAOwlH,EAAU,IAAID,EAAWvlH,EAAKzD,EAAOuQ,GAAW,IAChE,IAKE24G,EAAuB,CACzBjrE,SAAS,GAEPkrE,EAAqB,CACvBvC,OAAO,EACP3oE,SAAS,GAQP2pE,EAEJ,WAKE,SAASA,EAASr3G,GAChBjR,KAAKqJ,IAAM,CAAC,EACZrJ,KAAK8pH,IAAM,CAAC,EACZ9pH,KAAKsf,MAAQ,GACbtf,KAAK+pH,QAAU,EACf/pH,KAAKiR,QAAUA,EACfjR,KAAKwiB,QAAUvR,EAAQuR,QACvBxiB,KAAKgpH,UAAY/3G,EAAQ+3G,SAC3B,CAQA,IAAI9+F,EAASo+F,EAASlpH,UA8OtB,OA5OA8qB,EAAOvjB,IAAM,SAAac,EAAMo2C,EAAMmsE,GACpC,IAAIC,EAAgBjqH,KAAKiR,QACrB6wB,EAASmoF,EAAcnoF,OACvBmc,EAAQgsE,EAAchsE,MACtBtD,EAAMsvE,EAActvE,IACpB0sE,EAAW4C,EAAc5C,SACzB9/D,EAAa0iE,EAAc1iE,WAC3BjI,EAAS2qE,EAAc3qE,OAEvBruC,GAAU,OAAS,CACrBuR,QAASxiB,KAAKwiB,QACdsf,OAAQA,EACRmc,MAAOA,EACPtD,IAAKA,EACL0sE,SAAUA,EACV9/D,WAAYA,EACZjI,OAAQA,EACR73C,KAAMA,EACNuhH,UAAWhpH,KAAKgpH,UAChBxqE,cAAU1kC,GACTkwG,GAKC7lH,EAAMsD,EAENA,KAAQzH,KAAK8pH,MACf3lH,EAAMsD,EAAO,KAAOzH,KAAK+pH,WAK3B/pH,KAAK8pH,IAAI3lH,GAAO05C,EAEZ15C,KAAOnE,KAAKwiB,UAEdvR,EAAQutC,SAAW,IAAMu1C,EAAO/zF,KAAKwiB,QAAQre,KAG/C,IAAI24C,EAAOoC,EAAW/6C,EAAK05C,EAAM5sC,GACjC,IAAK6rC,EAAM,OAAO,KAClB98C,KAAK4sE,SAAS9vB,GACd,IAAIx9B,OAA0BxF,IAAlB7I,EAAQqO,MAAsBtf,KAAKsf,MAAMxf,OAASmR,EAAQqO,MAEtE,OADAtf,KAAKsf,MAAMyjB,OAAOzjB,EAAO,EAAGw9B,GACrBA,CACT,EAQA5yB,EAAO1gB,QAAU,SAAiB/B,EAAMo2C,EAAMmsE,GAC5C,IAAIE,EAAUlqH,KAAKmD,IAAIsE,GACnB0iH,EAAWnqH,KAAKsf,MAAMjd,QAAQ6nH,GAE9BA,GACFlqH,KAAK8L,OAAOo+G,GAGd,IAAIj5G,EAAU+4G,EAId,OAHkB,IAAdG,IAAiBl5G,GAAU,OAAS,CAAC,EAAG+4G,EAAa,CACvD1qG,MAAO6qG,KAEFnqH,KAAK2G,IAAIc,EAAMo2C,EAAM5sC,EAC9B,EAMAiZ,EAAO/mB,IAAM,SAAainH,GACxB,OAAOpqH,KAAKqJ,IAAI+gH,EAClB,EAMAlgG,EAAOpe,OAAS,SAAgBgxC,GAC9B98C,KAAKqqH,WAAWvtE,UACT98C,KAAK8pH,IAAIhtE,EAAK34C,KACrBnE,KAAKsf,MAAMyjB,OAAO/iC,KAAKsf,MAAMjd,QAAQy6C,GAAO,EAC9C,EAMA5yB,EAAO7nB,QAAU,SAAiBy6C,GAChC,OAAO98C,KAAKsf,MAAMjd,QAAQy6C,EAC5B,EAMA5yB,EAAOy0B,QAAU,WACf,IAAI9C,EAAU77C,KAAKiR,QAAQ0pC,IAAIkB,QAG/B77C,KAAKsf,MAAMjY,MAAM,GAAGC,QAAQu0C,EAAQiD,cAAejD,EACrD,EAMA3xB,EAAO0iD,SAAW,SAAkB9vB,GAClC98C,KAAKqJ,IAAIyzC,EAAK34C,KAAO24C,EAEjBA,aAAgB6qE,GAClB3nH,KAAKqJ,IAAIyzC,EAAK0B,UAAY1B,EACtBA,EAAKv3C,KAAIvF,KAAKwiB,QAAQs6B,EAAK34C,KAAO24C,EAAKv3C,KAClCu3C,aAAgB6rE,GAAiB3oH,KAAKgpH,YAC/ChpH,KAAKgpH,UAAUlsE,EAAKr1C,MAAQq1C,EAAKv3C,GAErC,EAMA2kB,EAAOmgG,WAAa,SAAoBvtE,UAC/B98C,KAAKqJ,IAAIyzC,EAAK34C,KAEjB24C,aAAgB6qE,UACX3nH,KAAKqJ,IAAIyzC,EAAK0B,iBACdx+C,KAAKwiB,QAAQs6B,EAAK34C,MAChB24C,aAAgB6rE,UAClB3oH,KAAKgpH,UAAUlsE,EAAKr1C,KAE/B,EAMAyiB,EAAOw9B,OAAS,WACd,IAAIjgD,EACA6C,EACA2G,EAYJ,GAVkE,iBAAtDpR,UAAUC,QAAU,OAAIga,EAAYja,UAAU,KACxD4H,EAAO5H,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GACrDyK,EAAOzK,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GACrDoR,EAAUpR,UAAUC,QAAU,OAAIga,EAAYja,UAAU,KAExDyK,EAAOzK,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GACrDoR,EAAUpR,UAAUC,QAAU,OAAIga,EAAYja,UAAU,GACxD4H,EAAO,MAGLA,EACFzH,KAAKsqH,UAAUtqH,KAAKmD,IAAIsE,GAAO6C,EAAM2G,QAErC,IAAK,IAAIqO,EAAQ,EAAGA,EAAQtf,KAAKsf,MAAMxf,OAAQwf,IAC7Ctf,KAAKsqH,UAAUtqH,KAAKsf,MAAMA,GAAQhV,EAAM2G,EAG9C,EAMAiZ,EAAOogG,UAAY,SAAmBxtE,EAAMxyC,EAAM2G,QAChC,IAAZA,IACFA,EAAU24G,GAGZ,IAAIW,EAAiBvqH,KAAKiR,QACtB4qC,EAAU0uE,EAAe5vE,IAAIkB,QAC7BoC,EAAQssE,EAAetsE,MAE3B,GAAInB,EAAK4B,iBAAiB4pE,EACxBxrE,EAAK4B,MAAMgJ,OAAOp9C,EAAM2G,OAD1B,CAKA,IAAIkG,EAAQ2lC,EAAK3lC,MAGjB,GAFA0kC,EAAQmC,SAAS1zC,EAAMwyC,EAAMmB,EAAOhtC,GAEhCA,EAAQ0tC,SAAWxnC,GAASA,IAAU2lC,EAAK3lC,MAAO,CAIpD,IAAK,IAAImR,KAFTuzB,EAAQiC,eAAehB,EAAK3lC,MAAO2lC,EAAMmB,GAExBnB,EAAK3lC,MAAO,CAC3B,IAAIqzG,EAAY1tE,EAAK3lC,MAAMmR,GAIvBkiG,IAHYrzG,EAAMmR,IAIpBw0B,EAAKx0B,KAAKA,EAAMkiG,EAAWX,EAE/B,CAGA,IAAK,IAAIzrE,KAASjnC,EAAO,CACvB,IAAIszG,EAAa3tE,EAAK3lC,MAAMinC,GACxBssE,EAAavzG,EAAMinC,GAGL,MAAdqsE,GAAsBA,IAAeC,GACvC5tE,EAAKx0B,KAAK81B,EAAO,KAAMyrE,EAE3B,CACF,CA7BA,CA8BF,EAMA3/F,EAAOxkB,SAAW,SAAkBuL,GAQlC,IAPA,IAAIswC,EAAM,GACNtD,EAAQj+C,KAAKiR,QAAQgtC,MACrBjB,IAAOiB,GAAQA,EAAMhtC,QAAQ+rC,KAG7BqpE,EADwBD,EAAqBn1G,GACXo1G,UAE7B/mG,EAAQ,EAAGA,EAAQtf,KAAKsf,MAAMxf,OAAQwf,IAAS,CACtD,IACI+iC,EADOriD,KAAKsf,MAAMA,GACP5Z,SAASuL,IAEnBoxC,GAAQrF,KACTuE,IAAKA,GAAO8kE,GAChB9kE,GAAOc,EACT,CAEA,OAAOd,CACT,EAEO+mE,CACT,CApQA,GAsQIqC,EAEJ,WACE,SAASA,EAAW7vF,EAAQ7pB,GAkB1B,IAAK,IAAIxJ,KAjBTzH,KAAK0nH,UAAW,EAChB1nH,KAAK4qH,UAAW,EAChB5qH,KAAKwiB,QAAU,CAAC,EAChBxiB,KAAKgpH,UAAY,CAAC,EAClBhpH,KAAKiR,SAAU,OAAS,CAAC,EAAGA,EAAS,CACnCgtC,MAAOj+C,KACP8hC,OAAQ9hC,KACRwiB,QAASxiB,KAAKwiB,QACdwmG,UAAWhpH,KAAKgpH,YAGd/3G,EAAQo2G,WACVrnH,KAAKisE,SAAW,IAAIh7D,EAAQo2G,SAASrnH,OAGvCA,KAAK0+C,MAAQ,IAAI4pE,EAAStoH,KAAKiR,SAEd6pB,EACf96B,KAAK0+C,MAAM/3C,IAAIc,EAAMqzB,EAAOrzB,IAG9BzH,KAAK0+C,MAAMC,SACb,CAMA,IAAIz0B,EAASygG,EAAWvrH,UAoMxB,OAlMA8qB,EAAO+8B,OAAS,WACd,OAAIjnD,KAAK0nH,WACL1nH,KAAKisE,UAAUjsE,KAAKisE,SAAShlB,SACjCjnD,KAAK0nH,UAAW,EAEX1nH,KAAK4qH,UAAU5qH,KAAK6qH,UAJC7qH,IAM5B,EAMAkqB,EAAO09B,OAAS,WACd,OAAK5nD,KAAK0nH,UACN1nH,KAAKisE,UAAUjsE,KAAKisE,SAASrkB,SACjC5nD,KAAK0nH,UAAW,EACT1nH,MAHoBA,IAI7B,EAOAkqB,EAAO20B,QAAU,SAAiBp3C,EAAMo2C,EAAM5sC,GAC5C,IAAIwnF,EAAQz4F,KAAKy4F,MAIbz4F,KAAK0nH,WAAajvB,IAAOz4F,KAAKy4F,MAAQ,IAC1C,IAAI37C,EAAO98C,KAAK0+C,MAAM/3C,IAAIc,EAAMo2C,EAAM5sC,GACtC,OAAK6rC,GACL98C,KAAKiR,QAAQ0pC,IAAIkB,QAAQiD,cAAchC,GAEnC98C,KAAK0nH,SACF1nH,KAAK4qH,UAGNnyB,EAAOA,EAAMt2F,KAAK26C,IACpB98C,KAAK8qH,WAAWhuE,GAEZ98C,KAAKy4F,QACPz4F,KAAKy4F,MAAMnxF,QAAQtH,KAAK8qH,WAAY9qH,MACpCA,KAAKy4F,WAAQ3+E,IAGVgjC,GAXoBA,GAgB7B98C,KAAK4qH,UAAW,EACT9tE,IArBW,IAsBpB,EAMA5yB,EAAO60B,YAAc,SAAqBqrE,EAAgBvsE,EAAM5sC,GAC9D,IAAIi5G,EAAUlqH,KAAK0+C,MAAMv7C,IAAIinH,GAC7B,IAAKF,EAAS,OAAOlqH,KAAK6+C,QAAQurE,EAAgBvsE,EAAM5sC,GACxD,IAAI+tC,EAAUh/C,KAAK0+C,MAAMl1C,QAAQ4gH,EAAgBvsE,EAAM5sC,GAMvD,OAJI+tC,GACFh/C,KAAKiR,QAAQ0pC,IAAIkB,QAAQiD,cAAcE,GAGrCh/C,KAAK0nH,SACF1nH,KAAK4qH,UAGN5qH,KAAKisE,WACFjtB,EAEMkrE,EAAQzC,YACjBznH,KAAKisE,SAASltB,YAAYmrE,EAAQzC,WAAYzoE,GAF9Ch/C,KAAKisE,SAAS8+C,WAAWb,IAMtBlrE,GAXoBA,GAgB7Bh/C,KAAK4qH,UAAW,EACT5rE,EACT,EAMA90B,EAAO4gG,WAAa,SAAoBhuE,GAClC98C,KAAKisE,UACPjsE,KAAKisE,SAAS6+C,WAAWhuE,EAE7B,EAOA5yB,EAAO8gG,SAAW,SAAkBlwF,EAAQ7pB,GAC1C,IAAIg6G,EAAQ,GAEZ,IAAK,IAAIxjH,KAAQqzB,EAAQ,CACvB,IAAIgiB,EAAO98C,KAAK6+C,QAAQp3C,EAAMqzB,EAAOrzB,GAAOwJ,GACxC6rC,GAAMmuE,EAAM9oH,KAAK26C,EACvB,CAEA,OAAOmuE,CACT,EAMA/gG,EAAO00B,QAAU,SAAiBwrE,GAChC,OAAOpqH,KAAK0+C,MAAMv7C,IAAIinH,EACxB,EAOAlgG,EAAO6gG,WAAa,SAAoBtjH,GACtC,IAAIq1C,EAAuB,iBAATr1C,EAAoBA,EAAOzH,KAAK0+C,MAAMv7C,IAAIsE,GAE5D,SAAKq1C,GAEL98C,KAAK0nH,WAAa5qE,EAAK2qE,cAIvBznH,KAAK0+C,MAAM5yC,OAAOgxC,KAEd98C,KAAK0nH,UAAY5qE,EAAK2qE,YAAcznH,KAAKisE,WACpCjsE,KAAKisE,SAAS8+C,WAAWjuE,EAAK2qE,YAIzC,EAMAv9F,EAAO7nB,QAAU,SAAiBy6C,GAChC,OAAO98C,KAAK0+C,MAAMr8C,QAAQy6C,EAC5B,EAMA5yB,EAAO2gG,OAAS,WAGd,OAFI7qH,KAAKisE,UAAUjsE,KAAKisE,SAAS4+C,SACjC7qH,KAAK4qH,UAAW,EACT5qH,IACT,EAMAkqB,EAAOw9B,OAAS,WACd,IAAIwjE,EAIJ,OAFCA,EAAclrH,KAAK0+C,OAAOgJ,OAAO3nD,MAAMmrH,EAAarrH,WAE9CG,IACT,EAMAkqB,EAAOogG,UAAY,SAAmBxtE,EAAMxyC,EAAM2G,GAEhD,OADAjR,KAAK0+C,MAAM4rE,UAAUxtE,EAAMxyC,EAAM2G,GAC1BjR,IACT,EAMAkqB,EAAOxkB,SAAW,SAAkBuL,GAClC,OAAOjR,KAAK0+C,MAAMh5C,SAASuL,EAC7B,EAEO05G,CACT,CAnOA,GAqOIQ,EAEJ,WACE,SAASA,IACPnrH,KAAK67C,QAAU,CACb0uD,SAAU,GACVxP,SAAU,IAEZ/6F,KAAKorH,SAAW,CAAC,CACnB,CAEA,IAAIlhG,EAASihG,EAAgB/rH,UAgH7B,OA3GA8qB,EAAO0zB,aAAe,SAAsBn2C,EAAMo2C,EAAM5sC,GACtD,IAAK,IAAItR,EAAI,EAAGA,EAAIK,KAAKorH,SAASxtE,aAAa99C,OAAQH,IAAK,CAC1D,IAAIm9C,EAAO98C,KAAKorH,SAASxtE,aAAaj+C,GAAG8H,EAAMo2C,EAAM5sC,GACrD,GAAI6rC,EAAM,OAAOA,CACnB,CAEA,OAAO,IACT,EAMA5yB,EAAO40B,cAAgB,SAAuBhC,GAC5C,IAAIA,EAAK2B,YAAT,CAGA,IAFA,IAAIR,EAAQnB,EAAK7rC,QAAQgtC,MAEhBt+C,EAAI,EAAGA,EAAIK,KAAKorH,SAAStsE,cAAch/C,OAAQH,IACtDK,KAAKorH,SAAStsE,cAAcn/C,GAAGm9C,EAAMmB,GAGnCnB,EAAK3lC,OAAOnX,KAAK89C,eAAehB,EAAK3lC,MAAO2lC,EAAMmB,GACtDnB,EAAK2B,aAAc,CARS,CAS9B,EAMAv0B,EAAO4zB,eAAiB,SAAwB3mC,EAAO2lC,EAAMmB,GAC3D,IAAK,IAAIt+C,EAAI,EAAGA,EAAIK,KAAKorH,SAASttE,eAAeh+C,OAAQH,IACvDm9C,EAAK3lC,MAAQnX,KAAKorH,SAASttE,eAAen+C,GAAGm9C,EAAK3lC,MAAO2lC,EAAMmB,EAEnE,EAMA/zB,EAAOmhG,eAAiB,SAAwBptE,GAC9C,IAAK,IAAIt+C,EAAI,EAAGA,EAAIK,KAAKorH,SAASC,eAAevrH,OAAQH,IACvDK,KAAKorH,SAASC,eAAe1rH,GAAGs+C,EAEpC,EAMA/zB,EAAO8zB,SAAW,SAAkB1zC,EAAMwyC,EAAMmB,EAAOhtC,GACrD,IAAK,IAAItR,EAAI,EAAGA,EAAIK,KAAKorH,SAASptE,SAASl+C,OAAQH,IACjDK,KAAKorH,SAASptE,SAASr+C,GAAG2K,EAAMwyC,EAAMmB,EAAOhtC,EAEjD,EAMAiZ,EAAO62B,cAAgB,SAAuBrgD,EAAO4nB,EAAMw0B,GAGzD,IAFA,IAAIwuE,EAAiB5qH,EAEZf,EAAI,EAAGA,EAAIK,KAAKorH,SAASrqE,cAAcjhD,OAAQH,IACtD2rH,EAAiBtrH,KAAKorH,SAASrqE,cAAcphD,GAAG2rH,EAAgBhjG,EAAMw0B,GAGxE,OAAOwuE,CACT,EAMAphG,EAAOsnC,IAAM,SAAa+5D,EAAWt6G,QACnB,IAAZA,IACFA,EAAU,CACRwnF,MAAO,aAIX,IAAI58C,EAAU77C,KAAK67C,QAAQ5qC,EAAQwnF,QAEC,IAAhC58C,EAAQx5C,QAAQkpH,KAIpB1vE,EAAQ15C,KAAKopH,GACbvrH,KAAKorH,SAAW,GAAGxuG,OAAO5c,KAAK67C,QAAQk/C,SAAU/6F,KAAK67C,QAAQ0uD,UAAUvhG,QAAO,SAAUoiH,EAAUtvD,GACjG,IAAK,IAAIr0D,KAAQq0D,EACXr0D,KAAQ2jH,GACVA,EAAS3jH,GAAMtF,KAAK25D,EAAOr0D,IAM/B,OAAO2jH,CACT,GAAG,CACDxtE,aAAc,GACdkB,cAAe,GACfhB,eAAgB,GAChButE,eAAgB,GAChBtqE,cAAe,GACf/C,SAAU,KAEd,EAEOmtE,CACT,CA1HA,GAgIIK,EAEJ,WACE,SAASA,IACPxrH,KAAKorH,SAAW,EAClB,CAEA,IAAIlhG,EAASshG,EAAepsH,UAgF5B,OA3EA8qB,EAAOvjB,IAAM,SAAas3C,GACxB,IAAImtE,EAAWprH,KAAKorH,SAChB9rG,EAAQ2+B,EAAMhtC,QAAQqO,MAC1B,IAAiC,IAA7B8rG,EAAS/oH,QAAQ47C,GAErB,GAAwB,IAApBmtE,EAAStrH,QAAgBwf,GAAStf,KAAKsf,MACzC8rG,EAASjpH,KAAK87C,QAKhB,IAAK,IAAIt+C,EAAI,EAAGA,EAAIyrH,EAAStrH,OAAQH,IACnC,GAAIyrH,EAASzrH,GAAGsR,QAAQqO,MAAQA,EAE9B,YADA8rG,EAASroF,OAAOpjC,EAAG,EAAGs+C,EAI5B,EAMA/zB,EAAO4kE,MAAQ,WACb9uF,KAAKorH,SAAW,EAClB,EAMAlhG,EAAOpe,OAAS,SAAgBmyC,GAC9B,IAAI3+B,EAAQtf,KAAKorH,SAAS/oH,QAAQ47C,GAClCj+C,KAAKorH,SAASroF,OAAOzjB,EAAO,EAC9B,EAMA4K,EAAOxkB,SAAW,SAAkBo4G,GAUlC,IATA,IAAIn/F,OAAiB,IAAVm/F,EAAmB,CAAC,EAAIA,EAC/B4J,EAAW/oG,EAAK+oG,SAChBz2G,GAAU,OAA8B0N,EAAM,CAAC,aAG/C0nG,EADwBD,EAAqBn1G,GACXo1G,UAElChkE,EAAM,GAED1iD,EAAI,EAAGA,EAAIK,KAAKorH,SAAStrH,OAAQH,IAAK,CAC7C,IAAIs+C,EAAQj+C,KAAKorH,SAASzrH,GAEV,MAAZ+nH,GAAoBzpE,EAAMypE,WAAaA,IAIvCrlE,IAAKA,GAAOgkE,GAChBhkE,GAAOpE,EAAMv4C,SAASuL,GACxB,CAEA,OAAOoxC,CACT,GAEA,OAAampE,EAAgB,CAAC,CAC5BrnH,IAAK,QAKLhB,IAAK,WACH,OAAgC,IAAzBnD,KAAKorH,SAAStrH,OAAe,EAAIE,KAAKorH,SAASprH,KAAKorH,SAAStrH,OAAS,GAAGmR,QAAQqO,KAC1F,KAGKksG,CACT,CAtFA,GA+FIC,EAAS,IAAID,EAcbE,EAAqC,oBAAfjpH,WAA6BA,WAA+B,oBAAXC,QAA0BA,OAAOsC,OAASA,KAAOtC,OAAyB,oBAATC,MAAwBA,KAAKqC,OAASA,KAAOrC,KAAOgpH,SAAS,cAATA,GAE5LzjC,GAAK,mCACe,MAApBwjC,EAAaxjC,MAAawjC,EAAaxjC,IAAM,GAKjD,IAAI0jC,GAAWF,EAAaxjC,MASxB2jC,GAAmB,SAA0B56G,QAC/B,IAAZA,IACFA,EAAU,CAAC,GAGb,IAAI2rC,EAAc,EA8BlB,OA5BiB,SAAoBE,EAAMmB,GACzCrB,GAAe,EAMf,IAAIkvE,EAAQ,GACRpgH,EAAS,GAYb,OAVIuyC,IACEA,EAAMhtC,QAAQk3C,kBAChBz8C,EAASuyC,EAAMhtC,QAAQk3C,iBAGG,MAAxBlK,EAAMhtC,QAAQ0pC,IAAIp1C,KACpBumH,EAAQ38G,OAAO8uC,EAAMhtC,QAAQ0pC,IAAIp1C,MAIjC0L,EAAQ86G,OAEH,IAAMrgH,GAAU,KAAOkgH,GAAWE,EAAQlvE,EAG5ClxC,EAASoxC,EAAK34C,IAAM,IAAMynH,IAAYE,EAAQ,IAAMA,EAAQ,IAAM,IAAMlvE,CACjF,CAGF,EAMIovE,GAAU,SAAiBxtG,GAC7B,IAAI9d,EACJ,OAAO,WAEL,OADKA,IAAOA,EAAQ8d,KACb9d,CACT,CACF,EAMImnC,GAAmB,SAA0BokF,EAAS3jG,GACxD,IAEE,OAAI2jG,EAAQC,kBACHD,EAAQC,kBAAkB/oH,IAAImlB,GAGhC2jG,EAAQ90G,MAAM0wB,iBAAiBvf,EAIxC,CAHE,MAAOm8B,GAEP,MAAO,EACT,CACF,EAMItiB,GAAc,SAAqB8pF,EAAS3jG,EAAM5nB,GACpD,IACE,IAAIylH,EAAWzlH,EAOf,GALIxB,MAAMkU,QAAQ1S,KAChBylH,EAAWD,EAAWxlH,IAIpBurH,EAAQC,kBACVD,EAAQC,kBAAkB9oH,IAAIklB,EAAM69F,OAC/B,CACL,IAAIgG,EAAuBhG,EAAWA,EAAS9jH,QAAQ,eAAiB,EACpE+pH,EAA+BD,GAAwB,EAAIhG,EAAS9mG,OAAO,EAAG8sG,EAAuB,GAAKhG,EAC9G8F,EAAQ90G,MAAMgrB,YAAY7Z,EAAM8jG,EAA8BD,GAAwB,EAAI,YAAc,GAC1G,CAIF,CAHE,MAAO1nE,GAEP,OAAO,CACT,CAEA,OAAO,CACT,EAMIviB,GAAiB,SAAwB+pF,EAAS3jG,GACpD,IAEM2jG,EAAQC,kBACVD,EAAQC,kBAAkBvoH,OAAO2kB,GAEjC2jG,EAAQ90G,MAAM+qB,eAAe5Z,EAIjC,CAFE,MAAOm8B,GAET,CACF,EAMIujE,GAAc,SAAqBiE,EAASpE,GAI9C,OAHAoE,EAAQpE,aAAeA,EAGhBoE,EAAQpE,eAAiBA,CAClC,EAOIwE,GAAUL,IAAQ,WACpB,OAAO59G,SAAS+sD,cAAc,OAChC,IAuDA,SAASmxD,GAAar7G,GACpB,IAAIm6G,EAAWK,EAAOL,SAEtB,GAAIA,EAAStrH,OAAS,EAAG,CAEvB,IAAIm+C,EAvDR,SAAyBmtE,EAAUn6G,GACjC,IAAK,IAAItR,EAAI,EAAGA,EAAIyrH,EAAStrH,OAAQH,IAAK,CACxC,IAAIs+C,EAAQmtE,EAASzrH,GAErB,GAAIs+C,EAAMypE,UAAYzpE,EAAMhtC,QAAQqO,MAAQrO,EAAQqO,OAAS2+B,EAAMhtC,QAAQuqC,iBAAmBvqC,EAAQuqC,eACpG,OAAOyC,CAEX,CAEA,OAAO,IACT,CA6CgBsuE,CAAgBnB,EAAUn6G,GAEtC,GAAIgtC,GAASA,EAAMguB,SACjB,MAAO,CACLnqC,OAAQmc,EAAMguB,SAASv+C,QAAQiyC,WAC/Bl1C,KAAMwzB,EAAMguB,SAASv+C,SAOzB,GAFAuwB,EAjDJ,SAA0BmtE,EAAUn6G,GAClC,IAAK,IAAItR,EAAIyrH,EAAStrH,OAAS,EAAGH,GAAK,EAAGA,IAAK,CAC7C,IAAIs+C,EAAQmtE,EAASzrH,GAErB,GAAIs+C,EAAMypE,UAAYzpE,EAAMhtC,QAAQuqC,iBAAmBvqC,EAAQuqC,eAC7D,OAAOyC,CAEX,CAEA,OAAO,IACT,CAuCYuuE,CAAiBpB,EAAUn6G,GAE/BgtC,GAASA,EAAMguB,SACjB,MAAO,CACLnqC,OAAQmc,EAAMguB,SAASv+C,QAAQiyC,WAC/Bl1C,KAAMwzB,EAAMguB,SAASv+C,QAAQ++F,YAGnC,CAGA,IAAIjxE,EAAiBvqC,EAAQuqC,eAE7B,GAAIA,GAA4C,iBAAnBA,EAA6B,CACxD,IAAIkxE,EA/CR,SAAyBllF,GAGvB,IAFA,IAAIiU,EAAO4wE,KAEF1sH,EAAI,EAAGA,EAAI87C,EAAK4qB,WAAWvmE,OAAQH,IAAK,CAC/C,IAAI8qB,EAAOgxB,EAAK4qB,WAAW1mE,GAE3B,GAAsB,IAAlB8qB,EAAKkW,UAAkBlW,EAAKkiG,UAAUnhH,SAAWg8B,EACnD,OAAO/c,CAEX,CAEA,OAAO,IACT,CAmCkBmiG,CAAgBpxE,GAE9B,GAAIkxE,EACF,MAAO,CACL5qF,OAAQ4qF,EAAQ/sD,WAChBl1C,KAAMiiG,EAAQD,YAOpB,CAEA,OAAO,CACT,CA8BA,IAAII,GAAWb,IAAQ,WACrB,IAAIvhG,EAAOrc,SAAS+sD,cAAc,8BAClC,OAAO1wC,EAAOA,EAAKkY,aAAa,WAAa,IAC/C,IAEImqF,GAAc,SAAoB7/F,EAAW6vB,EAAMx9B,GACrD,IACM,eAAgB2N,EAClBA,EAAU69F,WAAWhuE,EAAMx9B,GAEpB,eAAgB2N,GACrBA,EAAU8/F,WAAWjwE,EAK3B,CAHE,MAAO2H,GAEP,OAAO,CACT,CAEA,OAAOx3B,EAAU+/F,SAAS1tG,EAC5B,EAEI2tG,GAA6B,SAAoChgG,EAAW3N,GAC9E,IAAI4tG,EAAWjgG,EAAU+/F,SAASltH,OAElC,YAAcga,IAAVwF,GAAuBA,EAAQ4tG,EAE1BA,EAGF5tG,CACT,EAWI6tG,GAEJ,WAGE,SAASA,EAAYlvE,GACnBj+C,KAAK6nC,iBAAmBA,GACxB7nC,KAAKmiC,YAAcA,GACnBniC,KAAKkiC,eAAiBA,GACtBliC,KAAKgoH,YAAcA,GACnBhoH,KAAKotH,kBAAmB,EACxBptH,KAAKgtH,SAAW,GAEZ/uE,GAAOwtE,EAAO9kH,IAAIs3C,GACtBj+C,KAAKi+C,MAAQA,EAEb,IAxBErc,EAwBEjjB,EAAO3e,KAAKi+C,MAAQj+C,KAAKi+C,MAAMhtC,QAAU,CAAC,EAC1Co8G,EAAQ1uG,EAAK0uG,MACb/kE,EAAO3pC,EAAK2pC,KACZ56B,EAAU/O,EAAK+O,QAEnB1tB,KAAK0tB,QAAUA,KA7BbkU,EAAKxzB,SAAS6I,cAAc,UAI7BwyD,YAAc,KACV7nC,GAyBL5hC,KAAK0tB,QAAQxW,aAAa,WAAY,IAClCm2G,GAAOrtH,KAAK0tB,QAAQxW,aAAa,QAASm2G,GAC1C/kE,GAAMtoD,KAAK0tB,QAAQxW,aAAa,YAAaoxC,GACjD,IAAIh1C,EAAQu5G,KACRv5G,GAAOtT,KAAK0tB,QAAQxW,aAAa,QAAS5D,EAChD,CAMA,IAAI4W,EAASijG,EAAY/tH,UA2JzB,OAzJA8qB,EAAO+8B,OAAS,WAEd,IAAIjnD,KAAK0tB,QAAQiyC,YAAe3/D,KAAKi+C,MAArC,EAtGJ,SAAqB9mC,EAAOlG,GAC1B,IAAIuqC,EAAiBvqC,EAAQuqC,eACzB8xE,EAAWhB,GAAar7G,GAE5B,IAAiB,IAAbq8G,GAAsBA,EAASxrF,OACjCwrF,EAASxrF,OAAO6Z,aAAaxkC,EAAOm2G,EAAS7iG,WAK/C,GAAI+wB,GAAqD,iBAA5BA,EAAe7a,SAA5C,CACE,IAAI4sF,EAAwB/xE,EACxBmkB,EAAa4tD,EAAsB5tD,WACnCA,GAAYA,EAAWhkB,aAAaxkC,EAAOo2G,EAAsBd,YAEvE,MAEAJ,KAAU70G,YAAYL,EACxB,CAqFIq2G,CAAYxtH,KAAK0tB,QAAS1tB,KAAKi+C,MAAMhtC,SAGrC,IAAI25G,EAAWr/G,QAAQvL,KAAKi+C,OAASj+C,KAAKi+C,MAAM2sE,UAE5C5qH,KAAKotH,kBAAoBxC,IAC3B5qH,KAAKotH,kBAAmB,EACxBptH,KAAK6qH,SAR2C,CAUpD,EAMA3gG,EAAO09B,OAAS,WACd,GAAK5nD,KAAKi+C,MAAV,CACA,IAAI0hB,EAAa3/D,KAAK0tB,QAAQiyC,WAC1BA,GAAYA,EAAWroD,YAAYtX,KAAK0tB,SAGxC1tB,KAAKi+C,MAAMhtC,QAAQ+rC,OACrBh9C,KAAKgtH,SAAW,GAChBhtH,KAAK0tB,QAAQ+7C,YAAc,KAPN,CASzB,EAMAv/C,EAAO2gG,OAAS,WACd,IAAI5sE,EAAQj+C,KAAKi+C,MACZA,IAEDA,EAAMhtC,QAAQ+rC,KAChBh9C,KAAKytH,YAAYxvE,EAAMS,OAIzB1+C,KAAK0tB,QAAQ+7C,YAAc,KAAOxrB,EAAMv4C,WAAa,KACvD,EAMAwkB,EAAOujG,YAAc,SAAqB/uE,EAAOgvE,GAC/C,IAAK,IAAI/tH,EAAI,EAAGA,EAAI++C,EAAMp/B,MAAMxf,OAAQH,IACtCK,KAAK8qH,WAAWpsE,EAAMp/B,MAAM3f,GAAIA,EAAG+tH,EAEvC,EAMAxjG,EAAO4gG,WAAa,SAAoBhuE,EAAMx9B,EAAOouG,GAKnD,QAJqB,IAAjBA,IACFA,EAAe1tH,KAAK0tB,QAAQuwB,OAG1BnB,EAAK4B,MAAO,CACd,IAAI5c,EAASgb,EACT6wE,EAAqBD,EAEzB,GAAkB,gBAAd5wE,EAAKrtC,MAAwC,cAAdqtC,EAAKrtC,KAAsB,CAC5D,IAAIm+G,EAAkBX,GAA2BS,EAAcpuG,GAO/D,IAA2B,KAJ3BquG,EAAqBb,GAAYY,EAAc5rF,EAAOp8B,SAAS,CAC7D6U,UAAU,IACRqzG,IAGF,OAAO,EAGT5tH,KAAK6tH,WAAW/wE,EAAM8wE,EAAiBD,EACzC,CAGA,OADA3tH,KAAKytH,YAAY3rF,EAAO4c,MAAOivE,GACxBA,CACT,CAEA,IAAIG,EAAUhxE,EAAKp3C,WACnB,IAAKooH,EAAS,OAAO,EACrB,IAAIC,EAAiBd,GAA2BS,EAAcpuG,GAE1D0uG,EAAalB,GAAYY,EAAcI,EAASC,GAEpD,OAAmB,IAAfC,IAIJhuH,KAAKotH,kBAAmB,EACxBptH,KAAK6tH,WAAW/wE,EAAMixE,EAAgBC,GAC/BA,EACT,EAEA9jG,EAAO2jG,WAAa,SAAoB/wE,EAAMx9B,EAAO2sG,GACnDnvE,EAAK2qE,WAAawE,EAGdnvE,EAAK7rC,QAAQ6wB,kBAAkB6oF,GACjC3qH,KAAKgtH,SAASjqF,OAAOzjB,EAAO,EAAG2sG,EAEnC,EAMA/hG,EAAO6gG,WAAa,SAAoBkB,GACtC,IAAIhuE,EAAQj+C,KAAK0tB,QAAQuwB,MACrB3+B,EAAQtf,KAAKqC,QAAQ4pH,GACzB,OAAe,IAAX3sG,IACJ2+B,EAAM8sE,WAAWzrG,GACjBtf,KAAKgtH,SAASjqF,OAAOzjB,EAAO,IACrB,EACT,EAMA4K,EAAO7nB,QAAU,SAAiB4pH,GAChC,OAAOjsH,KAAKgtH,SAAS3qH,QAAQ4pH,EAC/B,EAMA/hG,EAAO60B,YAAc,SAAqBktE,EAASnvE,GACjD,IAAIx9B,EAAQtf,KAAKqC,QAAQ4pH,GACzB,OAAe,IAAX3sG,IACJtf,KAAK0tB,QAAQuwB,MAAM8sE,WAAWzrG,GAC9Btf,KAAKgtH,SAASjqF,OAAOzjB,EAAO,GACrBtf,KAAK8qH,WAAWhuE,EAAMx9B,GAC/B,EAMA4K,EAAO+jG,SAAW,WAChB,OAAOjuH,KAAK0tB,QAAQuwB,MAAM+uE,QAC5B,EAEOG,CACT,CA3LA,GA6LIe,GAAkB,EAElBC,GAEJ,WACE,SAASA,EAAIl9G,GACXjR,KAAKuF,GAAK2oH,KACVluH,KAAK0H,QAAU,SACf1H,KAAK67C,QAAU,IAAIsvE,EACnBnrH,KAAKiR,QAAU,CACb1L,GAAI,CACFwmH,QAAQ,GAEVF,iBAAkBA,GAClBxE,SAAU,IAAc8F,GAAc,KACtCtxE,QAAS,IAEX77C,KAAKunD,WAAaskE,GAAiB,CACjCE,QAAQ,IAGV,IAAK,IAAIpsH,EAAI,EAAGA,EAAIk8C,EAAQ/7C,OAAQH,IAClCK,KAAK67C,QAAQ2V,IAAI3V,EAAQl8C,GAAI,CAC3B84F,MAAO,aAIXz4F,KAAKouH,MAAMn9G,EACb,CAQA,IAAIiZ,EAASikG,EAAI/uH,UAuHjB,OArHA8qB,EAAOkkG,MAAQ,SAAen9G,GAyB5B,YAxBgB,IAAZA,IACFA,EAAU,CAAC,GAGTA,EAAQ46G,mBACV7rH,KAAKiR,QAAQ46G,iBAAmB56G,EAAQ46G,kBAGtC56G,EAAQ1L,KACVvF,KAAKiR,QAAQ1L,IAAK,OAAS,CAAC,EAAGvF,KAAKiR,QAAQ1L,GAAI0L,EAAQ1L,MAGtD0L,EAAQ46G,kBAAoB56G,EAAQ1L,MACtCvF,KAAKunD,WAAavnD,KAAKiR,QAAQ46G,iBAAiB7rH,KAAKiR,QAAQ1L,KAGjC,MAA1B0L,EAAQuqC,iBAAwBx7C,KAAKiR,QAAQuqC,eAAiBvqC,EAAQuqC,gBAEtE,aAAcvqC,IAChBjR,KAAKiR,QAAQo2G,SAAWp2G,EAAQo2G,UAI9Bp2G,EAAQ4qC,SAAS77C,KAAKwxD,IAAIzxD,MAAMC,KAAMiR,EAAQ4qC,SAC3C77C,IACT,EAMAkqB,EAAOs9B,iBAAmB,SAA0B1sB,EAAQ7pB,QAC1C,IAAZA,IACFA,EAAU,CAAC,GAGb,IACIqO,EADWrO,EACMqO,MAEA,iBAAVA,IACTA,EAAyB,IAAjBmsG,EAAOnsG,MAAc,EAAImsG,EAAOnsG,MAAQ,GAGlD,IAAI2+B,EAAQ,IAAI0sE,EAAW7vF,GAAQ,OAAS,CAAC,EAAG7pB,EAAS,CACvD0pC,IAAK36C,KACLunD,WAAYt2C,EAAQs2C,YAAcvnD,KAAKunD,WACvC/L,eAAgBx7C,KAAKiR,QAAQuqC,eAC7B6rE,SAAUrnH,KAAKiR,QAAQo2G,SACvB/nG,MAAOA,KAGT,OADAtf,KAAK67C,QAAQwvE,eAAeptE,GACrBA,CACT,EAMA/zB,EAAO49B,iBAAmB,SAA0B7J,GAGlD,OAFAA,EAAM2J,SACN6jE,EAAO3/G,OAAOmyC,GACPj+C,IACT,EAOAkqB,EAAOg1B,WAAa,SAAsBz3C,EAAM0P,EAAOlG,GAUrD,QATc,IAAVkG,IACFA,EAAQ,CAAC,QAGK,IAAZlG,IACFA,EAAU,CAAC,GAIO,iBAATxJ,EACT,OAAOzH,KAAKk/C,gBAAWplC,EAAWrS,EAAM0P,GAG1C,IAAI6yG,GAAc,OAAS,CAAC,EAAG/4G,EAAS,CACtCxJ,KAAMA,EACNkzC,IAAK36C,KACLqnH,SAAUrnH,KAAKiR,QAAQo2G,WAGpB2C,EAAYziE,aAAYyiE,EAAYziE,WAAavnD,KAAKunD,YACtDyiE,EAAYxnG,UAASwnG,EAAYxnG,QAAU,CAAC,GAC5CwnG,EAAYhB,YAAWgB,EAAYhB,UAAY,CAAC,GAErD,IAAIlsE,EAAOoC,EAAWz3C,EAAM0P,EAAO6yG,GAGnC,OADIltE,GAAM98C,KAAK67C,QAAQiD,cAAchC,GAC9BA,CACT,EAMA5yB,EAAOsnC,IAAM,WAGX,IAFA,IAAIz4C,EAAQ/Y,KAEHkiB,EAAOriB,UAAUC,OAAQ+7C,EAAU,IAAI38C,MAAMgjB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAClFy5B,EAAQz5B,GAAQviB,UAAUuiB,GAM5B,OAHAy5B,EAAQv0C,SAAQ,SAAUw0D,GACxB/iD,EAAM8iC,QAAQ2V,IAAIsK,EACpB,IACO97D,IACT,EAEOmuH,CACT,CAxJA,GA0JIE,GAAY,SAAmBp9G,GACjC,OAAO,IAAIk9G,GAAIl9G,EACjB,EA2EIq9G,GAAkC,iBAARptE,KAA2B,MAAPA,KAAe,WAAYA,IAK7E,SAASqtE,GAAiBzzF,GACxB,IAAIpc,EAAK,KAET,IAAK,IAAIva,KAAO22B,EAAQ,CACtB,IAAIp6B,EAAQo6B,EAAO32B,GACfsL,SAAc/O,EAElB,GAAa,aAAT+O,EACGiP,IAAIA,EAAK,CAAC,GACfA,EAAGva,GAAOzD,OACL,GAAa,WAAT+O,GAA+B,OAAV/O,IAAmBxB,MAAMkU,QAAQ1S,GAAQ,CACvE,IAAI4uF,EAAYi/B,GAAiB7tH,GAE7B4uF,IACG5wE,IAAIA,EAAK,CAAC,GACfA,EAAGva,GAAOmrF,EAEd,CACF,CAEA,OAAO5wE,CACT,CASY2vG,6BC7uEZ,IAIIG,EAJY,EAAQ,OAITC,CAHJ,EAAQ,QAGY,YAE/BnjE,EAAOxoD,QAAU0rH,0BCNjB,IAAIE,EAAY,EAAQ,QACpBC,EAAa,EAAQ,QACrBC,EAAU,EAAQ,QAClBC,EAAU,EAAQ,QAClBC,EAAU,EAAQ,QAStB,SAASC,EAAKtvG,GACZ,IAAIH,GAAS,EACTxf,EAAoB,MAAX2f,EAAkB,EAAIA,EAAQ3f,OAG3C,IADAE,KAAKsE,UACIgb,EAAQxf,GAAQ,CACvB,IAAIkvH,EAAQvvG,EAAQH,GACpBtf,KAAKoD,IAAI4rH,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAD,EAAK3vH,UAAUkF,MAAQoqH,EACvBK,EAAK3vH,UAAkB,OAAIuvH,EAC3BI,EAAK3vH,UAAU+D,IAAMyrH,EACrBG,EAAK3vH,UAAUmE,IAAMsrH,EACrBE,EAAK3vH,UAAUgE,IAAM0rH,EAErBxjE,EAAOxoD,QAAUisH,0BC/BjB,IAAIE,EAAiB,EAAQ,QACzBC,EAAkB,EAAQ,QAC1BC,EAAe,EAAQ,QACvBC,EAAe,EAAQ,QACvBC,EAAe,EAAQ,QAS3B,SAASC,EAAU7vG,GACjB,IAAIH,GAAS,EACTxf,EAAoB,MAAX2f,EAAkB,EAAIA,EAAQ3f,OAG3C,IADAE,KAAKsE,UACIgb,EAAQxf,GAAQ,CACvB,IAAIkvH,EAAQvvG,EAAQH,GACpBtf,KAAKoD,IAAI4rH,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAM,EAAUlwH,UAAUkF,MAAQ2qH,EAC5BK,EAAUlwH,UAAkB,OAAI8vH,EAChCI,EAAUlwH,UAAU+D,IAAMgsH,EAC1BG,EAAUlwH,UAAUmE,IAAM6rH,EAC1BE,EAAUlwH,UAAUgE,IAAMisH,EAE1B/jE,EAAOxoD,QAAUwsH,0BC/BjB,IAIIrsH,EAJY,EAAQ,OAIdwrH,CAHC,EAAQ,QAGO,OAE1BnjE,EAAOxoD,QAAUG,0BCNjB,IAAIssH,EAAgB,EAAQ,QACxBC,EAAiB,EAAQ,QACzBC,EAAc,EAAQ,OACtBC,EAAc,EAAQ,QACtBC,EAAc,EAAQ,QAS1B,SAASC,EAASnwG,GAChB,IAAIH,GAAS,EACTxf,EAAoB,MAAX2f,EAAkB,EAAIA,EAAQ3f,OAG3C,IADAE,KAAKsE,UACIgb,EAAQxf,GAAQ,CACvB,IAAIkvH,EAAQvvG,EAAQH,GACpBtf,KAAKoD,IAAI4rH,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAY,EAASxwH,UAAUkF,MAAQirH,EAC3BK,EAASxwH,UAAkB,OAAIowH,EAC/BI,EAASxwH,UAAU+D,IAAMssH,EACzBG,EAASxwH,UAAUmE,IAAMmsH,EACzBE,EAASxwH,UAAUgE,IAAMusH,EAEzBrkE,EAAOxoD,QAAU8sH,0BC/BjB,IAIItvH,EAJY,EAAQ,OAIVmuH,CAHH,EAAQ,QAGW,WAE9BnjE,EAAOxoD,QAAUxC,0BCNjB,IAII+E,EAJY,EAAQ,OAIdopH,CAHC,EAAQ,QAGO,OAE1BnjE,EAAOxoD,QAAUuC,0BCNjB,IAAIuqH,EAAW,EAAQ,QACnBC,EAAc,EAAQ,OACtBC,EAAc,EAAQ,QAU1B,SAASC,EAASnmG,GAChB,IAAItK,GAAS,EACTxf,EAAmB,MAAV8pB,EAAiB,EAAIA,EAAO9pB,OAGzC,IADAE,KAAKgwH,SAAW,IAAIJ,IACXtwG,EAAQxf,GACfE,KAAK2G,IAAIijB,EAAOtK,GAEpB,CAGAywG,EAAS3wH,UAAUuH,IAAMopH,EAAS3wH,UAAU+C,KAAO0tH,EACnDE,EAAS3wH,UAAUmE,IAAMusH,EAEzBxkE,EAAOxoD,QAAUitH,0BC1BjB,IAAIT,EAAY,EAAQ,QACpBW,EAAa,EAAQ,QACrBC,EAAc,EAAQ,QACtBC,EAAW,EAAQ,QACnBC,EAAW,EAAQ,QACnBC,EAAW,EAAQ,QASvB,SAASC,EAAM7wG,GACb,IAAInV,EAAOtK,KAAKgwH,SAAW,IAAIV,EAAU7vG,GACzCzf,KAAKkQ,KAAO5F,EAAK4F,IACnB,CAGAogH,EAAMlxH,UAAUkF,MAAQ2rH,EACxBK,EAAMlxH,UAAkB,OAAI8wH,EAC5BI,EAAMlxH,UAAU+D,IAAMgtH,EACtBG,EAAMlxH,UAAUmE,IAAM6sH,EACtBE,EAAMlxH,UAAUgE,IAAMitH,EAEtB/kE,EAAOxoD,QAAUwtH,0BC1BjB,IAGIzuH,EAHO,EAAQ,QAGDA,OAElBypD,EAAOxoD,QAAUjB,0BCLjB,IAGI6G,EAHO,EAAQ,QAGGA,WAEtB4iD,EAAOxoD,QAAU4F,yBCLjB,IAII4vD,EAJY,EAAQ,OAIVm2D,CAHH,EAAQ,QAGW,WAE9BnjE,EAAOxoD,QAAUw1D,sBCejBhN,EAAOxoD,QAZP,SAAmBg8G,EAAOyR,GAIxB,IAHA,IAAIjxG,GAAS,EACTxf,EAAkB,MAATg/G,EAAgB,EAAIA,EAAMh/G,SAE9Bwf,EAAQxf,IAC8B,IAAzCywH,EAASzR,EAAMx/F,GAAQA,EAAOw/F,KAIpC,OAAOA,CACT,sBCKAxzD,EAAOxoD,QAfP,SAAqBg8G,EAAO0R,GAM1B,IALA,IAAIlxG,GAAS,EACTxf,EAAkB,MAATg/G,EAAgB,EAAIA,EAAMh/G,OACnC2wH,EAAW,EACX1vH,EAAS,KAEJue,EAAQxf,GAAQ,CACvB,IAAIY,EAAQo+G,EAAMx/F,GACdkxG,EAAU9vH,EAAO4e,EAAOw/F,KAC1B/9G,EAAO0vH,KAAc/vH,EAEzB,CACA,OAAOK,CACT,yBCtBA,IAAI2vH,EAAY,EAAQ,QACpBC,EAAc,EAAQ,QACtBv9G,EAAU,EAAQ,QAClBmgD,EAAW,EAAQ,QACnBq9D,EAAU,EAAQ,QAClBC,EAAe,EAAQ,QAMvBxxH,EAHcN,OAAOK,UAGQC,eAqCjCisD,EAAOxoD,QA3BP,SAAuBpC,EAAOowH,GAC5B,IAAIC,EAAQ39G,EAAQ1S,GAChBswH,GAASD,GAASJ,EAAYjwH,GAC9BuwH,GAAUF,IAAUC,GAASz9D,EAAS7yD,GACtCwwH,GAAUH,IAAUC,IAAUC,GAAUJ,EAAanwH,GACrDywH,EAAcJ,GAASC,GAASC,GAAUC,EAC1CnwH,EAASowH,EAAcT,EAAUhwH,EAAMZ,OAAQqP,QAAU,GACzDrP,EAASiB,EAAOjB,OAEpB,IAAK,IAAIqE,KAAOzD,GACTowH,IAAazxH,EAAeC,KAAKoB,EAAOyD,IACvCgtH,IAEQ,UAAPhtH,GAEC8sH,IAAkB,UAAP9sH,GAA0B,UAAPA,IAE9B+sH,IAAkB,UAAP/sH,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDysH,EAAQzsH,EAAKrE,KAElBiB,EAAOoB,KAAKgC,GAGhB,OAAOpD,CACT,sBC1BAuqD,EAAOxoD,QAXP,SAAkBg8G,EAAOyR,GAKvB,IAJA,IAAIjxG,GAAS,EACTxf,EAAkB,MAATg/G,EAAgB,EAAIA,EAAMh/G,OACnCiB,EAAS7B,MAAMY,KAEVwf,EAAQxf,GACfiB,EAAOue,GAASixG,EAASzR,EAAMx/F,GAAQA,EAAOw/F,GAEhD,OAAO/9G,CACT,sBCCAuqD,EAAOxoD,QAXP,SAAmBg8G,EAAOl1F,GAKxB,IAJA,IAAItK,GAAS,EACTxf,EAAS8pB,EAAO9pB,OAChBy3E,EAASunC,EAAMh/G,SAEVwf,EAAQxf,GACfg/G,EAAMvnC,EAASj4D,GAASsK,EAAOtK,GAEjC,OAAOw/F,CACT,qBCQAxzD,EAAOxoD,QAbP,SAAqBg8G,EAAOyR,EAAUa,EAAaC,GACjD,IAAI/xG,GAAS,EACTxf,EAAkB,MAATg/G,EAAgB,EAAIA,EAAMh/G,OAKvC,IAHIuxH,GAAavxH,IACfsxH,EAActS,IAAQx/F,MAEfA,EAAQxf,GACfsxH,EAAcb,EAASa,EAAatS,EAAMx/F,GAAQA,EAAOw/F,GAE3D,OAAOsS,CACT,sBCDA9lE,EAAOxoD,QAZP,SAAmBg8G,EAAO0R,GAIxB,IAHA,IAAIlxG,GAAS,EACTxf,EAAkB,MAATg/G,EAAgB,EAAIA,EAAMh/G,SAE9Bwf,EAAQxf,GACf,GAAI0wH,EAAU1R,EAAMx/F,GAAQA,EAAOw/F,GACjC,OAAO,EAGX,OAAO,CACT,sBCTAxzD,EAAOxoD,QAJP,SAAsBsd,GACpB,OAAOA,EAAOhX,MAAM,GACtB,0BCTA,IAAIkoH,EAAK,EAAQ,QAoBjBhmE,EAAOxoD,QAVP,SAAsBg8G,EAAO36G,GAE3B,IADA,IAAIrE,EAASg/G,EAAMh/G,OACZA,KACL,GAAIwxH,EAAGxS,EAAMh/G,GAAQ,GAAIqE,GACvB,OAAOrE,EAGX,OAAQ,CACV,0BClBA,IAAIyxH,EAAa,EAAQ,QAWrBC,EAViB,EAAQ,OAUdC,CAAeF,GAE9BjmE,EAAOxoD,QAAU0uH,0BCbjB,IAAIA,EAAW,EAAQ,QAoBvBlmE,EAAOxoD,QAVP,SAAoB4uH,EAAYlB,GAC9B,IAAIzvH,EAAS,GAMb,OALAywH,EAASE,GAAY,SAAShxH,EAAO4e,EAAOoyG,GACtClB,EAAU9vH,EAAO4e,EAAOoyG,IAC1B3wH,EAAOoB,KAAKzB,EAEhB,IACOK,CACT,qBCKAuqD,EAAOxoD,QAZP,SAAuBg8G,EAAO0R,EAAWmB,EAAWC,GAIlD,IAHA,IAAI9xH,EAASg/G,EAAMh/G,OACfwf,EAAQqyG,GAAaC,EAAY,GAAK,GAElCA,EAAYtyG,MAAYA,EAAQxf,GACtC,GAAI0wH,EAAU1R,EAAMx/F,GAAQA,EAAOw/F,GACjC,OAAOx/F,EAGX,OAAQ,CACV,0BCrBA,IAAIuyG,EAAY,EAAQ,QACpBC,EAAgB,EAAQ,QAoC5BxmE,EAAOxoD,QAvBP,SAASivH,EAAYjT,EAAOkT,EAAOxB,EAAWyB,EAAUlxH,GACtD,IAAIue,GAAS,EACTxf,EAASg/G,EAAMh/G,OAKnB,IAHA0wH,IAAcA,EAAYsB,GAC1B/wH,IAAWA,EAAS,MAEXue,EAAQxf,GAAQ,CACvB,IAAIY,EAAQo+G,EAAMx/F,GACd0yG,EAAQ,GAAKxB,EAAU9vH,GACrBsxH,EAAQ,EAEVD,EAAYrxH,EAAOsxH,EAAQ,EAAGxB,EAAWyB,EAAUlxH,GAEnD8wH,EAAU9wH,EAAQL,GAEVuxH,IACVlxH,EAAOA,EAAOjB,QAAUY,EAE5B,CACA,OAAOK,CACT,0BCnCA,IAaImxH,EAbgB,EAAQ,OAadC,GAEd7mE,EAAOxoD,QAAUovH,0BCfjB,IAAIA,EAAU,EAAQ,QAClBnpH,EAAO,EAAQ,MAcnBuiD,EAAOxoD,QAJP,SAAoBi3D,EAAQw2D,GAC1B,OAAOx2D,GAAUm4D,EAAQn4D,EAAQw2D,EAAUxnH,EAC7C,0BCbA,IAAIqpH,EAAW,EAAQ,QACnBxmH,EAAQ,EAAQ,QAsBpB0/C,EAAOxoD,QAZP,SAAiBi3D,EAAQ/rD,GAMvB,IAHA,IAAIsR,EAAQ,EACRxf,GAHJkO,EAAOokH,EAASpkH,EAAM+rD,IAGJj6D,OAED,MAAVi6D,GAAkBz6C,EAAQxf,GAC/Bi6D,EAASA,EAAOnuD,EAAMoC,EAAKsR,OAE7B,OAAQA,GAASA,GAASxf,EAAUi6D,OAASjgD,CAC/C,0BCrBA,IAAI+3G,EAAY,EAAQ,QACpBz+G,EAAU,EAAQ,QAkBtBk4C,EAAOxoD,QALP,SAAwBi3D,EAAQs4D,EAAUC,GACxC,IAAIvxH,EAASsxH,EAASt4D,GACtB,OAAO3mD,EAAQ2mD,GAAUh5D,EAAS8wH,EAAU9wH,EAAQuxH,EAAYv4D,GAClE,0BCjBA,IAAIl4D,EAAS,EAAQ,QACjB0wH,EAAY,EAAQ,QACpBC,EAAiB,EAAQ,QAOzBC,EAAiB5wH,EAASA,EAAO6wH,iBAAc54G,EAkBnDwxC,EAAOxoD,QATP,SAAoBpC,GAClB,OAAa,MAATA,OACeoZ,IAAVpZ,EAdQ,qBADL,gBAiBJ+xH,GAAkBA,KAAkB1zH,OAAO2B,GAC/C6xH,EAAU7xH,GACV8xH,EAAe9xH,EACrB,sBCbA4qD,EAAOxoD,QAJP,SAAmBi3D,EAAQ51D,GACzB,OAAiB,MAAV41D,GAAkB51D,KAAOpF,OAAOg7D,EACzC,0BCVA,IAAI44D,EAAgB,EAAQ,OACxBC,EAAY,EAAQ,QACpBC,EAAgB,EAAQ,QAiB5BvnE,EAAOxoD,QANP,SAAqBg8G,EAAOp+G,EAAOixH,GACjC,OAAOjxH,GAAUA,EACbmyH,EAAc/T,EAAOp+G,EAAOixH,GAC5BgB,EAAc7T,EAAO8T,EAAWjB,EACtC,0BCjBA,IAAImB,EAAa,EAAQ,QACrBC,EAAe,EAAQ,QAgB3BznE,EAAOxoD,QAJP,SAAyBpC,GACvB,OAAOqyH,EAAaryH,IAVR,sBAUkBoyH,EAAWpyH,EAC3C,0BCfA,IAAIsyH,EAAkB,EAAQ,QAC1BD,EAAe,EAAQ,QA0B3BznE,EAAOxoD,QAVP,SAASmwH,EAAYvyH,EAAO4iB,EAAO4vG,EAASC,EAAY5zG,GACtD,OAAI7e,IAAU4iB,IAGD,MAAT5iB,GAA0B,MAAT4iB,IAAmByvG,EAAaryH,KAAWqyH,EAAazvG,GACpE5iB,GAAUA,GAAS4iB,GAAUA,EAE/B0vG,EAAgBtyH,EAAO4iB,EAAO4vG,EAASC,EAAYF,EAAa1zG,GACzE,0BCzBA,IAAI+wG,EAAQ,EAAQ,QAChB8C,EAAc,EAAQ,QACtBC,EAAa,EAAQ,QACrBC,EAAe,EAAQ,QACvBC,EAAS,EAAQ,QACjBngH,EAAU,EAAQ,QAClBmgD,EAAW,EAAQ,QACnBs9D,EAAe,EAAQ,QAMvB2C,EAAU,qBACVC,EAAW,iBACXC,EAAY,kBAMZr0H,EAHcN,OAAOK,UAGQC,eA6DjCisD,EAAOxoD,QA7CP,SAAyBi3D,EAAQz2C,EAAO4vG,EAASC,EAAYQ,EAAWp0G,GACtE,IAAIq0G,EAAWxgH,EAAQ2mD,GACnB85D,EAAWzgH,EAAQkQ,GACnBwwG,EAASF,EAAWH,EAAWF,EAAOx5D,GACtCg6D,EAASF,EAAWJ,EAAWF,EAAOjwG,GAKtC0wG,GAHJF,EAASA,GAAUN,EAAUE,EAAYI,IAGhBJ,EACrBO,GAHJF,EAASA,GAAUP,EAAUE,EAAYK,IAGhBL,EACrBQ,EAAYJ,GAAUC,EAE1B,GAAIG,GAAa3gE,EAASwG,GAAS,CACjC,IAAKxG,EAASjwC,GACZ,OAAO,EAETswG,GAAW,EACXI,GAAW,CACb,CACA,GAAIE,IAAcF,EAEhB,OADAz0G,IAAUA,EAAQ,IAAI+wG,GACdsD,GAAY/C,EAAa92D,GAC7Bq5D,EAAYr5D,EAAQz2C,EAAO4vG,EAASC,EAAYQ,EAAWp0G,GAC3D8zG,EAAWt5D,EAAQz2C,EAAOwwG,EAAQZ,EAASC,EAAYQ,EAAWp0G,GAExE,KArDyB,EAqDnB2zG,GAAiC,CACrC,IAAIiB,EAAeH,GAAY30H,EAAeC,KAAKy6D,EAAQ,eACvDq6D,EAAeH,GAAY50H,EAAeC,KAAKgkB,EAAO,eAE1D,GAAI6wG,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAep6D,EAAOr5D,QAAUq5D,EAC/Cu6D,EAAeF,EAAe9wG,EAAM5iB,QAAU4iB,EAGlD,OADA/D,IAAUA,EAAQ,IAAI+wG,GACfqD,EAAUU,EAAcC,EAAcpB,EAASC,EAAY5zG,EACpE,CACF,CACA,QAAK20G,IAGL30G,IAAUA,EAAQ,IAAI+wG,GACfgD,EAAav5D,EAAQz2C,EAAO4vG,EAASC,EAAYQ,EAAWp0G,GACrE,0BChFA,IAAI+wG,EAAQ,EAAQ,QAChB2C,EAAc,EAAQ,QA4D1B3nE,EAAOxoD,QA5CP,SAAqBi3D,EAAQxiD,EAAQg9G,EAAWpB,GAC9C,IAAI7zG,EAAQi1G,EAAUz0H,OAClBA,EAASwf,EACTk1G,GAAgBrB,EAEpB,GAAc,MAAVp5D,EACF,OAAQj6D,EAGV,IADAi6D,EAASh7D,OAAOg7D,GACTz6C,KAAS,CACd,IAAIhV,EAAOiqH,EAAUj1G,GACrB,GAAKk1G,GAAgBlqH,EAAK,GAClBA,EAAK,KAAOyvD,EAAOzvD,EAAK,MACtBA,EAAK,KAAMyvD,GAEnB,OAAO,CAEX,CACA,OAASz6C,EAAQxf,GAAQ,CAEvB,IAAIqE,GADJmG,EAAOiqH,EAAUj1G,IACF,GACXm1G,EAAW16D,EAAO51D,GAClBuwH,EAAWpqH,EAAK,GAEpB,GAAIkqH,GAAgBlqH,EAAK,IACvB,QAAiBwP,IAAb26G,KAA4BtwH,KAAO41D,GACrC,OAAO,MAEJ,CACL,IAAIx6C,EAAQ,IAAI+wG,EAChB,GAAI6C,EACF,IAAIpyH,EAASoyH,EAAWsB,EAAUC,EAAUvwH,EAAK41D,EAAQxiD,EAAQgI,GAEnE,UAAiBzF,IAAX/Y,EACEkyH,EAAYyB,EAAUD,EAAUE,EAA+CxB,EAAY5zG,GAC3Fxe,GAEN,OAAO,CAEX,CACF,CACA,OAAO,CACT,sBChDAuqD,EAAOxoD,QAJP,SAAmBpC,GACjB,OAAOA,GAAUA,CACnB,yBCTA,IAAIw1D,EAAa,EAAQ,QACrB0+D,EAAW,EAAQ,QACnB/gE,EAAW,EAAQ,QACnBghE,EAAW,EAAQ,QASnBC,EAAe,8BAGfC,EAAYpJ,SAASvsH,UACrB41H,EAAcj2H,OAAOK,UAGrB61H,EAAeF,EAAUrvH,SAGzBrG,EAAiB21H,EAAY31H,eAG7B61H,EAAaxpF,OAAO,IACtBupF,EAAa31H,KAAKD,GAAgBmK,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KAmBhF8hD,EAAOxoD,QARP,SAAsBpC,GACpB,SAAKmzD,EAASnzD,IAAUk0H,EAASl0H,MAGnBw1D,EAAWx1D,GAASw0H,EAAaJ,GAChC5iH,KAAK2iH,EAASn0H,GAC/B,0BC5CA,IAAIoyH,EAAa,EAAQ,QACrBC,EAAe,EAAQ,QAgB3BznE,EAAOxoD,QAJP,SAAsBpC,GACpB,OAAOqyH,EAAaryH,IAVN,mBAUgBoyH,EAAWpyH,EAC3C,0BCfA,IAAIoyH,EAAa,EAAQ,QACrBqC,EAAW,EAAQ,QACnBpC,EAAe,EAAQ,QA8BvBqC,EAAiB,CAAC,EACtBA,EAZiB,yBAYYA,EAXZ,yBAYjBA,EAXc,sBAWYA,EAVX,uBAWfA,EAVe,uBAUYA,EATZ,uBAUfA,EATsB,8BASYA,EARlB,wBAShBA,EARgB,yBAQY,EAC5BA,EAjCc,sBAiCYA,EAhCX,kBAiCfA,EApBqB,wBAoBYA,EAhCnB,oBAiCdA,EApBkB,qBAoBYA,EAhChB,iBAiCdA,EAhCe,kBAgCYA,EA/Bb,qBAgCdA,EA/Ba,gBA+BYA,EA9BT,mBA+BhBA,EA9BgB,mBA8BYA,EA7BZ,mBA8BhBA,EA7Ba,gBA6BYA,EA5BT,mBA6BhBA,EA5BiB,qBA4BY,EAc7B9pE,EAAOxoD,QALP,SAA0BpC,GACxB,OAAOqyH,EAAaryH,IAClBy0H,EAASz0H,EAAMZ,WAAas1H,EAAetC,EAAWpyH,GAC1D,0BCzDA,IAAI20H,EAAc,EAAQ,QACtBC,EAAsB,EAAQ,QAC9BC,EAAW,EAAQ,QACnBniH,EAAU,EAAQ,QAClB+xC,EAAW,EAAQ,QA0BvBmG,EAAOxoD,QAjBP,SAAsBpC,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACK60H,EAEW,iBAAT70H,EACF0S,EAAQ1S,GACX40H,EAAoB50H,EAAM,GAAIA,EAAM,IACpC20H,EAAY30H,GAEXykD,EAASzkD,EAClB,0BC5BA,IAAI80H,EAAc,EAAQ,QACtBC,EAAa,EAAQ,OAMrBp2H,EAHcN,OAAOK,UAGQC,eAsBjCisD,EAAOxoD,QAbP,SAAkBi3D,GAChB,IAAKy7D,EAAYz7D,GACf,OAAO07D,EAAW17D,GAEpB,IAAIh5D,EAAS,GACb,IAAK,IAAIoD,KAAOpF,OAAOg7D,GACjB16D,EAAeC,KAAKy6D,EAAQ51D,IAAe,eAAPA,GACtCpD,EAAOoB,KAAKgC,GAGhB,OAAOpD,CACT,0BC3BA,IAAIywH,EAAW,EAAQ,QACnBkE,EAAc,EAAQ,QAoB1BpqE,EAAOxoD,QAVP,SAAiB4uH,EAAYnB,GAC3B,IAAIjxG,GAAS,EACTve,EAAS20H,EAAYhE,GAAcxyH,MAAMwyH,EAAW5xH,QAAU,GAKlE,OAHA0xH,EAASE,GAAY,SAAShxH,EAAOyD,EAAKutH,GACxC3wH,IAASue,GAASixG,EAAS7vH,EAAOyD,EAAKutH,EACzC,IACO3wH,CACT,0BCnBA,IAAI40H,EAAc,EAAQ,QACtBC,EAAe,EAAQ,QACvBC,EAA0B,EAAQ,QAmBtCvqE,EAAOxoD,QAVP,SAAqByU,GACnB,IAAIg9G,EAAYqB,EAAar+G,GAC7B,OAAwB,GAApBg9G,EAAUz0H,QAAey0H,EAAU,GAAG,GACjCsB,EAAwBtB,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAASx6D,GACd,OAAOA,IAAWxiD,GAAUo+G,EAAY57D,EAAQxiD,EAAQg9G,EAC1D,CACF,0BCnBA,IAAItB,EAAc,EAAQ,QACtB9vH,EAAM,EAAQ,QACd2yH,EAAQ,EAAQ,QAChBC,EAAQ,EAAQ,QAChBC,EAAqB,EAAQ,QAC7BH,EAA0B,EAAQ,QAClCjqH,EAAQ,EAAQ,QA0BpB0/C,EAAOxoD,QAZP,SAA6BkL,EAAM0mH,GACjC,OAAIqB,EAAM/nH,IAASgoH,EAAmBtB,GAC7BmB,EAAwBjqH,EAAMoC,GAAO0mH,GAEvC,SAAS36D,GACd,IAAI06D,EAAWtxH,EAAI42D,EAAQ/rD,GAC3B,YAAqB8L,IAAb26G,GAA0BA,IAAaC,EAC3CoB,EAAM/7D,EAAQ/rD,GACdilH,EAAYyB,EAAUD,EAAUE,EACtC,CACF,sBCjBArpE,EAAOxoD,QANP,SAAsBqB,GACpB,OAAO,SAAS41D,GACd,OAAiB,MAAVA,OAAiBjgD,EAAYigD,EAAO51D,EAC7C,CACF,0BCXA,IAAI8xH,EAAU,EAAQ,QAetB3qE,EAAOxoD,QANP,SAA0BkL,GACxB,OAAO,SAAS+rD,GACd,OAAOk8D,EAAQl8D,EAAQ/rD,EACzB,CACF,sBCSAs9C,EAAOxoD,QATP,SAAoB4uH,EAAYnB,EAAUa,EAAaC,EAAW6E,GAMhE,OALAA,EAASxE,GAAY,SAAShxH,EAAO4e,EAAOoyG,GAC1CN,EAAcC,GACTA,GAAY,EAAO3wH,GACpB6vH,EAASa,EAAa1wH,EAAO4e,EAAOoyG,EAC1C,IACON,CACT,sBCUA9lE,EAAOxoD,QArBP,SAAmBg8G,EAAOzxF,EAAOqgB,GAC/B,IAAIpuB,GAAS,EACTxf,EAASg/G,EAAMh/G,OAEfutB,EAAQ,IACVA,GAASA,EAAQvtB,EAAS,EAAKA,EAASutB,IAE1CqgB,EAAMA,EAAM5tC,EAASA,EAAS4tC,GACpB,IACRA,GAAO5tC,GAETA,EAASutB,EAAQqgB,EAAM,EAAMA,EAAMrgB,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAItsB,EAAS7B,MAAMY,KACVwf,EAAQxf,GACfiB,EAAOue,GAASw/F,EAAMx/F,EAAQ+N,GAEhC,OAAOtsB,CACT,sBCTAuqD,EAAOxoD,QAVP,SAAmBlD,EAAG2wH,GAIpB,IAHA,IAAIjxG,GAAS,EACTve,EAAS7B,MAAMU,KAEV0f,EAAQ1f,GACfmB,EAAOue,GAASixG,EAASjxG,GAE3B,OAAOve,CACT,0BCjBA,IAAIc,EAAS,EAAQ,QACjBs0H,EAAW,EAAQ,QACnB/iH,EAAU,EAAQ,QAClBgjH,EAAW,EAAQ,QAMnBC,EAAcx0H,EAASA,EAAOzC,eAAY0a,EAC1Cw8G,EAAiBD,EAAcA,EAAY3wH,cAAWoU,EA0B1DwxC,EAAOxoD,QAhBP,SAASyzH,EAAa71H,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI0S,EAAQ1S,GAEV,OAAOy1H,EAASz1H,EAAO61H,GAAgB,GAEzC,GAAIH,EAAS11H,GACX,OAAO41H,EAAiBA,EAAeh3H,KAAKoB,GAAS,GAEvD,IAAIK,EAAUL,EAAQ,GACtB,MAAkB,KAAVK,GAAkB,EAAIL,IA3BjB,SA2BwC,KAAOK,CAC9D,0BClCA,IAAIy1H,EAAkB,EAAQ,QAG1BC,EAAc,OAelBnrE,EAAOxoD,QANP,SAAkBsd,GAChB,OAAOA,EACHA,EAAO/Y,MAAM,EAAGmvH,EAAgBp2G,GAAU,GAAG5W,QAAQitH,EAAa,IAClEr2G,CACN,sBCHAkrC,EAAOxoD,QANP,SAAmB0yC,GACjB,OAAO,SAAS90C,GACd,OAAO80C,EAAK90C,EACd,CACF,0BCXA,IAAIy1H,EAAW,EAAQ,QAkBvB7qE,EAAOxoD,QANP,SAAoBi3D,EAAQh9C,GAC1B,OAAOo5G,EAASp5G,GAAO,SAAS5Y,GAC9B,OAAO41D,EAAO51D,EAChB,GACF,sBCJAmnD,EAAOxoD,QAJP,SAAkBqJ,EAAOhI,GACvB,OAAOgI,EAAM5I,IAAIY,EACnB,0BCVA,IAAIoxH,EAAW,EAAQ,QAavBjqE,EAAOxoD,QAJP,SAAsBpC,GACpB,MAAuB,mBAATA,EAAsBA,EAAQ60H,CAC9C,0BCXA,IAAIniH,EAAU,EAAQ,QAClB2iH,EAAQ,EAAQ,QAChBW,EAAe,EAAQ,QACvBhxH,EAAW,EAAQ,QAiBvB4lD,EAAOxoD,QAPP,SAAkBpC,EAAOq5D,GACvB,OAAI3mD,EAAQ1S,GACHA,EAEFq1H,EAAMr1H,EAAOq5D,GAAU,CAACr5D,GAASg2H,EAAahxH,EAAShF,GAChE,0BClBA,IAAIi2H,EAAY,EAAQ,QAiBxBrrE,EAAOxoD,QANP,SAAmBg8G,EAAOzxF,EAAOqgB,GAC/B,IAAI5tC,EAASg/G,EAAMh/G,OAEnB,OADA4tC,OAAc5zB,IAAR4zB,EAAoB5tC,EAAS4tC,GAC1BrgB,GAASqgB,GAAO5tC,EAAUg/G,EAAQ6X,EAAU7X,EAAOzxF,EAAOqgB,EACrE,sBCIA4d,EAAOxoD,QAXP,SAAmByU,EAAQunG,GACzB,IAAIx/F,GAAS,EACTxf,EAASyX,EAAOzX,OAGpB,IADAg/G,IAAUA,EAAQ5/G,MAAMY,MACfwf,EAAQxf,GACfg/G,EAAMx/F,GAAS/H,EAAO+H,GAExB,OAAOw/F,CACT,0BCjBA,IAGI8X,EAHO,EAAQ,QAGG,sBAEtBtrE,EAAOxoD,QAAU8zH,0BCLjB,IAAIlB,EAAc,EAAQ,QA+B1BpqE,EAAOxoD,QArBP,SAAwBozH,EAAUtE,GAChC,OAAO,SAASF,EAAYnB,GAC1B,GAAkB,MAAdmB,EACF,OAAOA,EAET,IAAKgE,EAAYhE,GACf,OAAOwE,EAASxE,EAAYnB,GAM9B,IAJA,IAAIzwH,EAAS4xH,EAAW5xH,OACpBwf,EAAQsyG,EAAY9xH,GAAU,EAC9B+2H,EAAW93H,OAAO2yH,IAEdE,EAAYtyG,MAAYA,EAAQxf,KACa,IAA/CywH,EAASsG,EAASv3G,GAAQA,EAAOu3G,KAIvC,OAAOnF,CACT,CACF,sBCLApmE,EAAOxoD,QAjBP,SAAuB8uH,GACrB,OAAO,SAAS73D,EAAQw2D,EAAU8B,GAMhC,IALA,IAAI/yG,GAAS,EACTu3G,EAAW93H,OAAOg7D,GAClBh9C,EAAQs1G,EAASt4D,GACjBj6D,EAASid,EAAMjd,OAEZA,KAAU,CACf,IAAIqE,EAAM4Y,EAAM60G,EAAY9xH,IAAWwf,GACvC,IAA+C,IAA3CixG,EAASsG,EAAS1yH,GAAMA,EAAK0yH,GAC/B,KAEJ,CACA,OAAO98D,CACT,CACF,0BCtBA,IAAI+8D,EAAe,EAAQ,QACvBpB,EAAc,EAAQ,QACtB3sH,EAAO,EAAQ,MAsBnBuiD,EAAOxoD,QAbP,SAAoBi0H,GAClB,OAAO,SAASrF,EAAYlB,EAAWmB,GACrC,IAAIkF,EAAW93H,OAAO2yH,GACtB,IAAKgE,EAAYhE,GAAa,CAC5B,IAAInB,EAAWuG,EAAatG,EAAW,GACvCkB,EAAa3oH,EAAK2oH,GAClBlB,EAAY,SAASrsH,GAAO,OAAOosH,EAASsG,EAAS1yH,GAAMA,EAAK0yH,EAAW,CAC7E,CACA,IAAIv3G,EAAQy3G,EAAcrF,EAAYlB,EAAWmB,GACjD,OAAOryG,GAAS,EAAIu3G,EAAStG,EAAWmB,EAAWpyG,GAASA,QAASxF,CACvE,CACF,0BCtBA,IAAIi2G,EAAW,EAAQ,QACnBiH,EAAY,EAAQ,QACpBC,EAAW,EAAQ,QAiFvB3rE,EAAOxoD,QA9DP,SAAqBg8G,EAAOx7F,EAAO4vG,EAASC,EAAYQ,EAAWp0G,GACjE,IAAI23G,EAjBqB,EAiBThE,EACZiE,EAAYrY,EAAMh/G,OAClBs3H,EAAY9zG,EAAMxjB,OAEtB,GAAIq3H,GAAaC,KAAeF,GAAaE,EAAYD,GACvD,OAAO,EAGT,IAAIE,EAAa93G,EAAMpc,IAAI27G,GACvBwY,EAAa/3G,EAAMpc,IAAImgB,GAC3B,GAAI+zG,GAAcC,EAChB,OAAOD,GAAc/zG,GAASg0G,GAAcxY,EAE9C,IAAIx/F,GAAS,EACTve,GAAS,EACTw2H,EA/BuB,EA+BfrE,EAAoC,IAAInD,OAAWj2G,EAM/D,IAJAyF,EAAMnc,IAAI07G,EAAOx7F,GACjB/D,EAAMnc,IAAIkgB,EAAOw7F,KAGRx/F,EAAQ63G,GAAW,CAC1B,IAAIK,EAAW1Y,EAAMx/F,GACjBm4G,EAAWn0G,EAAMhE,GAErB,GAAI6zG,EACF,IAAIuE,EAAWR,EACX/D,EAAWsE,EAAUD,EAAUl4G,EAAOgE,EAAOw7F,EAAOv/F,GACpD4zG,EAAWqE,EAAUC,EAAUn4G,EAAOw/F,EAAOx7F,EAAO/D,GAE1D,QAAiBzF,IAAb49G,EAAwB,CAC1B,GAAIA,EACF,SAEF32H,GAAS,EACT,KACF,CAEA,GAAIw2H,GACF,IAAKP,EAAU1zG,GAAO,SAASm0G,EAAUE,GACnC,IAAKV,EAASM,EAAMI,KACfH,IAAaC,GAAY9D,EAAU6D,EAAUC,EAAUvE,EAASC,EAAY5zG,IAC/E,OAAOg4G,EAAKp1H,KAAKw1H,EAErB,IAAI,CACN52H,GAAS,EACT,KACF,OACK,GACDy2H,IAAaC,IACX9D,EAAU6D,EAAUC,EAAUvE,EAASC,EAAY5zG,GACpD,CACLxe,GAAS,EACT,KACF,CACF,CAGA,OAFAwe,EAAc,OAAEu/F,GAChBv/F,EAAc,OAAE+D,GACTviB,CACT,0BCjFA,IAAIc,EAAS,EAAQ,QACjB6G,EAAa,EAAQ,QACrB4oH,EAAK,EAAQ,QACb8B,EAAc,EAAQ,QACtBwE,EAAa,EAAQ,QACrBC,EAAa,EAAQ,QAqBrBxB,EAAcx0H,EAASA,EAAOzC,eAAY0a,EAC1Cg+G,EAAgBzB,EAAcA,EAAY9uC,aAAUztE,EAoFxDwxC,EAAOxoD,QAjEP,SAAoBi3D,EAAQz2C,EAAOy0G,EAAK7E,EAASC,EAAYQ,EAAWp0G,GACtE,OAAQw4G,GACN,IAzBc,oBA0BZ,GAAKh+D,EAAOi+D,YAAc10G,EAAM00G,YAC3Bj+D,EAAOk+D,YAAc30G,EAAM20G,WAC9B,OAAO,EAETl+D,EAASA,EAAOzqD,OAChBgU,EAAQA,EAAMhU,OAEhB,IAlCiB,uBAmCf,QAAKyqD,EAAOi+D,YAAc10G,EAAM00G,aAC3BrE,EAAU,IAAIjrH,EAAWqxD,GAAS,IAAIrxD,EAAW4a,KAKxD,IAnDU,mBAoDV,IAnDU,gBAoDV,IAjDY,kBAoDV,OAAOguG,GAAIv3D,GAASz2C,GAEtB,IAxDW,iBAyDT,OAAOy2C,EAAOtyD,MAAQ6b,EAAM7b,MAAQsyD,EAAOriD,SAAW4L,EAAM5L,QAE9D,IAxDY,kBAyDZ,IAvDY,kBA2DV,OAAOqiD,GAAWz2C,EAAQ,GAE5B,IAjES,eAkEP,IAAI40G,EAAUN,EAEhB,IAjES,eAkEP,IAAIV,EA5EiB,EA4ELhE,EAGhB,GAFAgF,IAAYA,EAAUL,GAElB99D,EAAO7pD,MAAQoT,EAAMpT,OAASgnH,EAChC,OAAO,EAGT,IAAIiB,EAAU54G,EAAMpc,IAAI42D,GACxB,GAAIo+D,EACF,OAAOA,GAAW70G,EAEpB4vG,GAtFuB,EAyFvB3zG,EAAMnc,IAAI22D,EAAQz2C,GAClB,IAAIviB,EAASqyH,EAAY8E,EAAQn+D,GAASm+D,EAAQ50G,GAAQ4vG,EAASC,EAAYQ,EAAWp0G,GAE1F,OADAA,EAAc,OAAEw6C,GACTh5D,EAET,IAnFY,kBAoFV,GAAI+2H,EACF,OAAOA,EAAcx4H,KAAKy6D,IAAW+9D,EAAcx4H,KAAKgkB,GAG9D,OAAO,CACT,0BC7GA,IAAI80G,EAAa,EAAQ,QASrB/4H,EAHcN,OAAOK,UAGQC,eAgFjCisD,EAAOxoD,QAjEP,SAAsBi3D,EAAQz2C,EAAO4vG,EAASC,EAAYQ,EAAWp0G,GACnE,IAAI23G,EAtBqB,EAsBThE,EACZmF,EAAWD,EAAWr+D,GACtBu+D,EAAYD,EAASv4H,OAIzB,GAAIw4H,GAHWF,EAAW90G,GACDxjB,SAEMo3H,EAC7B,OAAO,EAGT,IADA,IAAI53G,EAAQg5G,EACLh5G,KAAS,CACd,IAAInb,EAAMk0H,EAAS/4G,GACnB,KAAM43G,EAAY/yH,KAAOmf,EAAQjkB,EAAeC,KAAKgkB,EAAOnf,IAC1D,OAAO,CAEX,CAEA,IAAIo0H,EAAah5G,EAAMpc,IAAI42D,GACvBu9D,EAAa/3G,EAAMpc,IAAImgB,GAC3B,GAAIi1G,GAAcjB,EAChB,OAAOiB,GAAcj1G,GAASg0G,GAAcv9D,EAE9C,IAAIh5D,GAAS,EACbwe,EAAMnc,IAAI22D,EAAQz2C,GAClB/D,EAAMnc,IAAIkgB,EAAOy2C,GAGjB,IADA,IAAIy+D,EAAWtB,IACN53G,EAAQg5G,GAAW,CAE1B,IAAI7D,EAAW16D,EADf51D,EAAMk0H,EAAS/4G,IAEXm4G,EAAWn0G,EAAMnf,GAErB,GAAIgvH,EACF,IAAIuE,EAAWR,EACX/D,EAAWsE,EAAUhD,EAAUtwH,EAAKmf,EAAOy2C,EAAQx6C,GACnD4zG,EAAWsB,EAAUgD,EAAUtzH,EAAK41D,EAAQz2C,EAAO/D,GAGzD,UAAmBzF,IAAb49G,EACGjD,IAAagD,GAAY9D,EAAUc,EAAUgD,EAAUvE,EAASC,EAAY5zG,GAC7Em4G,GACD,CACL32H,GAAS,EACT,KACF,CACAy3H,IAAaA,EAAkB,eAAPr0H,EAC1B,CACA,GAAIpD,IAAWy3H,EAAU,CACvB,IAAIC,EAAU1+D,EAAOpyD,YACjB+wH,EAAUp1G,EAAM3b,YAGhB8wH,GAAWC,KACV,gBAAiB3+D,MAAU,gBAAiBz2C,IACzB,mBAAXm1G,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvD33H,GAAS,EAEb,CAGA,OAFAwe,EAAc,OAAEw6C,GAChBx6C,EAAc,OAAE+D,GACTviB,CACT,0BCtFA,IAAI43H,EAA8B,iBAAV,EAAAr3H,GAAsB,EAAAA,GAAU,EAAAA,EAAOvC,SAAWA,QAAU,EAAAuC,EAEpFgqD,EAAOxoD,QAAU61H,0BCHjB,IAAIC,EAAiB,EAAQ,QACzBC,EAAa,EAAQ,QACrB9vH,EAAO,EAAQ,MAanBuiD,EAAOxoD,QAJP,SAAoBi3D,GAClB,OAAO6+D,EAAe7+D,EAAQhxD,EAAM8vH,EACtC,yBCbA,IAAIC,EAAY,EAAQ,OAiBxBxtE,EAAOxoD,QAPP,SAAoBuG,EAAKlF,GACvB,IAAImG,EAAOjB,EAAI2mH,SACf,OAAO8I,EAAU30H,GACbmG,EAAmB,iBAAPnG,EAAkB,SAAW,QACzCmG,EAAKjB,GACX,0BCfA,IAAI2sH,EAAqB,EAAQ,QAC7BjtH,EAAO,EAAQ,MAsBnBuiD,EAAOxoD,QAbP,SAAsBi3D,GAIpB,IAHA,IAAIh5D,EAASgI,EAAKgxD,GACdj6D,EAASiB,EAAOjB,OAEbA,KAAU,CACf,IAAIqE,EAAMpD,EAAOjB,GACbY,EAAQq5D,EAAO51D,GAEnBpD,EAAOjB,GAAU,CAACqE,EAAKzD,EAAOs1H,EAAmBt1H,GACnD,CACA,OAAOK,CACT,0BCrBA,IAAIg4H,EAAe,EAAQ,OACvB7tE,EAAW,EAAQ,QAevBI,EAAOxoD,QALP,SAAmBi3D,EAAQ51D,GACzB,IAAIzD,EAAQwqD,EAAS6O,EAAQ51D,GAC7B,OAAO40H,EAAar4H,GAASA,OAAQoZ,CACvC,0BCdA,IAAIjY,EAAS,EAAQ,QAGjBmzH,EAAcj2H,OAAOK,UAGrBC,EAAiB21H,EAAY31H,eAO7B25H,EAAuBhE,EAAYtvH,SAGnC+sH,EAAiB5wH,EAASA,EAAO6wH,iBAAc54G,EA6BnDwxC,EAAOxoD,QApBP,SAAmBpC,GACjB,IAAIu4H,EAAQ55H,EAAeC,KAAKoB,EAAO+xH,GACnCsF,EAAMr3H,EAAM+xH,GAEhB,IACE/xH,EAAM+xH,QAAkB34G,EACxB,IAAIo/G,GAAW,CACJ,CAAX,MAAOr4H,GAAI,CAEb,IAAIE,EAASi4H,EAAqB15H,KAAKoB,GAQvC,OAPIw4H,IACED,EACFv4H,EAAM+xH,GAAkBsF,SAEjBr3H,EAAM+xH,IAGV1xH,CACT,0BC3CA,IAAIo4H,EAAc,EAAQ,QACtBC,EAAY,EAAQ,QAMpB72H,EAHcxD,OAAOK,UAGcmD,qBAGnC82H,EAAmBt6H,OAAOuD,sBAS1Bu2H,EAAcQ,EAA+B,SAASt/D,GACxD,OAAc,MAAVA,EACK,IAETA,EAASh7D,OAAOg7D,GACTo/D,EAAYE,EAAiBt/D,IAAS,SAASu/D,GACpD,OAAO/2H,EAAqBjD,KAAKy6D,EAAQu/D,EAC3C,IACF,EARqCF,EAUrC9tE,EAAOxoD,QAAU+1H,0BC7BjB,IAAIrK,EAAW,EAAQ,QACnBvrH,EAAM,EAAQ,QACd3C,EAAU,EAAQ,QAClB+E,EAAM,EAAQ,QACdizD,EAAU,EAAQ,OAClBw6D,EAAa,EAAQ,QACrB+B,EAAW,EAAQ,QAGnB0E,EAAS,eAETC,EAAa,mBACbC,EAAS,eACTC,EAAa,mBAEbC,EAAc,oBAGdC,EAAqB/E,EAASrG,GAC9BqL,EAAgBhF,EAAS5xH,GACzB62H,EAAoBjF,EAASv0H,GAC7By5H,EAAgBlF,EAASxvH,GACzB20H,EAAoBnF,EAASv8D,GAS7Bi7D,EAAST,GAGRtE,GAAY+E,EAAO,IAAI/E,EAAS,IAAIp4D,YAAY,MAAQujE,GACxD12H,GAAOswH,EAAO,IAAItwH,IAAQs2H,GAC1Bj5H,GAAWizH,EAAOjzH,EAAQC,YAAci5H,GACxCn0H,GAAOkuH,EAAO,IAAIluH,IAAQo0H,GAC1BnhE,GAAWi7D,EAAO,IAAIj7D,IAAYohE,KACrCnG,EAAS,SAAS7yH,GAChB,IAAIK,EAAS+xH,EAAWpyH,GACpBu5H,EA/BQ,mBA+BDl5H,EAAsBL,EAAMiH,iBAAcmS,EACjDogH,EAAaD,EAAOpF,EAASoF,GAAQ,GAEzC,GAAIC,EACF,OAAQA,GACN,KAAKN,EAAoB,OAAOD,EAChC,KAAKE,EAAe,OAAON,EAC3B,KAAKO,EAAmB,OAAON,EAC/B,KAAKO,EAAe,OAAON,EAC3B,KAAKO,EAAmB,OAAON,EAGnC,OAAO34H,CACT,GAGFuqD,EAAOxoD,QAAUywH,sBC7CjBjoE,EAAOxoD,QAJP,SAAkBi3D,EAAQ51D,GACxB,OAAiB,MAAV41D,OAAiBjgD,EAAYigD,EAAO51D,EAC7C,0BCVA,IAAIiuH,EAAW,EAAQ,QACnBzB,EAAc,EAAQ,QACtBv9G,EAAU,EAAQ,QAClBw9G,EAAU,EAAQ,QAClBuE,EAAW,EAAQ,QACnBvpH,EAAQ,EAAQ,QAiCpB0/C,EAAOxoD,QAtBP,SAAiBi3D,EAAQ/rD,EAAMmsH,GAO7B,IAJA,IAAI76G,GAAS,EACTxf,GAHJkO,EAAOokH,EAASpkH,EAAM+rD,IAGJj6D,OACdiB,GAAS,IAEJue,EAAQxf,GAAQ,CACvB,IAAIqE,EAAMyH,EAAMoC,EAAKsR,IACrB,KAAMve,EAAmB,MAAVg5D,GAAkBogE,EAAQpgE,EAAQ51D,IAC/C,MAEF41D,EAASA,EAAO51D,EAClB,CACA,OAAIpD,KAAYue,GAASxf,EAChBiB,KAETjB,EAAmB,MAAVi6D,EAAiB,EAAIA,EAAOj6D,SAClBq1H,EAASr1H,IAAW8wH,EAAQzsH,EAAKrE,KACjDsT,EAAQ2mD,IAAW42D,EAAY52D,GACpC,sBCnCA,IAWIqgE,EAAe1uF,OAAO,uFAa1B4f,EAAOxoD,QAJP,SAAoBsd,GAClB,OAAOg6G,EAAaloH,KAAKkO,EAC3B,0BCvBA,IAAIi6G,EAAe,EAAQ,QAc3B/uE,EAAOxoD,QALP,WACE9C,KAAKgwH,SAAWqK,EAAeA,EAAa,MAAQ,CAAC,EACrDr6H,KAAKkQ,KAAO,CACd,sBCIAo7C,EAAOxoD,QANP,SAAoBqB,GAClB,IAAIpD,EAASf,KAAKuD,IAAIY,WAAenE,KAAKgwH,SAAS7rH,GAEnD,OADAnE,KAAKkQ,MAAQnP,EAAS,EAAI,EACnBA,CACT,0BCdA,IAAIs5H,EAAe,EAAQ,QASvBh7H,EAHcN,OAAOK,UAGQC,eAoBjCisD,EAAOxoD,QATP,SAAiBqB,GACf,IAAImG,EAAOtK,KAAKgwH,SAChB,GAAIqK,EAAc,CAChB,IAAIt5H,EAASuJ,EAAKnG,GAClB,MArBiB,8BAqBVpD,OAA4B+Y,EAAY/Y,CACjD,CACA,OAAO1B,EAAeC,KAAKgL,EAAMnG,GAAOmG,EAAKnG,QAAO2V,CACtD,0BC3BA,IAAIugH,EAAe,EAAQ,QAMvBh7H,EAHcN,OAAOK,UAGQC,eAgBjCisD,EAAOxoD,QALP,SAAiBqB,GACf,IAAImG,EAAOtK,KAAKgwH,SAChB,OAAOqK,OAA8BvgH,IAAdxP,EAAKnG,GAAsB9E,EAAeC,KAAKgL,EAAMnG,EAC9E,0BCpBA,IAAIk2H,EAAe,EAAQ,QAsB3B/uE,EAAOxoD,QAPP,SAAiBqB,EAAKzD,GACpB,IAAI4J,EAAOtK,KAAKgwH,SAGhB,OAFAhwH,KAAKkQ,MAAQlQ,KAAKuD,IAAIY,GAAO,EAAI,EACjCmG,EAAKnG,GAAQk2H,QAA0BvgH,IAAVpZ,EAfV,4BAekDA,EAC9DV,IACT,0BCpBA,IAAI6B,EAAS,EAAQ,QACjB8uH,EAAc,EAAQ,QACtBv9G,EAAU,EAAQ,QAGlBknH,EAAmBz4H,EAASA,EAAO04H,wBAAqBzgH,EAc5DwxC,EAAOxoD,QALP,SAAuBpC,GACrB,OAAO0S,EAAQ1S,IAAUiwH,EAAYjwH,OAChC45H,GAAoB55H,GAASA,EAAM45H,GAC1C,sBChBA,IAGIE,EAAW,mBAoBflvE,EAAOxoD,QAVP,SAAiBpC,EAAOZ,GACtB,IAAI2P,SAAc/O,EAGlB,SAFAZ,EAAmB,MAAVA,EAfY,iBAewBA,KAGlC,UAAR2P,GACU,UAARA,GAAoB+qH,EAAStoH,KAAKxR,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQZ,CACjD,0BCtBA,IAAIwxH,EAAK,EAAQ,QACboE,EAAc,EAAQ,QACtB9E,EAAU,EAAQ,QAClB/8D,EAAW,EAAQ,QA0BvBvI,EAAOxoD,QAdP,SAAwBpC,EAAO4e,EAAOy6C,GACpC,IAAKlG,EAASkG,GACZ,OAAO,EAET,IAAItqD,SAAc6P,EAClB,SAAY,UAAR7P,EACKimH,EAAY37D,IAAW62D,EAAQtxG,EAAOy6C,EAAOj6D,QACrC,UAAR2P,GAAoB6P,KAASy6C,IAE7Bu3D,EAAGv3D,EAAOz6C,GAAQ5e,EAG7B,0BC3BA,IAAI0S,EAAU,EAAQ,QAClBgjH,EAAW,EAAQ,QAGnBqE,EAAe,mDACfC,EAAgB,QAuBpBpvE,EAAOxoD,QAbP,SAAepC,EAAOq5D,GACpB,GAAI3mD,EAAQ1S,GACV,OAAO,EAET,IAAI+O,SAAc/O,EAClB,QAAY,UAAR+O,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAAT/O,IAAiB01H,EAAS11H,MAGvBg6H,EAAcxoH,KAAKxR,KAAW+5H,EAAavoH,KAAKxR,IAC1C,MAAVq5D,GAAkBr5D,KAAS3B,OAAOg7D,GACvC,qBCZAzO,EAAOxoD,QAPP,SAAmBpC,GACjB,IAAI+O,SAAc/O,EAClB,MAAgB,UAAR+O,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAV/O,EACU,OAAVA,CACP,0BCZA,IAIMi6H,EAJF/D,EAAa,EAAQ,QAGrBgE,GACED,EAAM,SAASn5G,KAAKo1G,GAAcA,EAAW7tH,MAAQ6tH,EAAW7tH,KAAK8xH,UAAY,KACvE,iBAAmBF,EAAO,GAc1CrvE,EAAOxoD,QAJP,SAAkB0yC,GAChB,QAASolF,GAAeA,KAAcplF,CACxC,sBChBA,IAAIw/E,EAAcj2H,OAAOK,UAgBzBksD,EAAOxoD,QAPP,SAAqBpC,GACnB,IAAIu5H,EAAOv5H,GAASA,EAAMiH,YAG1B,OAAOjH,KAFqB,mBAARu5H,GAAsBA,EAAK76H,WAAc41H,EAG/D,0BCfA,IAAInhE,EAAW,EAAQ,QAcvBvI,EAAOxoD,QAJP,SAA4BpC,GAC1B,OAAOA,GAAUA,IAAUmzD,EAASnzD,EACtC,sBCAA4qD,EAAOxoD,QALP,WACE9C,KAAKgwH,SAAW,GAChBhwH,KAAKkQ,KAAO,CACd,0BCVA,IAAI4qH,EAAe,EAAQ,QAMvB/3F,EAHa7jC,MAAME,UAGC2jC,OA4BxBuoB,EAAOxoD,QAjBP,SAAyBqB,GACvB,IAAImG,EAAOtK,KAAKgwH,SACZ1wG,EAAQw7G,EAAaxwH,EAAMnG,GAE/B,QAAImb,EAAQ,KAIRA,GADYhV,EAAKxK,OAAS,EAE5BwK,EAAKpI,MAEL6gC,EAAOzjC,KAAKgL,EAAMgV,EAAO,KAEzBtf,KAAKkQ,MACA,EACT,0BChCA,IAAI4qH,EAAe,EAAQ,QAkB3BxvE,EAAOxoD,QAPP,SAAsBqB,GACpB,IAAImG,EAAOtK,KAAKgwH,SACZ1wG,EAAQw7G,EAAaxwH,EAAMnG,GAE/B,OAAOmb,EAAQ,OAAIxF,EAAYxP,EAAKgV,GAAO,EAC7C,0BChBA,IAAIw7G,EAAe,EAAQ,QAe3BxvE,EAAOxoD,QAJP,SAAsBqB,GACpB,OAAO22H,EAAa96H,KAAKgwH,SAAU7rH,IAAQ,CAC7C,0BCbA,IAAI22H,EAAe,EAAQ,QAyB3BxvE,EAAOxoD,QAbP,SAAsBqB,EAAKzD,GACzB,IAAI4J,EAAOtK,KAAKgwH,SACZ1wG,EAAQw7G,EAAaxwH,EAAMnG,GAQ/B,OANImb,EAAQ,KACRtf,KAAKkQ,KACP5F,EAAKnI,KAAK,CAACgC,EAAKzD,KAEhB4J,EAAKgV,GAAO,GAAK5e,EAEZV,IACT,0BCvBA,IAAI+uH,EAAO,EAAQ,QACfO,EAAY,EAAQ,QACpBrsH,EAAM,EAAQ,QAkBlBqoD,EAAOxoD,QATP,WACE9C,KAAKkQ,KAAO,EACZlQ,KAAKgwH,SAAW,CACd,KAAQ,IAAIjB,EACZ,IAAO,IAAK9rH,GAAOqsH,GACnB,OAAU,IAAIP,EAElB,0BClBA,IAAIgM,EAAa,EAAQ,OAiBzBzvE,EAAOxoD,QANP,SAAwBqB,GACtB,IAAIpD,EAASg6H,EAAW/6H,KAAMmE,GAAa,OAAEA,GAE7C,OADAnE,KAAKkQ,MAAQnP,EAAS,EAAI,EACnBA,CACT,yBCfA,IAAIg6H,EAAa,EAAQ,OAezBzvE,EAAOxoD,QAJP,SAAqBqB,GACnB,OAAO42H,EAAW/6H,KAAMmE,GAAKhB,IAAIgB,EACnC,0BCbA,IAAI42H,EAAa,EAAQ,OAezBzvE,EAAOxoD,QAJP,SAAqBqB,GACnB,OAAO42H,EAAW/6H,KAAMmE,GAAKZ,IAAIY,EACnC,0BCbA,IAAI42H,EAAa,EAAQ,OAqBzBzvE,EAAOxoD,QATP,SAAqBqB,EAAKzD,GACxB,IAAI4J,EAAOywH,EAAW/6H,KAAMmE,GACxB+L,EAAO5F,EAAK4F,KAIhB,OAFA5F,EAAKlH,IAAIe,EAAKzD,GACdV,KAAKkQ,MAAQ5F,EAAK4F,MAAQA,EAAO,EAAI,EAC9BlQ,IACT,sBCFAsrD,EAAOxoD,QAVP,SAAoBuG,GAClB,IAAIiW,GAAS,EACTve,EAAS7B,MAAMmK,EAAI6G,MAKvB,OAHA7G,EAAI/B,SAAQ,SAAS5G,EAAOyD,GAC1BpD,IAASue,GAAS,CAACnb,EAAKzD,EAC1B,IACOK,CACT,sBCIAuqD,EAAOxoD,QAVP,SAAiCqB,EAAKuwH,GACpC,OAAO,SAAS36D,GACd,OAAc,MAAVA,IAGGA,EAAO51D,KAASuwH,SACP56G,IAAb46G,GAA2BvwH,KAAOpF,OAAOg7D,IAC9C,CACF,0BCjBA,IAAIiyD,EAAU,EAAQ,QAyBtB1gE,EAAOxoD,QAZP,SAAuB0yC,GACrB,IAAIz0C,EAASirH,EAAQx2E,GAAM,SAASrxC,GAIlC,OAfmB,MAYfgI,EAAM+D,MACR/D,EAAM7H,QAEDH,CACT,IAEIgI,EAAQpL,EAAOoL,MACnB,OAAOpL,CACT,0BCvBA,IAGIs5H,EAHY,EAAQ,OAGL5L,CAAU1vH,OAAQ,UAErCusD,EAAOxoD,QAAUu3H,yBCLjB,IAGI5E,EAHU,EAAQ,OAGLuF,CAAQj8H,OAAOgK,KAAMhK,QAEtCusD,EAAOxoD,QAAU2yH,qCCLjB,IAAIkD,EAAa,EAAQ,QAGrBsC,EAA4Cn4H,IAAYA,EAAQ69B,UAAY79B,EAG5Eo4H,EAAaD,GAA4C3vE,IAAWA,EAAO3qB,UAAY2qB,EAMvF6vE,EAHgBD,GAAcA,EAAWp4H,UAAYm4H,GAGtBtC,EAAWh6E,QAG1Cy8E,EAAY,WACd,IAEE,IAAI5qF,EAAQ0qF,GAAcA,EAAWn/D,SAAWm/D,EAAWn/D,QAAQ,QAAQvrB,MAE3E,OAAIA,GAKG2qF,GAAeA,EAAYE,SAAWF,EAAYE,QAAQ,OACtD,CAAX,MAAOx6H,GAAI,CACf,CAZe,GAcfyqD,EAAOxoD,QAAUs4H,sBC5BjB,IAOIpC,EAPcj6H,OAAOK,UAOcsG,SAavC4lD,EAAOxoD,QAJP,SAAwBpC,GACtB,OAAOs4H,EAAqB15H,KAAKoB,EACnC,sBCLA4qD,EAAOxoD,QANP,SAAiB0yC,EAAMnuB,GACrB,OAAO,SAASojC,GACd,OAAOjV,EAAKnuB,EAAUojC,GACxB,CACF,0BCZA,IAAIkuE,EAAa,EAAQ,QAGrB2C,EAA0B,iBAAR34H,MAAoBA,MAAQA,KAAK5D,SAAWA,QAAU4D,KAGxEshB,EAAO00G,GAAc2C,GAAY3P,SAAS,cAATA,GAErCrgE,EAAOxoD,QAAUmhB,qBCUjBqnC,EAAOxoD,QALP,SAAqBpC,GAEnB,OADAV,KAAKgwH,SAAS5sH,IAAI1C,EAbC,6BAcZV,IACT,sBCHAsrD,EAAOxoD,QAJP,SAAqBpC,GACnB,OAAOV,KAAKgwH,SAASzsH,IAAI7C,EAC3B,sBCMA4qD,EAAOxoD,QAVP,SAAoBM,GAClB,IAAIkc,GAAS,EACTve,EAAS7B,MAAMkE,EAAI8M,MAKvB,OAHA9M,EAAIkE,SAAQ,SAAS5G,GACnBK,IAASue,GAAS5e,CACpB,IACOK,CACT,0BCfA,IAAIuuH,EAAY,EAAQ,QAcxBhkE,EAAOxoD,QALP,WACE9C,KAAKgwH,SAAW,IAAIV,EACpBtvH,KAAKkQ,KAAO,CACd,sBCKAo7C,EAAOxoD,QARP,SAAqBqB,GACnB,IAAImG,EAAOtK,KAAKgwH,SACZjvH,EAASuJ,EAAa,OAAEnG,GAG5B,OADAnE,KAAKkQ,KAAO5F,EAAK4F,KACVnP,CACT,sBCFAuqD,EAAOxoD,QAJP,SAAkBqB,GAChB,OAAOnE,KAAKgwH,SAAS7sH,IAAIgB,EAC3B,sBCEAmnD,EAAOxoD,QAJP,SAAkBqB,GAChB,OAAOnE,KAAKgwH,SAASzsH,IAAIY,EAC3B,0BCXA,IAAImrH,EAAY,EAAQ,QACpBrsH,EAAM,EAAQ,QACd2sH,EAAW,EAAQ,QA+BvBtkE,EAAOxoD,QAhBP,SAAkBqB,EAAKzD,GACrB,IAAI4J,EAAOtK,KAAKgwH,SAChB,GAAI1lH,aAAgBglH,EAAW,CAC7B,IAAI54D,EAAQpsD,EAAK0lH,SACjB,IAAK/sH,GAAQyzD,EAAM52D,OAASy7H,IAG1B,OAFA7kE,EAAMv0D,KAAK,CAACgC,EAAKzD,IACjBV,KAAKkQ,OAAS5F,EAAK4F,KACZlQ,KAETsK,EAAOtK,KAAKgwH,SAAW,IAAIJ,EAASl5D,EACtC,CAGA,OAFApsD,EAAKlH,IAAIe,EAAKzD,GACdV,KAAKkQ,KAAO5F,EAAK4F,KACVlQ,IACT,sBCTAsrD,EAAOxoD,QAZP,SAAuBg8G,EAAOp+G,EAAOixH,GAInC,IAHA,IAAIryG,EAAQqyG,EAAY,EACpB7xH,EAASg/G,EAAMh/G,SAEVwf,EAAQxf,GACf,GAAIg/G,EAAMx/F,KAAW5e,EACnB,OAAO4e,EAGX,OAAQ,CACV,0BCpBA,IAAIk8G,EAAe,EAAQ,QACvBC,EAAa,EAAQ,QACrBC,EAAiB,EAAQ,QAe7BpwE,EAAOxoD,QANP,SAAuBsd,GACrB,OAAOq7G,EAAWr7G,GACds7G,EAAet7G,GACfo7G,EAAap7G,EACnB,0BCfA,IAAIu7G,EAAgB,EAAQ,QAGxBC,EAAa,mGAGbC,EAAe,WASfnF,EAAeiF,GAAc,SAASv7G,GACxC,IAAIrf,EAAS,GAOb,OAN6B,KAAzBqf,EAAO9W,WAAW,IACpBvI,EAAOoB,KAAK,IAEdie,EAAO5W,QAAQoyH,GAAY,SAASr7G,EAAO64B,EAAQi6B,EAAOyoD,GACxD/6H,EAAOoB,KAAKkxE,EAAQyoD,EAAUtyH,QAAQqyH,EAAc,MAASziF,GAAU74B,EACzE,IACOxf,CACT,IAEAuqD,EAAOxoD,QAAU4zH,0BC1BjB,IAAIN,EAAW,EAAQ,QAoBvB9qE,EAAOxoD,QARP,SAAepC,GACb,GAAoB,iBAATA,GAAqB01H,EAAS11H,GACvC,OAAOA,EAET,IAAIK,EAAUL,EAAQ,GACtB,MAAkB,KAAVK,GAAkB,EAAIL,IAdjB,SAcwC,KAAOK,CAC9D,sBCjBA,IAGIk0H,EAHYtJ,SAASvsH,UAGIsG,SAqB7B4lD,EAAOxoD,QAZP,SAAkB0yC,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOy/E,EAAa31H,KAAKk2C,EACd,CAAX,MAAO30C,GAAI,CACb,IACE,OAAQ20C,EAAO,EACJ,CAAX,MAAO30C,GAAI,CACf,CACA,MAAO,EACT,sBCtBA,IAAIk7H,EAAe,KAiBnBzwE,EAAOxoD,QAPP,SAAyBsd,GAGvB,IAFA,IAAId,EAAQc,EAAOtgB,OAEZwf,KAAWy8G,EAAa7pH,KAAKkO,EAAOjS,OAAOmR,MAClD,OAAOA,CACT,sBCfA,IAQI08G,EAAW,oBACXC,EAAU,kDACVC,EAAS,2BAETC,EAAc,qBACdC,EAAa,kCACbC,EAAa,qCAIbC,EAPa,MAAQL,EAAU,IAAMC,EAAS,IAOtB,IACxBK,EAAW,oBAEXC,EAAQD,EAAWD,GADP,gBAAwB,CAACH,EAAaC,EAAYC,GAAY9yH,KAAK,KAAO,IAAMgzH,EAAWD,EAAW,MAElHG,EAAW,MAAQ,CAACN,EAAcF,EAAU,IAAKA,EAASG,EAAYC,EAAYL,GAAUzyH,KAAK,KAAO,IAGxGmzH,EAAYhxF,OAAOwwF,EAAS,MAAQA,EAAS,KAAOO,EAAWD,EAAO,KAa1ElxE,EAAOxoD,QAJP,SAAwBsd,GACtB,OAAOA,EAAOG,MAAMm8G,IAAc,EACpC,0BCrCA,IAAI7K,EAAY,EAAQ,QACpBE,EAAc,EAAQ,QACtB4K,EAAY,EAAQ,QACpBvpH,EAAU,EAAQ,QAuCtBk4C,EAAOxoD,QAfP,WACE,IAAIhD,EAASD,UAAUC,OACvB,IAAKA,EACH,MAAO,GAMT,IAJA,IAAI8yC,EAAO1zC,MAAMY,EAAS,GACtBg/G,EAAQj/G,UAAU,GAClByf,EAAQxf,EAELwf,KACLszB,EAAKtzB,EAAQ,GAAKzf,UAAUyf,GAE9B,OAAOuyG,EAAUz+G,EAAQ0rG,GAAS6d,EAAU7d,GAAS,CAACA,GAAQiT,EAAYn/E,EAAM,GAClF,0BCxCA0Y,EAAOxoD,QAAU,EAAjB,4BCoCAwoD,EAAOxoD,QAJP,SAAYpC,EAAO4iB,GACjB,OAAO5iB,IAAU4iB,GAAU5iB,GAAUA,GAAS4iB,GAAUA,CAC1D,0BClCA,IAAI61G,EAAc,EAAQ,QACtByD,EAAa,EAAQ,QACrB9F,EAAe,EAAQ,QACvB1jH,EAAU,EAAQ,QAgDtBk4C,EAAOxoD,QALP,SAAgB4uH,EAAYlB,GAE1B,OADWp9G,EAAQs+G,GAAcyH,EAAcyD,GACnClL,EAAYoF,EAAatG,EAAW,GAClD,0BCjDA,IAuCIxnC,EAvCa,EAAQ,OAuCd6zC,CAtCK,EAAQ,SAwCxBvxE,EAAOxoD,QAAUkmF,0BCzCjB,IAAI2pC,EAAgB,EAAQ,OACxBmE,EAAe,EAAQ,QACvBgG,EAAY,EAAQ,QAGpBC,EAAY/3H,KAAKkC,IAiDrBokD,EAAOxoD,QAZP,SAAmBg8G,EAAO0R,EAAWmB,GACnC,IAAI7xH,EAAkB,MAATg/G,EAAgB,EAAIA,EAAMh/G,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIwf,EAAqB,MAAbqyG,EAAoB,EAAImL,EAAUnL,GAI9C,OAHIryG,EAAQ,IACVA,EAAQy9G,EAAUj9H,EAASwf,EAAO,IAE7BqzG,EAAc7T,EAAOgY,EAAatG,EAAW,GAAIlxG,EAC1D,0BCpDA,IAAI09G,EAAY,EAAQ,QACpBxL,EAAW,EAAQ,QACnByL,EAAe,EAAQ,QACvB7pH,EAAU,EAAQ,QAqCtBk4C,EAAOxoD,QALP,SAAiB4uH,EAAYnB,GAE3B,OADWn9G,EAAQs+G,GAAcsL,EAAYxL,GACjCE,EAAYuL,EAAa1M,GACvC,0BCtCA,IAAI0F,EAAU,EAAQ,QAgCtB3qE,EAAOxoD,QALP,SAAai3D,EAAQ/rD,EAAM6+E,GACzB,IAAI9rF,EAAmB,MAAVg5D,OAAiBjgD,EAAYm8G,EAAQl8D,EAAQ/rD,GAC1D,YAAkB8L,IAAX/Y,EAAuB8rF,EAAe9rF,CAC/C,0BC9BA,IAAIm8H,EAAY,EAAQ,QACpBC,EAAU,EAAQ,QAgCtB7xE,EAAOxoD,QAJP,SAAei3D,EAAQ/rD,GACrB,OAAiB,MAAV+rD,GAAkBojE,EAAQpjE,EAAQ/rD,EAAMkvH,EACjD,sBCXA5xE,EAAOxoD,QAJP,SAAkBpC,GAChB,OAAOA,CACT,0BClBA,IAAI08H,EAAc,EAAQ,QACtB1H,EAAc,EAAQ,QACtBzhE,EAAW,EAAQ,QACnB6oE,EAAY,EAAQ,QACpBlzG,EAAS,EAAQ,QAGjBmzG,EAAY/3H,KAAKkC,IA6CrBokD,EAAOxoD,QAbP,SAAkB4uH,EAAYhxH,EAAOixH,EAAW0L,GAC9C3L,EAAagE,EAAYhE,GAAcA,EAAa9nG,EAAO8nG,GAC3DC,EAAaA,IAAc0L,EAASP,EAAUnL,GAAa,EAE3D,IAAI7xH,EAAS4xH,EAAW5xH,OAIxB,OAHI6xH,EAAY,IACdA,EAAYoL,EAAUj9H,EAAS6xH,EAAW,IAErC19D,EAASy9D,GACXC,GAAa7xH,GAAU4xH,EAAWrvH,QAAQ3B,EAAOixH,IAAc,IAC7D7xH,GAAUs9H,EAAY1L,EAAYhxH,EAAOixH,IAAc,CAChE,0BClDA,IAAI2L,EAAkB,EAAQ,QAC1BvK,EAAe,EAAQ,QAGvBiC,EAAcj2H,OAAOK,UAGrBC,EAAiB21H,EAAY31H,eAG7BkD,EAAuByyH,EAAYzyH,qBAoBnCouH,EAAc2M,EAAgB,WAAa,OAAOz9H,SAAW,CAA/B,IAAsCy9H,EAAkB,SAAS58H,GACjG,OAAOqyH,EAAaryH,IAAUrB,EAAeC,KAAKoB,EAAO,YACtD6B,EAAqBjD,KAAKoB,EAAO,SACtC,EAEA4qD,EAAOxoD,QAAU6tH,sBCZjB,IAAIv9G,EAAUlU,MAAMkU,QAEpBk4C,EAAOxoD,QAAUsQ,0BCzBjB,IAAI8iD,EAAa,EAAQ,QACrBi/D,EAAW,EAAQ,QA+BvB7pE,EAAOxoD,QAJP,SAAqBpC,GACnB,OAAgB,MAATA,GAAiBy0H,EAASz0H,EAAMZ,UAAYo2D,EAAWx1D,EAChE,qCC9BA,IAAIujB,EAAO,EAAQ,QACfs5G,EAAY,EAAQ,QAGpBtC,EAA4Cn4H,IAAYA,EAAQ69B,UAAY79B,EAG5Eo4H,EAAaD,GAA4C3vE,IAAWA,EAAO3qB,UAAY2qB,EAMvFkyE,EAHgBtC,GAAcA,EAAWp4H,UAAYm4H,EAG5Bh3G,EAAKu5G,YAAS1jH,EAsBvCy5C,GAnBiBiqE,EAASA,EAAOjqE,cAAWz5C,IAmBfyjH,EAEjCjyE,EAAOxoD,QAAUywD,0BCrCjB,IAAIkqE,EAAW,EAAQ,QACnBlK,EAAS,EAAQ,QACjB5C,EAAc,EAAQ,QACtBv9G,EAAU,EAAQ,QAClBsiH,EAAc,EAAQ,QACtBniE,EAAW,EAAQ,QACnBiiE,EAAc,EAAQ,QACtB3E,EAAe,EAAQ,QAUvBxxH,EAHcN,OAAOK,UAGQC,eA2DjCisD,EAAOxoD,QAxBP,SAAiBpC,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAIg1H,EAAYh1H,KACX0S,EAAQ1S,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAMqiC,QAC1DwwB,EAAS7yD,IAAUmwH,EAAanwH,IAAUiwH,EAAYjwH,IAC1D,OAAQA,EAAMZ,OAEhB,IAAIi4H,EAAMxE,EAAO7yH,GACjB,GApDW,gBAoDPq3H,GAnDO,gBAmDUA,EACnB,OAAQr3H,EAAMwP,KAEhB,GAAIslH,EAAY90H,GACd,OAAQ+8H,EAAS/8H,GAAOZ,OAE1B,IAAK,IAAIqE,KAAOzD,EACd,GAAIrB,EAAeC,KAAKoB,EAAOyD,GAC7B,OAAO,EAGX,OAAO,CACT,0BC1EA,IAAI8uH,EAAc,EAAQ,QAkC1B3nE,EAAOxoD,QAJP,SAAiBpC,EAAO4iB,GACtB,OAAO2vG,EAAYvyH,EAAO4iB,EAC5B,0BChCA,IAAIwvG,EAAa,EAAQ,QACrBj/D,EAAW,EAAQ,QAmCvBvI,EAAOxoD,QAVP,SAAoBpC,GAClB,IAAKmzD,EAASnzD,GACZ,OAAO,EAIT,IAAIq3H,EAAMjF,EAAWpyH,GACrB,MA5BY,qBA4BLq3H,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,CAC/D,sBCAAzsE,EAAOxoD,QALP,SAAkBpC,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA9Bb,gBA+BvB,sBCRA4qD,EAAOxoD,QAJP,SAAepC,GACb,OAAgB,MAATA,CACT,sBCDA4qD,EAAOxoD,QAJP,SAAgBpC,GACd,OAAiB,OAAVA,CACT,sBCWA4qD,EAAOxoD,QALP,SAAkBpC,GAChB,IAAI+O,SAAc/O,EAClB,OAAgB,MAATA,IAA0B,UAAR+O,GAA4B,YAARA,EAC/C,sBCAA67C,EAAOxoD,QAJP,SAAsBpC,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,0BC1BA,IAAIg9H,EAAe,EAAQ,QACvBC,EAAY,EAAQ,QACpBvC,EAAW,EAAQ,QAGnBwC,EAAexC,GAAYA,EAASyC,SAmBpCA,EAAWD,EAAeD,EAAUC,GAAgBF,EAExDpyE,EAAOxoD,QAAU+6H,0BC1BjB,IAAI/K,EAAa,EAAQ,QACrB1/G,EAAU,EAAQ,QAClB2/G,EAAe,EAAQ,QA2B3BznE,EAAOxoD,QALP,SAAkBpC,GAChB,MAAuB,iBAATA,IACV0S,EAAQ1S,IAAUqyH,EAAaryH,IArBrB,mBAqB+BoyH,EAAWpyH,EAC1D,0BC3BA,IAAIoyH,EAAa,EAAQ,QACrBC,EAAe,EAAQ,QA2B3BznE,EAAOxoD,QALP,SAAkBpC,GAChB,MAAuB,iBAATA,GACXqyH,EAAaryH,IArBF,mBAqBYoyH,EAAWpyH,EACvC,0BC1BA,IAAIo9H,EAAmB,EAAQ,QAC3BH,EAAY,EAAQ,QACpBvC,EAAW,EAAQ,QAGnB2C,EAAmB3C,GAAYA,EAASvK,aAmBxCA,EAAekN,EAAmBJ,EAAUI,GAAoBD,EAEpExyE,EAAOxoD,QAAU+tH,wBC1BjB,IAAImN,EAAgB,EAAQ,OACxBP,EAAW,EAAQ,QACnB/H,EAAc,EAAQ,QAkC1BpqE,EAAOxoD,QAJP,SAAci3D,GACZ,OAAO27D,EAAY37D,GAAUikE,EAAcjkE,GAAU0jE,EAAS1jE,EAChE,0BClCA,IAAIo8D,EAAW,EAAQ,QACnBW,EAAe,EAAQ,QACvBmH,EAAU,EAAQ,QAClB7qH,EAAU,EAAQ,QAiDtBk4C,EAAOxoD,QALP,SAAa4uH,EAAYnB,GAEvB,OADWn9G,EAAQs+G,GAAcyE,EAAW8H,GAChCvM,EAAYoF,EAAavG,EAAU,GACjD,0BClDA,IAAIX,EAAW,EAAQ,QAiDvB,SAAS5D,EAAQx2E,EAAM0oF,GACrB,GAAmB,mBAAR1oF,GAAmC,MAAZ0oF,GAAuC,mBAAZA,EAC3D,MAAM,IAAIj8H,UAhDQ,uBAkDpB,IAAIk8H,EAAW,WACb,IAAIvrF,EAAO/yC,UACPsE,EAAM+5H,EAAWA,EAASn+H,MAAMC,KAAM4yC,GAAQA,EAAK,GACnDzmC,EAAQgyH,EAAShyH,MAErB,GAAIA,EAAM5I,IAAIY,GACZ,OAAOgI,EAAMhJ,IAAIgB,GAEnB,IAAIpD,EAASy0C,EAAKz1C,MAAMC,KAAM4yC,GAE9B,OADAurF,EAAShyH,MAAQA,EAAM/I,IAAIe,EAAKpD,IAAWoL,EACpCpL,CACT,EAEA,OADAo9H,EAAShyH,MAAQ,IAAK6/G,EAAQoS,OAASxO,GAChCuO,CACT,CAGAnS,EAAQoS,MAAQxO,EAEhBtkE,EAAOxoD,QAAUkpH,0BCxEjB,IAAIqS,EAAe,EAAQ,QACvBC,EAAmB,EAAQ,QAC3BvI,EAAQ,EAAQ,QAChBnqH,EAAQ,EAAQ,QA4BpB0/C,EAAOxoD,QAJP,SAAkBkL,GAChB,OAAO+nH,EAAM/nH,GAAQqwH,EAAazyH,EAAMoC,IAASswH,EAAiBtwH,EACpE,0BC7BA,IAAIuwH,EAAc,EAAQ,OACtB/M,EAAW,EAAQ,QACnBsF,EAAe,EAAQ,QACvB0H,EAAa,EAAQ,QACrBprH,EAAU,EAAQ,QA8CtBk4C,EAAOxoD,QAPP,SAAgB4uH,EAAYnB,EAAUa,GACpC,IAAI57E,EAAOpiC,EAAQs+G,GAAc6M,EAAcC,EAC3CnN,EAAYxxH,UAAUC,OAAS,EAEnC,OAAO01C,EAAKk8E,EAAYoF,EAAavG,EAAU,GAAIa,EAAaC,EAAWG,EAC7E,0BChDA,IAAI9rH,EAAW,EAAQ,QA4BvB4lD,EAAOxoD,QAPP,WACE,IAAI8vC,EAAO/yC,UACPugB,EAAS1a,EAASktC,EAAK,IAE3B,OAAOA,EAAK9yC,OAAS,EAAIsgB,EAASA,EAAO5W,QAAQopC,EAAK,GAAIA,EAAK,GACjE,0BC1BA,IAAI2jF,EAAe,EAAQ,QACvBkI,EAAY,EAAQ,QACpBhD,EAAa,EAAQ,QACrBiD,EAAiB,EAAQ,QACzBb,EAAW,EAAQ,QACnBc,EAAgB,EAAQ,QACxBj5H,EAAW,EAAQ,QA6CvB4lD,EAAOxoD,QArBP,SAAesd,EAAQ21D,EAAW6oD,GAKhC,OAJIA,GAAyB,iBAATA,GAAqBF,EAAet+G,EAAQ21D,EAAW6oD,KACzE7oD,EAAY6oD,OAAQ9kH,IAEtB8kH,OAAkB9kH,IAAV8kH,EAzBa,WAyB4BA,IAAU,IAI3Dx+G,EAAS1a,EAAS0a,MAEQ,iBAAb21D,GACO,MAAbA,IAAsB8nD,EAAS9nD,OAEpCA,EAAYwgD,EAAaxgD,KACP0lD,EAAWr7G,GACpBq+G,EAAUE,EAAcv+G,GAAS,EAAGw+G,GAGxCx+G,EAAOhX,MAAM2sE,EAAW6oD,GAZtB,EAaX,sBC3BAtzE,EAAOxoD,QAJP,WACE,MAAO,EACT,sBCHAwoD,EAAOxoD,QAJP,WACE,OAAO,CACT,0BCfA,IAAI+7H,EAAW,EAAQ,OAGnBC,EAAW,IAsCfxzE,EAAOxoD,QAZP,SAAkBpC,GAChB,OAAKA,GAGLA,EAAQm+H,EAASn+H,MACHo+H,GAAYp+H,KAAU,IA9BpB,uBA+BFA,EAAQ,GAAK,EAAI,GAGxBA,GAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,CAQjC,0BCvCA,IAAIq+H,EAAW,EAAQ,QAmCvBzzE,EAAOxoD,QAPP,SAAmBpC,GACjB,IAAIK,EAASg+H,EAASr+H,GAClBs+H,EAAYj+H,EAAS,EAEzB,OAAOA,GAAWA,EAAUi+H,EAAYj+H,EAASi+H,EAAYj+H,EAAU,CACzE,yBCjCA,IAAIk+H,EAAW,EAAQ,QACnBprE,EAAW,EAAQ,QACnBuiE,EAAW,EAAQ,QAMnB8I,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAexrH,SA8CnBy3C,EAAOxoD,QArBP,SAAkBpC,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI01H,EAAS11H,GACX,OA1CM,IA4CR,GAAImzD,EAASnzD,GAAQ,CACnB,IAAI4iB,EAAgC,mBAAjB5iB,EAAM6mF,QAAwB7mF,EAAM6mF,UAAY7mF,EACnEA,EAAQmzD,EAASvwC,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAAT5iB,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQu+H,EAASv+H,GACjB,IAAI4+H,EAAWH,EAAWjtH,KAAKxR,GAC/B,OAAQ4+H,GAAYF,EAAUltH,KAAKxR,GAC/B2+H,EAAa3+H,EAAM2G,MAAM,GAAIi4H,EAAW,EAAI,GAC3CJ,EAAWhtH,KAAKxR,GAvDb,KAuD6BA,CACvC,0BC7DA,IAAI61H,EAAe,EAAQ,QA2B3BjrE,EAAOxoD,QAJP,SAAkBpC,GAChB,OAAgB,MAATA,EAAgB,GAAK61H,EAAa71H,EAC3C,0BCzBA,IAAIgF,EAAW,EAAQ,QAGnB65H,EAAY,EAwBhBj0E,EAAOxoD,QALP,SAAkB4I,GAChB,IAAInG,IAAOg6H,EACX,OAAO75H,EAASgG,GAAUnG,CAC5B,0BCzBA,IAAIi6H,EAAa,EAAQ,QACrBz2H,EAAO,EAAQ,MAgCnBuiD,EAAOxoD,QAJP,SAAgBi3D,GACd,OAAiB,MAAVA,EAAiB,GAAKylE,EAAWzlE,EAAQhxD,EAAKgxD,GACvD,gHC9BA,YAAsB,ECClB0lE,EAAiB,gBAAoB,IAAIC,GAClCpjH,EAAWmjH,EAAenjH,SACrC,GAD0DmjH,EAAe7gE,SACzE,6ECwTQ+gE,EA0VqB7iH,EACrB8iH,EAAQ9hB,iGAjpBZ+hB,EACM,iBADNA,EAEM,iBAFNA,EAGO,kBAGPC,EAAY,CACZC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,SAAU,WACVC,OAAQ,SACRC,MAAO,QACPC,MAAO,SAOPC,GAJkB1hI,OAAOgK,KAAK+2H,GAAWz2H,KAAI,SAAU5B,GACvD,OAAOq4H,EAAUr4H,EACrB,IAGa,WADTg5H,EAEU,UAFVA,EAGM,OAHNA,EAIW,aAJXA,EAKY,YALZA,EAMW,WANXA,EAOM,OAPNA,EAQU,WARVA,EASK,MATLA,EAUK,MAVLA,EAWQ,SAGRC,EAAgB,CAChBC,UAAW,YACXxhC,QAAS,UACTyhC,MAAO,YACPC,gBAAiB,kBACjBC,YAAa,cACb,aAAc,YACdC,SAAU,WACVC,SAAU,YAGVC,EACe,eADfA,EAEO,QAFPA,EAG2B,0BAH3BA,EAIwB,sBAJxBA,EAKgB,gBAGhBC,EAAeniI,OAAOgK,KAAK23H,GAAe13H,QAAO,SAAUiX,EAAK9b,GAEhE,OADA8b,EAAIygH,EAAcv8H,IAAQA,EACnB8b,CACX,GAAG,CAAC,GAEAkhH,EAAoB,CAACrB,EAAUO,SAAUP,EAAUQ,OAAQR,EAAUS,OAErEa,EAAmB,oBAEnBxb,EAA4B,mBAAX/jH,QAAoD,iBAApBA,OAAOC,SAAwB,SAAUme,GAC5F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAyB,mBAAXpe,QAAyBoe,EAAItY,cAAgB9F,QAAUoe,IAAQpe,OAAOzC,UAAY,gBAAkB6gB,CAC3H,EAEIohH,EAAiB,SAAUx9H,EAAU45G,GACvC,KAAM55G,aAAoB45G,GACxB,MAAM,IAAIx7G,UAAU,oCAExB,EAEIq/H,EAAc,WAChB,SAASl9C,EAAiB9mE,EAAQP,GAChC,IAAK,IAAIpd,EAAI,EAAGA,EAAIod,EAAMjd,OAAQH,IAAK,CACrC,IAAIokH,EAAahnG,EAAMpd,GACvBokH,EAAWvpE,WAAaupE,EAAWvpE,aAAc,EACjDupE,EAAWrgC,cAAe,EACtB,UAAWqgC,IAAYA,EAAWtgC,UAAW,GACjD1kF,OAAOgE,eAAeua,EAAQymG,EAAW5/G,IAAK4/G,EAChD,CACF,CAEA,OAAO,SAAUtG,EAAa8jB,EAAYC,GAGxC,OAFID,GAAYn9C,EAAiBq5B,EAAYr+G,UAAWmiI,GACpDC,GAAap9C,EAAiBq5B,EAAa+jB,GACxC/jB,CACT,CACF,CAhBkB,GAkBdpgG,EAAWte,OAAOS,QAAU,SAAU8d,GACxC,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CACzC,IAAI4X,EAAS1X,UAAUF,GAEvB,IAAK,IAAIwE,KAAOoT,EACVxY,OAAOK,UAAUC,eAAeC,KAAKiY,EAAQpT,KAC/CmZ,EAAOnZ,GAAOoT,EAAOpT,GAG3B,CAEA,OAAOmZ,CACT,EAkBImkH,EAA0B,SAAUxhH,EAAKlX,GAC3C,IAAIuU,EAAS,CAAC,EAEd,IAAK,IAAI3d,KAAKsgB,EACRlX,EAAK1G,QAAQ1C,IAAM,GAClBZ,OAAOK,UAAUC,eAAeC,KAAK2gB,EAAKtgB,KAC/C2d,EAAO3d,GAAKsgB,EAAItgB,IAGlB,OAAO2d,CACT,EAEIokH,EAA4B,SAAU/+H,EAAMrD,GAC9C,IAAKqD,EACH,MAAM,IAAI+6G,eAAe,6DAG3B,OAAOp+G,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BqD,EAAPrD,CAC5E,EAEIqiI,EAA0B,SAAiCpgF,GAC3D,IAAIjzC,IAASzO,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,KAAmBA,UAAU,GAE5E,OAAe,IAAXyO,EACOa,OAAOoyC,GAGXpyC,OAAOoyC,GAAK/3C,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,SAChI,EAEIo4H,EAAwB,SAA+BC,GACvD,IAAIC,EAAiBC,EAAqBF,EAAW/B,EAAUU,OAC3DwB,EAAoBD,EAAqBF,EAAWZ,GAExD,GAAIe,GAAqBF,EAErB,OAAOE,EAAkBx4H,QAAQ,OAAO,WACpC,OAAOtK,MAAMkU,QAAQ0uH,GAAkBA,EAAev4H,KAAK,IAAMu4H,CACrE,IAGJ,IAAIG,EAAwBF,EAAqBF,EAAWZ,GAE5D,OAAOa,GAAkBG,QAAyBnoH,CACtD,EAEIooH,EAAyB,SAAgCL,GACzD,OAAOE,EAAqBF,EAAWZ,IAAwC,WAAa,CAChG,EAEIkB,EAA6B,SAAoCC,EAASP,GAC1E,OAAOA,EAAU16H,QAAO,SAAU4V,GAC9B,YAAiC,IAAnBA,EAAMqlH,EACxB,IAAG/4H,KAAI,SAAU0T,GACb,OAAOA,EAAMqlH,EACjB,IAAGp5H,QAAO,SAAUq5H,EAAU9mH,GAC1B,OAAO8B,EAAS,CAAC,EAAGglH,EAAU9mH,EAClC,GAAG,CAAC,EACR,EAEI+mH,EAA0B,SAAiCC,EAAmBV,GAC9E,OAAOA,EAAU16H,QAAO,SAAU4V,GAC9B,YAAwC,IAA1BA,EAAM+iH,EAAUC,KAClC,IAAG12H,KAAI,SAAU0T,GACb,OAAOA,EAAM+iH,EAAUC,KAC3B,IAAGyC,UAAUx5H,QAAO,SAAUy5H,EAAkB1K,GAC5C,IAAK0K,EAAiB3iI,OAGlB,IAFA,IAAIiJ,EAAOhK,OAAOgK,KAAKgvH,GAEdp4H,EAAI,EAAGA,EAAIoJ,EAAKjJ,OAAQH,IAAK,CAClC,IACI+iI,EADe35H,EAAKpJ,GACiBqU,cAEzC,IAA0D,IAAtDuuH,EAAkBlgI,QAAQqgI,IAAiC3K,EAAI2K,GAC/D,OAAOD,EAAiB7lH,OAAOm7G,EAEvC,CAGJ,OAAO0K,CACX,GAAG,GACP,EAEIE,EAAuB,SAA8BvwG,EAASmwG,EAAmBV,GAEjF,IAAIe,EAAmB,CAAC,EAExB,OAAOf,EAAU16H,QAAO,SAAU4V,GAC9B,QAAI7d,MAAMkU,QAAQ2J,EAAMqV,WAGM,IAAnBrV,EAAMqV,IACb/gB,GAAK,WAAa+gB,EAAU,mDAAwDwzF,EAAQ7oG,EAAMqV,IAAY,MAE3G,EACX,IAAG/oB,KAAI,SAAU0T,GACb,OAAOA,EAAMqV,EACjB,IAAGowG,UAAUx5H,QAAO,SAAU65H,EAAcC,GACxC,IAAIC,EAAmB,CAAC,EAExBD,EAAa37H,QAAO,SAAU4wH,GAG1B,IAFA,IAAIiL,OAAsB,EACtBj6H,EAAOhK,OAAOgK,KAAKgvH,GACdp4H,EAAI,EAAGA,EAAIoJ,EAAKjJ,OAAQH,IAAK,CAClC,IAAIsjI,EAAel6H,EAAKpJ,GACpB+iI,EAAwBO,EAAajvH,eAGiB,IAAtDuuH,EAAkBlgI,QAAQqgI,IAAmCM,IAAwBvC,GAAiE,cAA3C1I,EAAIiL,GAAqBhvH,eAAoC0uH,IAA0BjC,GAAmE,eAA7C1I,EAAI2K,GAAuB1uH,gBACnPgvH,EAAsBN,IAGuB,IAA7CH,EAAkBlgI,QAAQ4gI,IAAyBA,IAAiBxC,GAA6BwC,IAAiBxC,GAA2BwC,IAAiBxC,IAC9JuC,EAAsBC,EAE9B,CAEA,IAAKD,IAAwBjL,EAAIiL,GAC7B,OAAO,EAGX,IAAItiI,EAAQq3H,EAAIiL,GAAqBhvH,cAUrC,OARK4uH,EAAiBI,KAClBJ,EAAiBI,GAAuB,CAAC,GAGxCD,EAAiBC,KAClBD,EAAiBC,GAAuB,CAAC,IAGxCJ,EAAiBI,GAAqBtiI,KACvCqiI,EAAiBC,GAAqBtiI,IAAS,GACxC,EAIf,IAAG8hI,UAAUl7H,SAAQ,SAAUywH,GAC3B,OAAO8K,EAAa1gI,KAAK41H,EAC7B,IAIA,IADA,IAAIhvH,EAAOhK,OAAOgK,KAAKg6H,GACdpjI,EAAI,EAAGA,EAAIoJ,EAAKjJ,OAAQH,IAAK,CAClC,IAAIsjI,EAAel6H,EAAKpJ,GACpBujI,EAAW,IAAa,CAAC,EAAGN,EAAiBK,GAAeF,EAAiBE,IAEjFL,EAAiBK,GAAgBC,CACrC,CAEA,OAAOL,CACX,GAAG,IAAIL,SACX,EAEIT,EAAuB,SAA8BF,EAAW18E,GAChE,IAAK,IAAIxlD,EAAIkiI,EAAU/hI,OAAS,EAAGH,GAAK,EAAGA,IAAK,CAC5C,IAAIod,EAAQ8kH,EAAUliI,GAEtB,GAAIod,EAAM1d,eAAe8lD,GACrB,OAAOpoC,EAAMooC,EAErB,CAEA,OAAO,IACX,EAoBIg+E,GACIxD,EAAQn6H,KAAKC,MAEV,SAAU+wB,GACb,IAAI4sG,EAAc59H,KAAKC,MAEnB29H,EAAczD,EAAQ,IACtBA,EAAQyD,EACR5sG,EAAS4sG,IAET1/H,YAAW,WACPy/H,EAAY3sG,EAChB,GAAG,EAEX,GAGA6sG,GAAc,SAAqB99H,GACnC,OAAOwB,aAAaxB,EACxB,EAEIwzD,GAA0C,oBAAXr2D,OAAyBA,OAAOq2D,uBAAyBr2D,OAAOq2D,sBAAsBnzD,KAAKlD,SAAWA,OAAO4gI,6BAA+B5gI,OAAO6gI,0BAA4BJ,EAAc,EAAA7hI,EAAOy3D,uBAAyBoqE,EAE5PK,GAAyC,oBAAX9gI,OAAyBA,OAAO8gI,sBAAwB9gI,OAAO+gI,4BAA8B/gI,OAAOghI,yBAA2BL,GAAc,EAAA/hI,EAAOkiI,sBAAwBH,GAE1MhyH,GAAO,SAAcsyH,GACrB,OAAOvyH,SAAmC,mBAAjBA,QAAQC,MAAuBD,QAAQC,KAAKsyH,EACzE,EAEIC,GAAkB,KAmBlBC,GAAmB,SAA0BC,EAAU32G,GACvD,IAAI42G,EAAUD,EAASC,QACnBC,EAAiBF,EAASE,eAC1BC,EAAiBH,EAASG,eAC1BC,EAAWJ,EAASI,SACpBC,EAAWL,EAASK,SACpBC,EAAeN,EAASM,aACxBC,EAAsBP,EAASO,oBAC/BC,EAAaR,EAASQ,WACtBC,EAAYT,EAASS,UACrBrqH,EAAQ4pH,EAAS5pH,MACjBsqH,EAAkBV,EAASU,gBAE/BC,GAAiB3E,EAAUE,KAAMgE,GACjCS,GAAiB3E,EAAUI,KAAM+D,GAEjCS,GAAYxqH,EAAOsqH,GAEnB,IAAIG,EAAa,CACbZ,QAASa,GAAW9E,EAAUC,KAAMgE,GACpCG,SAAUU,GAAW9E,EAAUK,KAAM+D,GACrCC,SAAUS,GAAW9E,EAAUM,KAAM+D,GACrCC,aAAcQ,GAAW9E,EAAUO,SAAU+D,GAC7CE,WAAYM,GAAW9E,EAAUQ,OAAQgE,GACzCC,UAAWK,GAAW9E,EAAUS,MAAOgE,IAGvCM,EAAY,CAAC,EACbC,EAAc,CAAC,EAEnB/lI,OAAOgK,KAAK47H,GAAYr9H,SAAQ,SAAU86H,GACtC,IAAI2C,EAAsBJ,EAAWvC,GACjC4C,EAAUD,EAAoBC,QAC9BC,EAAUF,EAAoBE,QAG9BD,EAAQllI,SACR+kI,EAAUzC,GAAW4C,GAErBC,EAAQnlI,SACRglI,EAAY1C,GAAWuC,EAAWvC,GAAS6C,QAEnD,IAEA93G,GAAMA,IAENk3G,EAAoBP,EAAUe,EAAWC,EAC7C,EAEII,GAAe,SAAsBC,GACrC,OAAOjmI,MAAMkU,QAAQ+xH,GAAiBA,EAAc57H,KAAK,IAAM47H,CACnE,EAEIT,GAAc,SAAqBxqH,EAAOosD,QACrB,IAAVpsD,GAAyB9L,SAAS8L,QAAUA,IACnD9L,SAAS8L,MAAQgrH,GAAahrH,IAGlCuqH,GAAiB3E,EAAUU,MAAOl6D,EACtC,EAEIm+D,GAAmB,SAA0BryG,EAASk0C,GACtD,IAAI8+D,EAAah3H,SAASqxD,qBAAqBrtC,GAAS,GAExD,GAAKgzG,EAAL,CASA,IALA,IAAIC,EAAwBD,EAAWziG,aAAay+F,GAChDkE,EAAmBD,EAAwBA,EAAsBj8H,MAAM,KAAO,GAC9Em8H,EAAqB,GAAG3oH,OAAO0oH,GAC/BE,EAAgBzmI,OAAOgK,KAAKu9D,GAEvB3mE,EAAI,EAAGA,EAAI6lI,EAAc1lI,OAAQH,IAAK,CAC3C,IAAI8lI,EAAYD,EAAc7lI,GAC1Be,EAAQ4lE,EAAWm/D,IAAc,GAEjCL,EAAWziG,aAAa8iG,KAAe/kI,GACvC0kI,EAAWluH,aAAauuH,EAAW/kI,IAGM,IAAzC4kI,EAAiBjjI,QAAQojI,IACzBH,EAAiBnjI,KAAKsjI,GAG1B,IAAIC,EAAcH,EAAmBljI,QAAQojI,IACxB,IAAjBC,GACAH,EAAmBxiG,OAAO2iG,EAAa,EAE/C,CAEA,IAAK,IAAIz7D,EAAKs7D,EAAmBzlI,OAAS,EAAGmqE,GAAM,EAAGA,IAClDm7D,EAAWllG,gBAAgBqlG,EAAmBt7D,IAG9Cq7D,EAAiBxlI,SAAWylI,EAAmBzlI,OAC/CslI,EAAWllG,gBAAgBkhG,GACpBgE,EAAWziG,aAAay+F,KAAsBoE,EAAcj8H,KAAK,MACxE67H,EAAWluH,aAAakqH,EAAkBoE,EAAcj8H,KAAK,KAhCjE,CAkCJ,EAEIq7H,GAAa,SAAoBn1H,EAAMk2H,GACvC,IAAIC,EAAcx3H,SAASqtC,MAAQrtC,SAAS+sD,cAAc2kE,EAAUG,MAChE4F,EAAWD,EAAY/jG,iBAAiBpyB,EAAO,IAAPA,sBACxCw1H,EAAU/lI,MAAME,UAAUiI,MAAM/H,KAAKumI,GACrCb,EAAU,GACVc,OAAgB,EA4CpB,OA1CIH,GAAQA,EAAK7lI,QACb6lI,EAAKr+H,SAAQ,SAAUywH,GACnB,IAAIgO,EAAa33H,SAAS6I,cAAcxH,GAExC,IAAK,IAAIg2H,KAAa1N,EAClB,GAAIA,EAAI14H,eAAeomI,GACnB,GAAIA,IAAchF,EACdsF,EAAWrqE,UAAYq8D,EAAIr8D,eACxB,GAAI+pE,IAAchF,EACjBsF,EAAWhpF,WACXgpF,EAAWhpF,WAAWipF,QAAUjO,EAAIiO,QAEpCD,EAAWvuH,YAAYpJ,SAAS63H,eAAelO,EAAIiO,cAEpD,CACH,IAAItlI,OAAkC,IAAnBq3H,EAAI0N,GAA6B,GAAK1N,EAAI0N,GAC7DM,EAAW7uH,aAAauuH,EAAW/kI,EACvC,CAIRqlI,EAAW7uH,aAAakqH,EAAkB,QAGtC6D,EAAQlkG,MAAK,SAAUmlG,EAAa5mH,GAEpC,OADAwmH,EAAgBxmH,EACTymH,EAAWpgE,YAAYugE,EAClC,IACIjB,EAAQliG,OAAO+iG,EAAe,GAE9Bd,EAAQ7iI,KAAK4jI,EAErB,IAGJd,EAAQ39H,SAAQ,SAAUywH,GACtB,OAAOA,EAAIp4D,WAAWroD,YAAYygH,EACtC,IACAiN,EAAQ19H,SAAQ,SAAUywH,GACtB,OAAO6N,EAAYpuH,YAAYugH,EACnC,IAEO,CACHkN,QAASA,EACTD,QAASA,EAEjB,EAEImB,GAAoC,SAA2C7/D,GAC/E,OAAOvnE,OAAOgK,KAAKu9D,GAAYt9D,QAAO,SAAUu4C,EAAKp9C,GACjD,IAAIqiE,OAAkC,IAApBF,EAAWniE,GAAuBA,EAAM,KAAQmiE,EAAWniE,GAAO,IAAO,GAAKA,EAChG,OAAOo9C,EAAMA,EAAM,IAAMilB,EAAOA,CACpC,GAAG,GACP,EAyBI4/D,GAAuC,SAA8C9/D,GACrF,IAAI+/D,EAAYxmI,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAErF,OAAOd,OAAOgK,KAAKu9D,GAAYt9D,QAAO,SAAUiX,EAAK9b,GAEjD,OADA8b,EAAIygH,EAAcv8H,IAAQA,GAAOmiE,EAAWniE,GACrC8b,CACX,GAAGomH,EACP,EA8CIC,GAAmB,SAA0B72H,EAAMk2H,EAAMr3H,GACzD,OAAQmB,GACJ,KAAKqwH,EAAUU,MACX,MAAO,CACH+F,YAAa,WACT,OAxC6DrsH,EAwClByrH,EAAKzrH,MAxCoBosD,EAwCbq/D,EAAKnB,iBApC3DgC,EAAa,CAC1BriI,IAAK+V,IACKknH,IAAoB,EAC9BrkH,EAAQqpH,GAAqC9/D,EADTkgE,GAGjC,CAAC,gBAAoB1G,EAAUU,MAAOzjH,EAAO7C,IATpB,IAA6CA,EAAOosD,EAChFkgE,EAMAzpH,CAkCQ,EACArX,SAAU,WACN,OApFQ,SAA+B+J,EAAMyK,EAAOosD,EAAYh4D,GAChF,IAAIm4H,EAAkBN,GAAkC7/D,GACpDogE,EAAiBxB,GAAahrH,GAClC,OAAOusH,EAAkB,IAAMh3H,EAAN,6BAAqDg3H,EAAkB,IAAM9E,EAAwB+E,EAAgBp4H,GAAU,KAAOmB,EAAO,IAAM,IAAMA,EAAN,6BAAqDkyH,EAAwB+E,EAAgBp4H,GAAU,KAAOmB,EAAO,GACrS,CAgF2Bk3H,CAAsBl3H,EAAMk2H,EAAKzrH,MAAOyrH,EAAKnB,gBAAiBl2H,EACzE,GAER,KAAKuxH,EACL,KAAKA,EACD,MAAO,CACH0G,YAAa,WACT,OAAOH,GAAqCT,EAChD,EACAjgI,SAAU,WACN,OAAOygI,GAAkCR,EAC7C,GAER,QACI,MAAO,CACHY,YAAa,WACT,OA/Ce,SAAsC92H,EAAMk2H,GAC3E,OAAOA,EAAKt8H,KAAI,SAAU0uH,EAAKp4H,GAC3B,IAAIinI,EAEAC,IAAaD,EAAa,CAC1BziI,IAAKxE,IACKyhI,IAAoB,EAAMwF,GAaxC,OAXA7nI,OAAOgK,KAAKgvH,GAAKzwH,SAAQ,SAAUm+H,GAC/B,IAAIqB,EAAkBpG,EAAc+E,IAAcA,EAElD,GAAIqB,IAAoBrG,GAA6BqG,IAAoBrG,EAAyB,CAC9F,IAAI37G,EAAUizG,EAAIr8D,WAAaq8D,EAAIiO,QACnCa,EAAUzpF,wBAA0B,CAAEC,OAAQv4B,EAClD,MACI+hH,EAAUC,GAAmB/O,EAAI0N,EAEzC,IAEO,gBAAoBh2H,EAAMo3H,EACrC,GACJ,CA0B2BE,CAA6Bt3H,EAAMk2H,EAC9C,EACAjgI,SAAU,WACN,OAjGO,SAA8B+J,EAAMk2H,EAAMr3H,GACjE,OAAOq3H,EAAK38H,QAAO,SAAUu4C,EAAKw2E,GAC9B,IAAIiP,EAAgBjoI,OAAOgK,KAAKgvH,GAAK5wH,QAAO,SAAUs+H,GAClD,QAASA,IAAchF,GAA6BgF,IAAchF,EACtE,IAAGz3H,QAAO,SAAUoX,EAAQqlH,GACxB,IAAIj/D,OAAiC,IAAnBuxD,EAAI0N,GAA6BA,EAAYA,EAAY,KAAQ9D,EAAwB5J,EAAI0N,GAAYn3H,GAAU,IACrI,OAAO8R,EAASA,EAAS,IAAMomD,EAAOA,CAC1C,GAAG,IAECygE,EAAalP,EAAIr8D,WAAaq8D,EAAIiO,SAAW,GAE7CkB,GAAqD,IAArC/F,EAAkB9+H,QAAQoN,GAE9C,OAAO8xC,EAAM,IAAM9xC,EAAZ8xC,6BAA2DylF,GAAiBE,EAAgB,KAAO,IAAMD,EAAa,KAAOx3H,EAAO,IAC/I,GAAG,GACP,CAkF2B03H,CAAqB13H,EAAMk2H,EAAMr3H,EAC5C,GAGhB,EAEI84H,GAAmB,SAA0BzoH,GAC7C,IAAIolH,EAAUplH,EAAKolH,QACfC,EAAiBrlH,EAAKqlH,eACtB11H,EAASqQ,EAAKrQ,OACd21H,EAAiBtlH,EAAKslH,eACtBC,EAAWvlH,EAAKulH,SAChBC,EAAWxlH,EAAKwlH,SAChBC,EAAezlH,EAAKylH,aACpBE,EAAa3lH,EAAK2lH,WAClBC,EAAY5lH,EAAK4lH,UACjB8C,EAAa1oH,EAAKzE,MAClBA,OAAuBJ,IAAfutH,EAA2B,GAAKA,EACxC7C,EAAkB7lH,EAAK6lH,gBAC3B,MAAO,CACHloB,KAAMgqB,GAAiBxG,EAAUC,KAAMgE,EAASz1H,GAChD01H,eAAgBsC,GAAiBzG,EAAsBmE,EAAgB11H,GACvE21H,eAAgBqC,GAAiBzG,EAAsBoE,EAAgB31H,GACvE0uC,KAAMspF,GAAiBxG,EAAUK,KAAM+D,EAAU51H,GACjDg6C,KAAMg+E,GAAiBxG,EAAUM,KAAM+D,EAAU71H,GACjDg5H,SAAUhB,GAAiBxG,EAAUO,SAAU+D,EAAc91H,GAC7DysD,OAAQurE,GAAiBxG,EAAUQ,OAAQgE,EAAYh2H,GACvD6I,MAAOmvH,GAAiBxG,EAAUS,MAAOgE,EAAWj2H,GACpD4L,MAAOosH,GAAiBxG,EAAUU,MAAO,CAAEtmH,MAAOA,EAAOsqH,gBAAiBA,GAAmBl2H,GAErG,EAwPIi5H,GAAoB,KAnmBC,SAA4B1F,GACjD,MAAO,CACHkC,QAASzB,EAAwB,CAAC7B,EAAqBA,GAAwBoB,GAC/EmC,eAAgB7B,EAA2BtC,EAAsBgC,GACjEn+D,MAAOq+D,EAAqBF,EAAWZ,GACvC3yH,OAAQyzH,EAAqBF,EAAWZ,GACxCgD,eAAgB9B,EAA2BtC,EAAsBgC,GACjEqC,SAAUvB,EAAqB7C,EAAUK,KAAM,CAACM,EAAoBA,GAAsBoB,GAC1FsC,SAAUxB,EAAqB7C,EAAUM,KAAM,CAACK,EAAqBA,EAAwBA,EAA0BA,EAAyBA,GAA2BoB,GAC3KuC,aAAczB,EAAqB7C,EAAUO,SAAU,CAACI,GAA4BoB,GACpFwC,oBAAqBnC,EAAuBL,GAC5CyC,WAAY3B,EAAqB7C,EAAUQ,OAAQ,CAACG,EAAoBA,GAA4BoB,GACpG0C,UAAW5B,EAAqB7C,EAAUS,MAAO,CAACE,GAA0BoB,GAC5E3nH,MAAO0nH,EAAsBC,GAC7B2C,gBAAiBrC,EAA2BtC,EAAuBgC,GAE3E,IAiC8B,SAAiCiC,GACvDF,IACAJ,GAAqBI,IAGrBE,EAASpgE,MACTkgE,GAAkB7qE,IAAsB,WACpC8qE,GAAiBC,GAAU,WACvBF,GAAkB,IACtB,GACJ,KAEAC,GAAiBC,GACjBF,GAAkB,KAE1B,GAmiBoFwD,GAA5D,EAJJ,WAChB,OAAO,IACX,IAIII,IAxPyB1qH,EAwPHyqH,GArPfzpB,EAAQ8hB,EAAS,SAAU91G,GAG9B,SAAS29G,IAEL,OADApG,EAAerhI,KAAMynI,GACd/F,EAA0B1hI,KAAM8pB,EAAiB/pB,MAAMC,KAAMH,WACxE,CA6LA,OAzuBO,SAAU0jF,EAAUC,GACjC,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIvhF,UAAU,kEAAoEuhF,GAG1FD,EAASnkF,UAAYL,OAAOqO,OAAOo2E,GAAcA,EAAWpkF,UAAW,CACrEuI,YAAa,CACXjH,MAAO6iF,EACP/oC,YAAY,EACZipC,UAAU,EACVC,cAAc,KAGdF,IAAYzkF,OAAOC,eAAiBD,OAAOC,eAAeukF,EAAUC,GAAcD,EAAStkF,UAAYukF,EAC7G,CAyhBQkkD,CAASD,EAAe39G,GAOxB29G,EAAcroI,UAAU2qE,sBAAwB,SAA+BvhD,GAC3E,OAAQ,IAAQxoB,KAAK+c,MAAOyL,EAChC,EAEAi/G,EAAcroI,UAAUuoI,yBAA2B,SAAkCz/G,EAAO0/G,GACxF,IAAKA,EACD,OAAO,KAGX,OAAQ1/G,EAAMzY,MACV,KAAKqwH,EAAUQ,OACf,KAAKR,EAAUO,SACX,MAAO,CACH3kE,UAAWksE,GAGnB,KAAK9H,EAAUS,MACX,MAAO,CACHyF,QAAS4B,GAIrB,MAAM,IAAIxjI,MAAM,IAAM8jB,EAAMzY,KAAO,qGACvC,EAEAg4H,EAAcroI,UAAUyoI,yBAA2B,SAAkClpH,GACjF,IAAImpH,EAEA5/G,EAAQvJ,EAAKuJ,MACb6/G,EAAoBppH,EAAKopH,kBACzBC,EAAgBrpH,EAAKqpH,cACrBJ,EAAiBjpH,EAAKipH,eAE1B,OAAOvqH,EAAS,CAAC,EAAG0qH,IAAoBD,EAAwB,CAAC,GAAyB5/G,EAAMzY,MAAQ,GAAGmN,OAAOmrH,EAAkB7/G,EAAMzY,OAAS,GAAI,CAAC4N,EAAS,CAAC,EAAG2qH,EAAehoI,KAAK2nI,yBAAyBz/G,EAAO0/G,MAAoBE,GACjP,EAEAL,EAAcroI,UAAU6oI,sBAAwB,SAA+BtxG,GAC3E,IAAIuxG,EAAwBC,EAExBjgH,EAAQyO,EAAMzO,MACdkgH,EAAWzxG,EAAMyxG,SACjBJ,EAAgBrxG,EAAMqxG,cACtBJ,EAAiBjxG,EAAMixG,eAE3B,OAAQ1/G,EAAMzY,MACV,KAAKqwH,EAAUU,MACX,OAAOnjH,EAAS,CAAC,EAAG+qH,IAAWF,EAAyB,CAAC,GAA0BhgH,EAAMzY,MAAQm4H,EAAgBM,EAAuB1D,gBAAkBnnH,EAAS,CAAC,EAAG2qH,GAAgBE,IAE3L,KAAKpI,EAAUE,KACX,OAAO3iH,EAAS,CAAC,EAAG+qH,EAAU,CAC1BpE,eAAgB3mH,EAAS,CAAC,EAAG2qH,KAGrC,KAAKlI,EAAUI,KACX,OAAO7iH,EAAS,CAAC,EAAG+qH,EAAU,CAC1BnE,eAAgB5mH,EAAS,CAAC,EAAG2qH,KAIzC,OAAO3qH,EAAS,CAAC,EAAG+qH,IAAWD,EAAyB,CAAC,GAA0BjgH,EAAMzY,MAAQ4N,EAAS,CAAC,EAAG2qH,GAAgBG,GAClI,EAEAV,EAAcroI,UAAUipI,4BAA8B,SAAqCN,EAAmBK,GAC1G,IAAIE,EAAoBjrH,EAAS,CAAC,EAAG+qH,GAQrC,OANArpI,OAAOgK,KAAKg/H,GAAmBzgI,SAAQ,SAAUihI,GAC7C,IAAIC,EAEJF,EAAoBjrH,EAAS,CAAC,EAAGirH,IAAoBE,EAAyB,CAAC,GAA0BD,GAAkBR,EAAkBQ,GAAiBC,GAClK,IAEOF,CACX,EAEAb,EAAcroI,UAAUqpI,sBAAwB,SAA+BvgH,EAAO0/G,GAmBlF,OAAO,CACX,EAEAH,EAAcroI,UAAUspI,mBAAqB,SAA4BnuH,EAAU6tH,GAC/E,IAAIt9C,EAAS9qF,KAET+nI,EAAoB,CAAC,EAyCzB,OAvCA,mBAAuBxtH,GAAU,SAAU2N,GACvC,GAAKA,GAAUA,EAAMnL,MAArB,CAIA,IAAI4rH,EAAezgH,EAAMnL,MACrB6qH,EAAiBe,EAAapuH,SAG9BytH,EAhOoB,SAA2CjrH,GAC/E,IAAI6rH,EAAiB/oI,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE1F,OAAOd,OAAOgK,KAAKgU,GAAO/T,QAAO,SAAUiX,EAAK9b,GAE5C,OADA8b,EAAIihH,EAAa/8H,IAAQA,GAAO4Y,EAAM5Y,GAC/B8b,CACX,GAAG2oH,EACP,CAyNoCC,CAFHpH,EAAwBkH,EAAc,CAAC,cAMxD,OAFA79C,EAAO29C,sBAAsBvgH,EAAO0/G,GAE5B1/G,EAAMzY,MACV,KAAKqwH,EAAUK,KACf,KAAKL,EAAUM,KACf,KAAKN,EAAUO,SACf,KAAKP,EAAUQ,OACf,KAAKR,EAAUS,MACXwH,EAAoBj9C,EAAO+8C,yBAAyB,CAChD3/G,MAAOA,EACP6/G,kBAAmBA,EACnBC,cAAeA,EACfJ,eAAgBA,IAEpB,MAEJ,QACIQ,EAAWt9C,EAAOm9C,sBAAsB,CACpC//G,MAAOA,EACPkgH,SAAUA,EACVJ,cAAeA,EACfJ,eAAgBA,IA7B5B,CAiCJ,IAEAQ,EAAWpoI,KAAKqoI,4BAA4BN,EAAmBK,EAEnE,EAEAX,EAAcroI,UAAUurB,OAAS,WAC7B,IAAIg0F,EAAS3+G,KAAK+c,MACdxC,EAAWokG,EAAOpkG,SAClBwC,EAAQ0kH,EAAwB9iB,EAAQ,CAAC,aAEzCypB,EAAW/qH,EAAS,CAAC,EAAGN,GAM5B,OAJIxC,IACA6tH,EAAWpoI,KAAK0oI,mBAAmBnuH,EAAU6tH,IAG1C,gBAAoBtrH,EAAWsrH,EAC1C,EAEA9G,EAAYmG,EAAe,KAAM,CAAC,CAC9BtjI,IAAK,YAyBLf,IAAK,SAAgBya,GACjBf,EAAUe,UAAYA,CAC1B,KAEG4pH,CACX,CApMwB,CAoMtB,aAAkB7H,EAAO70G,UAAY,CACnCuxF,KAAM,WACN0nB,eAAgB,WAChBzpH,SAAU,cAAoB,CAAC,YAAkB,UAAiB,WAClEuuH,aAAc,WACdplE,MAAO,SACPi+D,wBAAyB,SACzBsC,eAAgB,WAChBjnF,KAAM,YAAkB,YACxBsL,KAAM,YAAkB,YACxBg/E,SAAU,YAAkB,YAC5BjD,oBAAqB,SACrBtpE,OAAQ,YAAkB,YAC1B5jD,MAAO,YAAkB,YACzB+C,MAAO,WACPsqH,gBAAiB,WACjBuE,cAAe,YAChBnJ,EAAO50G,aAAe,CACrB04C,OAAO,EACPi+D,yBAAyB,GAC1B/B,EAAOoJ,KAAOlsH,EAAUksH,KAAMpJ,EAAOqJ,OAAS,WAC7C,IAAIC,EAAcpsH,EAAUmsH,SAkB5B,OAjBKC,IAEDA,EAAc9B,GAAiB,CAC3BrD,QAAS,GACTC,eAAgB,CAAC,EACjBrC,yBAAyB,EACzBsC,eAAgB,CAAC,EACjBC,SAAU,GACVC,SAAU,GACVC,aAAc,GACdE,WAAY,GACZC,UAAW,GACXrqH,MAAO,GACPsqH,gBAAiB,CAAC,KAInB0E,CACX,EAAGprB,GAUP0pB,GAAa2B,aAAe3B,GAAayB,2BC74BzC,IAAIG,EAAoC,oBAAZ/kB,QACxBglB,EAAwB,mBAARpmI,IAChBqmI,EAAwB,mBAARjkI,IAChBkkI,EAAwC,mBAAhBnzE,eAAgCA,YAAYC,OAIxE,SAASmzE,EAAM1lI,EAAGhF,GAEhB,GAAIgF,IAAMhF,EAAG,OAAO,EAEpB,GAAIgF,GAAKhF,GAAiB,iBAALgF,GAA6B,iBAALhF,EAAe,CAC1D,GAAIgF,EAAE6D,cAAgB7I,EAAE6I,YAAa,OAAO,EAE5C,IAAI7H,EAAQH,EAAGoJ,EA6BX0gI,EA5BJ,GAAIvqI,MAAMkU,QAAQtP,GAAI,CAEpB,IADAhE,EAASgE,EAAEhE,SACGhB,EAAEgB,OAAQ,OAAO,EAC/B,IAAKH,EAAIG,EAAgB,GAARH,KACf,IAAK6pI,EAAM1lI,EAAEnE,GAAIb,EAAEa,IAAK,OAAO,EACjC,OAAO,CACT,CAuBA,GAAI0pI,GAAWvlI,aAAab,KAASnE,aAAamE,IAAM,CACtD,GAAIa,EAAEoM,OAASpR,EAAEoR,KAAM,OAAO,EAE9B,IADAu5H,EAAK3lI,EAAE2b,YACE9f,EAAI8pI,EAAG7oI,QAAQI,UACjBlC,EAAEyE,IAAI5D,EAAEe,MAAM,IAAK,OAAO,EAEjC,IADA+oI,EAAK3lI,EAAE2b,YACE9f,EAAI8pI,EAAG7oI,QAAQI,UACjBwoI,EAAM7pI,EAAEe,MAAM,GAAI5B,EAAEqE,IAAIxD,EAAEe,MAAM,KAAM,OAAO,EACpD,OAAO,CACT,CAEA,GAAI4oI,GAAWxlI,aAAauB,KAASvG,aAAauG,IAAM,CACtD,GAAIvB,EAAEoM,OAASpR,EAAEoR,KAAM,OAAO,EAE9B,IADAu5H,EAAK3lI,EAAE2b,YACE9f,EAAI8pI,EAAG7oI,QAAQI,UACjBlC,EAAEyE,IAAI5D,EAAEe,MAAM,IAAK,OAAO,EACjC,OAAO,CACT,CAGA,GAAI6oI,GAAkBnzE,YAAYC,OAAOvyD,IAAMsyD,YAAYC,OAAOv3D,GAAI,CAEpE,IADAgB,EAASgE,EAAEhE,SACGhB,EAAEgB,OAAQ,OAAO,EAC/B,IAAKH,EAAIG,EAAgB,GAARH,KACf,GAAImE,EAAEnE,KAAOb,EAAEa,GAAI,OAAO,EAC5B,OAAO,CACT,CAEA,GAAImE,EAAE6D,cAAgB+jC,OAAQ,OAAO5nC,EAAEyT,SAAWzY,EAAEyY,QAAUzT,EAAE4lI,QAAU5qI,EAAE4qI,MAC5E,GAAI5lI,EAAEyjF,UAAYxoF,OAAOK,UAAUmoF,QAAS,OAAOzjF,EAAEyjF,YAAczoF,EAAEyoF,UACrE,GAAIzjF,EAAE4B,WAAa3G,OAAOK,UAAUsG,SAAU,OAAO5B,EAAE4B,aAAe5G,EAAE4G,WAIxE,IADA5F,GADAiJ,EAAOhK,OAAOgK,KAAKjF,IACLhE,UACCf,OAAOgK,KAAKjK,GAAGgB,OAAQ,OAAO,EAE7C,IAAKH,EAAIG,EAAgB,GAARH,KACf,IAAKZ,OAAOK,UAAUC,eAAeC,KAAKR,EAAGiK,EAAKpJ,IAAK,OAAO,EAKhE,GAAIypI,GAAkBtlI,aAAaugH,QAAS,OAAO,EAGnD,IAAK1kH,EAAIG,EAAgB,GAARH,KACf,IAAiB,WAAZoJ,EAAKpJ,IAA+B,QAAZoJ,EAAKpJ,IAA4B,QAAZoJ,EAAKpJ,KAAiBmE,EAAEkgH,YAarEwlB,EAAM1lI,EAAEiF,EAAKpJ,IAAKb,EAAEiK,EAAKpJ,KAAM,OAAO,EAK7C,OAAO,CACT,CAEA,OAAOmE,GAAMA,GAAKhF,GAAMA,CAC1B,CAGAwsD,EAAOxoD,QAAU,SAAiBgB,EAAGhF,GACnC,IACE,OAAO0qI,EAAM1lI,EAAGhF,EAalB,CAZE,MAAO+I,GACP,IAAMA,EAAM6P,SAAW,IAAI6I,MAAM,oBAO/B,OADAnP,QAAQC,KAAK,mDACN,EAGT,MAAMxJ,CACR,CACF,uPCrII8hI,EAAkB,iDAClBC,EAAe,CACjB,QAAS,IACT,QAAS,IACT,OAAQ,IACR,QAAS,IACT,OAAQ,IACR,QAAS,IACT,SAAU,IACV,QAAS,IACT,SAAU,IACV,QAAS,KAGPC,EAAqB,SAA4B1jI,GACnD,OAAOyjI,EAAazjI,EACtB,ECZA,SAAS29E,EAAQ/pB,EAAQgqB,GAAkB,IAAIh7E,EAAOhK,OAAOgK,KAAKgxD,GAAS,GAAIh7D,OAAOuD,sBAAuB,CAAE,IAAI0hF,EAAUjlF,OAAOuD,sBAAsBy3D,GAAagqB,IAAkBC,EAAUA,EAAQ78E,QAAO,SAAU88E,GAAO,OAAOllF,OAAOo5D,yBAAyB4B,EAAQkqB,GAAKzpC,UAAY,KAAMzxC,EAAK5G,KAAKpC,MAAMgJ,EAAMi7E,EAAU,CAAE,OAAOj7E,CAAM,CAExV,SAASm7E,EAAc5mE,GAAU,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAI4X,EAAyB,MAAhB1X,UAAUF,GAAaE,UAAUF,GAAK,CAAC,EAAOA,EAAI,EAAKmkF,EAAQ/kF,OAAOwY,IAAS,GAAMjQ,SAAQ,SAAUnD,GAAO,IAAgBmZ,EAAQnZ,EAAKoT,EAAOpT,GAAO,IAAepF,OAAOolF,0BAA6BplF,OAAOqlF,iBAAiB9mE,EAAQve,OAAOolF,0BAA0B5sE,IAAmBusE,EAAQ/kF,OAAOwY,IAASjQ,SAAQ,SAAUnD,GAAOpF,OAAOgE,eAAeua,EAAQnZ,EAAKpF,OAAOo5D,yBAAyB5gD,EAAQpT,GAAO,GAAM,CAAE,OAAOmZ,CAAQ,CAIrhB,IAUIwsH,EAVAj5H,EAAiB,CACnBk5H,SAAU,kBACVC,cAAe,GACfC,oBAAqB,GACrBC,4BAA4B,EAC5BC,mBAAoB,GACpBC,2BAA4B,CAAC,KAAM,SAAU,IAAK,KAClDC,aAAa,EACb19E,SDAoB,SAAkBnlB,GACtC,OAAOA,EAAKh+B,QAAQmgI,EAAiBE,EACvC,GCCWS,GAAc,IAAA1xH,iBAKlB,SAAS2xH,IACd,OAAO15H,CACT,CACO,IAAI25H,EAAmB,WAC5B,SAASA,IACP,IAAgBxqI,KAAMwqI,GAEtBxqI,KAAKyqI,eAAiB,CAAC,CACzB,CAkBA,OAhBA,IAAaD,EAAkB,CAAC,CAC9BrmI,IAAK,oBACLzD,MAAO,SAA2BwpF,GAChC,IAAInxE,EAAQ/Y,KAEZkqF,EAAW5iF,SAAQ,SAAU4gF,GACtBnvE,EAAM0xH,eAAeviD,KAAKnvE,EAAM0xH,eAAeviD,IAAM,EAC5D,GACF,GACC,CACD/jF,IAAK,oBACLzD,MAAO,WACL,OAAO3B,OAAOgK,KAAK/I,KAAKyqI,eAC1B,KAGKD,CACT,CAxB8B,GA4BvB,SAASE,IACd,OAAOZ,CACT,CACO,IAAIzrC,EAAmB,CAC5B5uF,KAAM,WACN+0E,KAAM,SAAc3gF,IAxCf,WACL,IAAIoN,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFgR,EAAiBqzE,EAAcA,EAAc,CAAC,EAAGrzE,GAAiBI,EACpE,CAsCI05H,CAAY9mI,EAASoN,QAAQ25H,OAT1B,SAAiB/mI,GACtBimI,EAAejmI,CACjB,CAQIgnI,CAAQhnI,EACV,8ICjEK,SAASwN,IACd,GAAID,SAAWA,QAAQC,KAAM,CAG3B,IAFA,IAAIy5H,EAEK5oH,EAAOriB,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMgjB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EwwB,EAAKxwB,GAAQviB,UAAUuiB,GAGF,iBAAZwwB,EAAK,KAAiBA,EAAK,GAAK,mBAAmBh2B,OAAOg2B,EAAK,MAEzEk4F,EAAW15H,SAASC,KAAKtR,MAAM+qI,EAAUl4F,EAC5C,CACF,CACA,IAAIm4F,EAAgB,CAAC,EACd,SAASC,IACd,IAAK,IAAIv1F,EAAQ51C,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMu2C,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF9C,EAAK8C,GAAS71C,UAAU61C,GAGH,iBAAZ9C,EAAK,IAAmBm4F,EAAcn4F,EAAK,MAC/B,iBAAZA,EAAK,KAAiBm4F,EAAcn4F,EAAK,IAAM,IAAIptC,MAC9D6L,EAAKtR,WAAM,EAAQ6yC,GACrB,CACO,SAASurD,EAAe/a,EAAM8E,EAAI/6D,GACvCi2D,EAAK+a,eAAejW,GAAI,WACtB,GAAI9E,EAAK4X,cACP7tE,QACK,CAQLi2D,EAAK5mB,GAAG,eAPU,SAASyuE,IACzBvnI,YAAW,WACT0/E,EAAK1mB,IAAI,cAAeuuE,EAC1B,GAAG,GACH99G,GACF,GAGF,CACF,GACF,CAEA,SAAS+9G,EAA6BhjD,EAAI9E,GACxC,IAAInyE,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EuoF,EAAMhF,EAAKsV,UAAU,GACrBnL,IAAcnK,EAAKnyE,SAAUmyE,EAAKnyE,QAAQs8E,YAC1C8P,EAAUja,EAAKsV,UAAUtV,EAAKsV,UAAU54F,OAAS,GACrD,GAA0B,WAAtBsoF,EAAIp0E,cAA4B,OAAO,EAE3C,IAAIspF,EAAiB,SAAwBn4F,EAAGvF,GAC9C,IAAI29F,EAAYna,EAAKyG,SAASgE,iBAAiB7lF,MAAM,GAAG4U,OAAOzX,EAAG,KAAKyX,OAAOhd,IAC9E,OAAsB,IAAf29F,GAAkC,IAAdA,CAC7B,EAEA,QAAItsF,EAAQ84H,UAAY94H,EAAQ84H,SAAS1nI,QAAQ,qBAAuB,GAAK+gF,EAAKyG,SAASgE,iBAAiBuK,SAAWhV,EAAKmZ,uBAAyBe,EAAela,EAAKmZ,qBAAsBrU,QAC3L9E,EAAKuF,kBAAkBP,EAAKF,OAC3B9E,EAAKyG,SAASgE,iBAAiBuK,WAAWhV,EAAKnyE,QAAQs3E,WAAcnF,EAAKnyE,QAAQgpF,8BACnFqD,EAAelV,EAAKF,IAASqF,IAAe+P,EAAeD,EAASnV,KAE1E,CAEO,SAAS2H,EAAmB3H,EAAI9E,GACrC,IAAInyE,EAAUpR,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEnF,IAAKujF,EAAKsV,YAActV,EAAKsV,UAAU54F,OAErC,OADAkrI,EAAS,yCAA0C5nD,EAAKsV,YACjD,EAGT,IAAIyyC,OAAsDrxH,IAArCspE,EAAKnyE,QAAQk3E,oBAElC,OAAKgjD,EAIE/nD,EAAKyM,mBAAmB3H,EAAI,CACjCsV,SAAU,SAAkBssC,EAAcxsC,GACxC,GAAIrsF,EAAQ84H,UAAY94H,EAAQ84H,SAAS1nI,QAAQ,qBAAuB,GAAKynI,EAAajgD,SAASgE,iBAAiBuK,SAAW0xC,EAAavtC,uBAAyBe,EAAewsC,EAAavtC,qBAAsBrU,GAAK,OAAO,CACrO,IANOgjD,EAA6BhjD,EAAI9E,EAAMnyE,EAQlD,CC3EA,SAAS6yE,EAAQ/pB,EAAQgqB,GAAkB,IAAIh7E,EAAOhK,OAAOgK,KAAKgxD,GAAS,GAAIh7D,OAAOuD,sBAAuB,CAAE,IAAI0hF,EAAUjlF,OAAOuD,sBAAsBy3D,GAAagqB,IAAkBC,EAAUA,EAAQ78E,QAAO,SAAU88E,GAAO,OAAOllF,OAAOo5D,yBAAyB4B,EAAQkqB,GAAKzpC,UAAY,KAAMzxC,EAAK5G,KAAKpC,MAAMgJ,EAAMi7E,EAAU,CAAE,OAAOj7E,CAAM,CAExV,SAASm7E,EAAc5mE,GAAU,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAI4X,EAAyB,MAAhB1X,UAAUF,GAAaE,UAAUF,GAAK,CAAC,EAAOA,EAAI,EAAKmkF,EAAQ/kF,OAAOwY,IAAS,GAAMjQ,SAAQ,SAAUnD,GAAO,IAAgBmZ,EAAQnZ,EAAKoT,EAAOpT,GAAO,IAAepF,OAAOolF,0BAA6BplF,OAAOqlF,iBAAiB9mE,EAAQve,OAAOolF,0BAA0B5sE,IAAmBusE,EAAQ/kF,OAAOwY,IAASjQ,SAAQ,SAAUnD,GAAOpF,OAAOgE,eAAeua,EAAQnZ,EAAKpF,OAAOo5D,yBAAyB5gD,EAAQpT,GAAO,GAAM,CAAE,OAAOmZ,CAAQ,CAMrhB,IAAI8tH,EAAc,SAAqB1qI,EAAO2qI,GAC5C,IAAI/oH,GAAM,IAAAjH,UAIV,OAHA,IAAAC,YAAU,WACRgH,EAAI/G,QAAU8vH,EAAS/oH,EAAI/G,QAAU7a,CACvC,GAAG,CAACA,EAAO2qI,IACJ/oH,EAAI/G,OACb,EAEO,SAASsvF,EAAe3iB,GAC7B,IAAInrE,EAAQld,UAAUC,OAAS,QAAsBga,IAAjBja,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7EyrI,EAAgBvuH,EAAMqmE,KAEtBzkE,GAAO,IAAAnC,YAAW,OAAgB,CAAC,EACnC+uH,EAAkB5sH,EAAKykE,KACvBooD,EAAuB7sH,EAAK0kE,UAE5BD,EAAOkoD,GAAiBC,IAAmB,UAG/C,GAFInoD,IAASA,EAAKqoD,mBAAkBroD,EAAKqoD,iBAAmB,IAAI,OAE3DroD,EAAM,CACT4nD,EAAS,0EAET,IAAIU,EAAY,SAAmB/iI,GACjC,OAAOzJ,MAAMkU,QAAQzK,GAAKA,EAAEA,EAAE7I,OAAS,GAAK6I,CAC9C,EAEIgjI,EAAc,CAACD,EAAW,CAAC,GAAG,GAIlC,OAHAC,EAAYlsI,EAAIisI,EAChBC,EAAYvoD,KAAO,CAAC,EACpBuoD,EAAYC,OAAQ,EACbD,CACT,CAEIvoD,EAAKnyE,QAAQ25H,YAAqC9wH,IAA5BspE,EAAKnyE,QAAQ25H,MAAM/zF,MAAoBm0F,EAAS,uGAE1E,IAAIa,EAAc3nD,EAAcA,EAAcA,EAAc,CAAC,GAAG,WAAgBd,EAAKnyE,QAAQ25H,OAAQ7tH,GAEjGstH,EAAcwB,EAAYxB,YAC1BxtC,EAAYgvC,EAAYhvC,UACxB3S,EAAahC,GAAMsjD,GAAwBpoD,EAAKnyE,SAAWmyE,EAAKnyE,QAAQoyE,UAC5E6G,EAAmC,iBAAfA,EAA0B,CAACA,GAAcA,GAAc,CAAC,eACxE9G,EAAKqoD,iBAAiBK,mBAAmB1oD,EAAKqoD,iBAAiBK,kBAAkB5hD,GACrF,IAAI0hD,GAASxoD,EAAK4X,eAAiB5X,EAAK2Y,uBAAyB7R,EAAW82B,OAAM,SAAUphH,GAC1F,OAAOiwF,EAAmBjwF,EAAGwjF,EAAMyoD,EACrC,IAEA,SAASE,IACP,OAAO3oD,EAAK6a,UAAU,KAA6B,aAAvB4tC,EAAYG,OAAwB9hD,EAAaA,EAAW,GAAI2S,EAC9F,CAEA,IAAIovC,GAAY,IAAAlxH,UAASgxH,GACrBG,EAAa,IAAeD,EAAW,GACvCxsI,EAAIysI,EAAW,GACfC,EAAOD,EAAW,GAElBE,EAAWliD,EAAW3gF,OACtB8iI,EAAmBjB,EAAYgB,GAC/BE,GAAY,IAAAjxH,SAAO,IACvB,IAAAC,YAAU,WACR,IAAIyuH,EAAW8B,EAAY9B,SACvBC,EAAgB6B,EAAY7B,cAahC,SAASuC,IACHD,EAAU/wH,SAAS4wH,EAAKJ,EAC9B,CAIA,OAlBAO,EAAU/wH,SAAU,EAEfqwH,GAAUvB,GACblsC,EAAe/a,EAAM8G,GAAY,WAC3BoiD,EAAU/wH,SAAS4wH,EAAKJ,EAC9B,IAGEH,GAASS,GAAoBA,IAAqBD,GAAYE,EAAU/wH,SAC1E4wH,EAAKJ,GAOHhC,GAAY3mD,GAAMA,EAAK5mB,GAAGutE,EAAUwC,GACpCvC,GAAiB5mD,GAAMA,EAAKiV,MAAM77B,GAAGwtE,EAAeuC,GACjD,WACLD,EAAU/wH,SAAU,EAChBwuH,GAAY3mD,GAAM2mD,EAAS3gI,MAAM,KAAK9B,SAAQ,SAAUzG,GAC1D,OAAOuiF,EAAK1mB,IAAI77D,EAAG0rI,EACrB,IACIvC,GAAiB5mD,GAAM4mD,EAAc5gI,MAAM,KAAK9B,SAAQ,SAAUzG,GACpE,OAAOuiF,EAAKiV,MAAM37B,IAAI77D,EAAG0rI,EAC3B,GACF,CACF,GAAG,CAACnpD,EAAMgpD,IACV,IAAII,GAAY,IAAAnxH,SAAO,IACvB,IAAAC,YAAU,WACJgxH,EAAU/wH,UAAYixH,EAAUjxH,SAClC4wH,EAAKJ,GAGPS,EAAUjxH,SAAU,CACtB,GAAG,CAAC6nE,IACJ,IAAI8W,EAAM,CAACz6F,EAAG2jF,EAAMwoD,GAIpB,GAHA1xC,EAAIz6F,EAAIA,EACRy6F,EAAI9W,KAAOA,EACX8W,EAAI0xC,MAAQA,EACRA,EAAO,OAAO1xC,EAClB,IAAK0xC,IAAUvB,EAAa,OAAOnwC,EACnC,MAAM,IAAI55F,SAAQ,SAAUC,GAC1B49F,EAAe/a,EAAM8G,GAAY,WAC/B3pF,GACF,GACF,GACF,yCC/GiBzB,EAAE,MAAMkF,EAAE,MAAMnF,EAAE,MAAMgC,EAAE,MAAMO,EAAE,MAAME,EAAE,MAAM4E,EAAE,MAAMyC,EAAE,MAAMxD,EAAE,MAAMgB,EAAE,MAAMvG,EAAE,MAAMT,EAAE,MAAMmR,EAAE,MAAMvM,EAAE,MAAMgB,EAAE,MAAMhD,EAAE,MAAMuG,EAAE,MACnJ,GAAG,mBAAoBzG,QAAQA,OAAOq6C,IAAI,CAAC,IAAIhwC,EAAErK,OAAOq6C,IAAIp9C,EAAEoN,EAAE,iBAAiBlI,EAAEkI,EAAE,gBAAgBrN,EAAEqN,EAAE,kBAAkBrL,EAAEqL,EAAE,qBAAqB9K,EAAE8K,EAAE,kBAAkB5K,EAAE4K,EAAE,kBAAkBhG,EAAEgG,EAAE,iBAAiBvD,EAAEuD,EAAE,qBAAqB/G,EAAE+G,EAAE,kBAAkB/F,EAAE+F,EAAE,uBAAuBtM,EAAEsM,EAAE,cAAc/M,EAAE+M,EAAE,cAAcoE,EAAEpE,EAAE,eAAenI,EAAEmI,EAAE,sBAAsBnH,EAAEmH,EAAE,qBAAqBnK,EAAEmK,EAAE,0BAA0B5D,EAAE4D,EAAE,sBAAsB,CACjc,SAAS7K,EAAEyC,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIrE,EAAEqE,EAAEkgH,SAAS,OAAOvkH,GAAG,KAAKX,EAAE,OAAOgF,EAAEA,EAAE2L,MAAQ,KAAK5Q,EAAE,KAAKuC,EAAE,KAAKP,EAAE,KAAKsE,EAAE,KAAKgB,EAAE,OAAOrC,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEkgH,UAAY,KAAK99G,EAAE,KAAKyC,EAAE,KAAKxJ,EAAE,KAAKS,EAAE,KAAK0B,EAAE,OAAOwC,EAAE,QAAQ,OAAOrE,GAAG,KAAKuE,EAAE,OAAOvE,EAAE,CAAC,uCCPhQ,uHC2FSgtI,EAAe,IA3Fa,SAAUC,GAG/C,SAASC,IACP,IAAI5zH,EAuBJ,OArBAA,EAAQ2zH,EAAcptI,KAAKU,OAASA,MAE9BouH,MAAQ,SAAUt+F,GACtB,IAAI88G,EAEJ,IAAK,OAAmC,OAArBA,EAAUlqI,aAAkB,EAASkqI,EAAQ5lI,kBAAmB,CACjF,IAAIsX,EAAW,WACb,OAAOwR,GACT,EAKA,OAFAptB,OAAOsE,iBAAiB,mBAAoBsX,GAAU,GACtD5b,OAAOsE,iBAAiB,QAASsX,GAAU,GACpC,WAEL5b,OAAOmE,oBAAoB,mBAAoByX,GAC/C5b,OAAOmE,oBAAoB,QAASyX,EACtC,CACF,CACF,EAEOvF,CACT,EA3BA,OAAe4zH,EAAcD,GA6B7B,IAAIxiH,EAASyiH,EAAavtI,UA2D1B,OAzDA8qB,EAAO2iH,YAAc,WACd7sI,KAAK8sI,SACR9sI,KAAK+sI,iBAAiB/sI,KAAKouH,MAE/B,EAEAlkG,EAAO8iH,cAAgB,WAEnB,IAAIC,EADDjtI,KAAKktI,iBAG0B,OAAjCD,EAAgBjtI,KAAK8sI,UAA4BG,EAAc3tI,KAAKU,MACrEA,KAAK8sI,aAAUhzH,EAEnB,EAEAoQ,EAAO6iH,iBAAmB,SAA0B3e,GAClD,IAAI+e,EACAriD,EAAS9qF,KAEbA,KAAKouH,MAAQA,EACsB,OAAlC+e,EAAiBntI,KAAK8sI,UAA4BK,EAAe7tI,KAAKU,MACvEA,KAAK8sI,QAAU1e,GAAM,SAAUvnG,GACN,kBAAZA,EACTikE,EAAOsiD,WAAWvmH,GAElBikE,EAAOh7D,SAEX,GACF,EAEA5F,EAAOkjH,WAAa,SAAoBvmH,GACtC7mB,KAAK6mB,QAAUA,EAEXA,GACF7mB,KAAK8vB,SAET,EAEA5F,EAAO4F,QAAU,WACf9vB,KAAKie,UAAU3W,SAAQ,SAAUgX,GAC/BA,GACF,GACF,EAEA4L,EAAOmjH,UAAY,WACjB,MAA4B,kBAAjBrtI,KAAK6mB,QACP7mB,KAAK6mB,QAIU,oBAAbzY,UAIJ,MAAC0L,EAAW,UAAW,aAAavS,SAAS6G,SAAS2rC,gBAC/D,EAEO4yF,CACT,CA1FuC,CA0FrC,ghBC3FK,SAASW,IACd,MAAO,CACLC,QAAS,SAAiB5yH,GACxBA,EAAQ6yH,QAAU,WAChB,IAAIC,EAAuBC,EAAwBC,EAAwBC,EAAwBC,EAAqBC,EAoDpHh+E,EAlDAi+E,EAAgE,OAAjDN,EAAwB9yH,EAAQ1Q,eAA0F,OAAxDyjI,EAAyBD,EAAsBnlF,WAAzD,EAAkFolF,EAAuBK,YAChLC,EAA+D,OAAlDL,EAAyBhzH,EAAQ1Q,eAA2F,OAAzD2jI,EAAyBD,EAAuBrlF,WAA1D,EAAmFslF,EAAuBI,UAChLC,EAAyB,MAAbD,OAAoB,EAASA,EAAUC,UACnDC,EAA4E,aAAzC,MAAbF,OAAoB,EAASA,EAAU50G,WAC7D+0G,EAAgF,cAAzC,MAAbH,OAAoB,EAASA,EAAU50G,WACjEg1G,GAA0D,OAA7CP,EAAsBlzH,EAAQ3S,MAAMsC,WAAgB,EAASujI,EAAoBQ,QAAU,GACxGC,GAAgE,OAA9CR,EAAuBnzH,EAAQ3S,MAAMsC,WAAgB,EAASwjI,EAAqBS,aAAe,GACpHC,GAAkB,UAClBC,EAAiC,MAAnBD,OAA0B,EAASA,EAAgB5jI,OACjE8jI,EAAgBJ,EAChBK,GAAY,EAEZC,EAAUj0H,EAAQ1J,QAAQ29H,SAAW,WACvC,OAAOtuI,QAAQE,OAAO,kBACxB,EAEIquI,EAAgB,SAAuBR,EAAOlzB,EAAO36C,EAAMjE,GAE7D,OADAmyE,EAAgBnyE,EAAW,CAAC4+C,GAAOv+F,OAAO8xH,GAAiB,GAAG9xH,OAAO8xH,EAAe,CAACvzB,IAC9E5+C,EAAW,CAACiE,GAAM5jD,OAAOyxH,GAAS,GAAGzxH,OAAOyxH,EAAO,CAAC7tE,GAC7D,EAGIsuE,EAAY,SAAmBT,EAAOU,EAAQ5zB,EAAO5+C,GACvD,GAAIoyE,EACF,OAAOruI,QAAQE,OAAO,aAGxB,QAAqB,IAAV26G,IAA0B4zB,GAAUV,EAAMvuI,OACnD,OAAOQ,QAAQC,QAAQ8tI,GAGzB,IAAIW,EAAiB,CACnBC,SAAUt0H,EAAQs0H,SAClBrkI,OAAQ6jI,EACRR,UAAW9yB,EACX7yD,KAAM3tC,EAAQ2tC,MAEZ4mF,EAAgBN,EAAQI,GACxBl/E,EAAUxvD,QAAQC,QAAQ2uI,GAAejuI,MAAK,SAAUu/D,GAC1D,OAAOquE,EAAcR,EAAOlzB,EAAO36C,EAAMjE,EAC3C,KAEI,QAAa2yE,KACIp/E,EACNpB,OAASwgF,EAAcxgF,QAGtC,OAAOoB,CACT,EAIA,GAAKs+E,EAAStuI,OAGT,GAAIouI,EAAoB,CACzB,IAAIa,OAA8B,IAAdd,EAChB9yB,EAAQ4zB,EAASd,EAAYkB,EAAiBx0H,EAAQ1J,QAASm9H,GACnEt+E,EAAUg/E,EAAUV,EAAUW,EAAQ5zB,EACxC,MACK,GAAIgzB,EAAwB,CAC7B,IAAIiB,OAA+B,IAAdnB,EAEjBoB,EAASD,EAAUnB,EAAYqB,EAAqB30H,EAAQ1J,QAASm9H,GAEzEt+E,EAAUg/E,EAAUV,EAAUgB,EAASC,GAAQ,EACjD,MAEI,WACEX,EAAgB,GAChB,IAAIK,OAAqD,IAArCp0H,EAAQ1J,QAAQk+H,iBAChCI,GAAuBxB,IAAeK,EAAS,IAAKL,EAAYK,EAAS,GAAI,EAAGA,GAEpFt+E,EAAUy/E,EAAuBT,EAAU,GAAIC,EAAQT,EAAc,IAAMhuI,QAAQC,QAAQsuI,EAAc,GAAIP,EAAc,GAAIF,EAAS,KAgBxI,IAdA,IAAIoB,EAAQ,SAAe7vI,GACzBmwD,EAAUA,EAAQ7uD,MAAK,SAAUotI,GAG/B,IAF0BN,IAAeK,EAASzuI,IAAKouI,EAAYK,EAASzuI,GAAIA,EAAGyuI,GAE1D,CACvB,IAAIqB,EAAUV,EAAST,EAAc3uI,GAAKwvI,EAAiBx0H,EAAQ1J,QAASo9H,GAE5E,OAAOS,EAAUT,EAAOU,EAAQU,EAClC,CAEA,OAAOnvI,QAAQC,QAAQsuI,EAAcR,EAAOC,EAAc3uI,GAAIyuI,EAASzuI,IACzE,GACF,EAESA,EAAI,EAAGA,EAAIyuI,EAAStuI,OAAQH,IACnC6vI,EAAM7vI,EAET,CAxBD,QAfNmwD,EAAUg/E,EAAU,IA0CtB,IAAIY,EAAe5/E,EAAQ7uD,MAAK,SAAUotI,GACxC,MAAO,CACLA,MAAOA,EACPE,WAAYG,EAEhB,IAYA,OAXwBgB,EAENhhF,OAAS,WACzBigF,GAAY,EACO,MAAnBH,GAAmCA,EAAgB1jI,SAE/C,QAAaglD,IACfA,EAAQpB,QAEZ,EAEOghF,CACT,CACF,EAEJ,CACO,SAASP,EAAiBl+H,EAASo9H,GACxC,OAAmC,MAA5Bp9H,EAAQk+H,sBAA2B,EAASl+H,EAAQk+H,iBAAiBd,EAAMA,EAAMvuI,OAAS,GAAIuuI,EACvG,CACO,SAASiB,EAAqBr+H,EAASo9H,GAC5C,OAAuC,MAAhCp9H,EAAQq+H,0BAA+B,EAASr+H,EAAQq+H,qBAAqBjB,EAAM,GAAIA,EAChG,CAMO,SAASsB,EAAY1+H,EAASo9H,GACnC,GAAIp9H,EAAQk+H,kBAAoBjwI,MAAMkU,QAAQi7H,GAAQ,CACpD,IAAIuB,EAAgBT,EAAiBl+H,EAASo9H,GAC9C,OAAO,MAAOuB,IAA6E,IAAlBA,CAC3E,CACF,CAMO,SAASC,EAAgB5+H,EAASo9H,GACvC,GAAIp9H,EAAQq+H,sBAAwBpwI,MAAMkU,QAAQi7H,GAAQ,CACxD,IAAIyB,EAAoBR,EAAqBr+H,EAASo9H,GACtD,OAAO,MAAOyB,IAAyF,IAAtBA,CACnF,CACF,8FCtJA,IAAIrrD,EAASrzE,QACN,SAAS2+H,IACd,OAAOtrD,CACT,CACO,SAASurD,EAAUC,GACxBxrD,EAASwrD,CACX,8JCDWC,EAAwB,WACjC,SAASA,EAASr0H,GAChB7b,KAAKiR,SAAU,OAAS,CAAC,EAAG4K,EAAOhL,eAAgBgL,EAAO5K,SAC1DjR,KAAKmwI,WAAat0H,EAAOs0H,WACzBnwI,KAAKowI,cAAgBv0H,EAAOu0H,cAC5BpwI,KAAKqlF,UAAY,GACjBrlF,KAAKgI,MAAQ6T,EAAO7T,OAASqoI,IAC7BrwI,KAAKsoD,KAAOzsC,EAAOysC,IACrB,CAEA,IAAIp+B,EAASgmH,EAAS9wI,UAsJtB,OApJA8qB,EAAOG,SAAW,SAAkBriB,GAClChI,KAAKmb,SAAS,CACZ1L,KAAM,WACNzH,MAAOA,GAEX,EAEAkiB,EAAOomH,YAAc,SAAqB9qD,IACE,IAAtCxlF,KAAKqlF,UAAUhjF,QAAQmjF,IACzBxlF,KAAKqlF,UAAUljF,KAAKqjF,EAExB,EAEAt7D,EAAOqmH,eAAiB,SAAwB/qD,GAC9CxlF,KAAKqlF,UAAYrlF,KAAKqlF,UAAUl+E,QAAO,SAAU+E,GAC/C,OAAOA,IAAMs5E,CACf,GACF,EAEAt7D,EAAOwkC,OAAS,WACd,OAAI1uD,KAAKwwI,SACPxwI,KAAKwwI,QAAQ9hF,SACN1uD,KAAKwwI,QAAQ1gF,QAAQ7uD,KAAK,MAAM6+D,MAAM,OAGxCx/D,QAAQC,SACjB,EAEA2pB,EAAOumH,SAAW,WAChB,OAAIzwI,KAAKwwI,SACPxwI,KAAKwwI,QAAQC,WACNzwI,KAAKwwI,QAAQ1gF,SAGf9vD,KAAK0wI,SACd,EAEAxmH,EAAOwmH,QAAU,WACf,IAEIpmI,EAFAyO,EAAQ/Y,KAGR2wI,EAAiC,YAAtB3wI,KAAKgI,MAAMmlD,OACtB2C,EAAUxvD,QAAQC,UAuBtB,OArBKowI,IACH3wI,KAAKmb,SAAS,CACZ1L,KAAM,UACNmhI,UAAW5wI,KAAKiR,QAAQ2/H,YAE1B9gF,EAAUA,EAAQ7uD,MAAK,WAEkB,MAAvC8X,EAAMq3H,cAAcv0H,OAAOg1H,UAA4B93H,EAAMq3H,cAAcv0H,OAAOg1H,SAAS93H,EAAM/Q,MAAM4oI,UAAW73H,EACpH,IAAG9X,MAAK,WACN,OAAiC,MAA1B8X,EAAM9H,QAAQ4/H,cAAmB,EAAS93H,EAAM9H,QAAQ4/H,SAAS93H,EAAM/Q,MAAM4oI,UACtF,IAAG3vI,MAAK,SAAU0Z,GACZA,IAAY5B,EAAM/Q,MAAM2S,SAC1B5B,EAAMoC,SAAS,CACb1L,KAAM,UACNkL,QAASA,EACTi2H,UAAW73H,EAAM/Q,MAAM4oI,WAG7B,KAGK9gF,EAAQ7uD,MAAK,WAClB,OAAO8X,EAAM+3H,iBACf,IAAG7vI,MAAK,SAAUF,GAChBuJ,EAAOvJ,EAEiC,MAAxCgY,EAAMq3H,cAAcv0H,OAAOk1H,WAA6Bh4H,EAAMq3H,cAAcv0H,OAAOk1H,UAAUzmI,EAAMyO,EAAM/Q,MAAM4oI,UAAW73H,EAAM/Q,MAAM2S,QAAS5B,EACjJ,IAAG9X,MAAK,WACN,OAAkC,MAA3B8X,EAAM9H,QAAQ8/H,eAAoB,EAASh4H,EAAM9H,QAAQ8/H,UAAUzmI,EAAMyO,EAAM/Q,MAAM4oI,UAAW73H,EAAM/Q,MAAM2S,QACrH,IAAG1Z,MAAK,WACN,OAAkC,MAA3B8X,EAAM9H,QAAQ+/H,eAAoB,EAASj4H,EAAM9H,QAAQ+/H,UAAU1mI,EAAM,KAAMyO,EAAM/Q,MAAM4oI,UAAW73H,EAAM/Q,MAAM2S,QAC3H,IAAG1Z,MAAK,WAMN,OALA8X,EAAMoC,SAAS,CACb1L,KAAM,UACNnF,KAAMA,IAGDA,CACT,IAAGw1D,OAAM,SAAUj4D,GAKjB,OAHsC,MAAtCkR,EAAMq3H,cAAcv0H,OAAOo1H,SAA2Bl4H,EAAMq3H,cAAcv0H,OAAOo1H,QAAQppI,EAAOkR,EAAM/Q,MAAM4oI,UAAW73H,EAAM/Q,MAAM2S,QAAS5B,IAE5I,SAAYlR,MAAMA,GACXvH,QAAQC,UAAUU,MAAK,WAC5B,OAAgC,MAAzB8X,EAAM9H,QAAQggI,aAAkB,EAASl4H,EAAM9H,QAAQggI,QAAQppI,EAAOkR,EAAM/Q,MAAM4oI,UAAW73H,EAAM/Q,MAAM2S,QAClH,IAAG1Z,MAAK,WACN,OAAkC,MAA3B8X,EAAM9H,QAAQ+/H,eAAoB,EAASj4H,EAAM9H,QAAQ+/H,eAAUl3H,EAAWjS,EAAOkR,EAAM/Q,MAAM4oI,UAAW73H,EAAM/Q,MAAM2S,QACjI,IAAG1Z,MAAK,WAMN,MALA8X,EAAMoC,SAAS,CACb1L,KAAM,QACN5H,MAAOA,IAGHA,CACR,GACF,GACF,EAEAqiB,EAAO4mH,gBAAkB,WACvB,IACII,EADApmD,EAAS9qF,KA6Bb,OA1BAA,KAAKwwI,QAAU,IAAI,KAAQ,CACzBhyH,GAAI,WACF,OAAKssE,EAAO75E,QAAQkgI,WAIbrmD,EAAO75E,QAAQkgI,WAAWrmD,EAAO9iF,MAAM4oI,WAHrCtwI,QAAQE,OAAO,sBAI1B,EACA4wI,OAAQ,WACNtmD,EAAO3vE,SAAS,CACd1L,KAAM,UAEV,EACA4hI,QAAS,WACPvmD,EAAO3vE,SAAS,CACd1L,KAAM,SAEV,EACA6hI,WAAY,WACVxmD,EAAO3vE,SAAS,CACd1L,KAAM,YAEV,EACAszE,MAAqD,OAA7CmuD,EAAsBlxI,KAAKiR,QAAQ8xE,OAAiBmuD,EAAsB,EAClFK,WAAYvxI,KAAKiR,QAAQsgI,aAEpBvxI,KAAKwwI,QAAQ1gF,OACtB,EAEA5lC,EAAO/O,SAAW,SAAkBtB,GAClC,IAAIs0E,EAASnuF,KAEbA,KAAKgI,MAwBT,SAAiBA,EAAO6R,GACtB,OAAQA,EAAOpK,MACb,IAAK,SACH,OAAO,OAAS,CAAC,EAAGzH,EAAO,CACzBwpI,aAAcxpI,EAAMwpI,aAAe,IAGvC,IAAK,QACH,OAAO,OAAS,CAAC,EAAGxpI,EAAO,CACzBypI,UAAU,IAGd,IAAK,WACH,OAAO,OAAS,CAAC,EAAGzpI,EAAO,CACzBypI,UAAU,IAGd,IAAK,UACH,OAAO,OAAS,CAAC,EAAGzpI,EAAO,CACzB2S,QAASd,EAAOc,QAChBrQ,UAAMwP,EACNjS,MAAO,KACP4pI,UAAU,EACVtkF,OAAQ,UACRyjF,UAAW/2H,EAAO+2H,YAGtB,IAAK,UACH,OAAO,OAAS,CAAC,EAAG5oI,EAAO,CACzBsC,KAAMuP,EAAOvP,KACbzC,MAAO,KACPslD,OAAQ,UACRskF,UAAU,IAGd,IAAK,QACH,OAAO,OAAS,CAAC,EAAGzpI,EAAO,CACzBsC,UAAMwP,EACNjS,MAAOgS,EAAOhS,MACd2pI,aAAcxpI,EAAMwpI,aAAe,EACnCC,UAAU,EACVtkF,OAAQ,UAGZ,IAAK,WACH,OAAO,OAAS,CAAC,EAAGnlD,EAAO6R,EAAO7R,OAEpC,QACE,OAAOA,EAEb,CA1EiB4R,CAAQ5Z,KAAKgI,MAAO6R,GACjC,WAAoB,WAClBs0E,EAAO9I,UAAU/9E,SAAQ,SAAUk+E,GACjCA,EAASksD,iBAAiB73H,EAC5B,IAEAs0E,EAAOiiD,cAAcuB,OAAOxjD,EAC9B,GACF,EAEO+hD,CACT,CAjKmC,GAkK5B,SAASG,IACd,MAAO,CACL11H,aAASb,EACTxP,UAAMwP,EACNjS,MAAO,KACP2pI,aAAc,EACdC,UAAU,EACVtkF,OAAQ,OACRyjF,eAAW92H,EAEf,uFChLW83H,EAA6B,WACtC,SAASA,IACP5xI,KAAKy4F,MAAQ,GACbz4F,KAAK6xI,aAAe,EAEpB7xI,KAAK8xI,SAAW,SAAUt7G,GACxBA,GACF,EAEAx2B,KAAK+xI,cAAgB,SAAUv7G,GAC7BA,GACF,CACF,CAEA,IAAItM,EAAS0nH,EAAcxyI,UAoF3B,OAlFA8qB,EAAO8nH,MAAQ,SAAex7G,GAC5B,IAAIz1B,EACJf,KAAK6xI,eAEL,IACE9wI,EAASy1B,GAOX,CANE,QACAx2B,KAAK6xI,eAEA7xI,KAAK6xI,cACR7xI,KAAKiyI,OAET,CAEA,OAAOlxI,CACT,EAEAmpB,EAAOgoH,SAAW,SAAkB17G,GAClC,IAAIzd,EAAQ/Y,KAERA,KAAK6xI,aACP7xI,KAAKy4F,MAAMt2F,KAAKq0B,IAEhB,SAAkB,WAChBzd,EAAM+4H,SAASt7G,EACjB,GAEJ,EAMAtM,EAAOioH,WAAa,SAAoB37G,GACtC,IAAIs0D,EAAS9qF,KAEb,OAAO,WACL,IAAK,IAAIkiB,EAAOriB,UAAUC,OAAQ8yC,EAAO,IAAI1zC,MAAMgjB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EwwB,EAAKxwB,GAAQviB,UAAUuiB,GAGzB0oE,EAAOonD,UAAS,WACd17G,EAASz2B,WAAM,EAAQ6yC,EACzB,GACF,CACF,EAEA1oB,EAAO+nH,MAAQ,WACb,IAAI9jD,EAASnuF,KAETy4F,EAAQz4F,KAAKy4F,MACjBz4F,KAAKy4F,MAAQ,GAETA,EAAM34F,SACR,SAAkB,WAChBquF,EAAO4jD,eAAc,WACnBt5C,EAAMnxF,SAAQ,SAAUkvB,GACtB23D,EAAO2jD,SAASt7G,EAClB,GACF,GACF,GAEJ,EAOAtM,EAAOkoH,kBAAoB,SAA2B5zH,GACpDxe,KAAK8xI,SAAWtzH,CAClB,EAOA0L,EAAOmoH,uBAAyB,SAAgC7zH,GAC9Dxe,KAAK+xI,cAAgBvzH,CACvB,EAEOozH,CACT,CAnGwC,GAqG7BU,EAAgB,IAAIV,+GCXpBW,EAAgB,IA1Fa,SAAU7F,GAGhD,SAAS8F,IACP,IAAIz5H,EAuBJ,OArBAA,EAAQ2zH,EAAcptI,KAAKU,OAASA,MAE9BouH,MAAQ,SAAUqkB,GACtB,IAAI7F,EAEJ,IAAK,OAAmC,OAArBA,EAAUlqI,aAAkB,EAASkqI,EAAQ5lI,kBAAmB,CACjF,IAAIsX,EAAW,WACb,OAAOm0H,GACT,EAKA,OAFA/vI,OAAOsE,iBAAiB,SAAUsX,GAAU,GAC5C5b,OAAOsE,iBAAiB,UAAWsX,GAAU,GACtC,WAEL5b,OAAOmE,oBAAoB,SAAUyX,GACrC5b,OAAOmE,oBAAoB,UAAWyX,EACxC,CACF,CACF,EAEOvF,CACT,EA3BA,OAAey5H,EAAe9F,GA6B9B,IAAIxiH,EAASsoH,EAAcpzI,UA0D3B,OAxDA8qB,EAAO2iH,YAAc,WACd7sI,KAAK8sI,SACR9sI,KAAK+sI,iBAAiB/sI,KAAKouH,MAE/B,EAEAlkG,EAAO8iH,cAAgB,WAEnB,IAAIC,EADDjtI,KAAKktI,iBAG0B,OAAjCD,EAAgBjtI,KAAK8sI,UAA4BG,EAAc3tI,KAAKU,MACrEA,KAAK8sI,aAAUhzH,EAEnB,EAEAoQ,EAAO6iH,iBAAmB,SAA0B3e,GAClD,IAAI+e,EACAriD,EAAS9qF,KAEbA,KAAKouH,MAAQA,EACsB,OAAlC+e,EAAiBntI,KAAK8sI,UAA4BK,EAAe7tI,KAAKU,MACvEA,KAAK8sI,QAAU1e,GAAM,SAAUskB,GACP,kBAAXA,EACT5nD,EAAO6nD,UAAUD,GAEjB5nD,EAAO2nD,UAEX,GACF,EAEAvoH,EAAOyoH,UAAY,SAAmBD,GACpC1yI,KAAK0yI,OAASA,EAEVA,GACF1yI,KAAKyyI,UAET,EAEAvoH,EAAOuoH,SAAW,WAChBzyI,KAAKie,UAAU3W,SAAQ,SAAUgX,GAC/BA,GACF,GACF,EAEA4L,EAAO0oH,SAAW,WAChB,MAA2B,kBAAhB5yI,KAAK0yI,OACP1yI,KAAK0yI,OAGW,oBAAd19E,gBAAyD,IAArBA,UAAU69E,QAIlD79E,UAAU69E,MACnB,EAEOL,CACT,CAzFwC,CAyFtC,uJCrFSM,EAAqB,WAC9B,SAASA,EAAMj3H,GACb7b,KAAK+yI,qBAAsB,EAC3B/yI,KAAKgzI,cAAe,EACpBhzI,KAAK6Q,eAAiBgL,EAAOhL,eAC7B7Q,KAAKizI,WAAWp3H,EAAO5K,SACvBjR,KAAKqlF,UAAY,GACjBrlF,KAAKmM,MAAQ0P,EAAO1P,MACpBnM,KAAKivI,SAAWpzH,EAAOozH,SACvBjvI,KAAKkzI,UAAYr3H,EAAOq3H,UACxBlzI,KAAKmmG,aAAetqF,EAAO7T,OAAShI,KAAKqwI,gBAAgBrwI,KAAKiR,SAC9DjR,KAAKgI,MAAQhI,KAAKmmG,aAClBnmG,KAAKsoD,KAAOzsC,EAAOysC,KACnBtoD,KAAKmzI,YACP,CAEA,IAAIjpH,EAAS4oH,EAAM1zI,UA2dnB,OAzdA8qB,EAAO+oH,WAAa,SAAoBhiI,GACtC,IAAImiI,EAEJpzI,KAAKiR,SAAU,OAAS,CAAC,EAAGjR,KAAK6Q,eAAgBI,GACjDjR,KAAKsoD,KAAkB,MAAXr3C,OAAkB,EAASA,EAAQq3C,KAE/CtoD,KAAKqzI,UAAYruI,KAAKkC,IAAIlH,KAAKqzI,WAAa,EAAuD,OAAnDD,EAAwBpzI,KAAKiR,QAAQoiI,WAAqBD,EAAwB,IACpI,EAEAlpH,EAAOopH,kBAAoB,SAA2BriI,GACpDjR,KAAK6Q,eAAiBI,CACxB,EAEAiZ,EAAOipH,WAAa,WAClB,IAAIp6H,EAAQ/Y,KAEZA,KAAKuzI,kBAED,QAAevzI,KAAKqzI,aACtBrzI,KAAKwzI,UAAY9vI,YAAW,WAC1BqV,EAAM06H,gBACR,GAAGzzI,KAAKqzI,WAEZ,EAEAnpH,EAAOqpH,eAAiB,WAClBvzI,KAAKwzI,YACPzsI,aAAa/G,KAAKwzI,WAClBxzI,KAAKwzI,eAAY15H,EAErB,EAEAoQ,EAAOupH,eAAiB,WACjBzzI,KAAKqlF,UAAUvlF,SACdE,KAAKgI,MAAM0rI,WACT1zI,KAAKgzI,cACPhzI,KAAKmzI,aAGPnzI,KAAKmM,MAAML,OAAO9L,MAGxB,EAEAkqB,EAAOypH,QAAU,SAAiBC,EAAS3iI,GACzC,IAAI4iI,EAAuB5pB,EAEvB6pB,EAAW9zI,KAAKgI,MAAMsC,KAEtBA,GAAO,QAAiBspI,EAASE,GAerC,OAb4E,OAAvED,GAAyB5pB,EAAgBjqH,KAAKiR,SAAS8iI,kBAAuB,EAASF,EAAsBv0I,KAAK2qH,EAAe6pB,EAAUxpI,IAC9IA,EAAOwpI,GACqC,IAAnC9zI,KAAKiR,QAAQ+iI,oBAEtB1pI,GAAO,QAAiBwpI,EAAUxpI,IAIpCtK,KAAKmb,SAAS,CACZ7Q,KAAMA,EACNmF,KAAM,UACNwkI,cAA0B,MAAXhjI,OAAkB,EAASA,EAAQijI,YAE7C5pI,CACT,EAEA4f,EAAOG,SAAW,SAAkBriB,EAAOmsI,GACzCn0I,KAAKmb,SAAS,CACZ1L,KAAM,WACNzH,MAAOA,EACPmsI,gBAAiBA,GAErB,EAEAjqH,EAAOwkC,OAAS,SAAgBz9C,GAC9B,IAAImjI,EAEAtkF,EAAU9vD,KAAK8vD,QAEnB,OADkC,OAAjCskF,EAAgBp0I,KAAKwwI,UAA4B4D,EAAc1lF,OAAOz9C,GAChE6+C,EAAUA,EAAQ7uD,KAAK,MAAM6+D,MAAM,MAAQx/D,QAAQC,SAC5D,EAEA2pB,EAAOmqH,QAAU,WACfr0I,KAAKuzI,iBACLvzI,KAAK0uD,OAAO,CACV25B,QAAQ,GAEZ,EAEAn+D,EAAO4kE,MAAQ,WACb9uF,KAAKq0I,UACLr0I,KAAKqqB,SAASrqB,KAAKmmG,aACrB,EAEAj8E,EAAOoqH,SAAW,WAChB,OAAOt0I,KAAKqlF,UAAUtkD,MAAK,SAAUykD,GACnC,OAAoC,IAA7BA,EAASv0E,QAAQsjI,OAC1B,GACF,EAEArqH,EAAOwpH,WAAa,WAClB,OAAO1zI,KAAKgI,MAAM0rI,UACpB,EAEAxpH,EAAOsqH,QAAU,WACf,OAAOx0I,KAAKgI,MAAMysI,gBAAkBz0I,KAAKgI,MAAMisI,eAAiBj0I,KAAKqlF,UAAUtkD,MAAK,SAAUykD,GAC5F,OAAOA,EAASkvD,mBAAmBF,OACrC,GACF,EAEAtqH,EAAOyqH,cAAgB,SAAuB7xD,GAK5C,YAJkB,IAAdA,IACFA,EAAY,GAGP9iF,KAAKgI,MAAMysI,gBAAkBz0I,KAAKgI,MAAMisI,iBAAkB,QAAej0I,KAAKgI,MAAMisI,cAAenxD,EAC5G,EAEA54D,EAAO4F,QAAU,WACf,IAAI8kH,EAEApvD,EAAWxlF,KAAKqlF,UAAU2D,MAAK,SAAU98E,GAC3C,OAAOA,EAAE2oI,0BACX,IAEIrvD,GACFA,EAASsvD,UAIwB,OAAlCF,EAAiB50I,KAAKwwI,UAA4BoE,EAAenE,UACpE,EAEAvmH,EAAOuoH,SAAW,WAChB,IAAIsC,EAEAvvD,EAAWxlF,KAAKqlF,UAAU2D,MAAK,SAAU98E,GAC3C,OAAOA,EAAE8oI,wBACX,IAEIxvD,GACFA,EAASsvD,UAIwB,OAAlCC,EAAiB/0I,KAAKwwI,UAA4BuE,EAAetE,UACpE,EAEAvmH,EAAOomH,YAAc,SAAqB9qD,IACE,IAAtCxlF,KAAKqlF,UAAUhjF,QAAQmjF,KACzBxlF,KAAKqlF,UAAUljF,KAAKqjF,GACpBxlF,KAAKgzI,cAAe,EAEpBhzI,KAAKuzI,iBACLvzI,KAAKmM,MAAMwlI,OAAO,CAChBliI,KAAM,gBACN0S,MAAOniB,KACPwlF,SAAUA,IAGhB,EAEAt7D,EAAOqmH,eAAiB,SAAwB/qD,IACJ,IAAtCxlF,KAAKqlF,UAAUhjF,QAAQmjF,KACzBxlF,KAAKqlF,UAAYrlF,KAAKqlF,UAAUl+E,QAAO,SAAU+E,GAC/C,OAAOA,IAAMs5E,CACf,IAEKxlF,KAAKqlF,UAAUvlF,SAGdE,KAAKwwI,UACHxwI,KAAKwwI,QAAQyE,uBAAyBj1I,KAAK+yI,oBAC7C/yI,KAAKwwI,QAAQ9hF,OAAO,CAClBwmF,QAAQ,IAGVl1I,KAAKwwI,QAAQ2E,eAIbn1I,KAAKqzI,UACPrzI,KAAKmzI,aAELnzI,KAAKmM,MAAML,OAAO9L,OAItBA,KAAKmM,MAAMwlI,OAAO,CAChBliI,KAAM,kBACN0S,MAAOniB,KACPwlF,SAAUA,IAGhB,EAEAt7D,EAAOkrH,kBAAoB,WACzB,OAAOp1I,KAAKqlF,UAAUvlF,MACxB,EAEAoqB,EAAOmrH,WAAa,WACbr1I,KAAKgI,MAAMysI,eACdz0I,KAAKmb,SAAS,CACZ1L,KAAM,cAGZ,EAEAya,EAAOxgB,MAAQ,SAAeuH,EAAShH,GACrC,IACIqrI,EACA7H,EACA8H,EAHAzqD,EAAS9qF,KAKb,GAAIA,KAAKgI,MAAM0rI,WACb,GAAI1zI,KAAKgI,MAAMisI,gBAAkC,MAAhBhqI,OAAuB,EAASA,EAAaurI,eAE5Ex1I,KAAK0uD,OAAO,CACV25B,QAAQ,SAEL,GAAIroF,KAAK8vD,QAAS,CACvB,IAAI2lF,EAKJ,OAFmC,OAAlCA,EAAiBz1I,KAAKwwI,UAA4BiF,EAAeC,gBAE3D11I,KAAK8vD,OACd,CAUF,GANI7+C,GACFjR,KAAKizI,WAAWhiI,IAKbjR,KAAKiR,QAAQ29H,QAAS,CACzB,IAAIppD,EAAWxlF,KAAKqlF,UAAU2D,MAAK,SAAU98E,GAC3C,OAAOA,EAAE+E,QAAQ29H,OACnB,IAEIppD,GACFxlF,KAAKizI,WAAWztD,EAASv0E,QAE7B,CAEA,IAAIg+H,GAAW,QAAoBjvI,KAAKivI,UACpCT,GAAkB,UAElBQ,EAAiB,CACnBC,SAAUA,EACVhB,eAAWn0H,EACXwuC,KAAMtoD,KAAKsoD,MAEbvpD,OAAOgE,eAAeisI,EAAgB,SAAU,CAC9Cx0F,YAAY,EACZr3C,IAAK,WACH,GAAIqrI,EAEF,OADA1jD,EAAOioD,qBAAsB,EACtBvE,EAAgB5jI,MAI3B,IAGF,IAoBM+qI,EASAjI,EAnBF/yH,EAAU,CACZ1Q,aAAcA,EACdgH,QAASjR,KAAKiR,QACdg+H,SAAUA,EACVjnI,MAAOhI,KAAKgI,MACZwlI,QAfY,WACZ,OAAK1iD,EAAO75E,QAAQ29H,SAIpB9jD,EAAOioD,qBAAsB,EACtBjoD,EAAO75E,QAAQ29H,QAAQI,IAJrB1uI,QAAQE,OAAO,kBAK1B,EASE8nD,KAAMtoD,KAAKsoD,OAG0C,OAAlDgtF,EAAwBt1I,KAAKiR,QAAQ2kI,eAAoB,EAASN,EAAsB/H,WAGvC,OAAnDoI,EAAyB31I,KAAKiR,QAAQ2kI,WAA6BD,EAAuBpI,QAAQ5yH,KAIrG3a,KAAK61I,YAAc71I,KAAKgI,MAEnBhI,KAAKgI,MAAM0rI,YAAc1zI,KAAKgI,MAAM8tI,aAAiE,OAAjDrI,EAAwB9yH,EAAQ1Q,mBAAwB,EAASwjI,EAAsBnlF,QAG9ItoD,KAAKmb,SAAS,CACZ1L,KAAM,QACN64C,KAAyD,OAAlDolF,EAAyB/yH,EAAQ1Q,mBAAwB,EAASyjI,EAAuBplF,OA0DpG,OArDAtoD,KAAKwwI,QAAU,IAAI,KAAQ,CACzBhyH,GAAI7D,EAAQ6yH,QACZ1iI,MAA0B,MAAnB0jI,GAAsF,OAAlD+G,EAAwB/G,EAAgB1jI,YAAlD,EAA4EyqI,EAAsB3vI,KAAK4oI,GACxIuC,UAAW,SAAmBzmI,GAC5BwgF,EAAO6oD,QAAQrpI,GAGkB,MAAjCwgF,EAAO3+E,MAAM0P,OAAOk1H,WAA6BjmD,EAAO3+E,MAAM0P,OAAOk1H,UAAUzmI,EAAMwgF,GAE5D,IAArBA,EAAOuoD,WACTvoD,EAAO2oD,gBAEX,EACAxC,QAAS,SAAiBppI,IAElB,QAAiBA,IAAUA,EAAMwgF,QACrCyC,EAAO3vE,SAAS,CACd1L,KAAM,QACN5H,MAAOA,KAIN,QAAiBA,KAEW,MAA/BijF,EAAO3+E,MAAM0P,OAAOo1H,SAA2BnmD,EAAO3+E,MAAM0P,OAAOo1H,QAAQppI,EAAOijF,IAElF,SAAYjjF,MAAMA,IAIK,IAArBijF,EAAOuoD,WACTvoD,EAAO2oD,gBAEX,EACArC,OAAQ,WACNtmD,EAAO3vE,SAAS,CACd1L,KAAM,UAEV,EACA4hI,QAAS,WACPvmD,EAAO3vE,SAAS,CACd1L,KAAM,SAEV,EACA6hI,WAAY,WACVxmD,EAAO3vE,SAAS,CACd1L,KAAM,YAEV,EACAszE,MAAOpoE,EAAQ1J,QAAQ8xE,MACvBwuD,WAAY52H,EAAQ1J,QAAQsgI,aAE9BvxI,KAAK8vD,QAAU9vD,KAAKwwI,QAAQ1gF,QACrB9vD,KAAK8vD,OACd,EAEA5lC,EAAO/O,SAAW,SAAkBtB,GAClC,IAAIs0E,EAASnuF,KAEbA,KAAKgI,MAAQhI,KAAK4Z,QAAQ5Z,KAAKgI,MAAO6R,GACtCy4H,EAAA,SAAoB,WAClBnkD,EAAO9I,UAAU/9E,SAAQ,SAAUk+E,GACjCA,EAASuwD,cAAcl8H,EACzB,IAEAs0E,EAAOhiF,MAAMwlI,OAAO,CAClBxvH,MAAOgsE,EACP1+E,KAAM,eACNoK,OAAQA,GAEZ,GACF,EAEAqQ,EAAOmmH,gBAAkB,SAAyBp/H,GAChD,IAAI3G,EAAsC,mBAAxB2G,EAAQ+kI,YAA6B/kI,EAAQ+kI,cAAgB/kI,EAAQ+kI,YAEnFC,OADgD,IAAxBhlI,EAAQ+kI,YACgD,mBAAjC/kI,EAAQglI,qBAAsChlI,EAAQglI,uBAAyBhlI,EAAQglI,qBAAuB,EAC7JC,OAA0B,IAAT5rI,EACrB,MAAO,CACLA,KAAMA,EACN6rI,gBAAiB,EACjBlC,cAAeiC,EAAkC,MAAxBD,EAA+BA,EAAuBzwI,KAAKC,MAAQ,EAC5FoC,MAAO,KACPuuI,iBAAkB,EAClBC,eAAgB,EAChBC,kBAAmB,EACnBR,UAAW,KACXpC,YAAY,EACZe,eAAe,EACfhD,UAAU,EACVtkF,OAAQ+oF,EAAU,UAAY,OAElC,EAEAhsH,EAAOtQ,QAAU,SAAiB5R,EAAO6R,GACvC,IAAI08H,EAAcC,EAElB,OAAQ38H,EAAOpK,MACb,IAAK,SACH,OAAO,OAAS,CAAC,EAAGzH,EAAO,CACzBsuI,kBAAmBtuI,EAAMsuI,kBAAoB,IAGjD,IAAK,QACH,OAAO,OAAS,CAAC,EAAGtuI,EAAO,CACzBypI,UAAU,IAGd,IAAK,WACH,OAAO,OAAS,CAAC,EAAGzpI,EAAO,CACzBypI,UAAU,IAGd,IAAK,QACH,OAAO,OAAS,CAAC,EAAGzpI,EAAO,CACzBsuI,kBAAmB,EACnBR,UAA2C,OAA/BS,EAAe18H,EAAOyuC,MAAgBiuF,EAAe,KACjE7C,YAAY,EACZjC,UAAU,IACRzpI,EAAMisI,eAAiB,CACzBpsI,MAAO,KACPslD,OAAQ,YAGZ,IAAK,UACH,OAAO,OAAS,CAAC,EAAGnlD,EAAO,CACzBsC,KAAMuP,EAAOvP,KACb6rI,gBAAiBnuI,EAAMmuI,gBAAkB,EACzClC,cAAiE,OAAjDuC,EAAwB38H,EAAOo6H,eAAyBuC,EAAwBhxI,KAAKC,MACrGoC,MAAO,KACPyuI,kBAAmB,EACnB5C,YAAY,EACZe,eAAe,EACfhD,UAAU,EACVtkF,OAAQ,YAGZ,IAAK,QACH,IAAItlD,EAAQgS,EAAOhS,MAEnB,OAAI,QAAiBA,IAAUA,EAAMqtI,QAAUl1I,KAAK61I,aAC3C,OAAS,CAAC,EAAG71I,KAAK61I,cAGpB,OAAS,CAAC,EAAG7tI,EAAO,CACzBH,MAAOA,EACPuuI,iBAAkBpuI,EAAMouI,iBAAmB,EAC3CC,eAAgB7wI,KAAKC,MACrB6wI,kBAAmBtuI,EAAMsuI,kBAAoB,EAC7C5C,YAAY,EACZjC,UAAU,EACVtkF,OAAQ,UAGZ,IAAK,aACH,OAAO,OAAS,CAAC,EAAGnlD,EAAO,CACzBysI,eAAe,IAGnB,IAAK,WACH,OAAO,OAAS,CAAC,EAAGzsI,EAAO6R,EAAO7R,OAEpC,QACE,OAAOA,EAEb,EAEO8qI,CACT,CA5egC,eCDrB2D,EAA0B,SAAU/J,GAG7C,SAAS+J,EAAW56H,GAClB,IAAI9C,EAMJ,OAJAA,EAAQ2zH,EAAcptI,KAAKU,OAASA,MAC9B6b,OAASA,GAAU,CAAC,EAC1B9C,EAAM8pE,QAAU,GAChB9pE,EAAM29H,WAAa,CAAC,EACb39H,CACT,EAVA,OAAe09H,EAAY/J,GAY3B,IAAIxiH,EAASusH,EAAWr3I,UA8HxB,OA5HA8qB,EAAOysH,MAAQ,SAAe77H,EAAQ7J,EAASjJ,GAC7C,IAAI4uI,EAEA3H,EAAWh+H,EAAQg+H,SACnBiE,EAAwD,OAA3C0D,EAAqB3lI,EAAQiiI,WAAqB0D,GAAqB,QAAsB3H,EAAUh+H,GACpHkR,EAAQniB,KAAKmD,IAAI+vI,GAerB,OAbK/wH,IACHA,EAAQ,IAAI2wH,EAAM,CAChB3mI,MAAOnM,KACPivI,SAAUA,EACViE,UAAWA,EACXjiI,QAAS6J,EAAO+7H,oBAAoB5lI,GACpCjJ,MAAOA,EACP6I,eAAgBiK,EAAOg8H,iBAAiB7H,GACxC3mF,KAAMr3C,EAAQq3C,OAEhBtoD,KAAK2G,IAAIwb,IAGJA,CACT,EAEA+H,EAAOvjB,IAAM,SAAawb,GACnBniB,KAAK02I,WAAWv0H,EAAM+wH,aACzBlzI,KAAK02I,WAAWv0H,EAAM+wH,WAAa/wH,EACnCniB,KAAK6iF,QAAQ1gF,KAAKggB,GAClBniB,KAAK2xI,OAAO,CACVliI,KAAM,aACN0S,MAAOA,IAGb,EAEA+H,EAAOpe,OAAS,SAAgBqW,GAC9B,IAAI40H,EAAa/2I,KAAK02I,WAAWv0H,EAAM+wH,WAEnC6D,IACF50H,EAAMkyH,UACNr0I,KAAK6iF,QAAU7iF,KAAK6iF,QAAQ17E,QAAO,SAAU+E,GAC3C,OAAOA,IAAMiW,CACf,IAEI40H,IAAe50H,UACVniB,KAAK02I,WAAWv0H,EAAM+wH,WAG/BlzI,KAAK2xI,OAAO,CACVliI,KAAM,eACN0S,MAAOA,IAGb,EAEA+H,EAAO5lB,MAAQ,WACb,IAAIwmF,EAAS9qF,KAEbsyI,EAAA,SAAoB,WAClBxnD,EAAOjI,QAAQv7E,SAAQ,SAAU6a,GAC/B2oE,EAAOh/E,OAAOqW,EAChB,GACF,GACF,EAEA+H,EAAO/mB,IAAM,SAAa+vI,GACxB,OAAOlzI,KAAK02I,WAAWxD,EACzB,EAEAhpH,EAAO3b,OAAS,WACd,OAAOvO,KAAK6iF,OACd,EAEA34D,EAAO8+D,KAAO,SAAcguD,EAAMC,GAChC,IACI5gC,GADmB,QAAgB2gC,EAAMC,GACd,GAM/B,YAJ6B,IAAlB5gC,EAAQ6gC,QACjB7gC,EAAQ6gC,OAAQ,GAGXl3I,KAAK6iF,QAAQmG,MAAK,SAAU7mE,GACjC,OAAO,QAAWk0F,EAASl0F,EAC7B,GACF,EAEA+H,EAAOitH,QAAU,SAAiBH,EAAMC,GACtC,IACI5gC,GADoB,QAAgB2gC,EAAMC,GACd,GAEhC,OAAOl4I,OAAOgK,KAAKstG,GAASv2G,OAAS,EAAIE,KAAK6iF,QAAQ17E,QAAO,SAAUgb,GACrE,OAAO,QAAWk0F,EAASl0F,EAC7B,IAAKniB,KAAK6iF,OACZ,EAEA34D,EAAOynH,OAAS,SAAgB/tH,GAC9B,IAAIuqE,EAASnuF,KAEbsyI,EAAA,SAAoB,WAClBnkD,EAAOlwE,UAAU3W,SAAQ,SAAUgX,GACjCA,EAASsF,EACX,GACF,GACF,EAEAsG,EAAO4F,QAAU,WACf,IAAIu/D,EAASrvF,KAEbsyI,EAAA,SAAoB,WAClBjjD,EAAOxM,QAAQv7E,SAAQ,SAAU6a,GAC/BA,EAAM2N,SACR,GACF,GACF,EAEA5F,EAAOuoH,SAAW,WAChB,IAAI74C,EAAS55F,KAEbsyI,EAAA,SAAoB,WAClB14C,EAAO/W,QAAQv7E,SAAQ,SAAU6a,GAC/BA,EAAMswH,UACR,GACF,GACF,EAEOgE,CACT,CA5IqC,CA4InC,iBC3ISW,EAA6B,SAAU1K,GAGhD,SAAS0K,EAAcv7H,GACrB,IAAI9C,EAMJ,OAJAA,EAAQ2zH,EAAcptI,KAAKU,OAASA,MAC9B6b,OAASA,GAAU,CAAC,EAC1B9C,EAAMs+H,UAAY,GAClBt+H,EAAMo3H,WAAa,EACZp3H,CACT,EAVA,OAAeq+H,EAAe1K,GAY9B,IAAIxiH,EAASktH,EAAch4I,UAyF3B,OAvFA8qB,EAAOysH,MAAQ,SAAe77H,EAAQ7J,EAASjJ,GAC7C,IAAIsvI,EAAW,IAAI,IAAS,CAC1BlH,cAAepwI,KACfmwI,aAAcnwI,KAAKmwI,WACnBl/H,QAAS6J,EAAOy8H,uBAAuBtmI,GACvCjJ,MAAOA,EACP6I,eAAgBI,EAAQumI,YAAc18H,EAAO28H,oBAAoBxmI,EAAQumI,kBAAe19H,EACxFwuC,KAAMr3C,EAAQq3C,OAGhB,OADAtoD,KAAK2G,IAAI2wI,GACFA,CACT,EAEAptH,EAAOvjB,IAAM,SAAa2wI,GACxBt3I,KAAKq3I,UAAUl1I,KAAKm1I,GACpBt3I,KAAK2xI,OAAO2F,EACd,EAEAptH,EAAOpe,OAAS,SAAgBwrI,GAC9Bt3I,KAAKq3I,UAAYr3I,KAAKq3I,UAAUlwI,QAAO,SAAU+E,GAC/C,OAAOA,IAAMorI,CACf,IACAA,EAAS5oF,SACT1uD,KAAK2xI,OAAO2F,EACd,EAEAptH,EAAO5lB,MAAQ,WACb,IAAIwmF,EAAS9qF,KAEbsyI,EAAA,SAAoB,WAClBxnD,EAAOusD,UAAU/vI,SAAQ,SAAUgwI,GACjCxsD,EAAOh/E,OAAOwrI,EAChB,GACF,GACF,EAEAptH,EAAO3b,OAAS,WACd,OAAOvO,KAAKq3I,SACd,EAEAntH,EAAO8+D,KAAO,SAAcqtB,GAK1B,YAJ6B,IAAlBA,EAAQ6gC,QACjB7gC,EAAQ6gC,OAAQ,GAGXl3I,KAAKq3I,UAAUruD,MAAK,SAAUsuD,GACnC,OAAO,QAAcjhC,EAASihC,EAChC,GACF,EAEAptH,EAAOitH,QAAU,SAAiB9gC,GAChC,OAAOr2G,KAAKq3I,UAAUlwI,QAAO,SAAUmwI,GACrC,OAAO,QAAcjhC,EAASihC,EAChC,GACF,EAEAptH,EAAOynH,OAAS,SAAgB2F,GAC9B,IAAInpD,EAASnuF,KAEbsyI,EAAA,SAAoB,WAClBnkD,EAAOlwE,UAAU3W,SAAQ,SAAUgX,GACjCA,EAASg5H,EACX,GACF,GACF,EAEAptH,EAAO4F,QAAU,WACf9vB,KAAK03I,uBACP,EAEAxtH,EAAOuoH,SAAW,WAChBzyI,KAAK03I,uBACP,EAEAxtH,EAAOwtH,sBAAwB,WAC7B,IAAIC,EAAkB33I,KAAKq3I,UAAUlwI,QAAO,SAAU+E,GACpD,OAAOA,EAAElE,MAAMypI,QACjB,IACA,OAAOa,EAAA,SAAoB,WACzB,OAAOqF,EAAgB3uI,QAAO,SAAU8mD,EAASwnF,GAC/C,OAAOxnF,EAAQ7uD,MAAK,WAClB,OAAOq2I,EAAS7G,WAAW3wE,MAAM,KACnC,GACF,GAAGx/D,QAAQC,UACb,GACF,EAEO62I,CACT,CAvGwC,CAuGtC,yCCrGSx0D,EAA2B,WACpC,SAASA,EAAY/mE,QACJ,IAAXA,IACFA,EAAS,CAAC,GAGZ7b,KAAK43I,WAAa/7H,EAAO+7H,YAAc,IAAInB,EAC3Cz2I,KAAKowI,cAAgBv0H,EAAOu0H,eAAiB,IAAIgH,EACjDp3I,KAAK6Q,eAAiBgL,EAAOhL,gBAAkB,CAAC,EAChD7Q,KAAK63I,cAAgB,GACrB73I,KAAK83I,iBAAmB,EAC1B,CAEA,IAAI5tH,EAAS04D,EAAYxjF,UAsUzB,OApUA8qB,EAAOmc,MAAQ,WACb,IAAIttB,EAAQ/Y,KAEZA,KAAK+3I,iBAAmBtL,EAAA,aAAuB,WACzCA,EAAA,eAA4B8F,EAAA,eAC9Bx5H,EAAMq3H,cAActgH,UAEpB/W,EAAM6+H,WAAW9nH,UAErB,IACA9vB,KAAKg4I,kBAAoBzF,EAAA,aAAwB,WAC3C9F,EAAA,eAA4B8F,EAAA,eAC9Bx5H,EAAMq3H,cAAcqC,WAEpB15H,EAAM6+H,WAAWnF,WAErB,GACF,EAEAvoH,EAAO+tH,QAAU,WACf,IAAIC,EAAuBC,EAEwB,OAAlDD,EAAwBl4I,KAAK+3I,mBAAqCG,EAAsB54I,KAAKU,MAC1C,OAAnDm4I,EAAwBn4I,KAAKg4I,oBAAsCG,EAAsB74I,KAAKU,KACjG,EAEAkqB,EAAOwpH,WAAa,SAAoBsD,EAAMC,GAC5C,IACI5gC,GADmB,QAAgB2gC,EAAMC,GACd,GAG/B,OADA5gC,EAAQ+hC,UAAW,EACZp4I,KAAK43I,WAAWT,QAAQ9gC,GAASv2G,MAC1C,EAEAoqB,EAAOmuH,WAAa,SAAoBhiC,GACtC,OAAOr2G,KAAKowI,cAAc+G,SAAQ,OAAS,CAAC,EAAG9gC,EAAS,CACtD+hC,UAAU,KACRt4I,MACN,EAEAoqB,EAAOouH,aAAe,SAAsBrJ,EAAU54B,GACpD,IAAIkiC,EAEJ,OAA4E,OAApEA,EAAwBv4I,KAAK43I,WAAW5uD,KAAKimD,EAAU54B,SAAoB,EAASkiC,EAAsBvwI,MAAMsC,IAC1H,EAEA4f,EAAOsuH,eAAiB,SAAwBC,GAC9C,OAAOz4I,KAAK04I,gBAAgBvB,QAAQsB,GAAmBpvI,KAAI,SAAUsV,GAInE,MAAO,CAHQA,EAAKswH,SACRtwH,EAAK3W,MACAsC,KAEnB,GACF,EAEA4f,EAAOyuH,aAAe,SAAsB1J,EAAU2E,EAAS3iI,GAC7D,IAAI2nI,GAAgB,QAAe3J,GAC/B4J,EAAmB74I,KAAK62I,oBAAoB+B,GAChD,OAAO54I,KAAK43I,WAAWjB,MAAM32I,KAAM64I,GAAkBlF,QAAQC,EAAS3iI,EACxE,EAEAiZ,EAAO4uH,eAAiB,SAAwBL,EAAmB7E,EAAS3iI,GAC1E,IAAI65E,EAAS9qF,KAEb,OAAOsyI,EAAA,SAAoB,WACzB,OAAOxnD,EAAO4tD,gBAAgBvB,QAAQsB,GAAmBpvI,KAAI,SAAUstB,GACrE,IAAIs4G,EAAWt4G,EAAMs4G,SACrB,MAAO,CAACA,EAAUnkD,EAAO6tD,aAAa1J,EAAU2E,EAAS3iI,GAC3D,GACF,GACF,EAEAiZ,EAAO6uH,cAAgB,SAAuB9J,EAAU54B,GACtD,IAAI2iC,EAEJ,OAA6E,OAArEA,EAAyBh5I,KAAK43I,WAAW5uD,KAAKimD,EAAU54B,SAAoB,EAAS2iC,EAAuBhxI,KACtH,EAEAkiB,EAAO+uH,cAAgB,SAAuBjC,EAAMC,GAClD,IACI5gC,GADoB,QAAgB2gC,EAAMC,GACd,GAE5BW,EAAa53I,KAAK43I,WACtBtF,EAAA,SAAoB,WAClBsF,EAAWT,QAAQ9gC,GAAS/uG,SAAQ,SAAU6a,GAC5Cy1H,EAAW9rI,OAAOqW,EACpB,GACF,GACF,EAEA+H,EAAOgvH,aAAe,SAAsBlC,EAAMC,EAAMkC,GACtD,IAAIhrD,EAASnuF,KAETo5I,GAAoB,QAAgBpC,EAAMC,EAAMkC,GAChD9iC,EAAU+iC,EAAkB,GAC5BnoI,EAAUmoI,EAAkB,GAE5BxB,EAAa53I,KAAK43I,WAElByB,GAAiB,OAAS,CAAC,EAAGhjC,EAAS,CACzC95E,QAAQ,IAGV,OAAO+1G,EAAA,SAAoB,WAIzB,OAHAsF,EAAWT,QAAQ9gC,GAAS/uG,SAAQ,SAAU6a,GAC5CA,EAAM2sE,OACR,IACOX,EAAOmrD,eAAeD,EAAgBpoI,EAC/C,GACF,EAEAiZ,EAAOqvH,cAAgB,SAAuBvC,EAAMC,EAAMkC,GACxD,IAAI9pD,EAASrvF,KAETw5I,GAAoB,QAAgBxC,EAAMC,EAAMkC,GAChD9iC,EAAUmjC,EAAkB,GAC5BC,EAAqBD,EAAkB,GACvCE,OAAuC,IAAvBD,EAAgC,CAAC,EAAIA,OAErB,IAAzBC,EAAcxE,SACvBwE,EAAcxE,QAAS,GAGzB,IAAIzlF,EAAW6iF,EAAA,SAAoB,WACjC,OAAOjjD,EAAOuoD,WAAWT,QAAQ9gC,GAAShtG,KAAI,SAAU8Y,GACtD,OAAOA,EAAMusC,OAAOgrF,EACtB,GACF,IACA,OAAOp5I,QAAQkvD,IAAIC,GAAUxuD,KAAK,MAAM6+D,MAAM,KAChD,EAEA51C,EAAOyvH,kBAAoB,SAA2B3C,EAAMC,EAAMkC,GAChE,IAAIxxF,EACAiyF,EACAC,EACAjgD,EAAS55F,KAET85I,GAAoB,QAAgB9C,EAAMC,EAAMkC,GAChD9iC,EAAUyjC,EAAkB,GAC5B7oI,EAAU6oI,EAAkB,GAE5BT,GAAiB,OAAS,CAAC,EAAGhjC,EAAS,CAGzC95E,OAAsH,OAA7GorB,EAA2D,OAAlDiyF,EAAwBvjC,EAAQ0jC,eAAyBH,EAAwBvjC,EAAQ95E,SAAkBorB,EAC7HqyF,SAA+D,OAApDH,EAAwBxjC,EAAQ4jC,kBAA2BJ,IAGxE,OAAOvH,EAAA,SAAoB,WAKzB,OAJA14C,EAAOg+C,WAAWT,QAAQ9gC,GAAS/uG,SAAQ,SAAU6a,GACnDA,EAAMkzH,YACR,IAEOz7C,EAAO0/C,eAAeD,EAAgBpoI,EAC/C,GACF,EAEAiZ,EAAOovH,eAAiB,SAAwBtC,EAAMC,EAAMkC,GAC1D,IAAI/7C,EAASp9F,KAETk6I,GAAoB,QAAgBlD,EAAMC,EAAMkC,GAChD9iC,EAAU6jC,EAAkB,GAC5BjpI,EAAUipI,EAAkB,GAE5BzqF,EAAW6iF,EAAA,SAAoB,WACjC,OAAOl1C,EAAOw6C,WAAWT,QAAQ9gC,GAAShtG,KAAI,SAAU8Y,GACtD,OAAOA,EAAMzY,WAAMoQ,GAAW,OAAS,CAAC,EAAG7I,EAAS,CAClDq3C,KAAM,CACJylF,YAAwB,MAAX13B,OAAkB,EAASA,EAAQ03B,eAGtD,GACF,IACIj+E,EAAUxvD,QAAQkvD,IAAIC,GAAUxuD,KAAK,MAMzC,OAJiB,MAAXgQ,OAAkB,EAASA,EAAQkpI,gBACvCrqF,EAAUA,EAAQgQ,MAAM,OAGnBhQ,CACT,EAEA5lC,EAAOkwH,WAAa,SAAoBpD,EAAMC,EAAMkC,GAClD,IAAIP,GAAgB,QAAe5B,EAAMC,EAAMkC,GAC3CN,EAAmB74I,KAAK62I,oBAAoB+B,QAEV,IAA3BC,EAAiB91D,QAC1B81D,EAAiB91D,OAAQ,GAG3B,IAAI5gE,EAAQniB,KAAK43I,WAAWjB,MAAM32I,KAAM64I,GACxC,OAAO12H,EAAMwyH,cAAckE,EAAiB/1D,WAAa3gE,EAAMzY,MAAMmvI,GAAoBv4I,QAAQC,QAAQ4hB,EAAMna,MAAMsC,KACvH,EAEA4f,EAAOmwH,cAAgB,SAAuBrD,EAAMC,EAAMkC,GACxD,OAAOn5I,KAAKo6I,WAAWpD,EAAMC,EAAMkC,GAAMl4I,KAAK,MAAM6+D,MAAM,KAC5D,EAEA51C,EAAOowH,mBAAqB,SAA4BtD,EAAMC,EAAMkC,GAClE,IAAIP,GAAgB,QAAe5B,EAAMC,EAAMkC,GAE/C,OADAP,EAAchD,UAAW,EAAAtI,EAAA,MAClBttI,KAAKo6I,WAAWxB,EACzB,EAEA1uH,EAAOqwH,sBAAwB,SAA+BvD,EAAMC,EAAMkC,GACxE,OAAOn5I,KAAKs6I,mBAAmBtD,EAAMC,EAAMkC,GAAMl4I,KAAK,MAAM6+D,MAAM,KACpE,EAEA51C,EAAOswH,gBAAkB,WACvB,IAAI98C,EAAS19F,KAETyvD,EAAW6iF,EAAA,SAAoB,WACjC,OAAO50C,EAAO0yC,cAAc7hI,SAASlF,KAAI,SAAUiuI,GACjD,OAAOA,EAAS5oF,QAClB,GACF,IACA,OAAOpuD,QAAQkvD,IAAIC,GAAUxuD,KAAK,MAAM6+D,MAAM,KAChD,EAEA51C,EAAOwtH,sBAAwB,WAC7B,OAAO13I,KAAKy6I,mBAAmB/C,uBACjC,EAEAxtH,EAAO4mH,gBAAkB,SAAyB7/H,GAChD,OAAOjR,KAAKowI,cAAcuG,MAAM32I,KAAMiR,GAASy/H,SACjD,EAEAxmH,EAAOwuH,cAAgB,WACrB,OAAO14I,KAAK43I,UACd,EAEA1tH,EAAOuwH,iBAAmB,WACxB,OAAOz6I,KAAKowI,aACd,EAEAlmH,EAAOwwH,kBAAoB,WACzB,OAAO16I,KAAK6Q,cACd,EAEAqZ,EAAOopH,kBAAoB,SAA2BriI,GACpDjR,KAAK6Q,eAAiBI,CACxB,EAEAiZ,EAAOywH,iBAAmB,SAA0B1L,EAAUh+H,GAC5D,IAAIlQ,EAASf,KAAK63I,cAAc7uD,MAAK,SAAU98E,GAC7C,OAAO,QAAa+iI,MAAc,QAAa/iI,EAAE+iI,SACnD,IAEIluI,EACFA,EAAO8P,eAAiBI,EAExBjR,KAAK63I,cAAc11I,KAAK,CACtB8sI,SAAUA,EACVp+H,eAAgBI,GAGtB,EAEAiZ,EAAO4sH,iBAAmB,SAA0B7H,GAClD,IAAI2L,EAEJ,OAAO3L,EAEA,OAFY2L,EAAwB56I,KAAK63I,cAAc7uD,MAAK,SAAU98E,GAC3E,OAAO,QAAgB+iI,EAAU/iI,EAAE+iI,SACrC,UAAc,EAAS2L,EAAsB/pI,oBAAiBiJ,CAChE,EAEAoQ,EAAO2wH,oBAAsB,SAA6BrD,EAAavmI,GACrE,IAAIlQ,EAASf,KAAK83I,iBAAiB9uD,MAAK,SAAU98E,GAChD,OAAO,QAAasrI,MAAiB,QAAatrI,EAAEsrI,YACtD,IAEIz2I,EACFA,EAAO8P,eAAiBI,EAExBjR,KAAK83I,iBAAiB31I,KAAK,CACzBq1I,YAAaA,EACb3mI,eAAgBI,GAGtB,EAEAiZ,EAAOutH,oBAAsB,SAA6BD,GACxD,IAAIsD,EAEJ,OAAOtD,EAEA,OAFesD,EAAwB96I,KAAK83I,iBAAiB9uD,MAAK,SAAU98E,GACjF,OAAO,QAAgBsrI,EAAatrI,EAAEsrI,YACxC,UAAc,EAASsD,EAAsBjqI,oBAAiBiJ,CAChE,EAEAoQ,EAAO2sH,oBAAsB,SAA6B5lI,GACxD,GAAe,MAAXA,OAAkB,EAASA,EAAQ8pI,WACrC,OAAO9pI,EAGT,IAAI4nI,GAAmB,OAAS,CAAC,EAAG74I,KAAK6Q,eAAegyE,QAAS7iF,KAAK82I,iBAA4B,MAAX7lI,OAAkB,EAASA,EAAQg+H,UAAWh+H,EAAS,CAC5I8pI,YAAY,IAOd,OAJKlC,EAAiB3F,WAAa2F,EAAiB5J,WAClD4J,EAAiB3F,WAAY,QAAsB2F,EAAiB5J,SAAU4J,IAGzEA,CACT,EAEA3uH,EAAO8wH,4BAA8B,SAAqC/pI,GACxE,OAAOjR,KAAK62I,oBAAoB5lI,EAClC,EAEAiZ,EAAOqtH,uBAAyB,SAAgCtmI,GAC9D,OAAe,MAAXA,OAAkB,EAASA,EAAQ8pI,YAC9B9pI,GAGF,OAAS,CAAC,EAAGjR,KAAK6Q,eAAewmI,UAAWr3I,KAAKy3I,oBAA+B,MAAXxmI,OAAkB,EAASA,EAAQumI,aAAcvmI,EAAS,CACpI8pI,YAAY,GAEhB,EAEA7wH,EAAO5lB,MAAQ,WACbtE,KAAK43I,WAAWtzI,QAChBtE,KAAKowI,cAAc9rI,OACrB,EAEOs+E,CACT,CApVsC,iKCLtC,SAASq4D,EAAkBzJ,GACzB,OAAOxsI,KAAKumC,IAAI,IAAOvmC,KAAKkpB,IAAI,EAAGsjH,GAAe,IACpD,CAEO,SAAS0J,EAAax6I,GAC3B,MAA0D,mBAAlC,MAATA,OAAgB,EAASA,EAAMguD,OAChD,CACO,IAAIysF,EAAiB,SAAwBlqI,GAClDjR,KAAKk1I,OAAoB,MAAXjkI,OAAkB,EAASA,EAAQikI,OACjDl1I,KAAKqoF,OAAoB,MAAXp3E,OAAkB,EAASA,EAAQo3E,MACnD,EACO,SAAS+yD,EAAiB16I,GAC/B,OAAOA,aAAiBy6I,CAC1B,CAEO,IAAIE,EAAU,SAAiBx/H,GACpC,IAGIy/H,EACAC,EACAC,EACAC,EANA1iI,EAAQ/Y,KAERm1I,GAAc,EAKlBn1I,KAAK8K,MAAQ+Q,EAAO/Q,MAEpB9K,KAAK0uD,OAAS,SAAUgrF,GACtB,OAAmB,MAAZ4B,OAAmB,EAASA,EAAS5B,EAC9C,EAEA15I,KAAKm1I,YAAc,WACjBA,GAAc,CAChB,EAEAn1I,KAAK01I,cAAgB,WACnBP,GAAc,CAChB,EAEAn1I,KAAKywI,SAAW,WACd,OAAqB,MAAd8K,OAAqB,EAASA,GACvC,EAEAv7I,KAAKwxI,aAAe,EACpBxxI,KAAKyxI,UAAW,EAChBzxI,KAAK07I,YAAa,EAClB17I,KAAKi1I,uBAAwB,EAC7Bj1I,KAAK8vD,QAAU,IAAIxvD,SAAQ,SAAUq7I,EAAcC,GACjDJ,EAAiBG,EACjBF,EAAgBG,CAClB,IAEA,IAAIr7I,EAAU,SAAiBG,GACxBqY,EAAM2iI,aACT3iI,EAAM2iI,YAAa,EACC,MAApB7/H,EAAOk1H,WAA6Bl1H,EAAOk1H,UAAUrwI,GACvC,MAAd66I,GAA8BA,IAC9BC,EAAe96I,GAEnB,EAEIF,EAAS,SAAgBE,GACtBqY,EAAM2iI,aACT3iI,EAAM2iI,YAAa,EACD,MAAlB7/H,EAAOo1H,SAA2Bp1H,EAAOo1H,QAAQvwI,GACnC,MAAd66I,GAA8BA,IAC9BE,EAAc/6I,GAElB,GAeU,SAASm7I,IAEjB,IAAI9iI,EAAM2iI,WAAV,CAIA,IAAII,EAEJ,IACEA,EAAiBjgI,EAAO2C,IAG1B,CAFE,MAAO3W,GACPi0I,EAAiBx7I,QAAQE,OAAOqH,EAClC,CAGAyzI,EAAW,SAAkB5B,GAC3B,IAAK3gI,EAAM2iI,aACTl7I,EAAO,IAAI26I,EAAezB,IACX,MAAf3gI,EAAMjO,OAAyBiO,EAAMjO,QAEjCowI,EAAaY,IACf,IACEA,EAAeptF,QACE,CAAjB,MAAOmkC,GAAU,CAGzB,EAGA95E,EAAMk8H,sBAAwBiG,EAAaY,GAC3Cx7I,QAAQC,QAAQu7I,GAAgB76I,KAAKV,GAASu/D,OAAM,SAAUj4D,GAC5D,IAAIk0I,EAAeC,EAGnB,IAAIjjI,EAAM2iI,WAAV,CAKA,IAAI34D,EAA0C,OAAjCg5D,EAAgBlgI,EAAOknE,OAAiBg5D,EAAgB,EACjExK,EAAyD,OAA3CyK,EAAqBngI,EAAO01H,YAAsByK,EAAqBf,EACrFx/G,EAA8B,mBAAf81G,EAA4BA,EAAWx4H,EAAMy4H,aAAc3pI,GAAS0pI,EACnF0K,GAAwB,IAAVl5D,GAAmC,iBAAVA,GAAsBhqE,EAAMy4H,aAAezuD,GAA0B,mBAAVA,GAAwBA,EAAMhqE,EAAMy4H,aAAc3pI,IAEpJstI,GAAgB8G,GAMpBljI,EAAMy4H,eAEW,MAAjB31H,EAAOu1H,QAA0Bv1H,EAAOu1H,OAAOr4H,EAAMy4H,aAAc3pI,IAEnE,QAAM4zB,GACLx6B,MAAK,WACJ,IAAK,kBAA6B,eAChC,OArEC,IAAIX,SAAQ,SAAU47I,GAC3BX,EAAaW,EACbnjI,EAAM04H,UAAW,EACC,MAAlB51H,EAAOw1H,SAA2Bx1H,EAAOw1H,SAC3C,IAAGpwI,MAAK,WACNs6I,OAAazhI,EACbf,EAAM04H,UAAW,EACI,MAArB51H,EAAOy1H,YAA8Bz1H,EAAOy1H,YAC9C,GA+DE,IAAGrwI,MAAK,WACFk0I,EACF30I,EAAOqH,GAEPg0I,GAEJ,KAnBEr7I,EAAOqH,EAVT,CA8BF,GA9DA,CA+DF,CAGAg0I,EACF,uEC5JO,IAAIM,EAA4B,WACrC,SAASA,IACPn8I,KAAKie,UAAY,EACnB,CAEA,IAAIiM,EAASiyH,EAAa/8I,UA8B1B,OA5BA8qB,EAAOykC,UAAY,SAAmBrwC,GACpC,IAAIvF,EAAQ/Y,KAERw2B,EAAWlY,GAAY,WAE3B,EAIA,OAFAte,KAAKie,UAAU9b,KAAKq0B,GACpBx2B,KAAK6sI,cACE,WACL9zH,EAAMkF,UAAYlF,EAAMkF,UAAU9W,QAAO,SAAU+E,GACjD,OAAOA,IAAMsqB,CACf,IAEAzd,EAAMi0H,eACR,CACF,EAEA9iH,EAAOgjH,aAAe,WACpB,OAAOltI,KAAKie,UAAUne,OAAS,CACjC,EAEAoqB,EAAO2iH,YAAc,WACrB,EAEA3iH,EAAO8iH,cAAgB,WACvB,EAEOmP,CACT,CApCuC,6hBCG5BC,EAA6B,oBAAX15I,OACtB,SAAS+3F,IAEhB,CACO,SAAS4hD,EAAiBzI,EAASjrF,GACxC,MAA0B,mBAAZirF,EAAyBA,EAAQjrF,GAASirF,CAC1D,CACO,SAAS0I,EAAe57I,GAC7B,MAAwB,iBAAVA,GAAsBA,GAAS,GAAKA,IAAUimH,GAC9D,CACO,SAAS41B,EAAoB77I,GAClC,OAAOxB,MAAMkU,QAAQ1S,GAASA,EAAQ,CAACA,EACzC,CAWO,SAAS87I,EAAetI,EAAWpxD,GACxC,OAAO99E,KAAKkC,IAAIgtI,GAAapxD,GAAa,GAAKt9E,KAAKC,MAAO,EAC7D,CACO,SAASg3I,EAAezF,EAAMC,EAAMkC,GACzC,OAAKuD,EAAW1F,GAII,mBAATC,GACF,OAAS,CAAC,EAAGkC,EAAM,CACxBlK,SAAU+H,EACVpI,QAASqI,KAIN,OAAS,CAAC,EAAGA,EAAM,CACxBhI,SAAU+H,IAXHA,CAaX,CACO,SAAS2F,EAAkB3F,EAAMC,EAAMkC,GAC5C,OAAIuD,EAAW1F,GACO,mBAATC,GACF,OAAS,CAAC,EAAGkC,EAAM,CACxB3B,YAAaR,EACb7F,WAAY8F,KAIT,OAAS,CAAC,EAAGA,EAAM,CACxBO,YAAaR,IAIG,mBAATA,GACF,OAAS,CAAC,EAAGC,EAAM,CACxB9F,WAAY6F,KAIT,OAAS,CAAC,EAAGA,EACtB,CACO,SAAS4F,EAAgB5F,EAAMC,EAAMkC,GAC1C,OAAOuD,EAAW1F,GAAQ,EAAC,OAAS,CAAC,EAAGC,EAAM,CAC5ChI,SAAU+H,IACRmC,GAAQ,CAACnC,GAAQ,CAAC,EAAGC,EAC3B,CAkBO,SAAS4F,EAAWxmC,EAASl0F,GAClC,IAAIoa,EAAS85E,EAAQ95E,OACjB26G,EAAQ7gC,EAAQ6gC,MAChBkB,EAAW/hC,EAAQ+hC,SACnB4B,EAAW3jC,EAAQ2jC,SACnBxpB,EAAYna,EAAQma,UACpBye,EAAW54B,EAAQ44B,SACnB6N,EAAQzmC,EAAQymC,MAEpB,GAAIJ,EAAWzN,GACb,GAAIiI,GACF,GAAI/0H,EAAM+wH,YAAc6J,EAAsB9N,EAAU9sH,EAAMlR,SAC5D,OAAO,OAEJ,IAAK+rI,EAAgB76H,EAAM8sH,SAAUA,GAC1C,OAAO,EAIX,IAAIgO,EA/BC,SAA8B1gH,EAAQy9G,GAC3C,OAAe,IAAXz9G,IAAgC,IAAby9G,GAA+B,MAAVz9G,GAA8B,MAAZy9G,EACrD,OACa,IAAXz9G,IAAiC,IAAby9G,EACtB,QAIkB,MAAVz9G,EAAiBA,GAAUy9G,GACxB,SAAW,UAEjC,CAoB0BkD,CAAqB3gH,EAAQy9G,GAErD,GAA0B,SAAtBiD,EACF,OAAO,EACF,GAA0B,QAAtBA,EAA6B,CACtC,IAAI3I,EAAWnyH,EAAMmyH,WAErB,GAA0B,WAAtB2I,IAAmC3I,EACrC,OAAO,EAGT,GAA0B,aAAtB2I,GAAoC3I,EACtC,OAAO,CAEX,CAEA,OAAqB,kBAAVwI,GAAuB36H,EAAMqyH,YAAcsI,MAI9B,kBAAb1E,GAA0Bj2H,EAAMuxH,eAAiB0E,MAIxD5nB,IAAcA,EAAUruG,IAK9B,CACO,SAASg7H,EAAc9mC,EAASihC,GACrC,IAAIJ,EAAQ7gC,EAAQ6gC,MAChBkB,EAAW/hC,EAAQ+hC,SACnB5nB,EAAYna,EAAQma,UACpBgnB,EAAcnhC,EAAQmhC,YAE1B,GAAIkF,EAAWlF,GAAc,CAC3B,IAAKF,EAASrmI,QAAQumI,YACpB,OAAO,EAGT,GAAIN,GACF,GAAIkG,EAAa9F,EAASrmI,QAAQumI,eAAiB4F,EAAa5F,GAC9D,OAAO,OAEJ,IAAKwF,EAAgB1F,EAASrmI,QAAQumI,YAAaA,GACxD,OAAO,CAEX,CAEA,OAAwB,kBAAbY,GAAoD,YAA1Bd,EAAStvI,MAAMmlD,SAAyBirF,MAIzE5nB,IAAcA,EAAU8mB,GAK9B,CACO,SAASyF,EAAsB9N,EAAUh+H,GAE9C,QADyB,MAAXA,OAAkB,EAASA,EAAQosI,iBAAmBD,GACtDnO,EAChB,CAKO,SAASmO,EAAanO,GAC3B,IAO8BvuI,EAP1B48I,EAAUf,EAAoBtN,GAClC,OAM8BvuI,EANP48I,EAOhBl3I,KAAKC,UAAU3F,GAAO,SAAUa,EAAGgrC,GACxC,OAAO6e,EAAc7e,GAAOxtC,OAAOgK,KAAKwjC,GAAKvqB,OAAOhZ,QAAO,SAAUjI,EAAQoD,GAE3E,OADApD,EAAOoD,GAAOooC,EAAIpoC,GACXpD,CACT,GAAG,CAAC,GAAKwrC,CACX,GAXF,CAiBO,SAASywG,EAAgBl5I,EAAGhF,GACjC,OAAOy+I,EAAiBhB,EAAoBz4I,GAAIy4I,EAAoBz9I,GACtE,CAKO,SAASy+I,EAAiBz5I,EAAGhF,GAClC,OAAIgF,IAAMhF,UAICgF,UAAahF,OAIpBgF,IAAKhF,GAAkB,iBAANgF,GAA+B,iBAANhF,KACpCC,OAAOgK,KAAKjK,GAAGiiC,MAAK,SAAU58B,GACpC,OAAQo5I,EAAiBz5I,EAAEK,GAAMrF,EAAEqF,GACrC,IAIJ,CAOO,SAASq5I,EAAiB15I,EAAGhF,GAClC,GAAIgF,IAAMhF,EACR,OAAOgF,EAGT,IAAIg7G,EAAQ5/G,MAAMkU,QAAQtP,IAAM5E,MAAMkU,QAAQtU,GAE9C,GAAIggH,GAAS1zD,EAActnD,IAAMsnD,EAActsD,GAAI,CAOjD,IANA,IAAI2+I,EAAQ3+B,EAAQh7G,EAAEhE,OAASf,OAAOgK,KAAKjF,GAAGhE,OAC1C49I,EAAS5+B,EAAQhgH,EAAIC,OAAOgK,KAAKjK,GACjC6+I,EAAQD,EAAO59I,OACf8lF,EAAOk5B,EAAQ,GAAK,CAAC,EACrB8+B,EAAa,EAERj+I,EAAI,EAAGA,EAAIg+I,EAAOh+I,IAAK,CAC9B,IAAIwE,EAAM26G,EAAQn/G,EAAI+9I,EAAO/9I,GAC7BimF,EAAKzhF,GAAOq5I,EAAiB15I,EAAEK,GAAMrF,EAAEqF,IAEnCyhF,EAAKzhF,KAASL,EAAEK,IAClBy5I,GAEJ,CAEA,OAAOH,IAAUE,GAASC,IAAeH,EAAQ35I,EAAI8hF,CACvD,CAEA,OAAO9mF,CACT,CAKO,SAAS++I,EAAoB/5I,EAAGhF,GACrC,GAAIgF,IAAMhF,GAAKA,IAAMgF,EACnB,OAAO,EAGT,IAAK,IAAIK,KAAOL,EACd,GAAIA,EAAEK,KAASrF,EAAEqF,GACf,OAAO,EAIX,OAAO,CACT,CAEO,SAASinD,EAAchpD,GAC5B,IAAK07I,EAAmB17I,GACtB,OAAO,EAIT,IAAI27I,EAAO37I,EAAEuF,YAEb,QAAoB,IAATo2I,EACT,OAAO,EAIT,IAAIC,EAAOD,EAAK3+I,UAEhB,QAAK0+I,EAAmBE,MAKnBA,EAAK3+I,eAAe,gBAM3B,CAEA,SAASy+I,EAAmB17I,GAC1B,MAA6C,oBAAtCrD,OAAOK,UAAUsG,SAASpG,KAAK8C,EACxC,CAEO,SAASs6I,EAAWh8I,GACzB,MAAwB,iBAAVA,GAAsBxB,MAAMkU,QAAQ1S,EACpD,CAIO,SAASu9I,EAAMl0I,GACpB,OAAO,IAAIzJ,SAAQ,SAAUC,GAC3BmD,WAAWnD,EAASwJ,EACtB,GACF,CAMO,SAASm0I,EAAkB1nH,GAChCl2B,QAAQC,UAAUU,KAAKu1B,GAAUspC,OAAM,SAAUj4D,GAC/C,OAAOnE,YAAW,WAChB,MAAMmE,CACR,GACF,GACF,CACO,SAASs2I,IACd,GAA+B,mBAApBxzI,gBACT,OAAO,IAAIA,eAEf,utBC1UWyzI,YAA0B,wBCCrC9L,EAAA,yBAAqC8L,mBCF1B,EAAShtI,SCEpB,OAAU,mBCDNitI,EAA8B,qBAAoBvkI,GAClDwkI,EAAyC,iBAAoB,GAOjE,SAASC,EAAsBC,GAC7B,OAAIA,GAAoC,oBAAX97I,QACtBA,OAAO+7I,0BACV/7I,OAAO+7I,wBAA0BJ,GAG5B37I,OAAO+7I,yBAGTJ,CACT,CAEO,IAAIK,EAAiB,WAC1B,IAAIC,EAAc,aAAiBJ,EAAsB,aAAiBD,KAE1E,IAAKK,EACH,MAAM,IAAIv6I,MAAM,0DAGlB,OAAOu6I,CACT,EACWz7D,EAAsB,SAA6BvkE,GAC5D,IAAI7D,EAAS6D,EAAK7D,OACd8jI,EAAsBjgI,EAAK6/H,eAC3BA,OAAyC,IAAxBI,GAAyCA,EAC1DrkI,EAAWoE,EAAKpE,SACpB,aAAgB,WAEd,OADAO,EAAOurB,QACA,WACLvrB,EAAOm9H,SACT,CACF,GAAG,CAACn9H,IACJ,IAAI+jI,EAAUN,EAAsBC,GACpC,OAAoB,gBAAoBF,EAA0BhiI,SAAU,CAC1E5b,MAAO89I,GACO,gBAAoBK,EAAQviI,SAAU,CACpD5b,MAAOoa,GACNP,GACL,8DCzCWukI,EAAgC,SAAUpS,GAGnD,SAASoS,EAAiBhkI,EAAQ7J,GAChC,IAAI8H,EAWJ,OATAA,EAAQ2zH,EAAcptI,KAAKU,OAASA,MAC9B8a,OAASA,EAEf/B,EAAMk6H,WAAWhiI,GAEjB8H,EAAMgmI,cAENhmI,EAAMimI,eAECjmI,CACT,EAfA,OAAe+lI,EAAkBpS,GAiBjC,IAAIxiH,EAAS40H,EAAiB1/I,UAoG9B,OAlGA8qB,EAAO60H,YAAc,WACnB/+I,KAAKi/I,OAASj/I,KAAKi/I,OAAOr5I,KAAK5F,MAC/BA,KAAK8uF,MAAQ9uF,KAAK8uF,MAAMlpF,KAAK5F,KAC/B,EAEAkqB,EAAO+oH,WAAa,SAAoBhiI,GACtCjR,KAAKiR,QAAUjR,KAAK8a,OAAOy8H,uBAAuBtmI,EACpD,EAEAiZ,EAAO8iH,cAAgB,WAEnB,IAAIkS,EADDl/I,KAAKie,UAAUne,SAGgC,OAAjDo/I,EAAwBl/I,KAAKm/I,kBAAoCD,EAAsB3O,eAAevwI,MAE3G,EAEAkqB,EAAOwnH,iBAAmB,SAA0B73H,GAClD7Z,KAAKg/I,eAEL,IAAII,EAAgB,CAClBnhI,WAAW,GAGO,YAAhBpE,EAAOpK,KACT2vI,EAAcrO,WAAY,EACD,UAAhBl3H,EAAOpK,OAChB2vI,EAAcnO,SAAU,GAG1BjxI,KAAK2xI,OAAOyN,EACd,EAEAl1H,EAAOwqH,iBAAmB,WACxB,OAAO10I,KAAKq/I,aACd,EAEAn1H,EAAO4kE,MAAQ,WACb9uF,KAAKm/I,qBAAkBrlI,EACvB9Z,KAAKg/I,eACLh/I,KAAK2xI,OAAO,CACV1zH,WAAW,GAEf,EAEAiM,EAAO+0H,OAAS,SAAgBrO,EAAW3/H,GAWzC,OAVAjR,KAAKs/I,cAAgBruI,EAEjBjR,KAAKm/I,iBACPn/I,KAAKm/I,gBAAgB5O,eAAevwI,MAGtCA,KAAKm/I,gBAAkBn/I,KAAK8a,OAAO2/H,mBAAmB9D,MAAM32I,KAAK8a,QAAQ,OAAS,CAAC,EAAG9a,KAAKiR,QAAS,CAClG2/H,eAAgC,IAAdA,EAA4BA,EAAY5wI,KAAKiR,QAAQ2/H,aAEzE5wI,KAAKm/I,gBAAgB7O,YAAYtwI,MAC1BA,KAAKm/I,gBAAgBzO,SAC9B,EAEAxmH,EAAO80H,aAAe,WACpB,IAAIh3I,EAAQhI,KAAKm/I,gBAAkBn/I,KAAKm/I,gBAAgBn3I,OAAQ,SAE5DjH,GAAS,OAAS,CAAC,EAAGiH,EAAO,CAC/BiQ,UAA4B,YAAjBjQ,EAAMmlD,OACjBoyF,UAA4B,YAAjBv3I,EAAMmlD,OACjBqyF,QAA0B,UAAjBx3I,EAAMmlD,OACfsyF,OAAyB,SAAjBz3I,EAAMmlD,OACd8xF,OAAQj/I,KAAKi/I,OACbnwD,MAAO9uF,KAAK8uF,QAGd9uF,KAAKq/I,cAAgBt+I,CACvB,EAEAmpB,EAAOynH,OAAS,SAAgB1gI,GAC9B,IAAI65E,EAAS9qF,KAEbsyI,EAAA,SAAoB,WAEdxnD,EAAOw0D,gBACLruI,EAAQ8/H,WACwB,MAAlCjmD,EAAOw0D,cAAcvO,WAA6BjmD,EAAOw0D,cAAcvO,UAAUjmD,EAAOu0D,cAAc/0I,KAAMwgF,EAAOu0D,cAAczO,UAAW9lD,EAAOu0D,cAAc1kI,SAC/H,MAAlCmwE,EAAOw0D,cAActO,WAA6BlmD,EAAOw0D,cAActO,UAAUlmD,EAAOu0D,cAAc/0I,KAAM,KAAMwgF,EAAOu0D,cAAczO,UAAW9lD,EAAOu0D,cAAc1kI,UAC9J1J,EAAQggI,UACe,MAAhCnmD,EAAOw0D,cAAcrO,SAA2BnmD,EAAOw0D,cAAcrO,QAAQnmD,EAAOu0D,cAAcx3I,MAAOijF,EAAOu0D,cAAczO,UAAW9lD,EAAOu0D,cAAc1kI,SAC5H,MAAlCmwE,EAAOw0D,cAActO,WAA6BlmD,EAAOw0D,cAActO,eAAUl3H,EAAWgxE,EAAOu0D,cAAcx3I,MAAOijF,EAAOu0D,cAAczO,UAAW9lD,EAAOu0D,cAAc1kI,WAK7K1J,EAAQgN,WACV6sE,EAAO7sE,UAAU3W,SAAQ,SAAUgX,GACjCA,EAASwsE,EAAOu0D,cAClB,GAEJ,GACF,EAEOP,CACT,CAvH2C,CAuHzC,KC7HK,SAASY,EAAiBC,EAAUC,EAAmB3+H,GAE5D,MAAiC,mBAAtB2+H,EACFA,EAAkB7/I,WAAM,EAAQkhB,GAIR,kBAAtB2+H,EAAwCA,IAE1CD,CACX,CCFO,SAASE,EAAY7I,EAAMC,EAAMkC,GACtC,IAAI2G,EAAa,UAAa,GAG1BC,EADkB,WAAe,GACH,GAE9B9uI,GAAU,QAAkB+lI,EAAMC,EAAMkC,GACxCwF,EAAcD,IACdsB,EAAS,WAERA,EAAOzkI,QAGVykI,EAAOzkI,QAAQ03H,WAAWhiI,GAF1B+uI,EAAOzkI,QAAU,IAAIujI,EAAiBH,EAAa1tI,GAKrD,IAAIouI,EAAgBW,EAAOzkI,QAAQm5H,mBACnC,aAAgB,WACdoL,EAAWvkI,SAAU,EACrB,IAAI+wC,EAAc0zF,EAAOzkI,QAAQozC,UAAU2jF,EAAA,cAAyB,WAC9DwN,EAAWvkI,SACbwkI,GAAY,SAAU7zI,GACpB,OAAOA,EAAI,CACb,GAEJ,KACA,OAAO,WACL4zI,EAAWvkI,SAAU,EACrB+wC,GACF,CACF,GAAG,IACH,IAAI2yF,EAAS,eAAkB,SAAUrO,EAAW0O,GAClDU,EAAOzkI,QAAQ0jI,OAAOrO,EAAW0O,GAAex/E,MAAM,KACxD,GAAG,IAEH,GAAIu/E,EAAcx3I,OAAS63I,OAAiB5lI,EAAWkmI,EAAOzkI,QAAQtK,QAAQgvI,iBAAkB,CAACZ,EAAcx3I,QAC7G,MAAMw3I,EAAcx3I,MAGtB,OAAO,OAAS,CAAC,EAAGw3I,EAAe,CACjCJ,OAAQA,EACRiB,YAAab,EAAcJ,QAE/B,6BC3CWkB,EAA6B,SAAUzT,GAGhD,SAASyT,EAAcrlI,EAAQ7J,GAC7B,IAAI8H,EAYJ,OAVAA,EAAQ2zH,EAAcptI,KAAKU,OAASA,MAC9B8a,OAASA,EACf/B,EAAM9H,QAAUA,EAChB8H,EAAMqnI,aAAe,GACrBrnI,EAAMsnI,YAAc,KAEpBtnI,EAAMgmI,cAENhmI,EAAMk6H,WAAWhiI,GAEV8H,CACT,EAhBA,OAAeonI,EAAezT,GAkB9B,IAAIxiH,EAASi2H,EAAc/gJ,UA+e3B,OA7eA8qB,EAAO60H,YAAc,WACnB/+I,KAAK8L,OAAS9L,KAAK8L,OAAOlG,KAAK5F,MAC/BA,KAAK80I,QAAU90I,KAAK80I,QAAQlvI,KAAK5F,KACnC,EAEAkqB,EAAO2iH,YAAc,WACW,IAA1B7sI,KAAKie,UAAUne,SACjBE,KAAKsgJ,aAAahQ,YAAYtwI,MAE1BugJ,EAAmBvgJ,KAAKsgJ,aAActgJ,KAAKiR,UAC7CjR,KAAKwgJ,eAGPxgJ,KAAKygJ,eAET,EAEAv2H,EAAO8iH,cAAgB,WAChBhtI,KAAKie,UAAUne,QAClBE,KAAKq0I,SAET,EAEAnqH,EAAO8qH,uBAAyB,WAC9B,OAAO0L,EAAc1gJ,KAAKsgJ,aAActgJ,KAAKiR,QAASjR,KAAKiR,QAAQ0vI,mBACrE,EAEAz2H,EAAO2qH,yBAA2B,WAChC,OAAO6L,EAAc1gJ,KAAKsgJ,aAActgJ,KAAKiR,QAASjR,KAAKiR,QAAQ+xE,qBACrE,EAEA94D,EAAOmqH,QAAU,WACfr0I,KAAKie,UAAY,GACjBje,KAAK4gJ,cACL5gJ,KAAKsgJ,aAAa/P,eAAevwI,KACnC,EAEAkqB,EAAO+oH,WAAa,SAAoBhiI,EAASmuI,GAC/C,IAAIj/F,EAAcngD,KAAKiR,QACnB4vI,EAAY7gJ,KAAKsgJ,aAGrB,GAFAtgJ,KAAKiR,QAAUjR,KAAK8a,OAAOkgI,4BAA4B/pI,QAEnB,IAAzBjR,KAAKiR,QAAQsjI,SAA2D,kBAAzBv0I,KAAKiR,QAAQsjI,QACrE,MAAM,IAAInwI,MAAM,oCAIbpE,KAAKiR,QAAQg+H,WAChBjvI,KAAKiR,QAAQg+H,SAAW9uF,EAAY8uF,UAGtCjvI,KAAK8gJ,cACL,IAAI12H,EAAUpqB,KAAKktI,eAEf9iH,GAAW22H,EAAsB/gJ,KAAKsgJ,aAAcO,EAAW7gJ,KAAKiR,QAASkvC,IAC/EngD,KAAKwgJ,eAIPxgJ,KAAKg/I,aAAaI,IAEdh1H,GAAYpqB,KAAKsgJ,eAAiBO,GAAa7gJ,KAAKiR,QAAQsjI,UAAYp0F,EAAYo0F,SAAWv0I,KAAKiR,QAAQ6xE,YAAc3iC,EAAY2iC,WACxI9iF,KAAKghJ,qBAGP,IAAIC,EAAsBjhJ,KAAKkhJ,0BAE3B92H,GAAYpqB,KAAKsgJ,eAAiBO,GAAa7gJ,KAAKiR,QAAQsjI,UAAYp0F,EAAYo0F,SAAW0M,IAAwBjhJ,KAAKmhJ,wBAC9HnhJ,KAAKohJ,sBAAsBH,EAE/B,EAEA/2H,EAAOm3H,oBAAsB,SAA6BpwI,GACxD,IAAI4nI,EAAmB74I,KAAK8a,OAAOkgI,4BAA4B/pI,GAC3DkR,EAAQniB,KAAK8a,OAAO49H,gBAAgB/B,MAAM32I,KAAK8a,OAAQ+9H,GAC3D,OAAO74I,KAAKshJ,aAAan/H,EAAO02H,EAClC,EAEA3uH,EAAOwqH,iBAAmB,WACxB,OAAO10I,KAAKq/I,aACd,EAEAn1H,EAAOq3H,YAAc,SAAqBxgJ,EAAQ83I,GAChD,IAAI/tD,EAAS9qF,KAETwhJ,EAAgB,CAAC,EAEjBC,EAAY,SAAmBt9I,GAC5B2mF,EAAOs1D,aAAa74I,SAASpD,IAChC2mF,EAAOs1D,aAAaj+I,KAAKgC,EAE7B,EAiBA,OAfApF,OAAOgK,KAAKhI,GAAQuG,SAAQ,SAAUnD,GACpCpF,OAAOgE,eAAey+I,EAAer9I,EAAK,CACxCu/E,cAAc,EACdlpC,YAAY,EACZr3C,IAAK,WAEH,OADAs+I,EAAUt9I,GACHpD,EAAOoD,EAChB,GAEJ,KAEI00I,EAAiBoH,kBAAoBpH,EAAiB8G,WACxD8B,EAAU,SAGLD,CACT,EAEAt3H,EAAOw3H,cAAgB,SAAuBzwI,GAC5C,IAAIk9E,EAASnuF,KAEb,OAAO,IAAIM,SAAQ,SAAUC,EAASC,GACpC,IAAI8rD,EAAc6hC,EAAOx/B,WAAU,SAAU5tD,GACtCA,EAAO2yI,aACVpnF,IAEIvrD,EAAOy+I,UAAuB,MAAXvuI,OAAkB,EAASA,EAAQkpI,cACxD35I,EAAOO,EAAO8G,OAEdtH,EAAQQ,GAGd,GACF,GACF,EAEAmpB,EAAOy3H,gBAAkB,WACvB,OAAO3hJ,KAAKsgJ,YACd,EAEAp2H,EAAOpe,OAAS,WACd9L,KAAK8a,OAAO49H,gBAAgB5sI,OAAO9L,KAAKsgJ,aAC1C,EAEAp2H,EAAO4qH,QAAU,SAAiB7jI,GAChC,OAAOjR,KAAK0J,OAAM,OAAS,CAAC,EAAGuH,EAAS,CACtCq3C,KAAM,CACJylF,YAAwB,MAAX98H,OAAkB,EAASA,EAAQ88H,eAGtD,EAEA7jH,EAAO03H,gBAAkB,SAAyB3wI,GAChD,IAAIo+E,EAASrvF,KAET64I,EAAmB74I,KAAK8a,OAAOkgI,4BAA4B/pI,GAC3DkR,EAAQniB,KAAK8a,OAAO49H,gBAAgB/B,MAAM32I,KAAK8a,OAAQ+9H,GAC3D,OAAO12H,EAAMzY,QAAQzI,MAAK,WACxB,OAAOouF,EAAOiyD,aAAan/H,EAAO02H,EACpC,GACF,EAEA3uH,EAAOxgB,MAAQ,SAAeO,GAC5B,IAAI2vF,EAAS55F,KAEb,OAAOA,KAAKwgJ,aAAav2I,GAAchJ,MAAK,WAG1C,OAFA24F,EAAOolD,eAEAplD,EAAOylD,aAChB,GACF,EAEAn1H,EAAOs2H,aAAe,SAAsBv2I,GAE1CjK,KAAK8gJ,cAEL,IAAIhxF,EAAU9vD,KAAKsgJ,aAAa52I,MAAM1J,KAAKiR,QAAShH,GAMpD,OAJsB,MAAhBA,OAAuB,EAASA,EAAakwI,gBACjDrqF,EAAUA,EAAQgQ,MAAM,OAGnBhQ,CACT,EAEA5lC,EAAO82H,mBAAqB,WAC1B,IAAI5jD,EAASp9F,KAIb,GAFAA,KAAK6hJ,qBAED,OAAY7hJ,KAAKq/I,cAAc7K,UAAY,QAAex0I,KAAKiR,QAAQ6xE,WAA3E,CAIA,IAGI/4E,GAHO,QAAe/J,KAAKq/I,cAAcpL,cAAej0I,KAAKiR,QAAQ6xE,WAGpD,EACrB9iF,KAAK8hJ,eAAiBp+I,YAAW,WAC1B05F,EAAOiiD,cAAc7K,SACxBp3C,EAAO4hD,cAEX,GAAGj1I,EAVH,CAWF,EAEAmgB,EAAOg3H,uBAAyB,WAC9B,IAAIa,EAEJ,MAA+C,mBAAjC/hJ,KAAKiR,QAAQ+wI,gBAAiChiJ,KAAKiR,QAAQ+wI,gBAAgBhiJ,KAAKq/I,cAAc/0I,KAAMtK,KAAKsgJ,cAA0E,OAAzDyB,EAAwB/hJ,KAAKiR,QAAQ+wI,kBAA2BD,CAC1M,EAEA73H,EAAOk3H,sBAAwB,SAA+Ba,GAC5D,IAAIvkD,EAAS19F,KAEbA,KAAKkiJ,uBACLliJ,KAAKmhJ,uBAAyBc,GAE1B,OAAqC,IAAzBjiJ,KAAKiR,QAAQsjI,UAAsB,QAAev0I,KAAKmhJ,yBAA2D,IAAhCnhJ,KAAKmhJ,yBAIvGnhJ,KAAKmiJ,kBAAoB9sI,aAAY,YAC/BqoF,EAAOzsF,QAAQmxI,6BAA+B3V,EAAA,gBAChD/uC,EAAO8iD,cAEX,GAAGxgJ,KAAKmhJ,wBACV,EAEAj3H,EAAOu2H,aAAe,WACpBzgJ,KAAKghJ,qBACLhhJ,KAAKohJ,sBAAsBphJ,KAAKkhJ,yBAClC,EAEAh3H,EAAO02H,YAAc,WACnB5gJ,KAAK6hJ,oBACL7hJ,KAAKkiJ,sBACP,EAEAh4H,EAAO23H,kBAAoB,WACrB7hJ,KAAK8hJ,iBACP/6I,aAAa/G,KAAK8hJ,gBAClB9hJ,KAAK8hJ,oBAAiBhoI,EAE1B,EAEAoQ,EAAOg4H,qBAAuB,WACxBliJ,KAAKmiJ,oBACP5sI,cAAcvV,KAAKmiJ,mBACnBniJ,KAAKmiJ,uBAAoBroI,EAE7B,EAEAoQ,EAAOo3H,aAAe,SAAsBn/H,EAAOlR,GACjD,IAgBI3G,EAhBAu2I,EAAY7gJ,KAAKsgJ,aACjBngG,EAAcngD,KAAKiR,QACnBoxI,EAAariJ,KAAKq/I,cAClBiD,EAAkBtiJ,KAAKuiJ,mBACvBC,EAAoBxiJ,KAAKyiJ,qBACzBC,EAAcvgI,IAAU0+H,EACxB8B,EAAoBD,EAAcvgI,EAAMna,MAAQhI,KAAK4iJ,yBACrDC,EAAkBH,EAAc1iJ,KAAKq/I,cAAgBr/I,KAAK8iJ,oBAC1D96I,EAAQma,EAAMna,MACdisI,EAAgBjsI,EAAMisI,cACtBpsI,EAAQG,EAAMH,MACdwuI,EAAiBruI,EAAMquI,eACvB3C,EAAa1rI,EAAM0rI,WACnBvmF,EAASnlD,EAAMmlD,OACf41F,GAAiB,EACjBC,GAAoB,EAGxB,GAAI/xI,EAAQgyI,kBAAmB,CAC7B,IAAI74H,EAAUpqB,KAAKktI,eACfgW,GAAgB94H,GAAWm2H,EAAmBp+H,EAAOlR,GACrDkyI,EAAkB/4H,GAAW22H,EAAsB5+H,EAAO0+H,EAAW5vI,EAASkvC,IAE9E+iG,GAAgBC,KAClBzP,GAAa,EAERO,IACH9mF,EAAS,WAGf,CAGA,GAAIl8C,EAAQmyI,mBAAqBp7I,EAAMmuI,kBAAuC,MAAnB0M,OAA0B,EAASA,EAAgBtD,YAAyB,UAAXpyF,EAC1H7iD,EAAOu4I,EAAgBv4I,KACvB2pI,EAAgB4O,EAAgB5O,cAChC9mF,EAAS01F,EAAgB11F,OACzB41F,GAAiB,OAEd,GAAI9xI,EAAQmiF,aAAgC,IAAfprF,EAAMsC,KAEpC,GAAI+3I,GAAcr6I,EAAMsC,QAA6B,MAAnBg4I,OAA0B,EAASA,EAAgBh4I,OAAS2G,EAAQmiF,SAAWpzF,KAAKqjJ,SACpH/4I,EAAOtK,KAAKsjJ,kBAEZ,IACEtjJ,KAAKqjJ,SAAWpyI,EAAQmiF,OACxB9oF,EAAO2G,EAAQmiF,OAAOprF,EAAMsC,OAEM,IAA9B2G,EAAQ+iI,oBACV1pI,GAAO,QAA+B,MAAd+3I,OAAqB,EAASA,EAAW/3I,KAAMA,IAGzEtK,KAAKsjJ,aAAeh5I,EACpBtK,KAAKqgJ,YAAc,IAIrB,CAHE,MAAOA,IACP,SAAYx4I,MAAMw4I,GAClBrgJ,KAAKqgJ,YAAcA,CACrB,MAIA/1I,EAAOtC,EAAMsC,KAInB,QAAuC,IAA5B2G,EAAQsyI,sBAAmD,IAATj5I,IAAoC,YAAX6iD,GAAmC,SAAXA,GAAoB,CAChI,IAAIo2F,EAEJ,IAAmB,MAAdlB,OAAqB,EAASA,EAAWW,oBAAsB/xI,EAAQsyI,mBAA0C,MAArBf,OAA4B,EAASA,EAAkBe,iBACtJA,EAAkBlB,EAAW/3I,UAI7B,GAFAi5I,EAAqD,mBAA5BtyI,EAAQsyI,gBAAiCtyI,EAAQsyI,kBAAoBtyI,EAAQsyI,gBAElGtyI,EAAQmiF,aAAqC,IAApBmwD,EAC3B,IACEA,EAAkBtyI,EAAQmiF,OAAOmwD,IAEC,IAA9BtyI,EAAQ+iI,oBACVuP,GAAkB,QAA+B,MAAdlB,OAAqB,EAASA,EAAW/3I,KAAMi5I,IAGpFvjJ,KAAKqgJ,YAAc,IAIrB,CAHE,MAAOA,IACP,SAAYx4I,MAAMw4I,GAClBrgJ,KAAKqgJ,YAAcA,CACrB,MAI2B,IAApBkD,IACTp2F,EAAS,UACT7iD,EAAOi5I,EACPP,GAAoB,EAExB,CAiCA,OA/BIhjJ,KAAKqgJ,cACPx4I,EAAQ7H,KAAKqgJ,YACb/1I,EAAOtK,KAAKsjJ,aACZjN,EAAiB7wI,KAAKC,MACtB0nD,EAAS,SAGE,CACXA,OAAQA,EACRl1C,UAAsB,YAAXk1C,EACXoyF,UAAsB,YAAXpyF,EACXqyF,QAAoB,UAAXryF,EACTsyF,OAAmB,SAAXtyF,EACR7iD,KAAMA,EACN2pI,cAAeA,EACfpsI,MAAOA,EACPwuI,eAAgBA,EAChB7E,aAAcxpI,EAAMsuI,kBACpBF,iBAAkBpuI,EAAMouI,iBACxBoN,UAAWx7I,EAAMmuI,gBAAkB,GAAKnuI,EAAMouI,iBAAmB,EACjEqN,oBAAqBz7I,EAAMmuI,gBAAkBwM,EAAkBxM,iBAAmBnuI,EAAMouI,iBAAmBuM,EAAkBvM,iBAC7H1C,WAAYA,EACZgQ,aAAchQ,GAAyB,YAAXvmF,EAC5Bw2F,eAA2B,UAAXx2F,GAA8C,IAAxBnlD,EAAMisI,cAC5C+O,kBAAmBA,EACnBD,eAAgBA,EAChBa,eAA2B,UAAXz2F,GAA8C,IAAxBnlD,EAAMisI,cAC5CO,QAASA,EAAQryH,EAAOlR,GACxB6jI,QAAS90I,KAAK80I,QACdhpI,OAAQ9L,KAAK8L,OAGjB,EAEAoe,EAAO25H,sBAAwB,SAA+B9iJ,EAAQshJ,GACpE,IAAKA,EACH,OAAO,EAGT,IAAIp4B,EAAgBjqH,KAAKiR,QACrB6yI,EAAsB75B,EAAc65B,oBACpCC,EAAgC95B,EAAc85B,8BAElD,IAAKD,IAAwBC,EAC3B,OAAO,EAGT,GAA4B,YAAxBD,IAAsC9jJ,KAAKogJ,aAAatgJ,OAC1D,OAAO,EAGT,IAAIkkJ,EAAwC,YAAxBF,EAAoC9jJ,KAAKogJ,aAAe0D,EAC5E,OAAO/kJ,OAAOgK,KAAKhI,GAAQggC,MAAK,SAAU58B,GACxC,IAAI8/I,EAAW9/I,EACX+/I,EAAUnjJ,EAAOkjJ,KAAc5B,EAAW4B,GAC1CE,EAA8B,MAAjBH,OAAwB,EAASA,EAAcjjH,MAAK,SAAU70B,GAC7E,OAAOA,IAAM/H,CACf,IACIigJ,EAA8C,MAAjCL,OAAwC,EAASA,EAA8BhjH,MAAK,SAAU70B,GAC7G,OAAOA,IAAM/H,CACf,IACA,OAAO+/I,IAAYE,KAAgBJ,GAAiBG,EACtD,GACF,EAEAj6H,EAAO80H,aAAe,SAAsBI,GAC1C,IAAIiD,EAAariJ,KAAKq/I,cAKtB,GAJAr/I,KAAKq/I,cAAgBr/I,KAAKshJ,aAAathJ,KAAKsgJ,aAActgJ,KAAKiR,SAC/DjR,KAAKuiJ,mBAAqBviJ,KAAKsgJ,aAAat4I,MAC5ChI,KAAKyiJ,qBAAuBziJ,KAAKiR,UAE7B,QAAoBjR,KAAKq/I,cAAegD,GAA5C,CAKA,IAAIgC,EAAuB,CACzBl4I,OAAO,IAG0D,KAA7C,MAAjBizI,OAAwB,EAASA,EAAcnhI,YAAwBje,KAAK6jJ,sBAAsB7jJ,KAAKq/I,cAAegD,KACzHgC,EAAqBpmI,WAAY,GAGnCje,KAAK2xI,QAAO,OAAS,CAAC,EAAG0S,EAAsBjF,GAX/C,CAYF,EAEAl1H,EAAO42H,YAAc,WACnB,IAAI3+H,EAAQniB,KAAK8a,OAAO49H,gBAAgB/B,MAAM32I,KAAK8a,OAAQ9a,KAAKiR,SAEhE,GAAIkR,IAAUniB,KAAKsgJ,aAAnB,CAIA,IAAIO,EAAY7gJ,KAAKsgJ,aACrBtgJ,KAAKsgJ,aAAen+H,EACpBniB,KAAK4iJ,yBAA2BzgI,EAAMna,MACtChI,KAAK8iJ,oBAAsB9iJ,KAAKq/I,cAE5Br/I,KAAKktI,iBACM,MAAb2T,GAA6BA,EAAUtQ,eAAevwI,MACtDmiB,EAAMmuH,YAAYtwI,MATpB,CAWF,EAEAkqB,EAAO6rH,cAAgB,SAAuBl8H,GAC5C,IAAIulI,EAAgB,CAAC,EAED,YAAhBvlI,EAAOpK,KACT2vI,EAAcrO,WAAY,EACD,UAAhBl3H,EAAOpK,OAAqB,QAAiBoK,EAAOhS,SAC7Du3I,EAAcnO,SAAU,GAG1BjxI,KAAKg/I,aAAaI,GAEdp/I,KAAKktI,gBACPltI,KAAKygJ,cAET,EAEAv2H,EAAOynH,OAAS,SAAgByN,GAC9B,IAAIvhD,EAAS79F,KAEbsyI,EAAA,SAAoB,WAEd8M,EAAcrO,WACY,MAA5BlzC,EAAO5sF,QAAQ8/H,WAA6BlzC,EAAO5sF,QAAQ8/H,UAAUlzC,EAAOwhD,cAAc/0I,MAC9D,MAA5BuzF,EAAO5sF,QAAQ+/H,WAA6BnzC,EAAO5sF,QAAQ+/H,UAAUnzC,EAAOwhD,cAAc/0I,KAAM,OACvF80I,EAAcnO,UACG,MAA1BpzC,EAAO5sF,QAAQggI,SAA2BpzC,EAAO5sF,QAAQggI,QAAQpzC,EAAOwhD,cAAcx3I,OAC1D,MAA5Bg2F,EAAO5sF,QAAQ+/H,WAA6BnzC,EAAO5sF,QAAQ+/H,eAAUl3H,EAAW+jF,EAAOwhD,cAAcx3I,QAInGu3I,EAAcnhI,WAChB4/E,EAAO5/E,UAAU3W,SAAQ,SAAUgX,GACjCA,EAASu/E,EAAOwhD,cAClB,IAIED,EAAcjzI,OAChB0xF,EAAO/iF,OAAO49H,gBAAgB/G,OAAO,CACnCxvH,MAAO07E,EAAOyiD,aACd7wI,KAAM,0BAGZ,GACF,EAEO0wI,CACT,CAngBwC,CAmgBtC,KAMF,SAASI,EAAmBp+H,EAAOlR,GACjC,OALF,SAA2BkR,EAAOlR,GAChC,SAA2B,IAApBA,EAAQsjI,SAAsBpyH,EAAMna,MAAMisI,eAA0C,UAAvB9xH,EAAMna,MAAMmlD,SAA+C,IAAzBl8C,EAAQqzI,aAChH,CAGSC,CAAkBpiI,EAAOlR,IAAYkR,EAAMna,MAAMisI,cAAgB,GAAKyM,EAAcv+H,EAAOlR,EAASA,EAAQuzI,eACrH,CAEA,SAAS9D,EAAcv+H,EAAOlR,EAASwzI,GACrC,IAAwB,IAApBxzI,EAAQsjI,QAAmB,CAC7B,IAAI7zI,EAAyB,mBAAV+jJ,EAAuBA,EAAMtiI,GAASsiI,EACzD,MAAiB,WAAV/jJ,IAAgC,IAAVA,GAAmB8zI,EAAQryH,EAAOlR,EACjE,CAEA,OAAO,CACT,CAEA,SAAS8vI,EAAsB5+H,EAAO0+H,EAAW5vI,EAASkvC,GACxD,OAA2B,IAApBlvC,EAAQsjI,UAAsBpyH,IAAU0+H,IAAqC,IAAxB1gG,EAAYo0F,YAAwBtjI,EAAQ0uI,UAAmC,UAAvBx9H,EAAMna,MAAMmlD,SAAuBqnF,EAAQryH,EAAOlR,EACxK,CAEA,SAASujI,EAAQryH,EAAOlR,GACtB,OAAOkR,EAAMwyH,cAAc1jI,EAAQ6xE,UACrC,iBChiBW4hE,EAAqC,SAAUC,GAOxD,SAASD,EAAsB5pI,EAAQ7J,GACrC,OAAO0zI,EAAerlJ,KAAKU,KAAM8a,EAAQ7J,IAAYjR,IACvD,EARA,OAAe0kJ,EAAuBC,GAUtC,IAAIz6H,EAASw6H,EAAsBtlJ,UAqEnC,OAnEA8qB,EAAO60H,YAAc,WACnB4F,EAAevlJ,UAAU2/I,YAAYz/I,KAAKU,MAE1CA,KAAK4kJ,cAAgB5kJ,KAAK4kJ,cAAch/I,KAAK5F,MAC7CA,KAAK6kJ,kBAAoB7kJ,KAAK6kJ,kBAAkBj/I,KAAK5F,KACvD,EAEAkqB,EAAO+oH,WAAa,SAAoBhiI,EAASmuI,GAC/CuF,EAAevlJ,UAAU6zI,WAAW3zI,KAAKU,MAAM,OAAS,CAAC,EAAGiR,EAAS,CACnE2kI,UAAU,EAAAtI,EAAA,QACR8R,EACN,EAEAl1H,EAAOm3H,oBAAsB,SAA6BpwI,GAExD,OADAA,EAAQ2kI,UAAW,EAAAtI,EAAA,MACZqX,EAAevlJ,UAAUiiJ,oBAAoB/hJ,KAAKU,KAAMiR,EACjE,EAEAiZ,EAAO06H,cAAgB,SAAuB3zI,GAC5C,IAAI6zI,EAEJ,OAAO9kJ,KAAK0J,MAAM,CAEhB8rI,cAA6F,OAA7EsP,EAAmC,MAAX7zI,OAAkB,EAASA,EAAQukI,gBAAyBsP,EACpG3K,aAAyB,MAAXlpI,OAAkB,EAASA,EAAQkpI,aACjD7xF,KAAM,CACJ0lF,UAAW,CACT50G,UAAW,UACX60G,UAAsB,MAAXh9H,OAAkB,EAASA,EAAQg9H,aAItD,EAEA/jH,EAAO26H,kBAAoB,SAA2B5zI,GACpD,IAAI8zI,EAEJ,OAAO/kJ,KAAK0J,MAAM,CAEhB8rI,cAA8F,OAA9EuP,EAAoC,MAAX9zI,OAAkB,EAASA,EAAQukI,gBAAyBuP,EACrG5K,aAAyB,MAAXlpI,OAAkB,EAASA,EAAQkpI,aACjD7xF,KAAM,CACJ0lF,UAAW,CACT50G,UAAW,WACX60G,UAAsB,MAAXh9H,OAAkB,EAASA,EAAQg9H,aAItD,EAEA/jH,EAAOo3H,aAAe,SAAsBn/H,EAAOlR,GACjD,IAAI+zI,EAAaC,EAAcC,EAAkBC,EAAuBC,EAAmBC,EAEvFr9I,EAAQma,EAAMna,MAEdjH,EAAS4jJ,EAAevlJ,UAAUkiJ,aAAahiJ,KAAKU,KAAMmiB,EAAOlR,GAErE,OAAO,OAAS,CAAC,EAAGlQ,EAAQ,CAC1B6jJ,cAAe5kJ,KAAK4kJ,cACpBC,kBAAmB7kJ,KAAK6kJ,kBACxBlV,aAAa,QAAY1+H,EAAuC,OAA7B+zI,EAAch9I,EAAMsC,WAAgB,EAAS06I,EAAY3W,OAC5FwB,iBAAiB,QAAgB5+H,EAAwC,OAA9Bg0I,EAAej9I,EAAMsC,WAAgB,EAAS26I,EAAa5W,OACtGH,mBAAoBlmI,EAAM0rI,YAAoL,aAA7H,OAAvCwR,EAAmBl9I,EAAM8tI,YAAsF,OAAvDqP,EAAwBD,EAAiBlX,gBAAnD,EAAiFmX,EAAsB/rH,WAC/L+0G,uBAAwBnmI,EAAM0rI,YAAsL,cAA9H,OAAxC0R,EAAoBp9I,EAAM8tI,YAAuF,OAAxDuP,EAAwBD,EAAkBpX,gBAApD,EAAkFqX,EAAsBjsH,YAEzM,EAEOsrH,CACT,CAjFgD,CAiF9CvE,GCnFF,SAASmF,IACP,IAAIC,GAAW,EACf,MAAO,CACLC,WAAY,WACVD,GAAW,CACb,EACAz2D,MAAO,WACLy2D,GAAW,CACb,EACAE,QAAS,WACP,OAAOF,CACT,EAEJ,CAEA,IAAIG,EAA8C,gBAAoBJ,KCZ/D,SAASK,EAAa10I,EAAS20I,GACpC,IAAI9F,EAAa,UAAa,GAG1BC,EADkB,WAAe,GACH,GAE9BpB,EAAcD,IACdmH,EDQG,aAAiBH,GCPpB7M,EAAmB8F,EAAY3D,4BAA4B/pI,GAE/D4nI,EAAiBoK,mBAAoB,EAEjCpK,EAAiB5H,UACnB4H,EAAiB5H,QAAUqB,EAAA,aAAyBuG,EAAiB5H,UAGnE4H,EAAiB9H,YACnB8H,EAAiB9H,UAAYuB,EAAA,aAAyBuG,EAAiB9H,YAGrE8H,EAAiB7H,YACnB6H,EAAiB7H,UAAYsB,EAAA,aAAyBuG,EAAiB7H,YAGrE6H,EAAiB8G,WAGuB,iBAA/B9G,EAAiB/1D,YAC1B+1D,EAAiB/1D,UAAY,KAKI,IAA/B+1D,EAAiBxF,YACnBwF,EAAiBxF,UAAY,KAI7BwF,EAAiB8G,UAAY9G,EAAiBoH,oBAE3C4F,EAAmBJ,YACtB5M,EAAiByL,cAAe,IAIpC,IAGI9+D,EAHmB,YAAe,WACpC,OAAO,IAAIogE,EAASjH,EAAa9F,EACnC,IACgC,GAE5B93I,EAASykF,EAAS67D,oBAAoBxI,GA2B1C,GA1BA,aAAgB,WACdiH,EAAWvkI,SAAU,EACrBsqI,EAAmBL,aACnB,IAAIl5F,EAAck5B,EAAS72B,UAAU2jF,EAAA,cAAyB,WACxDwN,EAAWvkI,SACbwkI,GAAY,SAAU7zI,GACpB,OAAOA,EAAI,CACb,GAEJ,KAIA,OADAs5E,EAASw5D,eACF,WACLc,EAAWvkI,SAAU,EACrB+wC,GACF,CACF,GAAG,CAACu5F,EAAoBrgE,IACxB,aAAgB,WAGdA,EAASytD,WAAW4F,EAAkB,CACpC56H,WAAW,GAEf,GAAG,CAAC46H,EAAkBrzD,IAElBqzD,EAAiB8G,UAAY5+I,EAAOkX,UACtC,MAAMutE,EAASo8D,gBAAgB/I,GAAkB53I,MAAK,SAAU0d,GAC9D,IAAIrU,EAAOqU,EAAKrU,KACc,MAA9BuuI,EAAiB9H,WAA6B8H,EAAiB9H,UAAUzmI,GAC3C,MAA9BuuI,EAAiB7H,WAA6B6H,EAAiB7H,UAAU1mI,EAAM,KACjF,IAAGw1D,OAAM,SAAUj4D,GACjBg+I,EAAmBL,aACS,MAA5B3M,EAAiB5H,SAA2B4H,EAAiB5H,QAAQppI,GACvC,MAA9BgxI,EAAiB7H,WAA6B6H,EAAiB7H,eAAUl3H,EAAWjS,EACtF,IAIF,GAAI9G,EAAOy+I,UAAYqG,EAAmBJ,YAAc1kJ,EAAO2yI,YAAcgM,EAAiB7G,EAAiB8G,SAAU9G,EAAiBoH,iBAAkB,CAACl/I,EAAO8G,MAAO29E,EAASm8D,oBAClL,MAAM5gJ,EAAO8G,MAQf,MAJ6C,YAAzCgxI,EAAiBiL,sBACnB/iJ,EAASykF,EAAS+7D,YAAYxgJ,EAAQ83I,IAGjC93I,CACT,CCrGO,SAAS+kJ,EAAiB9O,EAAMC,EAAMkC,GAE3C,OAAOwM,GADO,QAAe3O,EAAMC,EAAMkC,GACZuL,EAC/B,uCCHA,IAF0BqB,EAEtBzrG,EAAQ,EAAQ,QAChB0rG,GAHsBD,EAGWzrG,IAHwB,iBAAPyrG,GAAoB,YAAaA,EAAMA,EAAY,QAAIA,EAK7G,SAASE,EAAgBhmI,EAAK9b,EAAKzD,GAYjC,OAXIyD,KAAO8b,EACTlhB,OAAOgE,eAAekd,EAAK9b,EAAK,CAC9BzD,MAAOA,EACP85C,YAAY,EACZkpC,cAAc,EACdD,UAAU,IAGZxjE,EAAI9b,GAAOzD,EAGNuf,CACT,CAQA,IAAIpC,IAAiC,oBAAXnb,SAA0BA,OAAO0L,WAAY1L,OAAO0L,SAAS6I,eAgGvFq0C,EAAOxoD,QA/FP,SAAwBojJ,EAAoBC,EAA2B/e,GACrE,GAAkC,mBAAvB8e,EACT,MAAM,IAAI9hJ,MAAM,iDAGlB,GAAyC,mBAA9B+hJ,EACT,MAAM,IAAI/hJ,MAAM,wDAGlB,QAAgC,IAArBgjI,GAAgE,mBAArBA,EACpD,MAAM,IAAIhjI,MAAM,mEAOlB,OAAO,SAAcgiJ,GACnB,GAAgC,mBAArBA,EACT,MAAM,IAAIhiJ,MAAM,sDAGlB,IACI4D,EADAq+I,EAAmB,GAGvB,SAASC,IACPt+I,EAAQk+I,EAAmBG,EAAiBh9I,KAAI,SAAUxF,GACxD,OAAOA,EAASkZ,KAClB,KAEIwpI,EAAW1oI,UACbsoI,EAA0Bn+I,GACjBo/H,IACTp/H,EAAQo/H,EAAiBp/H,GAE7B,CAEA,IAAIu+I,EAEJ,SAAUC,GA9Cd,IAAwBjjE,EAAUC,EAiD5B,SAAS+iE,IACP,OAAOC,EAAezmJ,MAAMC,KAAMH,YAAcG,IAClD,CAnD4BwjF,EA+CDgjE,GA/CTjjE,EA+CHgjE,GA9CVnnJ,UAAYL,OAAOqO,OAAOo2E,EAAWpkF,WAC9CmkF,EAASnkF,UAAUuI,YAAc47E,EACjCA,EAAStkF,UAAYukF,EAoDjB+iE,EAAWvd,KAAO,WAChB,OAAOhhI,CACT,EAEAu+I,EAAWtd,OAAS,WAClB,GAAIsd,EAAW1oI,UACb,MAAM,IAAIzZ,MAAM,oFAGlB,IAAIqiJ,EAAgBz+I,EAGpB,OAFAA,OAAQ8R,EACRusI,EAAmB,GACZI,CACT,EAEA,IAAIv8H,EAASq8H,EAAWnnJ,UAqBxB,OAnBA8qB,EAAOw8H,0BAA4B,WACjCL,EAAiBlkJ,KAAKnC,MACtBsmJ,GACF,EAEAp8H,EAAO0vC,mBAAqB,WAC1B0sF,GACF,EAEAp8H,EAAOI,qBAAuB,WAC5B,IAAIhL,EAAQ+mI,EAAiBhkJ,QAAQrC,MACrCqmJ,EAAiBtjH,OAAOzjB,EAAO,GAC/BgnI,GACF,EAEAp8H,EAAOS,OAAS,WACd,OAAOq7H,EAAe/uI,cAAcmvI,EAAkBpmJ,KAAK+c,MAC7D,EAEOwpI,CACT,CA9CA,CA8CEjsG,EAAMqsG,eAMR,OAJAV,EAAgBM,EAAY,cAAe,cA1E7C,SAAwBH,GACtB,OAAOA,EAAiBzvG,aAAeyvG,EAAiB3+I,MAAQ,WAClE,CAwE6Dm/I,CAAeR,GAAoB,KAE9FH,EAAgBM,EAAY,YAAa1oI,GAElC0oI,CACT,CACF,4HC1HA,GACY,cCODM,EAAY,YACZC,EAAS,SACTC,EAAW,WACXC,EAAU,UACVC,EAAU,UA6FjBC,EAA0B,SAAUp9H,GAGtC,SAASo9H,EAAWnqI,EAAOpC,GACzB,IAAI5B,EAEJA,EAAQ+Q,EAAiBxqB,KAAKU,KAAM+c,EAAOpC,IAAY3a,KACvD,IAGImnJ,EADA38H,EAFc7P,MAEuBqP,WAAajN,EAAM4M,MAAQ5M,EAAMyN,OAuB1E,OArBAzR,EAAMquI,aAAe,KAEjBrqI,EAAMoH,GACJqG,GACF28H,EAAgBL,EAChB/tI,EAAMquI,aAAeL,GAErBI,EAAgBH,EAIhBG,EADEpqI,EAAMsqI,eAAiBtqI,EAAMuqI,aACfT,EAEAC,EAIpB/tI,EAAM/Q,MAAQ,CACZmlD,OAAQg6F,GAEVpuI,EAAMwuI,aAAe,KACdxuI,CACT,EAhCA,OAAemuI,EAAYp9H,GAkC3Bo9H,EAAW38H,yBAA2B,SAAkC5L,EAAMwrD,GAG5E,OAFaxrD,EAAKwF,IAEJgmD,EAAUhd,SAAW05F,EAC1B,CACL15F,OAAQ25F,GAIL,IACT,EAkBA,IAAI58H,EAASg9H,EAAW9nJ,UA0OxB,OAxOA8qB,EAAOC,kBAAoB,WACzBnqB,KAAKwnJ,cAAa,EAAMxnJ,KAAKonJ,aAC/B,EAEAl9H,EAAO0vC,mBAAqB,SAA4BV,GACtD,IAAIuuF,EAAa,KAEjB,GAAIvuF,IAAcl5D,KAAK+c,MAAO,CAC5B,IAAIowC,EAASntD,KAAKgI,MAAMmlD,OAEpBntD,KAAK+c,MAAMoH,GACTgpC,IAAW45F,GAAY55F,IAAW65F,IACpCS,EAAaV,GAGX55F,IAAW45F,GAAY55F,IAAW65F,IACpCS,EAAaR,EAGnB,CAEAjnJ,KAAKwnJ,cAAa,EAAOC,EAC3B,EAEAv9H,EAAOI,qBAAuB,WAC5BtqB,KAAK0nJ,oBACP,EAEAx9H,EAAOy9H,YAAc,WACnB,IACIj+H,EAAMC,EAAOa,EADbzgB,EAAU/J,KAAK+c,MAAMhT,QAWzB,OATA2f,EAAOC,EAAQa,EAASzgB,EAET,MAAXA,GAAsC,iBAAZA,IAC5B2f,EAAO3f,EAAQ2f,KACfC,EAAQ5f,EAAQ4f,MAEhBa,OAA4B1Q,IAAnB/P,EAAQygB,OAAuBzgB,EAAQygB,OAASb,GAGpD,CACLD,KAAMA,EACNC,MAAOA,EACPa,OAAQA,EAEZ,EAEAN,EAAOs9H,aAAe,SAAsBI,EAAUH,QACnC,IAAbG,IACFA,GAAW,GAGM,OAAfH,GAEFznJ,KAAK0nJ,qBAEDD,IAAeV,EACjB/mJ,KAAK6nJ,aAAaD,GAElB5nJ,KAAK8nJ,eAEE9nJ,KAAK+c,MAAMsqI,eAAiBrnJ,KAAKgI,MAAMmlD,SAAW25F,GAC3D9mJ,KAAKqqB,SAAS,CACZ8iC,OAAQ05F,GAGd,EAEA38H,EAAO29H,aAAe,SAAsBD,GAC1C,IAAI98D,EAAS9qF,KAET2pB,EAAQ3pB,KAAK+c,MAAM4M,MACnBo+H,EAAY/nJ,KAAK2a,QAAU3a,KAAK2a,QAAQqP,WAAa49H,EAErDjxH,EAAQ32B,KAAK+c,MAAMsX,QAAU,CAAC0zH,GAAa,CAAC,cAAqB/nJ,MAAO+nJ,GACxEC,EAAYrxH,EAAM,GAClBD,EAAiBC,EAAM,GAEvBsxH,EAAWjoJ,KAAK2nJ,cAChBO,EAAeH,EAAYE,EAASz9H,OAASy9H,EAASt+H,OAGrDi+H,IAAaj+H,GAAS9N,EACzB7b,KAAKmoJ,aAAa,CAChBh7F,OAAQ65F,IACP,WACDl8D,EAAO/tE,MAAM8Y,UAAUmyH,EACzB,KAIFhoJ,KAAK+c,MAAM6Y,QAAQoyH,EAAWtxH,GAC9B12B,KAAKmoJ,aAAa,CAChBh7F,OAAQ45F,IACP,WACDj8D,EAAO/tE,MAAM+Y,WAAWkyH,EAAWtxH,GAEnCo0D,EAAOs9D,gBAAgBF,GAAc,WACnCp9D,EAAOq9D,aAAa,CAClBh7F,OAAQ65F,IACP,WACDl8D,EAAO/tE,MAAM8Y,UAAUmyH,EAAWtxH,EACpC,GACF,GACF,IACF,EAEAxM,EAAO49H,YAAc,WACnB,IAAI35D,EAASnuF,KAET0pB,EAAO1pB,KAAK+c,MAAM2M,KAClBu+H,EAAWjoJ,KAAK2nJ,cAChBK,EAAYhoJ,KAAK+c,MAAMsX,aAAUva,EAAY,cAAqB9Z,MAEjE0pB,IAAQ7N,GASb7b,KAAK+c,MAAMgZ,OAAOiyH,GAClBhoJ,KAAKmoJ,aAAa,CAChBh7F,OAAQ85F,IACP,WACD94D,EAAOpxE,MAAMiZ,UAAUgyH,GAEvB75D,EAAOi6D,gBAAgBH,EAASv+H,MAAM,WACpCykE,EAAOg6D,aAAa,CAClBh7F,OAAQ25F,IACP,WACD34D,EAAOpxE,MAAM2L,SAASs/H,EACxB,GACF,GACF,KArBEhoJ,KAAKmoJ,aAAa,CAChBh7F,OAAQ25F,IACP,WACD34D,EAAOpxE,MAAM2L,SAASs/H,EACxB,GAkBJ,EAEA99H,EAAOw9H,mBAAqB,WACA,OAAtB1nJ,KAAKunJ,eACPvnJ,KAAKunJ,aAAa74F,SAClB1uD,KAAKunJ,aAAe,KAExB,EAEAr9H,EAAOi+H,aAAe,SAAsB99E,EAAW7zC,GAIrDA,EAAWx2B,KAAKqoJ,gBAAgB7xH,GAChCx2B,KAAKqqB,SAASggD,EAAW7zC,EAC3B,EAEAtM,EAAOm+H,gBAAkB,SAAyB7xH,GAChD,IAAI64D,EAASrvF,KAETu8B,GAAS,EAcb,OAZAv8B,KAAKunJ,aAAe,SAAU3jI,GACxB2Y,IACFA,GAAS,EACT8yD,EAAOk4D,aAAe,KACtB/wH,EAAS5S,GAEb,EAEA5jB,KAAKunJ,aAAa74F,OAAS,WACzBnyB,GAAS,CACX,EAEOv8B,KAAKunJ,YACd,EAEAr9H,EAAOk+H,gBAAkB,SAAyBr+I,EAAS0yD,GACzDz8D,KAAKqoJ,gBAAgB5rF,GACrB,IAAIhyC,EAAOzqB,KAAK+c,MAAMsX,QAAUr0B,KAAK+c,MAAMsX,QAAQ9Y,QAAU,cAAqBvb,MAC9EsoJ,EAA0C,MAAXv+I,IAAoB/J,KAAK+c,MAAMua,eAElE,GAAK7M,IAAQ69H,EAAb,CAKA,GAAItoJ,KAAK+c,MAAMua,eAAgB,CAC7B,IAAIqwB,EAAQ3nD,KAAK+c,MAAMsX,QAAU,CAACr0B,KAAKunJ,cAAgB,CAAC98H,EAAMzqB,KAAKunJ,cAC/DS,EAAYrgG,EAAM,GAClB4gG,EAAoB5gG,EAAM,GAE9B3nD,KAAK+c,MAAMua,eAAe0wH,EAAWO,EACvC,CAEe,MAAXx+I,GACFrG,WAAW1D,KAAKunJ,aAAcx9I,EAXhC,MAFErG,WAAW1D,KAAKunJ,aAAc,EAelC,EAEAr9H,EAAOS,OAAS,WACd,IAAIwiC,EAASntD,KAAKgI,MAAMmlD,OAExB,GAAIA,IAAW05F,EACb,OAAO,KAGT,IAAIj8H,EAAc5qB,KAAK+c,MACnBxC,EAAWqQ,EAAYrQ,SAgBvBkd,GAfM7M,EAAYzG,GACFyG,EAAY08H,aACX18H,EAAYy8H,cACnBz8H,EAAYJ,OACbI,EAAYjB,MACbiB,EAAYlB,KACTkB,EAAY7gB,QACL6gB,EAAY0M,eACnB1M,EAAYgL,QACThL,EAAYkL,WACblL,EAAYiL,UACfjL,EAAYmL,OACTnL,EAAYoL,UACbpL,EAAYlC,SACbkC,EAAYyJ,SACV,OAA8BzJ,EAAa,CAAC,WAAY,KAAM,eAAgB,gBAAiB,SAAU,QAAS,OAAQ,UAAW,iBAAkB,UAAW,aAAc,YAAa,SAAU,YAAa,WAAY,aAEjP,OAGE,gBAAoBE,EAAA,WAAiC,CACnDpqB,MAAO,MACc,mBAAb6Z,EAA0BA,EAAS4yC,EAAQ11B,GAAc,eAAmB,gBAAoBld,GAAWkd,GAEzH,EAEOyvH,CACT,CA1S8B,CA0S5B,aA+LF,SAASzsD,IAAQ,CA7LjBysD,EAAWzkC,YAAc33F,EAAA,EACzBo8H,EAAWn8H,UA0LP,CAAC,EAILm8H,EAAWl8H,aAAe,CACxB7G,IAAI,EACJmjI,cAAc,EACdD,eAAe,EACf78H,QAAQ,EACRb,OAAO,EACPD,MAAM,EACNkM,QAAS6kE,EACT3kE,WAAY2kE,EACZ5kE,UAAW4kE,EACX1kE,OAAQ0kE,EACRzkE,UAAWykE,EACX/xE,SAAU+xE,GAEZysD,EAAWL,UAAYA,EACvBK,EAAWJ,OAASA,EACpBI,EAAWH,SAAWA,EACtBG,EAAWF,QAAUA,EACrBE,EAAWD,QAAUA,EACrB,6DCtmBA,IAAe,gBAAoB,2FC8B5B,SAASuB,EAAW9nJ,EAAOuQ,QACd,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAAIw3I,EAaR,SAA4B/nJ,GAExB,GAAIA,GAAsB,MAAbA,EAAM,IAA2B,MAAbA,EAAM,GACnC,OAAOA,EAAM2e,OAAO,GAExB,OAAO3e,CACX,CAnBqBgoJ,CAAmBhoJ,GACpC,GAXG,SAAyBA,EAAOioJ,GAMnC,YAL0B,IAAfA,IAEPA,GACKjoJ,GAAuB,MAAbA,EAAM,IAA2B,MAAbA,EAAM,IAA2B,MAAbA,EAAM,KAEzDioJ,CACZ,CAIQC,CAAgBH,EAAYx3I,EAAQ03I,YACpC,IACI,OAAOviJ,KAAKM,MAAM+hJ,EAItB,CAFA,MAAO5nJ,GAEP,CAIJ,OAAOH,CACX,CC7CA,IAAInB,EAAsC,WAStC,OARAA,EAAWR,OAAOS,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIR,KADTO,EAAIG,UAAUF,GACOZ,OAAOK,UAAUC,eAAeC,KAAKI,EAAGP,KACzDM,EAAEN,GAAKO,EAAEP,IAEjB,OAAOM,CACX,EACOF,EAASQ,MAAMC,KAAMH,UAChC,ECTA,EDY6B,WACzB,SAAS6/H,EAAQj0E,EAASx6C,GACtB,IAAI8H,EAAQ/Y,KACZA,KAAK6oJ,gBAAkB,GACvB7oJ,KAAK8oJ,qBAAsB,EAC3B9oJ,KAAKyrD,QDNN,SAAsBA,EAASx6C,GAClC,MAAuB,iBAAZw6C,EACAp9C,EAAA,EAAao9C,EAASx6C,GAEL,iBAAZw6C,GAAoC,OAAZA,EAC7BA,EAGA,CAAC,CAEhB,CCJuBs9F,CAAat9F,EAASx6C,GACrC,IAAI3Q,SAAQ,WACRyY,EAAM+vI,oBDjBa,iBAAb16I,UAAoD,iBAApBA,SAASC,MCkBnD,IAAGyxD,OAAM,WAAc,GAC3B,CAuDA,OAtDA4/D,EAAQtgI,UAAU4pJ,qBAAuB,SAAUC,GAC1CjpJ,KAAK8oJ,sBAGV9oJ,KAAKyrD,QAAUp9C,EAAA,EAAaD,SAASC,OAAQ46I,GACjD,EACAvpB,EAAQtgI,UAAU8pJ,YAAc,SAAUjoI,GACtC,IAAK,IAAIthB,EAAI,EAAGA,EAAIK,KAAK6oJ,gBAAgB/oJ,SAAUH,EAC/CK,KAAK6oJ,gBAAgBlpJ,GAAGshB,EAEhC,EACAy+G,EAAQtgI,UAAU+D,IAAM,SAAUsE,EAAMwJ,EAASg4I,GAG7C,YAFgB,IAAZh4I,IAAsBA,EAAU,CAAC,GACrCjR,KAAKgpJ,qBAAqBC,GACnBT,EAAWxoJ,KAAKyrD,QAAQhkD,GAAOwJ,EAC1C,EACAyuH,EAAQtgI,UAAUmP,OAAS,SAAU0C,EAASg4I,QAC1B,IAAZh4I,IAAsBA,EAAU,CAAC,GACrCjR,KAAKgpJ,qBAAqBC,GAC1B,IAAIloJ,EAAS,CAAC,EACd,IAAK,IAAIooJ,KAAUnpJ,KAAKyrD,QACpB1qD,EAAOooJ,GAAUX,EAAWxoJ,KAAKyrD,QAAQ09F,GAASl4I,GAEtD,OAAOlQ,CACX,EACA2+H,EAAQtgI,UAAUgE,IAAM,SAAUqE,EAAM/G,EAAOuQ,GAC3C,IAAIyI,EACiB,iBAAVhZ,IACPA,EAAQ0F,KAAKC,UAAU3F,IAE3BV,KAAKyrD,QAAUlsD,EAASA,EAAS,CAAC,EAAGS,KAAKyrD,WAAW/xC,EAAK,CAAC,GAAMjS,GAAQ/G,EAAOgZ,IAC5E1Z,KAAK8oJ,sBACL16I,SAASC,OAASA,EAAA,EAAiB5G,EAAM/G,EAAOuQ,IAEpDjR,KAAKkpJ,YAAY,CAAEzhJ,KAAMA,EAAM/G,MAAOA,EAAOuQ,QAASA,GAC1D,EACAyuH,EAAQtgI,UAAU0M,OAAS,SAAUrE,EAAMwJ,GACvC,IAAIm4I,EAAgBn4I,EAAU1R,EAASA,EAAS,CAAC,EAAG0R,GAAU,CAAEtD,QAAS,IAAInI,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GAAIyxD,OAAQ,IAChHj3D,KAAKyrD,QAAUlsD,EAAS,CAAC,EAAGS,KAAKyrD,gBAC1BzrD,KAAKyrD,QAAQhkD,GAChBzH,KAAK8oJ,sBACL16I,SAASC,OAASA,EAAA,EAAiB5G,EAAM,GAAI2hJ,IAEjDppJ,KAAKkpJ,YAAY,CAAEzhJ,KAAMA,EAAM/G,WAAOoZ,EAAW7I,QAASA,GAC9D,EACAyuH,EAAQtgI,UAAUiqJ,kBAAoB,SAAU7yH,GAC5Cx2B,KAAK6oJ,gBAAgB1mJ,KAAKq0B,EAC9B,EACAkpG,EAAQtgI,UAAUkqJ,qBAAuB,SAAU9yH,GAC/C,IAAIsK,EAAM9gC,KAAK6oJ,gBAAgBxmJ,QAAQm0B,GACnCsK,GAAO,GACP9gC,KAAK6oJ,gBAAgB9lH,OAAOjC,EAAK,EAEzC,EACO4+F,CACX,CAjE4B,sCEb5B,42CCAA,g3CCAA,o2DCAA,q1DCUAp0E,EAAOxoD,QAVP,SAA2B2yD,EAAK8zF,IACnB,MAAPA,GAAeA,EAAM9zF,EAAI31D,UAAQypJ,EAAM9zF,EAAI31D,QAE/C,IAAK,IAAIH,EAAI,EAAG6pJ,EAAO,IAAItqJ,MAAMqqJ,GAAM5pJ,EAAI4pJ,EAAK5pJ,IAC9C6pJ,EAAK7pJ,GAAK81D,EAAI91D,GAGhB,OAAO6pJ,CACT,EAEoCl+F,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,4BCNzGwoD,EAAOxoD,QAJP,SAAyB2yD,GACvB,GAAIv2D,MAAMkU,QAAQqiD,GAAM,OAAOA,CACjC,EAEkCnK,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,4BCIvGwoD,EAAOxoD,QARP,SAAgCH,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI+6G,eAAe,6DAG3B,OAAO/6G,CACT,EAEyC2oD,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,4BCF9GwoD,EAAOxoD,QANP,SAAyBe,EAAU45G,GACjC,KAAM55G,aAAoB45G,GACxB,MAAM,IAAIx7G,UAAU,oCAExB,EAEkCqpD,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,4BCNvG,SAAS2mJ,EAAkBnsI,EAAQP,GACjC,IAAK,IAAIpd,EAAI,EAAGA,EAAIod,EAAMjd,OAAQH,IAAK,CACrC,IAAIokH,EAAahnG,EAAMpd,GACvBokH,EAAWvpE,WAAaupE,EAAWvpE,aAAc,EACjDupE,EAAWrgC,cAAe,EACtB,UAAWqgC,IAAYA,EAAWtgC,UAAW,GACjD1kF,OAAOgE,eAAeua,EAAQymG,EAAW5/G,IAAK4/G,EAChD,CACF,CAWAz4D,EAAOxoD,QATP,SAAsB26G,EAAa8jB,EAAYC,GAM7C,OALID,GAAYkoB,EAAkBhsC,EAAYr+G,UAAWmiI,GACrDC,GAAaioB,EAAkBhsC,EAAa+jB,GAChDziI,OAAOgE,eAAe06G,EAAa,YAAa,CAC9Ch6B,UAAU,IAELg6B,CACT,EAE+BnyD,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,4BCJpGwoD,EAAOxoD,QAfP,SAAyBmd,EAAK9b,EAAKzD,GAYjC,OAXIyD,KAAO8b,EACTlhB,OAAOgE,eAAekd,EAAK9b,EAAK,CAC9BzD,MAAOA,EACP85C,YAAY,EACZkpC,cAAc,EACdD,UAAU,IAGZxjE,EAAI9b,GAAOzD,EAGNuf,CACT,EAEkCqrC,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,gCCfvG,IAAI9D,EAAiB,EAAQ,QAQ7BssD,EAAOxoD,QANP,SAAwBygF,EAAUC,GAChCD,EAASnkF,UAAYL,OAAOqO,OAAOo2E,EAAWpkF,WAC9CmkF,EAASnkF,UAAUuI,YAAc47E,EACjCvkF,EAAeukF,EAAUC,EAC3B,EAEiCl4B,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,4BCFtGwoD,EAAOxoD,QANP,SAAgCmd,GAC9B,OAAOA,GAAOA,EAAIrd,WAAaqd,EAAM,CACnC,QAAWA,EAEf,EAEyCqrC,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,gCCN9G,IAAI8iH,EAAU,kBAEd,SAAS3tD,EAAyBD,GAChC,GAAuB,mBAAZM,QAAwB,OAAO,KAC1C,IAAIC,EAAoB,IAAID,QACxBE,EAAmB,IAAIF,QAC3B,OAAQL,EAA2B,SAAkCD,GACnE,OAAOA,EAAcQ,EAAmBD,CAC1C,GAAGP,EACL,CA2CA1M,EAAOxoD,QAzCP,SAAiCmd,EAAK+3C,GACpC,IAAKA,GAAe/3C,GAAOA,EAAIrd,WAC7B,OAAOqd,EAGT,GAAY,OAARA,GAAiC,WAAjB2lG,EAAQ3lG,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAI9T,EAAQ8rD,EAAyBD,GAErC,GAAI7rD,GAASA,EAAM5I,IAAI0c,GACrB,OAAO9T,EAAMhJ,IAAI8c,GAGnB,IAAIuhC,EAAS,CAAC,EACV0W,EAAwBn5D,OAAOgE,gBAAkBhE,OAAOo5D,yBAE5D,IAAK,IAAIh0D,KAAO8b,EACd,GAAY,YAAR9b,GAAqBpF,OAAOK,UAAUC,eAAeC,KAAK2gB,EAAK9b,GAAM,CACvE,IAAI2xD,EAAOoC,EAAwBn5D,OAAOo5D,yBAAyBl4C,EAAK9b,GAAO,KAE3E2xD,IAASA,EAAK3yD,KAAO2yD,EAAK1yD,KAC5BrE,OAAOgE,eAAey+C,EAAQr9C,EAAK2xD,GAEnCtU,EAAOr9C,GAAO8b,EAAI9b,EAEtB,CASF,OANAq9C,EAAgB,QAAIvhC,EAEhB9T,GACFA,EAAM/I,IAAI6c,EAAKuhC,GAGVA,CACT,EAE0C8J,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,4BCtB/GwoD,EAAOxoD,QA9BP,SAA+B2yD,EAAK91D,GAClC,IAAIsqE,EAAY,MAAPxU,EAAc,KAAyB,oBAAX5zD,QAA0B4zD,EAAI5zD,OAAOC,WAAa2zD,EAAI,cAE3F,GAAU,MAANwU,EAAJ,CACA,IAIIy/E,EAAItsI,EAJJusI,EAAO,GACPC,GAAK,EACLzsI,GAAK,EAIT,IACE,IAAK8sD,EAAKA,EAAG3qE,KAAKm2D,KAAQm0F,GAAMF,EAAKz/E,EAAGrpE,QAAQI,QAC9C2oJ,EAAKxnJ,KAAKunJ,EAAGhpJ,QAETf,GAAKgqJ,EAAK7pJ,SAAWH,GAH4BiqJ,GAAK,GAc9D,CATE,MAAOnlG,GACPtnC,GAAK,EACLC,EAAKqnC,CACP,CAAE,QACA,IACOmlG,GAAsB,MAAhB3/E,EAAW,QAAWA,EAAW,QAG9C,CAFE,QACA,GAAI9sD,EAAI,MAAMC,CAChB,CACF,CAEA,OAAOusI,CAxBe,CAyBxB,EAEwCr+F,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,4BC1B7GwoD,EAAOxoD,QAJP,WACE,MAAM,IAAIb,UAAU,4IACtB,EAEmCqpD,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,4BCJxG,SAAS+mJ,EAAgBznJ,EAAGjD,GAK1B,OAJAmsD,EAAOxoD,QAAU+mJ,EAAkB9qJ,OAAOC,eAAiBD,OAAOC,eAAe4G,OAAS,SAAyBxD,EAAGjD,GAEpH,OADAiD,EAAEnD,UAAYE,EACPiD,CACT,EAAGkpD,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,QACjE+mJ,EAAgBznJ,EAAGjD,EAC5B,CAEAmsD,EAAOxoD,QAAU+mJ,EAAiBv+F,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,gCCRvG,IAAIgnJ,EAAiB,EAAQ,QAEzBC,EAAuB,EAAQ,QAE/BC,EAA6B,EAAQ,QAErCC,EAAkB,EAAQ,QAM9B3+F,EAAOxoD,QAJP,SAAwB2yD,EAAK91D,GAC3B,OAAOmqJ,EAAer0F,IAAQs0F,EAAqBt0F,EAAK91D,IAAMqqJ,EAA2Bv0F,EAAK91D,IAAMsqJ,GACtG,EAEiC3+F,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,4BCZtG,SAAS8iH,EAAQ3lG,GAGf,OAAQqrC,EAAOxoD,QAAU8iH,EAAU,mBAAqB/jH,QAAU,iBAAmBA,OAAOC,SAAW,SAAUme,GAC/G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqBpe,QAAUoe,EAAItY,cAAgB9F,QAAUoe,IAAQpe,OAAOzC,UAAY,gBAAkB6gB,CAC1H,EAAGqrC,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,QAAU8iH,EAAQ3lG,EAC5F,CAEAqrC,EAAOxoD,QAAU8iH,EAASt6D,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,gCCV/F,IAAIonJ,EAAmB,EAAQ,QAW/B5+F,EAAOxoD,QATP,SAAqCV,EAAG+nJ,GACtC,GAAK/nJ,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAO8nJ,EAAiB9nJ,EAAG+nJ,GACtD,IAAIvqJ,EAAIb,OAAOK,UAAUsG,SAASpG,KAAK8C,GAAGiF,MAAM,GAAI,GAEpD,MADU,WAANzH,GAAkBwC,EAAEuF,cAAa/H,EAAIwC,EAAEuF,YAAYF,MAC7C,QAAN7H,GAAqB,QAANA,EAAoBV,MAAMsJ,KAAKpG,GACxC,cAANxC,GAAqB,2CAA2CsS,KAAKtS,GAAWsqJ,EAAiB9nJ,EAAG+nJ,QAAxG,CALc,CAMhB,EAE8C7+F,EAAOxoD,QAAQF,YAAa,EAAM0oD,EAAOxoD,QAAiB,QAAIwoD,EAAOxoD,2CCTnH/D,OAAOgE,eAAeD,EAAS,aAA/B,CAA+CpC,OAAO,IA6CtDoC,EAAQsnJ,YAVY,iBAWpBtnJ,EAAQ84D,iBAHkB//C,GAvCJ,EAACA,EAAQwuI,KAC3B,MAAM,QAAErvF,EAAU,MAAOsvF,GAAmBzuI,GAAU,CAAC,EACjD0uI,EAAYnkJ,KAAKC,UAAUikJ,GAAgB,CAAC3hJ,EAAG5G,KAChC,mBAANA,IACPA,EAAIoN,OAAOpN,IACLiK,WAAWrD,EAAI,OACjB5G,EAAI,YAAcA,GAGnBA,KAEX,MAAO,CACH,uBACAhD,OAAOgK,KAAKuhJ,GAAgBxqJ,OAAS,EAC/B,iCAAiCyqJ,MACjC,mBACN,kBACAvvF,EAAQl7D,OAAS,EAAI,WAAWsG,KAAKC,UAAU20D,MAAc,GAC7D,oCACAqvF,GACF9gJ,KAAK,GAAG,EAmBuBihJ,CAAc3uI,EAzC1B,o5CCJV,SAAS4uI,EAAkBh1F,EAAK8zF,IAClC,MAAPA,GAAeA,EAAM9zF,EAAI31D,UAAQypJ,EAAM9zF,EAAI31D,QAE/C,IAAK,IAAIH,EAAI,EAAG6pJ,EAAO,IAAItqJ,MAAMqqJ,GAAM5pJ,EAAI4pJ,EAAK5pJ,IAC9C6pJ,EAAK7pJ,GAAK81D,EAAI91D,GAGhB,OAAO6pJ,CACT,qECRe,SAASkB,EAAgBj1F,GACtC,GAAIv2D,MAAMkU,QAAQqiD,GAAM,OAAOA,CACjC,sECFe,SAASk1F,EAAuBhoJ,GAC7C,QAAa,IAATA,EACF,MAAM,IAAI+6G,eAAe,6DAG3B,OAAO/6G,CACT,sECNe,SAAS66G,EAAgB35G,EAAU45G,GAChD,KAAM55G,aAAoB45G,GACxB,MAAM,IAAIx7G,UAAU,oCAExB,sECJA,SAASwnJ,EAAkBnsI,EAAQP,GACjC,IAAK,IAAIpd,EAAI,EAAGA,EAAIod,EAAMjd,OAAQH,IAAK,CACrC,IAAIokH,EAAahnG,EAAMpd,GACvBokH,EAAWvpE,WAAaupE,EAAWvpE,aAAc,EACjDupE,EAAWrgC,cAAe,EACtB,UAAWqgC,IAAYA,EAAWtgC,UAAW,GACjD1kF,OAAOgE,eAAeua,EAAQymG,EAAW5/G,IAAK4/G,EAChD,CACF,CAEe,SAAS6mC,EAAantC,EAAa8jB,EAAYC,GAM5D,OALID,GAAYkoB,EAAkBhsC,EAAYr+G,UAAWmiI,GACrDC,GAAaioB,EAAkBhsC,EAAa+jB,GAChDziI,OAAOgE,eAAe06G,EAAa,YAAa,CAC9Ch6B,UAAU,IAELg6B,CACT,sECjBe,SAASwoC,EAAgBhmI,EAAK9b,EAAKzD,GAYhD,OAXIyD,KAAO8b,EACTlhB,OAAOgE,eAAekd,EAAK9b,EAAK,CAC9BzD,MAAOA,EACP85C,YAAY,EACZkpC,cAAc,EACdD,UAAU,IAGZxjE,EAAI9b,GAAOzD,EAGNuf,CACT,sECbe,SAAS5C,IActB,OAbAA,EAAWte,OAAOS,OAAST,OAAOS,OAAOoG,OAAS,SAAU0X,GAC1D,IAAK,IAAI3d,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CACzC,IAAI4X,EAAS1X,UAAUF,GAEvB,IAAK,IAAIwE,KAAOoT,EACVxY,OAAOK,UAAUC,eAAeC,KAAKiY,EAAQpT,KAC/CmZ,EAAOnZ,GAAOoT,EAAOpT,GAG3B,CAEA,OAAOmZ,CACT,EACOD,EAAStd,MAAMC,KAAMH,UAC9B,sHCde,SAASgrJ,EAAetnE,EAAUC,GAC/CD,EAASnkF,UAAYL,OAAOqO,OAAOo2E,EAAWpkF,WAC9CmkF,EAASnkF,UAAUuI,YAAc47E,GACjC,OAAeA,EAAUC,EAC3B,uCCLe,SAASsnE,EAAiBC,GACvC,GAAsB,oBAAXlpJ,QAAmD,MAAzBkpJ,EAAKlpJ,OAAOC,WAA2C,MAAtBipJ,EAAK,cAAuB,OAAO7rJ,MAAMsJ,KAAKuiJ,EACtH,sECFe,SAASC,IACtB,MAAM,IAAI/oJ,UAAU,4IACtB,sHCDe,SAASs7G,EAAyBhmG,EAAQ0zI,GACvD,GAAc,MAAV1zI,EAAgB,MAAO,CAAC,EAC5B,IACIpT,EAAKxE,EADL2d,GAAS,OAA6B/F,EAAQ0zI,GAGlD,GAAIlsJ,OAAOuD,sBAAuB,CAChC,IAAI4oJ,EAAmBnsJ,OAAOuD,sBAAsBiV,GAEpD,IAAK5X,EAAI,EAAGA,EAAIurJ,EAAiBprJ,OAAQH,IACvCwE,EAAM+mJ,EAAiBvrJ,GACnBsrJ,EAAS5oJ,QAAQ8B,IAAQ,GACxBpF,OAAOK,UAAUmD,qBAAqBjD,KAAKiY,EAAQpT,KACxDmZ,EAAOnZ,GAAOoT,EAAOpT,GAEzB,CAEA,OAAOmZ,CACT,uCClBe,SAAS6tI,EAA8B5zI,EAAQ0zI,GAC5D,GAAc,MAAV1zI,EAAgB,MAAO,CAAC,EAC5B,IAEIpT,EAAKxE,EAFL2d,EAAS,CAAC,EACV8tI,EAAarsJ,OAAOgK,KAAKwO,GAG7B,IAAK5X,EAAI,EAAGA,EAAIyrJ,EAAWtrJ,OAAQH,IACjCwE,EAAMinJ,EAAWzrJ,GACbsrJ,EAAS5oJ,QAAQ8B,IAAQ,IAC7BmZ,EAAOnZ,GAAOoT,EAAOpT,IAGvB,OAAOmZ,CACT,sECbe,SAASusI,EAAgBznJ,EAAGjD,GAKzC,OAJA0qJ,EAAkB9qJ,OAAOC,eAAiBD,OAAOC,eAAe4G,OAAS,SAAyBxD,EAAGjD,GAEnG,OADAiD,EAAEnD,UAAYE,EACPiD,CACT,EACOynJ,EAAgBznJ,EAAGjD,EAC5B,iJCFe,SAASksJ,EAAe51F,EAAK91D,GAC1C,OAAO,EAAAmqJ,EAAA,GAAer0F,ICLT,SAA+BA,EAAK91D,GACjD,IAAIsqE,EAAY,MAAPxU,EAAc,KAAyB,oBAAX5zD,QAA0B4zD,EAAI5zD,OAAOC,WAAa2zD,EAAI,cAE3F,GAAU,MAANwU,EAAJ,CACA,IAIIy/E,EAAItsI,EAJJusI,EAAO,GACPC,GAAK,EACLzsI,GAAK,EAIT,IACE,IAAK8sD,EAAKA,EAAG3qE,KAAKm2D,KAAQm0F,GAAMF,EAAKz/E,EAAGrpE,QAAQI,QAC9C2oJ,EAAKxnJ,KAAKunJ,EAAGhpJ,QAETf,GAAKgqJ,EAAK7pJ,SAAWH,GAH4BiqJ,GAAK,GAc9D,CATE,MAAOnlG,GACPtnC,GAAK,EACLC,EAAKqnC,CACP,CAAE,QACA,IACOmlG,GAAsB,MAAhB3/E,EAAW,QAAWA,EAAW,QAG9C,CAFE,QACA,GAAI9sD,EAAI,MAAMC,CAChB,CACF,CAEA,OAAOusI,CAxBe,CAyBxB,CDvBgC,CAAqBl0F,EAAK91D,KAAM,EAAAqqJ,EAAA,GAA2Bv0F,EAAK91D,KAAM,EAAAsqJ,EAAA,IACtG,0HEFe,SAASqB,EAAS71F,GAC/B,OAAO,OAAeA,KAAQ,OAAgBA,KAAQ,OAA2BA,KAAQ,QAC3F,kHCFe,SAAS81F,EAAmB91F,GACzC,OCJa,SAA4BA,GACzC,GAAIv2D,MAAMkU,QAAQqiD,GAAM,OAAO,EAAAy0F,EAAA,GAAiBz0F,EAClD,CDES,CAAkBA,KAAQ,EAAA+1F,EAAA,GAAgB/1F,KAAQ,EAAAu0F,EAAA,GAA2Bv0F,IELvE,WACb,MAAM,IAAIxzD,UAAU,uIACtB,CFG8F,EAC9F,uCGNe,SAAS2jH,EAAQ3lG,GAG9B,OAAO2lG,EAAU,mBAAqB/jH,QAAU,iBAAmBA,OAAOC,SAAW,SAAUme,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqBpe,QAAUoe,EAAItY,cAAgB9F,QAAUoe,IAAQpe,OAAOzC,UAAY,gBAAkB6gB,CAC1H,EAAG2lG,EAAQ3lG,EACb,sHCPe,SAASwrI,EAA4BrpJ,EAAG+nJ,GACrD,GAAK/nJ,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAO,OAAiBA,EAAG+nJ,GACtD,IAAIvqJ,EAAIb,OAAOK,UAAUsG,SAASpG,KAAK8C,GAAGiF,MAAM,GAAI,GAEpD,MADU,WAANzH,GAAkBwC,EAAEuF,cAAa/H,EAAIwC,EAAEuF,YAAYF,MAC7C,QAAN7H,GAAqB,QAANA,EAAoBV,MAAMsJ,KAAKpG,GACxC,cAANxC,GAAqB,2CAA2CsS,KAAKtS,IAAW,OAAiBwC,EAAG+nJ,QAAxG,CALc,CAMhB,kHCRIuB,EAAK3sJ,OAAOgE,eAEZzB,EAAI,CAAC7B,EAAGG,EAAGD,IADN,EAACF,EAAGG,EAAGD,IAAMC,KAAKH,EAAIisJ,EAAGjsJ,EAAGG,EAAG,CAAE46C,YAAY,EAAIkpC,cAAc,EAAID,UAAU,EAAI/iF,MAAOf,IAAOF,EAAEG,GAAKD,EAC1FkyF,CAAGpyF,EAAe,iBAALG,EAAgBA,EAAI,GAAKA,EAAGD,GAC1DgsJ,EAAK,CAAE,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,MAAO,EAAG,KAAM,EAAG,OAAQ,EAAG,OAAQ7nJ,EAAG,OAAQhF,EAAG,OAAQkF,EAAG,OAAQnF,EAAG,OAAQgC,EAAG,OAAQO,EAAG,QAAUwqJ,EAAK,CAAE,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,OAASC,EAAK,IAAI3sJ,MAAM,GAAGi3C,KAAKhnC,OAAO28I,cAAcF,EAAG,KAAKriJ,KAAK,IAAKwiJ,EAAK,KAuB/R,IAAIC,EAAKjtJ,OAAOktJ,YAAYltJ,OAAO0gB,QAAQmsI,GAAIviJ,KAAK5J,GAAMA,EAAE+iI,aAAa0pB,EAAKntJ,OAAOktJ,YAAYltJ,OAAO0gB,QAAQksI,GAAItiJ,KAAK5J,GAAMA,EAAE+iI,aAAa2pB,EAAK,GAAGptJ,OAAO6qB,OAAO+hI,GAAItiJ,KAAK5J,GAAM,OAAOA,EAAEiG,SAAS,SAAQ6D,KAAK,MAAO6iJ,EAAK,IAAI1gH,OAAO,IAAIygH,SAAW,MACxP,SAASE,EAAG5sJ,GACV,IAAIG,EAAIH,EAAE8gB,MAAM6rI,GAChB,GAAIxsJ,EAAG,OAET,SAAYH,EAAGG,GAAI,GACjB,IAAID,EAAIT,MAAMsJ,KAAK/I,GACnB,GAAIE,EAAEG,OAAS,GAAM,EAEd,MAAM,IAAIsE,MAAM,mCADrB,GAAIzE,EAAEG,OAAS,IAAML,EAAEuM,WAAW6/I,GAAK,OAc3C,SAAYpsJ,EAAGG,GACb,IAAID,EACJ,IAAImE,EAAI,GACR,IAAK,IAAIjF,EAAe,GAAXY,EAAEK,OAAcjB,KAAO,CAClC,IAAIqH,EAAI,GAAGgmJ,EAAGzsJ,EAAM,EAAJZ,GAAOytJ,YAAY,MAAMJ,EAAGzsJ,EAAM,EAAJZ,EAAQ,GAAGytJ,YAAY,MACrExoJ,EAAET,QAAQ8L,OAAOC,aAAayE,SAAS3N,EAAG,KAC5C,CACA,IAAIxG,EAAI,GAAIsE,EAAI,CAACF,EAAEyF,KAAK,KAAMxE,EAAI,GAClC,KAAOf,EAAElE,QAAU,CACjB,IAAIjB,EAAImF,EAAEktD,QACV,IACE,GAAIxxD,EAAEyC,KAAKiE,KAAKM,MAAM7H,IAAKe,EAAG,OAAOF,CAMvC,CALE,MAAOwG,GACP,IAAKnB,IAAK,MAAMmB,EAChB,IAAI9E,IAAqD,OAA9CzB,EAAIuG,EAAEwR,QAAQ6I,MAAM,4BAAiC,EAAS5gB,EAAE,IAC3E,IAAKyB,EAAG,MAAM8E,EACdlC,EAAEX,QAAQxE,EAAE0Q,UAAU,EAAGnO,GAAIvC,EAAE0Q,UAAUnO,GAC3C,CACF,CACA,OAAO1B,CACT,CAlCkD6sJ,CAAG5sJ,EAAGC,GAEtD,IAAIkE,EAAI,GACR,IAAK,IAAIpE,EAAe,IAAXC,EAAEG,OAAeJ,KAAO,CACnC,IAAIsE,EAAIrE,EAAE0H,MAAU,EAAJ3H,EAAW,EAAJA,EAAQ,GAAG2J,KAAKtE,GAAMinJ,EAAGjnJ,EAAEunJ,YAAY,MAAK/iJ,KAAK,IACxEzF,EAAET,QAAQ8L,OAAOC,aAAayE,SAAS7P,EAAG,IAC5C,CACA,GAAIpE,EAAG,CACLkE,EAAEotD,QACF,IAAIxxD,EAAIoE,EAAEzB,QAAQ0pJ,GAClB,OAAc,IAAPrsJ,IAAaA,EAAIoE,EAAEhE,QAAS,CAACsG,KAAKM,MAAM5C,EAAEuD,MAAM,EAAG3H,GAAG6J,KAAK,KACpE,CACA,OAAOzF,EAAEyF,KAAK,IAAIH,MAAM2iJ,GAAI5kJ,OAAOoE,SAASlC,KAAK3J,GAAM0G,KAAKM,MAAMhH,IACpE,CAlBgB8sJ,CAAG5sJ,EAAE,IAAI,GAAI,EAC7B,CA8CA,SAAS6sJ,EAAGhtJ,GACV,OAAO4sJ,EAAG5sJ,EACZ,CAIA,IAAIitJ,EAAK3tJ,OAAOK,UAAUC,eAAgB,EAAKN,OAAOK,UAAUsG,SAU7DinJ,EAV4E,SAASltJ,EAAGG,EAAGD,GAC5F,GAAmB,sBAAf,EAAGL,KAAKM,GACV,MAAM,IAAIqC,UAAU,+BACtB,IAAI6B,EAAIrE,EAAEK,OACV,GAAIgE,KAAOA,EACT,IAAK,IAAIpE,EAAI,EAAGA,EAAIoE,EAAGpE,IACrBE,EAAEN,KAAKK,EAAGF,EAAEC,GAAIA,EAAGD,QAErB,IAAK,IAAIuE,KAAKvE,EACZitJ,EAAGptJ,KAAKG,EAAGuE,IAAMpE,EAAEN,KAAKK,EAAGF,EAAEuE,GAAIA,EAAGvE,EAC1C,EACA,SAAS0G,EAAE1G,EAAGG,EAAGD,GACf,GAAyB,IAArBE,UAAUC,OACZ,OAAOqG,EAAE/C,IAAI3D,EAAGG,EAAGD,GACrB,GAAyB,IAArBE,UAAUC,OACZ,OAAOqG,EAAEhD,IAAI1D,EAAGG,GAClB,IAAIkE,EAAIqC,EAAEP,KAAKO,EAAG1G,GAClB,IAAK,IAAIC,KAAKyG,EACZA,EAAE9G,eAAeK,KAAOoE,EAAEpE,GAAKyG,EAAEzG,GAAGkG,KAAK9B,EAAGrE,IAC9C,OAAOqE,CACT,CACAqC,EAAEhD,IAAM,SAAS1D,EAAGG,GAClB,IAAK,IAAID,EAAIT,MAAMkU,QAAQxT,GAAKA,EAAIuG,EAAEO,MAAM9G,GAAIkE,EAAI,EAAGA,EAAInE,EAAEG,SAAUgE,EAAG,CACxE,IAAIpE,EAAIC,EAAEmE,GACV,GAAkB,iBAALrE,KAAiBC,KAAKD,GACjC,MAAM,IAAI2E,MAAM,4BAA8B1E,GAChDD,EAAIA,EAAEC,EACR,CACA,OAAOD,CACT,EACA0G,EAAE/C,IAAM,SAAS3D,EAAGG,EAAGD,GACrB,IAAImE,EAAI5E,MAAMkU,QAAQxT,GAAKA,EAAIuG,EAAEO,MAAM9G,GAAIF,EAAIoE,EAAE,GACjD,GAAiB,IAAbA,EAAEhE,OACJ,MAAMsE,MAAM,+BACd,IAAK,IAAIJ,EAAI,EAAGA,EAAIF,EAAEhE,OAAS,IAAKkE,EAAG,CACrC,IAAIe,EAAIjB,EAAEE,GACE,iBAALe,GAA6B,iBAALA,IAAkBA,EAAIoK,OAAOpK,IAAa,cAANA,GAA2B,gBAANA,GAA6B,cAANA,IAA6B,MAANA,GAAa7F,MAAMkU,QAAQ3T,KAAOsF,EAAItF,EAAEK,QAASJ,EAAIoE,EAAEE,EAAI,GAAIe,KAAKtF,IAAMC,EAAE6gB,MAAM,aAAe9gB,EAAEsF,GAAK,GAAKtF,EAAEsF,GAAK,CAAC,GAAItF,EAAIA,EAAEsF,GACvQ,CACA,MAAa,MAANrF,GAAaR,MAAMkU,QAAQ3T,KAAOC,EAAID,EAAEK,QAASL,EAAEC,GAAKC,EAAGK,IACpE,EACAmG,EAAE2F,OAAS,SAASrM,EAAGG,GACrB,IAAID,EAAIT,MAAMkU,QAAQxT,GAAKA,EAAIuG,EAAEO,MAAM9G,GAAIkE,EAAInE,EAAEA,EAAEG,OAAS,GAC5D,QAAU,IAANgE,EACF,MAAM,IAAIM,MAAM,qCAAuCxE,EAAI,KAC7D,IAAIF,EAAIyG,EAAEhD,IAAI1D,EAAGE,EAAE0H,MAAM,GAAI,IAC7B,GAAInI,MAAMkU,QAAQ1T,GAAI,CACpB,IAAIsE,GAAKF,EACT,GAAU,KAANA,GAAYo+C,MAAMl+C,GACpB,MAAM,IAAII,MAAM,yBAA2BN,EAAI,KACjD5E,MAAME,UAAU2jC,OAAOzjC,KAAKI,EAAGsE,EAAG,EACpC,aACStE,EAAEoE,EACb,EACAqC,EAAEymJ,KAAO,SAASntJ,EAAGG,GACnB,IAAID,EAAI,CAAC,EACT,OAAOwG,EAAE0mJ,KAAKptJ,GAAG,SAASqE,EAAGpE,GAC3BC,EAAED,GAAKoE,CACT,GAAGlE,GAAID,CACT,EACAwG,EAAE0mJ,KAAO,SAASptJ,EAAGG,EAAGD,GACtB,IAAImE,EAAI,GACRnE,EAAIA,GAAK,SAASD,GAChB,IAAIsE,EAAIjF,OAAOK,UAAUsG,SAASpG,KAAKI,GACvC,MAAa,oBAANsE,GAAiC,mBAANA,CACpC,EAAG,SAAStE,EAAEsE,GACZ2oJ,EAAG3oJ,GAAG,SAASe,EAAGlG,GAChBiF,EAAE3B,KAAKgN,OAAOtQ,IAAKc,EAAEoF,GAAKrF,EAAEqF,GAAKnF,EAAEmF,EAAGoB,EAAE2mJ,QAAQhpJ,IAAKA,EAAE5B,KACzD,GACF,CAJG,CAIDzC,EACJ,EACA0G,EAAE5C,IAAM,SAAS9D,EAAGG,GAClB,IACEuG,EAAEhD,IAAI1D,EAAGG,EAGX,CAFE,MACA,OAAO,CACT,CACA,OAAO,CACT,EACAuG,EAAE4tF,OAAS,SAASt0F,GAClB,OAAOA,EAAEiG,WAAW8D,QAAQ,KAAM,MAAMA,QAAQ,MAAO,KACzD,EACArD,EAAEwmD,SAAW,SAASltD,GACpB,OAAOA,EAAE+J,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAC9C,EACArD,EAAEO,MAAQ,SAASjH,GACjB,GAAU,KAANA,EACF,MAAO,GACT,GAAoB,MAAhBA,EAAE0O,OAAO,GACX,MAAM,IAAI/J,MAAM,yBAA2B3E,GAC7C,OAAOA,EAAE8P,UAAU,GAAGnG,MAAM,MAAMC,IAAIlD,EAAEwmD,SAC1C,EACAxmD,EAAE2mJ,QAAU,SAASrtJ,GACnB,OAAoB,IAAbA,EAAEK,OAAe,GAAK,IAAML,EAAE4J,IAAIlD,EAAE4tF,QAAQxqF,KAAK,IAC1D,EA+FA,MA4IGwjJ,EAAK,QACR,IAAIC,GAAK,EACT,SAASC,EAAGxtJ,GACVutJ,EAAKvtJ,CACP,CACA,MAAMytJ,EAAMztJ,GAAM,IAAIG,KACpBotJ,GAAM57I,QAAQ3R,MAAMG,EAAE,EACrB4N,EAAI,CACL3F,MAAOqlJ,EAAG,SACV77I,KAAM67I,EAAG,QACThoF,IAAKgoF,EAAG,QAWV,SAASt9I,EAAEnQ,EAAGG,EAAGD,GACf,MAAMmE,EAAI,IACLlE,EACHwL,OAAQ3L,EACR8X,OALmC,mBAMnC3I,SAAUlM,OAAOkM,SAASwG,KAC1B1N,QAASqlJ,GAEXv/I,EAAE03D,IAAI,eAAgBphE,GAAInE,EAAE2H,SAAS5H,IACnC,IAAIsE,EACgB,OAAnBA,EAAItB,OAAOiiB,MAAgB3gB,EAAEwG,YAAY1G,EAAGpE,EAAE,GAEnD,CAuBA,IAAIytJ,SAAY1qJ,WAAa,IAAMA,kBAAoBC,OAAS,IAAMA,cAAgB0qJ,OAAS,IAAMA,cAAgBzqJ,KAAO,IAAMA,KAAO,CAAC,EAC1I,SAAS0qJ,EAAG5tJ,GACV,OAAOA,GAAKA,EAAEmD,YAAc7D,OAAOK,UAAUC,eAAeC,KAAKG,EAAG,WAAaA,EAAEoD,QAAUpD,CAC/F,CACA,IAAI6tJ,EAAK,CAAExqJ,QAAS,CAAC,IAErB,SAAUrD,EAAGG,GACX,IAAakE,EAAI,4BAA2CiB,EAAI,iBAAkBlG,EAAI,qBAAsBqH,EAAI,iBAAgDgO,EAAI,mBAAoBpV,EAAI,gBAAiBkM,EAAI,iBAAkByC,EAAI,oBAAuD1L,EAAI,eAAgB+M,EAAI,kBAAwC5C,EAAI,kBAAmB6D,EAAI,mBAA2C4uF,EAAK,kBAAmBlzD,EAAK,eAAgB8hH,EAAK,kBAAmBC,EAAK,kBAA8CC,EAAK,mBAAoBC,EAAK,uBAAwBC,EAAK,oBAAyTC,EAAK,8BAA+BC,EAAK,mBAAoB5iJ,EAAI,CAAC,EACl9BA,EADinB,yBACzmBA,EADuoB,yBAC/nBA,EAD6pB,sBACrpBA,EADgrB,uBACxqBA,EADosB,uBAC5rBA,EADwtB,uBAChtBA,EAD4uB,8BACpuBA,EADuwB,wBAC/vBA,EAD4xB,yBACpxB,EAAIA,EAAEpM,GAAKoM,EAAE/E,GAAK+E,EAAEyiJ,GAAMziJ,EAAEiJ,GAAKjJ,EAAE0iJ,GAAM1iJ,EAAEnM,GAAKmM,EAAED,GAAKC,EAAEwC,GAAKxC,EAAElJ,GAAKkJ,EAAE6D,GAAK7D,EAAEiB,GAAKjB,EAAE0zF,GAAM1zF,EAAEwgC,GAAMxgC,EAAEsiJ,GAAMtiJ,EAAEwiJ,IAAM,EAC3L,IAAIK,EAAkB,iBAANX,GAAkBA,GAAMA,EAAGpuJ,SAAWA,QAAUouJ,EAAIY,EAAoB,iBAARprJ,MAAoBA,MAAQA,KAAK5D,SAAWA,QAAU4D,KAAMsM,EAAI6+I,GAAMC,GAAMpiC,SAAS,cAATA,GAA2BqiC,EAAKpuJ,IAAMA,EAAE+gC,UAAY/gC,EAAGquJ,EAAKD,GAAYvuJ,IAAMA,EAAEkhC,UAAYlhC,EAAGyuJ,EAAKD,GAAMA,EAAGnrJ,UAAYkrJ,EAAIG,EAAKD,GAAMJ,EAAGnvG,QAASyvG,EAAK,WACnT,IACE,OAAOD,GAAMA,EAAG9yB,SAAW8yB,EAAG9yB,QAAQ,OAExC,CADE,MACF,CACF,CALqT,GAKhTgzB,EAAKD,GAAMA,EAAGv9B,aAanB,SAASy9B,EAAGztJ,EAAGkD,GACb,IAAK,IAAI3B,GAAK,EAAG+C,EAAS,MAALtE,EAAY,EAAIA,EAAEf,SAAUsC,EAAI+C,GACnD,GAAIpB,EAAElD,EAAEuB,GAAIA,EAAGvB,GACb,OAAO,EACX,OAAO,CACT,CAWA,SAAS0tJ,EAAG1tJ,EAAGkD,GACb,OAAOlD,EAAE0C,IAAIQ,EACf,CAIA,SAASyqJ,EAAG3tJ,GACV,IAAIkD,GAAK,EAAG3B,EAAIlD,MAAM2B,EAAEqP,MACxB,OAAOrP,EAAEyG,SAAQ,SAASnC,EAAG5D,GAC3Ba,IAAI2B,GAAK,CAACxC,EAAG4D,EACf,IAAI/C,CACN,CAMA,SAASqsJ,EAAG5tJ,GACV,IAAIkD,GAAK,EAAG3B,EAAIlD,MAAM2B,EAAEqP,MACxB,OAAOrP,EAAEyG,SAAQ,SAASnC,GACxB/C,IAAI2B,GAAKoB,CACX,IAAI/C,CACN,CACA,IACMvB,EADFy9F,EAAKp/F,MAAME,UAAWsvJ,EAAK/iC,SAASvsH,UAAWuvJ,EAAK5vJ,OAAOK,UAAWwvJ,EAAK3/I,EAAE,sBAAuB4/I,EAAKH,EAAGhpJ,SAAUmG,EAAI8iJ,EAAGtvJ,eAAgByvJ,GAC3IjuJ,EAAI,SAAS2gB,KAAKotI,GAAMA,EAAG7lJ,MAAQ6lJ,EAAG7lJ,KAAK8xH,UAAY,KAChD,iBAAmBh6H,EAAI,GAC/BkuJ,EAAKJ,EAAGjpJ,SAAUspJ,EAAKtjH,OAC1B,IAAMmjH,EAAGvvJ,KAAKuM,GAAGrC,QA/Ds2B,sBA+D11B,QAAQA,QAAQ,yDAA0D,SAAW,KACjHylJ,EAAKf,EAAKj/I,EAAEuuH,YAAS,EAAQ0xB,EAAKjgJ,EAAEpN,OAAQstJ,EAAKlgJ,EAAEvG,WAAY0mJ,EAAKT,EAAGpsJ,qBAAsB8sJ,EAAK/wD,EAAGv7D,OAAQp0B,EAAIugJ,EAAKA,EAAGx8B,iBAAc,EAAQ48B,GAAKvwJ,OAAOuD,sBAAuBitJ,GAAKN,EAAKA,EAAG17F,cAAW,EAAQi8F,GAhBrN,SAAY3uJ,EAAGkD,GACb,OAAO,SAAS3B,GACd,OAAOvB,EAAEkD,EAAE3B,GACb,CACF,CAY0NqtJ,CAAG1wJ,OAAOgK,KAAMhK,QAAS2wJ,GAAKC,GAAG1gJ,EAAG,YAAa2gJ,GAAKD,GAAG1gJ,EAAG,OAAQ4gJ,GAAKF,GAAG1gJ,EAAG,WAAY6gJ,GAAKH,GAAG1gJ,EAAG,OAAQ8gJ,GAAKJ,GAAG1gJ,EAAG,WAAY+gJ,GAAKL,GAAG5wJ,OAAQ,UAAWy9D,GAAK9rD,GAAGg/I,IAAKO,GAAKv/I,GAAGk/I,IAAKM,GAAKx/I,GAAGm/I,IAAKM,GAAKz/I,GAAGo/I,IAAKtxI,GAAK9N,GAAGq/I,IAAKK,GAAKlB,EAAKA,EAAG9vJ,eAAY,EAAQixJ,GAAKD,GAAKA,GAAG7oE,aAAU,EACnf,SAASh3E,GAAE1P,GACT,IAAIkD,GAAK,EAAG3B,EAAS,MAALvB,EAAY,EAAIA,EAAEf,OAClC,IAAKE,KAAKsE,UAAWP,EAAI3B,GAAK,CAC5B,IAAI+C,EAAItE,EAAEkD,GACV/D,KAAKoD,IAAI+B,EAAE,GAAIA,EAAE,GACnB,CACF,CAyBA,SAASmrJ,GAAEzvJ,GACT,IAAIkD,GAAK,EAAG3B,EAAS,MAALvB,EAAY,EAAIA,EAAEf,OAClC,IAAKE,KAAKsE,UAAWP,EAAI3B,GAAK,CAC5B,IAAI+C,EAAItE,EAAEkD,GACV/D,KAAKoD,IAAI+B,EAAE,GAAIA,EAAE,GACnB,CACF,CAuBA,SAASwD,GAAE9H,GACT,IAAIkD,GAAK,EAAG3B,EAAS,MAALvB,EAAY,EAAIA,EAAEf,OAClC,IAAKE,KAAKsE,UAAWP,EAAI3B,GAAK,CAC5B,IAAI+C,EAAItE,EAAEkD,GACV/D,KAAKoD,IAAI+B,EAAE,GAAIA,EAAE,GACnB,CACF,CAuBA,SAASorJ,GAAG1vJ,GACV,IAAIkD,GAAK,EAAG3B,EAAS,MAALvB,EAAY,EAAIA,EAAEf,OAClC,IAAKE,KAAKgwH,SAAW,IAAIrnH,KAAO5E,EAAI3B,GAClCpC,KAAK2G,IAAI9F,EAAEkD,GACf,CAQA,SAASgL,GAAElO,GACT,IAAIkD,EAAI/D,KAAKgwH,SAAW,IAAIsgC,GAAEzvJ,GAC9Bb,KAAKkQ,KAAOnM,EAAEmM,IAChB,CAyBA,SAASsgJ,GAAG3vJ,EAAGkD,GACb,IAAI3B,EAAIgb,GAAGvc,GAAIsE,GAAK/C,GAAKquJ,GAAG5vJ,GAAIU,GAAKa,IAAM+C,GAAKurJ,GAAG7vJ,GAAI1B,GAAKiD,IAAM+C,IAAM5D,GAAKovJ,GAAG9vJ,GAAIiP,EAAI1N,GAAK+C,GAAK5D,GAAKpC,EAAGsM,EAAIqE,EAzKhH,SAAYjP,EAAGkD,GACb,IAAK,IAAI3B,GAAK,EAAG+C,EAAIjG,MAAM2B,KAAMuB,EAAIvB,GACnCsE,EAAE/C,GAAK2B,EAAE3B,GACX,OAAO+C,CACT,CAqKoHyrJ,CAAG/vJ,EAAEf,OAAQqP,QAAU,GAAI7G,EAAImD,EAAE3L,OACnJ,IAAK,IAAI4K,KAAK7J,EACZgL,EAAEvM,KAAKuB,EAAG6J,MAAQoF,KACZ,UAALpF,GACDnJ,IAAW,UAALmJ,GAAsB,UAALA,IACvBvL,IAAW,UAALuL,GAAsB,cAALA,GAA0B,cAALA,IAC5CmmJ,GAAGnmJ,EAAGpC,MAAQmD,EAAEtJ,KAAKuI,GACvB,OAAOe,CACT,CACA,SAASqlJ,GAAGjwJ,EAAGkD,GACb,IAAK,IAAI3B,EAAIvB,EAAEf,OAAQsC,KACrB,GAAI2uJ,GAAGlwJ,EAAEuB,GAAG,GAAI2B,GACd,OAAO3B,EACX,OAAQ,CACV,CAKA,SAAS4uJ,GAAGnwJ,GACV,OAAY,MAALA,OAAkB,IAANA,EAvNif,qBAAzL,gBAuNhS8N,GAAKA,KAAK5P,OAAO8B,GA2J9D,SAAYA,GACV,IAAIkD,EAAI8H,EAAEvM,KAAKuB,EAAG8N,GAAIvM,EAAIvB,EAAE8N,GAC5B,IACE9N,EAAE8N,QAAK,EACP,IAAIxJ,GAAI,CAEV,CADE,MACF,CACA,IAAI5D,EAAIwtJ,EAAGzvJ,KAAKuB,GAChB,OAAOsE,IAAMpB,EAAIlD,EAAE8N,GAAKvM,SAAWvB,EAAE8N,IAAKpN,CAC5C,CApKmE0vJ,CAAGpwJ,GAyMtE,SAAYA,GACV,OAAOkuJ,EAAGzvJ,KAAKuB,EACjB,CA3M2EqwJ,CAAGrwJ,EAC9E,CACA,SAASswJ,GAAGtwJ,GACV,OAAOuwJ,GAAGvwJ,IAAMmwJ,GAAGnwJ,IAAMhC,CAC3B,CACA,SAAS4qI,GAAG5oI,EAAGkD,EAAG3B,EAAG+C,EAAG5D,GACtB,OAAOV,IAAMkD,IAAc,MAALlD,GAAkB,MAALkD,IAAcqtJ,GAAGvwJ,KAAOuwJ,GAAGrtJ,GAAKlD,GAAMA,GAAKkD,GAAMA,EAEtF,SAAYlD,EAAGkD,EAAG3B,EAAG+C,EAAG5D,EAAGpC,GACzB,IAAI2Q,EAAIsN,GAAGvc,GAAI4K,EAAI2R,GAAGrZ,GAAIuE,EAAIwH,EAAI5J,EAAIoK,GAAEzP,GAAI6J,EAAIe,EAAIvF,EAAIoK,GAAEvM,GAEtDyK,GADJlG,EAAIA,GAAKzJ,EAAIqN,EAAI5D,IACJ4D,EAAGiE,GADIzF,EAAIA,GAAK7L,EAAIqN,EAAIxB,IACZwB,EAAGwC,EAAIpG,GAAKoC,EACrC,GAAIgE,GAAKgiJ,GAAG7vJ,GAAI,CACd,IAAK6vJ,GAAG3sJ,GACN,OAAO,EACT+L,GAAI,EAAItB,GAAI,CACd,CACA,GAAIE,IAAMF,EACR,OAAOrP,IAAMA,EAAI,IAAI4P,IAAMe,GAAK6gJ,GAAG9vJ,GAAKwwJ,GAAGxwJ,EAAGkD,EAAG3B,EAAG+C,EAAG5D,EAAGpC,GA4D9D,SAAY0B,EAAGkD,EAAG3B,EAAG+C,EAAG5D,EAAGpC,EAAG2Q,GAC5B,OAAQ1N,GACN,KAAKurJ,EACH,GAAI9sJ,EAAEm3H,YAAcj0H,EAAEi0H,YAAcn3H,EAAEo3H,YAAcl0H,EAAEk0H,WACpD,OAAO,EACTp3H,EAAIA,EAAEyO,OAAQvL,EAAIA,EAAEuL,OACtB,KAAKo+I,EACH,QAAS7sJ,EAAEm3H,YAAcj0H,EAAEi0H,aAAe74H,EAAE,IAAIgwJ,EAAGtuJ,GAAI,IAAIsuJ,EAAGprJ,KAChE,KAAKmQ,EACL,KAAKpV,EACL,KAAKgQ,EACH,OAAOiiJ,IAAIlwJ,GAAIkD,GACjB,KAAKiH,EACH,OAAOnK,EAAE4G,MAAQ1D,EAAE0D,MAAQ5G,EAAE6W,SAAW3T,EAAE2T,QAC5C,KAAKinF,EACL,KAAK4uD,EACH,OAAO1sJ,GAAKkD,EAAI,GAClB,KAAKhC,EACH,IAAI0J,EAAI+iJ,EACV,KAAK/iH,EACH,IAAInjC,EAzTwC,EAyTpCnD,EACR,GAAIsG,IAAMA,EAAIgjJ,GAAK5tJ,EAAEqP,MAAQnM,EAAEmM,OAAS5H,EACtC,OAAO,EACT,IAAIoC,EAAIoF,EAAE3M,IAAItC,GACd,GAAI6J,EACF,OAAOA,GAAK3G,EACdoB,GA/TmD,EA+T3C2K,EAAE1M,IAAIvC,EAAGkD,GACjB,IAAIyK,EAAI6iJ,GAAG5lJ,EAAE5K,GAAI4K,EAAE1H,GAAIoB,EAAG5D,EAAGpC,EAAG2Q,GAChC,OAAOA,EAAEnM,OAAO9C,GAAI2N,EACtB,KAAKg/I,EACH,GAAI6C,GACF,OAAOA,GAAG/wJ,KAAKuB,IAAMwvJ,GAAG/wJ,KAAKyE,GAEnC,OAAO,CACT,CA9FmEutJ,CAAGzwJ,EAAGkD,EAAGuE,EAAGlG,EAAG+C,EAAG5D,EAAGpC,GACtF,KA1OgD,EA0O1CiD,GAAQ,CACZ,IAAI8M,EAAIV,GAAK3C,EAAEvM,KAAKuB,EAAG,eAAgByK,EAAI6E,GAAKtE,EAAEvM,KAAKyE,EAAG,eAC1D,GAAImL,GAAK5D,EAAG,CACV,IAAI0B,EAAIkC,EAAIrO,EAAEH,QAAUG,EAAG0M,EAAIjC,EAAIvH,EAAErD,QAAUqD,EAC/C,OAAO5E,IAAMA,EAAI,IAAI4P,IAAMxN,EAAEyL,EAAGO,EAAGnL,EAAG+C,EAAGhG,EAC3C,CACF,CACA,QAAOuP,IAAKvP,IAAMA,EAAI,IAAI4P,IAuF5B,SAAYlO,EAAGkD,EAAG3B,EAAG+C,EAAG5D,EAAGpC,GACzB,IAAI2Q,EAzU4C,EAyUxC1N,EAAOqJ,EAAI4yC,GAAGx9C,GAAIyH,EAAImD,EAAE3L,OAAmB0O,EAAP6vC,GAAGt6C,GAAUjE,OACzD,GAAIwI,GAAKkG,IAAMsB,EACb,OAAO,EACT,IAAK,IAAIK,EAAI7H,EAAG6H,KAAO,CACrB,IAAIzB,EAAIjD,EAAE0E,GACV,KAAML,EAAIpB,KAAK3K,EAAI8H,EAAEvM,KAAKyE,EAAG2K,IAC3B,OAAO,CACX,CACA,IAAIQ,EAAI/P,EAAEgE,IAAItC,GACd,GAAIqO,GAAK/P,EAAEgE,IAAIY,GACb,OAAOmL,GAAKnL,EACd,IAAIuH,GAAI,EACRnM,EAAEiE,IAAIvC,EAAGkD,GAAI5E,EAAEiE,IAAIW,EAAGlD,GACtB,IAAK,IAAImM,EAAI8C,IAAKK,EAAI7H,GAAK,CAEzB,IAAIiF,EAAI1M,EADR6N,EAAIjD,EAAE0E,IACQQ,EAAK5M,EAAE2K,GACrB,GAAIvJ,EACF,IAAIosJ,EAAKzhJ,EAAI3K,EAAEwL,EAAIpD,EAAGmB,EAAG3K,EAAGlD,EAAG1B,GAAKgG,EAAEoI,EAAGoD,EAAIjC,EAAG7N,EAAGkD,EAAG5E,GACxD,UAAa,IAAPoyJ,EAAgBhkJ,IAAMoD,GAAMpP,EAAEgM,EAAGoD,EAAIvO,EAAG+C,EAAGhG,GAAKoyJ,GAAK,CACzDjmJ,GAAI,EACJ,KACF,CACA0B,IAAMA,EAAS,eAAL0B,EACZ,CACA,GAAIpD,IAAM0B,EAAG,CACX,IAAIwkJ,EAAK3wJ,EAAE8G,YAAa8pJ,EAAK1tJ,EAAE4D,YAC/B6pJ,GAAMC,GAAM,gBAAiB5wJ,GAAK,gBAAiBkD,KAAoB,mBAANytJ,GAAoBA,aAAcA,GAAmB,mBAANC,GAAoBA,aAAcA,KAAQnmJ,GAAI,EAChK,CACA,OAAOnM,EAAEwE,OAAO9C,GAAI1B,EAAEwE,OAAOI,GAAIuH,CACnC,CArHkComJ,CAAG7wJ,EAAGkD,EAAG3B,EAAG+C,EAAG5D,EAAGpC,GACpD,CArB0FwyJ,CAAG9wJ,EAAGkD,EAAG3B,EAAG+C,EAAGskI,GAAIloI,GAC7G,CAqBA,SAASqwJ,GAAG/wJ,GACV,SAAKgxJ,GAAGhxJ,IAqKV,SAAYA,GACV,QAASiuJ,GAAMA,KAAMjuJ,CACvB,CAvKgBixJ,CAAGjxJ,MAETkxJ,GAAGlxJ,GAAKmuJ,EAAKpB,GACZ17I,KAAKxB,GAAG7P,GACnB,CAIA,SAASmxJ,GAAGnxJ,GACV,IA+JF,SAAYA,GACV,IAAIkD,EAAIlD,GAAKA,EAAE8G,YAAavF,EAAgB,mBAAL2B,GAAmBA,EAAE3E,WAAauvJ,EACzE,OAAO9tJ,IAAMuB,CACf,CAlKO6vJ,CAAGpxJ,GACN,OAAO2uJ,GAAG3uJ,GACZ,IAAIkD,EAAI,GACR,IAAK,IAAI3B,KAAKrD,OAAO8B,GACnBgL,EAAEvM,KAAKuB,EAAGuB,IAAW,eAALA,GAAsB2B,EAAE5B,KAAKC,GAC/C,OAAO2B,CACT,CACA,SAASstJ,GAAGxwJ,EAAGkD,EAAG3B,EAAG+C,EAAG5D,EAAGpC,GACzB,IAAI2Q,EArQ4C,EAqQxC1N,EAAOqJ,EAAI5K,EAAEf,OAAQwI,EAAIvE,EAAEjE,OACnC,GAAI2L,GAAKnD,KAAOwH,GAAKxH,EAAImD,GACvB,OAAO,EACT,IAAIf,EAAIvL,EAAEgE,IAAItC,GACd,GAAI6J,GAAKvL,EAAEgE,IAAIY,GACb,OAAO2G,GAAK3G,EACd,IAAIyK,GAAK,EAAG2B,GAAI,EAAIzB,EA3QmC,EA2Q/BtM,EAAQ,IAAImuJ,QAAO,EAC3C,IAAKpxJ,EAAEiE,IAAIvC,EAAGkD,GAAI5E,EAAEiE,IAAIW,EAAGlD,KAAM2N,EAAI/C,GAAK,CACxC,IAAIyD,EAAIrO,EAAE2N,GAAIlD,EAAIvH,EAAEyK,GACpB,GAAIrJ,EACF,IAAI6H,EAAI8C,EAAI3K,EAAEmG,EAAG4D,EAAGV,EAAGzK,EAAGlD,EAAG1B,GAAKgG,EAAE+J,EAAG5D,EAAGkD,EAAG3N,EAAGkD,EAAG5E,GACrD,QAAU,IAAN6N,EAAc,CAChB,GAAIA,EACF,SACFmD,GAAI,EACJ,KACF,CACA,GAAIzB,GACF,IAAK4/I,EAAGvqJ,GAAG,SAASwJ,EAAGoD,GACrB,IAAK49I,EAAG7/I,EAAGiC,KAAQzB,IAAM3B,GAAKhM,EAAE2N,EAAG3B,EAAGnL,EAAG+C,EAAGhG,IAC1C,OAAOuP,EAAEvM,KAAKwO,EAClB,IAAI,CACFR,GAAI,EACJ,KACF,OACK,GAAMjB,IAAM5D,IAAK/J,EAAE2N,EAAG5D,EAAGlJ,EAAG+C,EAAGhG,GAAK,CACzCgR,GAAI,EACJ,KACF,CACF,CACA,OAAOhR,EAAEwE,OAAO9C,GAAI1B,EAAEwE,OAAOI,GAAIoM,CACnC,CAmEA,SAASkuC,GAAGx9C,GACV,OAtJF,SAAYA,EAAGkD,EAAG3B,GAChB,IAAI+C,EAAIpB,EAAElD,GACV,OAAOuc,GAAGvc,GAAKsE,EArMjB,SAAYtE,EAAGkD,GACb,IAAK,IAAI3B,GAAK,EAAG+C,EAAIpB,EAAEjE,OAAQyB,EAAIV,EAAEf,SAAUsC,EAAI+C,GACjDtE,EAAEU,EAAIa,GAAK2B,EAAE3B,GACf,OAAOvB,CACT,CAiMqBqxJ,CAAG/sJ,EAAG/C,EAAEvB,GAC7B,CAmJSsxJ,CAAGtxJ,EAAGuxJ,GAAIC,GACnB,CACA,SAASC,GAAGzxJ,EAAGkD,GACb,IAAI3B,EAAIvB,EAAEmvH,SACV,OAyCF,SAAYnvH,GACV,IAAIkD,SAAWlD,EACf,MAAY,UAALkD,GAAsB,UAALA,GAAsB,UAALA,GAAsB,WAALA,EAAuB,cAANlD,EAA0B,OAANA,CACjG,CA5CS0xJ,CAAGxuJ,GAAK3B,EAAc,iBAAL2B,EAAgB,SAAW,QAAU3B,EAAEiH,GACjE,CACA,SAASsmJ,GAAG9uJ,EAAGkD,GACb,IAAI3B,EAxUN,SAAYvB,EAAGkD,GACb,OAAY,MAALlD,OAAY,EAASA,EAAEkD,EAChC,CAsUUyuJ,CAAG3xJ,EAAGkD,GACd,OAAO6tJ,GAAGxvJ,GAAKA,OAAI,CACrB,CAlRAmO,GAAEnR,UAAUkF,MAvBZ,WACEtE,KAAKgwH,SAAWggC,GAAKA,GAAG,MAAQ,CAAC,EAAGhwJ,KAAKkQ,KAAO,CAClD,EAqBwBK,GAAEnR,UAAUuE,OApBpC,SAAY9C,GACV,IAAIkD,EAAI/D,KAAKuD,IAAI1C,WAAab,KAAKgwH,SAASnvH,GAC5C,OAAOb,KAAKkQ,MAAQnM,EAAI,EAAI,EAAGA,CACjC,EAiBiDwM,GAAEnR,UAAU+D,IAhB7D,SAAYtC,GACV,IAAIkD,EAAI/D,KAAKgwH,SACb,GAAIggC,GAAI,CACN,IAAI5tJ,EAAI2B,EAAElD,GACV,OAAOuB,IAAM0B,OAAI,EAAS1B,CAC5B,CACA,OAAOyJ,EAAEvM,KAAKyE,EAAGlD,GAAKkD,EAAElD,QAAK,CAC/B,EASuE0P,GAAEnR,UAAUmE,IARnF,SAAY1C,GACV,IAAIkD,EAAI/D,KAAKgwH,SACb,OAAOggC,QAAc,IAATjsJ,EAAElD,GAAgBgL,EAAEvM,KAAKyE,EAAGlD,EAC1C,EAK6F0P,GAAEnR,UAAUgE,IAJzG,SAAYvC,EAAGkD,GACb,IAAI3B,EAAIpC,KAAKgwH,SACb,OAAOhwH,KAAKkQ,MAAQlQ,KAAKuD,IAAI1C,GAAK,EAAI,EAAGuB,EAAEvB,GAAKmvJ,SAAY,IAANjsJ,EAAeD,EAAIC,EAAG/D,IAC9E,EA8BAswJ,GAAElxJ,UAAUkF,MArBZ,WACEtE,KAAKgwH,SAAW,GAAIhwH,KAAKkQ,KAAO,CAClC,EAmBwBogJ,GAAElxJ,UAAUuE,OAlBpC,SAAY9C,GACV,IAAIkD,EAAI/D,KAAKgwH,SAAU5tH,EAAI0uJ,GAAG/sJ,EAAGlD,GACjC,QAAIuB,EAAI,KAGDA,GADC2B,EAAEjE,OAAS,EACHiE,EAAE7B,MAAQmtJ,EAAG/vJ,KAAKyE,EAAG3B,EAAG,KAAMpC,KAAKkQ,MAAM,EAC3D,EAYiDogJ,GAAElxJ,UAAU+D,IAX7D,SAAYtC,GACV,IAAIkD,EAAI/D,KAAKgwH,SAAU5tH,EAAI0uJ,GAAG/sJ,EAAGlD,GACjC,OAAOuB,EAAI,OAAI,EAAS2B,EAAE3B,GAAG,EAC/B,EAQuEkuJ,GAAElxJ,UAAUmE,IAPnF,SAAY1C,GACV,OAAOiwJ,GAAG9wJ,KAAKgwH,SAAUnvH,IAAM,CACjC,EAK6FyvJ,GAAElxJ,UAAUgE,IAJzG,SAAYvC,EAAGkD,GACb,IAAI3B,EAAIpC,KAAKgwH,SAAU7qH,EAAI2rJ,GAAG1uJ,EAAGvB,GACjC,OAAOsE,EAAI,KAAOnF,KAAKkQ,KAAM9N,EAAED,KAAK,CAACtB,EAAGkD,KAAO3B,EAAE+C,GAAG,GAAKpB,EAAG/D,IAC9D,EA8BA2I,GAAEvJ,UAAUkF,MArBZ,WACEtE,KAAKkQ,KAAO,EAAGlQ,KAAKgwH,SAAW,CAC7BvyG,KAAM,IAAIlN,GACVlH,IAAK,IAAKumJ,IAAMU,IAChBlwI,OAAQ,IAAI7P,GAEhB,EAewB5H,GAAEvJ,UAAUuE,OAdpC,SAAY9C,GACV,IAAIkD,EAAIuuJ,GAAGtyJ,KAAMa,GAAG8C,OAAO9C,GAC3B,OAAOb,KAAKkQ,MAAQnM,EAAI,EAAI,EAAGA,CACjC,EAWiD4E,GAAEvJ,UAAU+D,IAV7D,SAAYtC,GACV,OAAOyxJ,GAAGtyJ,KAAMa,GAAGsC,IAAItC,EACzB,EAQuE8H,GAAEvJ,UAAUmE,IAPnF,SAAY1C,GACV,OAAOyxJ,GAAGtyJ,KAAMa,GAAG0C,IAAI1C,EACzB,EAK6F8H,GAAEvJ,UAAUgE,IAJzG,SAAYvC,EAAGkD,GACb,IAAI3B,EAAIkwJ,GAAGtyJ,KAAMa,GAAIsE,EAAI/C,EAAE8N,KAC3B,OAAO9N,EAAEgB,IAAIvC,EAAGkD,GAAI/D,KAAKkQ,MAAQ9N,EAAE8N,MAAQ/K,EAAI,EAAI,EAAGnF,IACxD,EAaAuwJ,GAAGnxJ,UAAUuH,IAAM4pJ,GAAGnxJ,UAAU+C,KANhC,SAAYtB,GACV,OAAOb,KAAKgwH,SAAS5sH,IAAIvC,EAAGiD,GAAI9D,IAClC,EAI2CuwJ,GAAGnxJ,UAAUmE,IAHxD,SAAY1C,GACV,OAAOb,KAAKgwH,SAASzsH,IAAI1C,EAC3B,EA6BAkO,GAAE3P,UAAUkF,MAvBZ,WACEtE,KAAKgwH,SAAW,IAAIsgC,GAAKtwJ,KAAKkQ,KAAO,CACvC,EAqBwBnB,GAAE3P,UAAUuE,OApBpC,SAAY9C,GACV,IAAIkD,EAAI/D,KAAKgwH,SAAU5tH,EAAI2B,EAAEJ,OAAO9C,GACpC,OAAOb,KAAKkQ,KAAOnM,EAAEmM,KAAM9N,CAC7B,EAiBiD2M,GAAE3P,UAAU+D,IAhB7D,SAAYtC,GACV,OAAOb,KAAKgwH,SAAS7sH,IAAItC,EAC3B,EAcuEkO,GAAE3P,UAAUmE,IAbnF,SAAY1C,GACV,OAAOb,KAAKgwH,SAASzsH,IAAI1C,EAC3B,EAW6FkO,GAAE3P,UAAUgE,IAVzG,SAAYvC,EAAGkD,GACb,IAAI3B,EAAIpC,KAAKgwH,SACb,GAAI5tH,aAAakuJ,GAAG,CAClB,IAAInrJ,EAAI/C,EAAE4tH,SACV,IAAK4/B,IAAMzqJ,EAAErF,OAASH,IACpB,OAAOwF,EAAEhD,KAAK,CAACtB,EAAGkD,IAAK/D,KAAKkQ,OAAS9N,EAAE8N,KAAMlQ,KAC/CoC,EAAIpC,KAAKgwH,SAAW,IAAIrnH,GAAExD,EAC5B,CACA,OAAO/C,EAAEgB,IAAIvC,EAAGkD,GAAI/D,KAAKkQ,KAAO9N,EAAE8N,KAAMlQ,IAC1C,EA4LA,IAAIqyJ,GAAK/C,GAAK,SAASzuJ,GACrB,OAAY,MAALA,EAAY,IAAMA,EAAI9B,OAAO8B,GArXtC,SAAYA,EAAGkD,GACb,IAAK,IAAI3B,GAAK,EAAG+C,EAAS,MAALtE,EAAY,EAAIA,EAAEf,OAAQyB,EAAI,EAAGpC,EAAI,KAAMiD,EAAI+C,GAAK,CACvE,IAAI2K,EAAIjP,EAAEuB,GACV2B,EAAE+L,EAAG1N,EAAGvB,KAAO1B,EAAEoC,KAAOuO,EAC1B,CACA,OAAO3Q,CACT,CA+W0CszJ,CAAGnD,GAAGzuJ,IAAI,SAASkD,GACzD,OAAOqrJ,EAAG9vJ,KAAKuB,EAAGkD,EACpB,IACF,EAmFA,WACE,MAAO,EACT,EArFQuM,GAAI0gJ,GAkBZ,SAASH,GAAGhwJ,EAAGkD,GACb,SAAOA,EAAIA,GAAKgB,KAAuB,iBAALlE,GAAiBgtJ,EAAG37I,KAAKrR,KAAOA,GAAK,GAAKA,EAAI,GAAK,GAAKA,EAAIkD,CAChG,CAeA,SAAS2M,GAAG7P,GACV,GAAS,MAALA,EAAW,CACb,IACE,OAAOguJ,EAAGvvJ,KAAKuB,EAEjB,CADE,MACF,CACA,IACE,OAAOA,EAAI,EAEb,CADE,MACF,CACF,CACA,MAAO,EACT,CACA,SAASkwJ,GAAGlwJ,EAAGkD,GACb,OAAOlD,IAAMkD,GAAKlD,GAAMA,GAAKkD,GAAMA,CACrC,EAjDC2rJ,IAAMp/I,GAAE,IAAIo/I,GAAG,IAAIt5F,YAAY,MAAQu3F,GAAMiC,IAAMt/I,GAAE,IAAIs/I,KAAS7tJ,GAAK8tJ,IAAMv/I,GAAEu/I,GAAGtvJ,YAAcwP,GAAK+/I,IAAMx/I,GAAE,IAAIw/I,KAASrkH,GAAMskH,IAAMz/I,GAAE,IAAIy/I,KAAStC,KAAQn9I,GAAI,SAASzP,GACzK,IAAIkD,EAAIitJ,GAAGnwJ,GAAIuB,EAAI2B,GAAKmI,EAAIrL,EAAE8G,iBAAc,EAAQxC,EAAI/C,EAAIsO,GAAGtO,GAAK,GACpE,GAAI+C,EACF,OAAQA,GACN,KAAKq3D,GACH,OAAOmxF,EACT,KAAKsC,GACH,OAAOluJ,EACT,KAAKmuJ,GACH,OAAOngJ,EACT,KAAKogJ,GACH,OAAO1kH,EACT,KAAKjtB,GACH,OAAOivI,EAEb,OAAO1pJ,CACT,GAkCA,IAAI0sJ,GAAKU,GAAmB,WAC1B,OAAOtxJ,SACT,CAF4B,IAErBsxJ,GAAK,SAAStwJ,GACnB,OAAOuwJ,GAAGvwJ,IAAMgL,EAAEvM,KAAKuB,EAAG,YAAcuuJ,EAAG9vJ,KAAKuB,EAAG,SACrD,EAAGuc,GAAKle,MAAMkU,QAId,IAAIs9I,GAAKnB,IA2BT,WACE,OAAO,CACT,EAzBA,SAASwC,GAAGlxJ,GACV,IAAKgxJ,GAAGhxJ,GACN,OAAO,EACT,IAAIkD,EAAIitJ,GAAGnwJ,GACX,OAAOkD,GAAK0J,GAnckP,8BAmc7O1J,GAncmH,0BAmczGA,GAncqX,kBAmc3WA,CACvC,CACA,SAAS2uJ,GAAG7xJ,GACV,MAAmB,iBAALA,GAAiBA,GAAK,GAAKA,EAAI,GAAK,GAAKA,GAAKkE,CAC9D,CACA,SAAS8sJ,GAAGhxJ,GACV,IAAIkD,SAAWlD,EACf,OAAY,MAALA,IAAmB,UAALkD,GAAsB,YAALA,EACxC,CACA,SAASqtJ,GAAGvwJ,GACV,OAAY,MAALA,GAAyB,iBAALA,CAC7B,CACA,IAAI8vJ,GAAKtC,EAhbT,SAAYxtJ,GACV,OAAO,SAASkD,GACd,OAAOlD,EAAEkD,EACX,CACF,CA4ac4uJ,CAAGtE,GAtNjB,SAAYxtJ,GACV,OAAOuwJ,GAAGvwJ,IAAM6xJ,GAAG7xJ,EAAEf,WAAamL,EAAE+lJ,GAAGnwJ,GACzC,EAqNA,SAASuxJ,GAAGvxJ,GACV,OAzBF,SAAYA,GACV,OAAY,MAALA,GAAa6xJ,GAAG7xJ,EAAEf,UAAYiyJ,GAAGlxJ,EAC1C,CAuBS+xJ,CAAG/xJ,GAAK2vJ,GAAG3vJ,GAAKmxJ,GAAGnxJ,EAC5B,CAOApB,EAAEqD,QA7BF,SAAYjC,EAAGkD,GACb,OAAO0lI,GAAG5oI,EAAGkD,EACf,CA4BD,CA3dD,CA2dGupJ,EAAIA,EAAGxqJ,SAEV,MAAM+vJ,EAAqBxF,EADlBC,EAAGxqJ,SAEZ,IAAIzB,EAAoB,CAAE5B,IAAOA,EAAEqzJ,SAAW,2BAA4BrzJ,EAAEszJ,SAAW,2BAA4BtzJ,EAAEuzJ,SAAW,2BAA4BvzJ,EAAEwzJ,OAAS,yBAA0BxzJ,EAAEyzJ,MAAQ,wBAAyBzzJ,EAAE0zJ,YAAc,8BAA+B1zJ,GAA3P,CAA+P4B,GAAK,CAAC,GAAI+xJ,EAAqB,CAAE3zJ,IAAOA,EAAE4zJ,WAAa,aAAc5zJ,EAAE6zJ,aAAe,eAAgB7zJ,EAAE8zJ,WAAa,aAAc9zJ,EAAE+zJ,aAAe,eAAgB/zJ,EAAEg0J,WAAa,aAAch0J,EAAEi0J,gBAAkB,kBAAmBj0J,EAAEk0J,uBAAyB,yBAA0Bl0J,GAA9P,CAAkQ2zJ,GAAM,CAAC,GAAIQ,EAAK,CAAE,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,MAAO,EAAG,KAAM,EAAG,OAAQ,EAAG,OAAQ9vJ,EAAG,OAAQhF,EAAG,OAAQkF,EAAG,OAAQnF,EAAG,OAAQgC,EAAG,OAAQO,EAAG,QAAUyyJ,EAAK,CAAE,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,OAClxB,IAAI30J,MAAM,GAAGi3C,KAAKhnC,OAAO28I,cAAc+H,EAAG,KAAKtqJ,KAAK,IACpDxK,OAAOktJ,YAAYltJ,OAAO0gB,QAAQo0I,GAAIxqJ,KAAK5J,GAAMA,EAAE+iI,aACnDzjI,OAAOktJ,YAAYltJ,OAAO0gB,QAAQm0I,GAAIvqJ,KAAK5J,GAAMA,EAAE+iI,aACnD,IAAIsxB,EAAK,GAAG/0J,OAAO6qB,OAAOgqI,GAAIvqJ,KAAK5J,GAAM,OAAOA,EAAEiG,SAAS,SAAQ6D,KAAK,MAAOwqJ,EAAK,IAAIroH,OAAO,IAAIooH,SAAW,MAO9G,SAASE,EAAGv0J,EAAGG,GACb,IAPS,CAACH,IACV,IAAKA,GAAKA,EAAEkhC,WAAaszH,KAAKC,aAC5B,OAAO,EACT,MAAMt0J,EAAIH,EACV,SAAUG,EAAEokC,aAAa3iC,EAAEyxJ,YAAclzJ,EAAEokC,aAAa3iC,EAAE0xJ,YAAcnzJ,EAAEokC,aAAa3iC,EAAE2xJ,UAAU,EAG9F,CAAGvzJ,GACN,OAAO,KACT,MAAME,EAAI,CACRw0J,QAAS10J,EAAEkjC,aAAathC,EAAEyxJ,UAC1Bh7D,OAAQr4F,EAAEkjC,aAAathC,EAAE4xJ,SAAWrzJ,EAAEk4F,OACtCs8D,YAAa30J,EAAEkjC,aAAathC,EAAE8xJ,cAAgBvzJ,EAAEw0J,YAChD9tC,MAAO7mH,EAAEkjC,aAAathC,EAAE6xJ,QAAUtzJ,EAAE0mH,MACpC+tC,gBAAgB,GACfvwJ,EAAIrE,EAAEkjC,aAAathC,EAAE0xJ,UACxB,GAAIjvJ,EACF,MAAO,IAAKnE,EAAG20J,QAASxwJ,GAC1B,MAAMpE,EAAID,EAAEkjC,aAAathC,EAAE2xJ,UAC3B,OAAOtzJ,EAAI,IAAKC,EAAG40J,QAAS70J,GAAM,IACpC,CACA,SAAS80J,EAAG/0J,EAAGG,GACb,OAAOH,EAAE2V,OAASxV,EAAEwV,IACtB,CAWA,SAASq/I,EAAGh1J,GACV,OAAOA,EAAEu6C,QAAQ,6DAA+Dv6C,EAAEiB,MAAQjB,EAAEu6C,QAAQ,cAAgBv6C,EAAEytG,IAAMhuG,MAAMsJ,KAAK/I,EAAE4mE,YAAYl/D,QAAQvH,GAAMA,EAAE+gC,WAAaszH,KAAKS,aAAe90J,EAAE6pE,cAAapgE,KAAKzJ,GAAMA,EAAE6pE,cAAalgE,KAAK,GACtP,CACA,SAASorJ,EAAGl1J,EAAGG,GACb,IAAK,MAAMD,KAAKC,EACd,GAAID,EAAE+tB,UAAYjuB,GAAKE,EAAE+tB,QAAQrW,SAAS5X,GACxC,OAAO,EACX,OAAO,CACT,CACA,SAASm1J,GACP3wI,KAAMxkB,EAAIiD,OAAO0L,SACjB6C,QAASrR,EACTi1J,aAAcl1J,IAEd,MAAMD,EAAI,IAAIC,EAAI,GAAKF,EAAEoiC,iBACvB,IAAIxgC,EAAE2xJ,aAAa3xJ,EAAEyxJ,eAAezxJ,EAAE0xJ,aAAa1xJ,EAAEyxJ,cACpDzpJ,KAAKjI,IAAM,CACZssB,QAAStsB,EACTklE,WAAY0tF,EAAG5yJ,EAAGxB,OAChBuH,QAAO,EAAGm/D,WAAYllE,KAAc,OAANA,IAAa4C,EAAI,GAAIe,EA1BzD,SAAYtF,GACV,IAAIG,EAAI,GACR,MAA2B,mBAAbH,EAAEu6C,SAAyBv6C,EAAEu6C,QAAQ,OAASp6C,EAAI,CAACH,IAAK,IACjEG,KACAV,MAAMsJ,KAAK/I,EAAEoiC,iBAAiB,oCACjCx4B,KAAK1J,IAAM,CAAG8qB,KAAM9qB,EAAG6nC,KAAMitH,EAAG90J,OAAOwH,QAAO,EAAGqgC,KAAM7nC,QAAWA,IAAKA,EAAE4gB,MAAMwzI,KACnF,CAoB6De,CAAG,SAAUr1J,EAAIA,EAAE0B,KAAO1B,GACrF,IAAK,MAAQgrB,KAAMrpB,EAAGomC,KAAMtzB,KAAOnP,EAAG,CACpC,MAAMjG,EAAI2tJ,EAAGv4I,GACb,GAAOpV,GAAMA,EAAEqW,OAAO5N,SAAS,oBAAwBotJ,EAAGvzJ,EAAG1B,KAAMsE,EAAE+8B,MAClE/1B,GAAMA,EAAE0iB,QAAQrW,SAASjW,IAAMozJ,EAAGxpJ,EAAE+pJ,UAAWj2J,KAC9C,CACF,GAAIsC,EAAE44C,QAAQ,OAAQ,CACpB,MAAMhvC,EAAI5J,EAAE4zJ,QAAQ,WAAa5zJ,EAAE4zJ,QAAQ,YAAc5zJ,EACzD4C,EAAE7B,KAAK,CAAEurB,QAAS1iB,EAAG+pJ,UAAWj2J,IAChC,QACF,CACAkF,EAAE7B,KAAK,CAAEurB,QAAStsB,EAAG2zJ,UAAWj2J,GAClC,CACF,CACA,MAAMD,EAAImF,EAAEmD,QACV,CAAC/F,EAAG8S,IAAMlQ,EAAE4/D,WAAW9kE,GA5C3B,SAAYW,EAAGG,GACb,SAAU40J,EAAG/0J,EAAEs1J,UAAWn1J,EAAEm1J,YAAct1J,EAAEiuB,UAAY9tB,EAAE8tB,QAC5D,CA0CiCunI,CAAG7zJ,EAAGtC,OAAQoV,IAE7C,IAAK,MAAQwZ,QAAStsB,EAAG2zJ,UAAW7gJ,KAAOrV,EAAG,CAC5C,IAAKqV,EAAEghJ,WAAY,CACjB1nJ,EAAE6D,KACA,kKACA,CACEqc,QAAStsB,EACT2zJ,UAAW7gJ,IAGf,QACF,CACA,MAAMpV,EAAI,CACRq1J,QAASjgJ,EAAEghJ,WAAWzQ,MACtB3sD,OAAQ5jF,EAAEghJ,WAAWp9D,OACrBwuB,MAAOpyG,EAAEghJ,WAAW5uC,MACpB8tC,YAAalgJ,EAAEghJ,WAAWd,aAEA,UAA5BlgJ,EAAEghJ,WAAWC,WAAyBr2J,EAAEy1J,QAAUrgJ,EAAEghJ,WAAWE,OAAqC,UAA5BlhJ,EAAEghJ,WAAWC,aAA2Br2J,EAAEw1J,QAAUpgJ,EAAEghJ,WAAWE,QAAS11J,EAAEyC,KAAK,CACvJurB,QAAStsB,EACTklE,WAAYxnE,GAEhB,CACA,MAAMoH,EAAIxG,EAAEyH,QACV,EAAGm/D,WAAYllE,MAAoD,KAAtC,MAALA,OAAY,EAASA,EAAEizJ,mBAAiC,MAALjzJ,GAAaA,EAAEizJ,kBAC1Fv0J,OACF,MAAO,CACLu1J,eAAgB31J,EAChB41J,oBAAqB51J,EAAEI,OAASoG,EAChCqvJ,yBAA0BrvJ,EAC1BsvJ,mBAAoB32J,EAExB,CACA,SAAS42J,GACPxkJ,QAASxR,IAET,MAAO,IACF,IAAI4F,IACLuvJ,EAAG,CAAE3jJ,QAASxR,IAAK41J,eAAehsJ,KAAKzJ,GAAMA,EAAE0mE,YAAc,YAAa1mE,EAAE0mE,WAAa1mE,EAAE0mE,WAAWguF,QAAU,OAAMntJ,OAAOoE,UAGnI,CACA,MAAMmqJ,EACJ/tJ,YAAY/H,GACV0B,EAAEtB,KAAM,QAAS,KACjBsB,EAAEtB,KAAM,eAAe,GACvBsB,EAAEtB,KAAM,iBACRsB,EAAEtB,KAAM,cAAc,GACtBsB,EAAEtB,KAAM,iBACRsB,EAAEtB,KAAM,kBACRsB,EAAEtB,KAAM,iBAAkB,IAC1BsB,EAAEtB,KAAM,sBAAuB,GAC/BsB,EAAEtB,KAAM,2BAA4B,GACpCsB,EAAEtB,KAAM,wBACRsB,EAAEtB,KAAM,cAAe,IACvBsB,EAAEtB,KAAM,YAAa,IAIrBsB,EAAEtB,KAAM,QAAQ,KACdA,KAAK21J,UAAY,CACf31J,KAAK41J,oBACL51J,KAAK61J,oBAAoBznJ,SAASjN,MAClCnB,KAAK81J,oBACL91J,KAAK+1J,oBACJ/1J,KAAKg2J,gBAAgB,IAK1B10J,EAAEtB,KAAM,WAAW,KACjBA,KAAKi2J,YAAY3uJ,SAAS1H,GAAMA,MAAMI,KAAK21J,UAAUruJ,SAAS1H,GAAMA,KAAI,IAG1E0B,EAAEtB,KAAM,kBAAmBJ,IACzB,GAAIA,EAAEwL,SAAWgoJ,EAAGO,uBAAwB,CAC1C,MAAQuC,kBAAmBv2J,GAAMC,EACjCD,EAAIK,KAAKwkF,OAASxkF,KAAK8sI,SACzB,KAGFxrI,EAAEtB,KAAM,WAAYJ,IAClBI,KAAKm2J,qBAAqBC,QAAQx2J,GAClC,MAAMD,EAAIK,KAAK61J,oBAAoBj2J,GACnCI,KAAKi2J,YAAY9zJ,KAAKxC,GAAG,IAAMK,KAAKm2J,qBAAqBE,UAAUz2J,IAAG,IAGxE0B,EAAEtB,KAAM,qBAAqB,KAC3B,MAAQs2J,aAAc12J,GAAMI,KAAKiR,QAAStR,EAAI,KAC5CK,KAAKu2J,cAAgBv2J,KAAKu2J,aAAc,EAAI3mJ,EAAEwjJ,EAAGE,aAAc,CAAC,EAAG1zJ,IAAKI,KAAKw2J,eAAiBzvJ,aAAa/G,KAAKw2J,eAAgBx2J,KAAKw2J,cAAgB9yJ,YAAW,KAC9J1D,KAAKu2J,aAAc,EAAI3mJ,EAAEwjJ,EAAGG,WAAY,CAAC,EAAG3zJ,GAAII,KAAKg2J,gBAAgB,GACpEh2J,KAAKy7B,MAAM,EACb33B,EAAI,CAAE2yJ,SAAS,EAAIC,SAAS,GAC/B,OAAOh0J,OAAOsE,iBAAiB,SAAUrH,EAAGmE,GAAI,IAAMpB,OAAOmE,oBAAoB,SAAUlH,EAAGmE,EAAE,IAGlGxC,EAAEtB,KAAM,uBAAwBJ,IAC9B,MAAMD,EAAI,IAAIm/I,kBAAiB,KAC7B9+I,KAAKg2J,gBAAgB,IAEvB,OAAOr2J,EAAEy2J,QAAQx2J,EAAG,CAElB+2J,eAAe,EAEfrwF,YAAY,EACZswF,gBAAiB,CACfv1J,EAAE0xJ,SACF1xJ,EAAEyxJ,SACFzxJ,EAAE4xJ,OACF5xJ,EAAE6xJ,MACF7xJ,EAAE8xJ,YACF,QACA,SAGF0D,WAAW,EAEXC,SAAS,IACP,IAAMn3J,EAAEo3J,YAAY,IAG1Bz1J,EAAEtB,KAAM,qBAAqB,KAC3B,MAAQs2J,aAAc12J,GAAMI,KAAKiR,QAAStR,EAAI,IAAIq3J,gBAAe,KAC/Dh3J,KAAKi3J,aAAej3J,KAAKi3J,YAAa,EAAIrnJ,EAAEwjJ,EAAGI,aAAc,CAAC,EAAG5zJ,IAAKI,KAAKk3J,eAAiBnwJ,aAAa/G,KAAKk3J,eAAgBl3J,KAAKk3J,cAAgBxzJ,YAAW,KAC5J1D,KAAKi3J,YAAa,EAAIrnJ,EAAEwjJ,EAAGK,WAAY,CAAC,EAAG7zJ,GAAII,KAAKg2J,gBAAgB,GACnEh2J,KAAKy7B,MAAM,IAEhB,OAAO97B,EAAEy2J,QAAQhoJ,SAASjN,MAAO,IAAMxB,EAAEo3J,YAAY,IAGvDz1J,EAAEtB,KAAM,oBAAoB,KAC1B,MAAMJ,EAvsBZ,SAAYH,EAAGG,EAAI,KACjB,IAAID,EACJ,MAAO,IAAImE,KACTiD,aAAapH,GAAIA,EAAI+D,YAAW,KAC9BjE,EAAEM,MAAMC,KAAM8D,EAAE,GACflE,EAAE,CAET,CAgsBgBu3J,EAAIrzJ,IACZ,IAAIpE,EACJ,IAAK,MAAMsE,KAAKF,EAAG,CACjB,MAAMiB,EAAIf,EACV,GAAmB,SAAfe,EAAEk9B,SAAqB,MAC3B,MAAMpjC,EAAImB,KAAKq1J,eAAersE,MAAM9iF,GAAMA,EAAEwnB,UAAY3oB,IACxD,GAAIlG,EAAG,CACLa,EAAIb,EACJ,KACF,CACF,CACAmB,KAAKo3J,eAAsB,MAAL13J,OAAY,EAASA,EAAEguB,QAAS1tB,KAAKg2J,gBAAgB,GAC1Eh2J,KAAKy7B,OAAQ97B,EAAKmE,IACnBlE,EAAEkE,EAAE+wB,eAAe,EAErB,OAAOnyB,OAAOsE,iBAAiB,YAAarH,EAAG,CAAE+2J,SAAS,IAAO,IAAMh0J,OAAOmE,oBAAoB,YAAalH,EAAE,IAEnH2B,EAAEtB,KAAM,sBAAsB,KAC5B4P,EACEwjJ,EAAGM,gBACH,CACE2D,SAAUr3J,KAAKq1J,eAAehsJ,KAAKzJ,IAAM,CAEvC03J,YAAa13J,EAAE03J,YACfC,UAAW33J,EAAE23J,UACbjxF,WAAY1mE,EAAE0mE,WACdkxF,UAAWx3J,KAAKo3J,iBAAmBx3J,EAAE8tB,YAEvC6nI,yBAA0Bv1J,KAAKu1J,yBAC/BD,oBAAqBt1J,KAAKs1J,qBAE5Bt1J,KAAKiR,QAAQqlJ,aACd,IAMHh1J,EAAEtB,KAAM,kBAAkB,KACxB,MAAQq1J,eAAgBz1J,EAAG01J,oBAAqB31J,EAAG41J,yBAA0BzxJ,GAAM8wJ,EAAG,CACpF3jJ,QAASjR,KAAKiR,UACZvR,EAAIE,EAAEyJ,KAAI,EAAGqkB,QAAS1pB,EAAGsiE,WAAYvhE,MAAQ,CAC/C2oB,QAAS1pB,EACTszJ,YAAatzJ,EAAE4pB,wBACf04C,WAAYvhE,EACZwyJ,UAAWvzJ,EAAEyzJ,gBAAgB,CAC3BC,cAAc,EACdC,oBAAoB,QAGxB9E,EAAGnzJ,EAAGM,KAAKq1J,kBAAoBr1J,KAAKi2J,YAAY3uJ,SAAStD,GAAMA,MAAMhE,KAAKi2J,YAAc,GAAIj2J,KAAKq1J,eAAiB31J,EAAGE,EAAE0H,SAAQ,EAAGomB,QAAS1pB,KAAQhE,KAAKo2J,QAAQpyJ,KAAKhE,KAAKs1J,oBAAsB31J,EAAGK,KAAKu1J,yBAA2BzxJ,EAAE,IAEvO9D,KAAKiR,QAAUrR,EAAGI,KAAKm2J,qBAAuB,IAAIyB,sBAC/Cj4J,IACC,MAAMmE,EAAI9D,KAAKq1J,eACf,IAAK,MAAM31J,KAAKC,EACd,GAAID,EAAEm4J,eACJ,IAAK,MAAM7zJ,KAAKF,EACdE,EAAE0pB,UAAYhuB,EAAE4d,SAAWtZ,EAAEszJ,YAAc53J,EAAEo4J,iBAAkB9zJ,EAAEuzJ,UAAY73J,EAAE4d,OAAOm6I,gBAAgB,CACpGC,cAAc,EACdC,oBAAoB,KAE5B33J,KAAKq1J,eAAiBvxJ,EAAG9D,KAAK+3J,oBAAoB,GAEpD,CAAEC,UAAW,KAEjB,EAEF,MAAQtxJ,MAAOuxJ,EAAI5xJ,UAAW6xJ,GAAO9xJ,KAAM+xJ,EAAKhpJ,OAAsCipJ,EAAK,CAAC34J,EAAGG,IAAMA,EAAGy4J,EAAK,CAAC54J,EAAGG,EAAGD,KAClH,MAAMmE,EAAIq0J,EAAGv4J,EAAEuC,KAAKxC,GAAK,GACzB,OAAOF,EAAE2D,IAAIzD,EAAGmE,GAAIA,CAAC,EACpBw0J,EAAK,CAAC74J,EAAGG,EAAGD,KACb,MAAMmE,EAAIs0J,EAAI14J,EAAoB,IAAIuD,IAAOe,EAAI,GAAIe,EAAI,GACzD,IAAIlG,GAAKw5J,EAAG34J,EAAGsE,EAAGF,EAAExE,KAAK,CAAE,GAAIG,GAAK,GAAIA,IAAKyG,GAAKrH,EAClD,KAAOA,EAAImF,EAAElE,QACXoG,GAAI,EAAInB,EAAElG,GAAKq5J,EAAGl0J,EAAEnF,KAAMuC,EAAGzB,GAC/B,MAAO,IAAMoF,EAAEwE,KAAK,KAAO,IAC3B,SAASnI,EAAE8S,EAAGpV,GACZ,GAAIoH,EACF,OAAOA,GAAKA,EAAGpH,EACjB,MAAMkM,EAAIlH,EAAExE,KAAKU,KAAMkU,EAAGpV,GAC1B,cAAekM,GACb,IAdsE,SAepE,GAAU,OAANA,EAAY,OAAOA,EACzB,IAhBuD,SAiBrD,OAAOtL,EAAEyD,IAAI6H,IAAMqtJ,EAAG34J,EAAGsE,EAAGgH,GAEhC,OAAOA,CACT,GAEF,IAAI5K,EAAoB,CAAEX,IAAOA,EAAE84J,UAAY,YAAa94J,EAAE+4J,aAAe,eAAgB/4J,EAAEg5J,MAAQ,QAASh5J,EAAEi5J,qBAAuB,uBAAwBj5J,EAAEk5J,YAAc,cAAel5J,EAAEm5J,WAAa,aAAcn5J,EAAEo5J,aAAe,eAAgBp5J,EAAEq5J,cAAgB,gBAAiBr5J,EAAEs5J,YAAc,cAAet5J,EAAEu5J,mBAAqB,qBAAsBv5J,GAArV,CAAyVW,GAAK,CAAC,GAqBvX,MAAM64J,EACJtxJ,aAAcmwF,OAAQl4F,EAAG02J,aAAc32J,IACrC2B,EAAEtB,KAAM,gBAAiC,IAAIiD,KAC7C3B,EAAEtB,KAAM,iBACRsB,EAAEtB,KAAM,eACRA,KAAKk5J,cAAgBt5J,EAAGI,KAAKm5J,YAAc,CAACr1J,EAAGpE,IAAMkQ,EAAE9L,EAAGpE,EAAGC,EAC/D,CAEA8J,qBAAqB7J,GACnB,GAAIA,EAAEwL,SAAWhL,EAAE04J,cAAe,CAChC,MAAQxuJ,KAAM3K,EAAGy5J,eAAgBt1J,GAAMlE,EAAGF,EAAIM,KAAKq5J,cAAcl2J,IAAIW,GACrEpE,GAAKA,EAAE82B,SAAS72B,GAAID,EAAE4K,KAAO3K,EAAGK,KAAKq5J,cAAcj2J,IAAIU,EAAGpE,IAAM8N,EAAE3F,MAAM,iDAAkD,CACxHuxJ,eAAgBt1J,EAChBwG,KAAM3K,EACN05J,cAAer5J,KAAKq5J,eAExB,CACF,CAKA1qG,UAAU/uD,GACR,MAAMD,EA5zBD,GAAGksE,YAAYpmE,SAAST,KAAKE,SAASQ,SAAS,IAAI2B,MAAM,KA4zB9CvD,EAAIlE,EAAEk4F,QAAU93F,KAAKk5J,cACrCl5J,KAAKq5J,cAAcj2J,IAAIzD,EAAG,IACrBC,IAEL,MAAMF,EAAI,CACRo4F,OAAQh0F,EACR8f,MAAO,OACPre,GAAI5F,EACJkc,OAAQy8I,EAAG14J,IAEb,OAAOI,KAAKm5J,YAAY/4J,EAAEw4J,WAAYl5J,GAAI,KACxCM,KAAKm5J,YAAY/4J,EAAEy4J,aAAcn5J,GAAIM,KAAKq5J,cAAc11J,OAAOhE,EAAE,CAErE,EAEF,MAAM25J,EACJ3xJ,aAAcmwF,OAAQl4F,EAAGqR,QAAStR,IAChC2B,EAAEtB,KAAM,UACRsB,EAAEtB,KAAM,WACRsB,EAAEtB,KAAM,gBACRA,KAAK83F,OAASl4F,EAAGI,KAAKiR,QAAUtR,CAClC,CACAgvD,UAAU/uD,GACR,OAAOI,KAAKu5J,cAAgB/rJ,EAAE03D,IAC5B,0FACCllE,KAAKu5J,aAAe35J,EAAG,KACxBI,KAAKu5J,kBAAe,CAAM,CAE9B,CACAC,eAAe55J,GACb,GAAIA,EAAEwL,SAAWhL,EAAE24J,aAAe/4J,KAAKu5J,aAAc,CACnD,MAAQnE,OAAQz1J,GAAMC,EACtB61J,EAAG,CAAExkJ,QAASjR,KAAKiR,UAAW1J,SAAS5H,EAAE85J,IAAIl0J,KAAOvF,KAAKu5J,aAAa55J,EACxE,CACF,EAEF,MAAa,GACX,6BACA,gCACA,yBAEC8O,EAAI,MAAMA,EAEX1G,YAAYnI,GACV,IAAIwB,EACJ,GAAgB,iBAALxB,GAAwB,MAALA,IAAaA,EAAEk4F,OAC3C,MAAM,IAAI1zF,MACR,+HAEJ,MACEs1J,UAAW/5J,EACX2gG,oBAAqBx8F,EACrB61J,kBAAmBj6J,EACnBo4F,OAAQ9zF,EACRowJ,YAAarvJ,EACbuhH,MAAOznH,EACPy3J,aAAcpwJ,GACZtG,EACJ,UAAW8C,OAAS,IAAK,CACvB,IAh4BN,WACE,IAAIjD,EACJ,IACE,OAA4B,OAAnBA,EAAIiD,OAAOiiB,UAAe,EAASllB,EAAEmP,SAASwG,QAAU1S,OAAOkM,SAASwG,IAGnF,CAFE,MACA,OAAO,CACT,CACF,CAy3BWwkJ,GACH,OAAO55J,KAAK65J,oBAAqB,EAAIv5J,QAAQC,QAAQ,MACvD,GAAIZ,GAAKstJ,EAAGttJ,GAAgB,kBAALmE,IAAmB9D,KAAK85J,qBAAuBh2J,GAAgB,kBAALpE,IAAmBM,KAAK65J,mBAAqBn6J,GAAIM,KAAK83F,OAAS9zF,EAAGhE,KAAKsmH,MAAQznH,EAAGmB,KAAKo0J,YAAcrvJ,EAAG/E,KAAK+5J,iBAAiB7zJ,GAAIlG,KAAKirI,YACtN,OAAOz9H,EAAE03D,IAAI,sDAAuD5kE,QAAQC,QAAQkO,EAAEurJ,eACxFh6J,KAAK85J,uBAAyB95J,KAAKg6J,cAAgB,IAAItE,EAAG,CACxD59D,OAAQ9zF,EACRsiH,MAAOznH,EACPu1J,YAAarvJ,EACbuxJ,aAAct2J,KAAKs2J,aACnB2D,6BAAsD,OAAvB74J,EAAIxB,EAAEs6J,mBAAwB,EAAS94J,EAAE64J,gCACrEj6J,KAAK65J,qBAAuB75J,KAAKm6J,YAAc,IAAIlB,EAAG,CAAEnhE,OAAQ9zF,EAAGsyJ,aAAct2J,KAAKs2J,eAAiBt2J,KAAKo6J,UAAY,IAAId,EAAG,CAClIxhE,OAAQ9zF,EACRiN,QAAS,CACP6mF,OAAQ93F,KAAK83F,OACbwuB,MAAOtmH,KAAKsmH,MACZ8tC,YAAap0J,KAAKo0J,YAClBkC,aAAct2J,KAAKs2J,iBAElB5zJ,OAAOsE,iBAAiB,WAAY6C,IACvC,IAAI9H,EAAG+M,EAAGurJ,EAx4BN56J,EAy4BJ,GAx4BkB,iBADdA,EAy4BGoK,GAx4BGS,MAAqB7K,EAAE6K,MAAY,WAAY7K,EAAE6K,MAlCxD,wBAkCgE7K,EAAE6K,KAAKiN,OAw4B/D,CACT,GAAI/J,EAAE03D,IAAI,mBAAoBr7D,EAAES,MAAOT,EAAES,KAAKc,SAAWhL,EAAE44J,mBAEzD,YADA/L,GAAG,GAGLjtJ,KAAK85J,uBAAqD,OAA3B/3J,EAAI/B,KAAKg6J,gBAA0Bj4J,EAAEy3J,eAAe3vJ,EAAES,OAAQtK,KAAK65J,qBAAiD,OAAzB/qJ,EAAI9O,KAAKm6J,cAAwBrrJ,EAAE0qJ,eAAe3vJ,EAAES,MAA+B,OAAvB+vJ,EAAIr6J,KAAKo6J,YAAsBC,EAAEb,eAAe3vJ,EAAES,MAC1O,KAx7BR,SAAY7K,EAAGG,EAAI,KACjB,IAAID,EAAI+C,OAAOkM,SAASwG,KACxB,MAAM1V,EAAI2V,aAAY,KACpB,MAAMrR,EAAItB,OAAOkM,SAASwG,KAC1BpR,IAAMrE,IAAMA,EAAIqE,EAAGvE,EAAEuE,GAAG,GACvBpE,EAEL,CAk7BU06J,EAAG,KACL1qJ,EACExP,EAAEu4J,YACF,CACE9+I,OAAQzZ,EAAEu4J,YACV4B,mBAAoBnsJ,SAASyzB,iBAC3B,IAAIxgC,EAAE0xJ,aACNjzJ,QAEJE,KAAKs2J,aACN,IAEH,MAAQjB,eAAgBnhJ,EAAGohJ,oBAAqBx2J,EAAGy2J,yBAA0BvqJ,GAAMhL,KAAK85J,qBAAuBlF,EAAG,CAChH3jJ,QAAS,CACP6mF,OAAQ93F,KAAK83F,OACbwuB,MAAOtmH,KAAKsmH,MACZ8tC,YAAap0J,KAAKo0J,eAEjB,CACHiB,eAAgB,GAChBC,oBAAqB,EACrBC,yBAA0B,GACzB9nJ,EAAIyG,EAAEpU,OACT,OAAO8P,EACLxP,EAAEm4J,UACF,CACE1+I,OAAQzZ,EAAEm4J,UACViC,WAAW,EACX70B,KAAMl4H,EACN8sJ,mBAAoB9sJ,EACpBqqF,OAAQ93F,KAAK83F,OACb2iE,mBAAoBz6J,KAAK85J,qBACzBY,qBAAsB16J,KAAK65J,mBAC3Bc,2BAA4B77J,EAC5B87J,gCAAiC5vJ,GAEnChL,KAAKs2J,cACJt2J,KAAKirI,aAAc,EAAI3qI,QAAQC,QAAQkO,EAAEurJ,cAC9C,CACF,CACAjyJ,wBAAwBnI,GACtB,GAAIA,EACFI,KAAKs2J,aAAep3J,MAAMkU,QAAQxT,GAAKA,EAAI,CAACA,OACzC,CACH,MAAMD,EAAI+C,OAAOkM,SAASisJ,gBAAiB/2J,EAAInE,EAAIm7J,EAAG9xE,MAAMtpF,GAAMC,EAAE0X,SAAS3X,KAE3Eo7J,EAAG9xE,MAAMtpF,GAAM0O,SAAS2sJ,SAASxzJ,SAAS7H,KAE5C,IAAKoE,EACH,MAAM,IAAIM,MACR,yGAEJpE,KAAKs2J,aAAe,CAACxyJ,EACvB,CACF,CACAiE,iBAAiBnI,EAAGD,GAClB,IAAKK,KAAK65J,mBACR,MAAO,OAET,MAA6Cn6J,EAAgB,iBAALE,EAAgBA,EAAID,EAC5E,GAAU,UADY,iBAALC,EAAgBA,EAAI,QACnB,CAChB,IAAKI,KAAKo6J,UACR,MAAM,IAAIh2J,MACR,oFAEJ,OAAOpE,KAAKo6J,UAAUzrG,UAAUjvD,EAAE82B,SACpC,CACA,IAAKx2B,KAAKm6J,YACR,MAAM,IAAI/1J,MACR,uFAEJ,OAAOpE,KAAKm6J,YAAYxrG,UAAUjvD,EACpC,CAEAqI,gBAAgBnI,GACd,MAAQu0J,QAASx0J,EAAGm4F,OAAQh0F,EAAGswJ,YAAa10J,EAAG4mH,MAAOtiH,GAAMpE,EAC5D,IAAKI,KAAK85J,qBACR,OAAO,KACT,GAAIn6J,EAAG,CACL,MAAMoF,EAAI,IACLjB,EAAI,CAAE,CAACzC,EAAE4xJ,QAASnvJ,GAAM,CAAC,KACzBpE,EAAI,CAAE,CAAC2B,EAAE8xJ,aAAczzJ,GAAM,CAAC,KAC9BsE,EAAI,CAAE,CAAC3C,EAAE6xJ,OAAQlvJ,GAAM,CAAC,EAC3B,CAAC3C,EAAEyxJ,UAAWnzJ,GAEhB,GAAImE,IAAMiB,EAAE1D,EAAE4xJ,QAAUnvJ,QAAkB,IAAdlE,EAAE20J,QAC5B,MAAO,IACFxvJ,EACH,CAAC1D,EAAE2xJ,UAAWpzJ,EAAE20J,SAEpB,QAAkB,IAAd30J,EAAE00J,QACJ,MAAO,IACFvvJ,EACH,CAAC1D,EAAE0xJ,UAAWnzJ,EAAE00J,QAEtB,CACA,OAAO9mJ,EAAE6D,KAAK,sCAAuC,IAAKzR,IAAM,IAClE,CACAmI,6BACE,OAAO/H,KAAK85J,sBAAwB95J,KAAK85J,qBAAsB95J,KAAK85J,oBACtE,CACA/xJ,+BACE,OAAO/H,KAAK65J,oBAAsB75J,KAAK65J,mBAAoB75J,KAAK65J,kBAClE,CACA9xJ,yBAAyBnI,GACvB,MAAMD,EAAI,CACRm4F,OAAQ93F,KAAK83F,OACbs8D,YAAap0J,KAAKo0J,YAClB9tC,MAAOtmH,KAAKsmH,YAEI,IAAd1mH,EAAE20J,SAAsB30J,EAAEu0J,cAUZ,IAAdv0J,EAAE00J,SAAsB10J,EAAEu0J,QA/OlC,SAAY10J,EAAGG,GACbgQ,EACE,uBACA,CACEiK,OAAQ,0BACLpa,GAELG,EAEJ,CA6NMo7J,CACE,IACKr7J,KACAC,GAELI,KAAKs2J,cAcT9oJ,EAAE3F,MAAM,6DACV,CAIAE,sBACE,OAAO0tJ,EAAG,CACRxkJ,QAAS,CACP6mF,OAAQ93F,KAAK83F,OACbwuB,MAAOtmH,KAAKsmH,MACZ8tC,YAAap0J,KAAKo0J,cAGxB,GAEF9yJ,EAAEmN,EAAG,eAAe,GAAKnN,EAAEmN,EAAG,gBAAiB,MAAOnN,EAAEmN,EAAG,cAAe,MAAOnN,EAAEmN,EAAG,YAAa,MAAOnN,EAAEmN,EAAG,wBAAwB,GAAKnN,EAAEmN,EAAG,sBAAsB,GAAKnN,EAAEmN,EAAG,UAAWnN,EAAEmN,EAAG,SAAUnN,EAAEmN,EAAG,eAAgBnN,EAAEmN,EAAG,eAAgBnN,EAAEmN,EAAG,gBAC1P,IAAIwsJ,GAAKxsJ,EC/+CT,IAUI,GAVA8B,GAAI,CAAEzN,QAAS,CAAC,GAAK,GAAI,CAAC,EAonBUyN,GAAEzN,QAzmB1C,WACE,GAAI,GAAI,OAAO,GACf,GAAK,EACL,IAAIiC,EAAI,EAAIrF,EAAImC,OAAOq6C,IAAI,iBAAkBh2C,EAAIrE,OAAOq6C,IAAI,kBAAmBhoC,EAAInV,OAAOK,UAAUC,eAAgBkC,EAAIwD,EAAEm2J,mDAAmDC,kBAAmBh1J,EAAI,CAAEhC,KAAK,EAAIme,KAAK,EAAI84I,QAAQ,EAAIC,UAAU,GAC9O,SAAS5vJ,EAAEtM,EAAGgG,EAAG8F,GACf,IAAI5J,EAAGjB,EAAI,CAAC,EAAGsK,EAAI,KAAM4lJ,EAAI,KAE7B,IAAKjvJ,UADC,IAAN4J,IAAiBP,EAAI,GAAKO,QAAc,IAAV9F,EAAEhB,MAAmBuG,EAAI,GAAKvF,EAAEhB,UAAgB,IAAVgB,EAAEmd,MAAmBguI,EAAInrJ,EAAEmd,KACrFnd,EAAG+O,EAAE5U,KAAK6F,EAAG9D,KAAO8E,EAAE9G,eAAegC,KAAOjB,EAAEiB,GAAK8D,EAAE9D,IAC/D,GAAIlC,GAAKA,EAAE6rB,aAAc,IAAK3pB,KAAK8D,EAAIhG,EAAE6rB,kBAA0B,IAAT5qB,EAAEiB,KAAkBjB,EAAEiB,GAAK8D,EAAE9D,IACvF,MAAO,CAAE2iH,SAAUtkH,EAAG+P,KAAMtQ,EAAGgF,IAAKuG,EAAG4X,IAAKguI,EAAGvzI,MAAO3c,EAAGk7J,OAAQ/5J,EAAEga,QACrE,CACA,OAAO,GAAE+oG,SAAWp+G,EAAG,GAAEq1J,IAAM9vJ,EAAG,GAAE+vJ,KAAO/vJ,EAAG,EAChD,CA6lBoD,GACpD,IAAI,GAAK8E,GAAEzN,QAQX,MAAM6N,IAAK,mBAAG,MACd,SAAS,IACP4J,SAAUxV,EACV+yF,OAAQp4F,EACR4mH,MAAOpgH,EACPkuJ,YAAalgJ,EACbwlJ,UAAWn4J,GAAI,EACf++F,oBAAqBn6F,GAAI,EACzBwzJ,kBAAmBluJ,GAAI,EACvB6qJ,aAAcn3J,EACd+6J,aAAc/0J,IAEd,IAAKzF,EACH,MAAM,IAAI0E,MACR,mLAEJ,QAAQ,CACN0zF,OAAQp4F,EACR4mH,MAAOpgH,EACPkuJ,YAAalgJ,EACbwlJ,UAAWn4J,EACX++F,oBAAqBn6F,EACrBwzJ,kBAAmBluJ,EACnB6qJ,aAAcn3J,EACd+6J,aAAc/0J,IAEhB,MAAM8F,GAAI,cACR,KAAM,CACJ6sF,OAAQp4F,EACR4mH,MAAOpgH,EACPkuJ,YAAalgJ,EACbwlJ,UAAWn4J,EACX++F,oBAAqBn6F,EACrBwzJ,kBAAmBluJ,EACnB6qJ,aAAcn3J,KAEhB,CAACO,EAAGwG,EAAGgO,EAAG3S,EAAG4E,EAAGsF,EAAGtM,IAErB,OAAuB,GAAGo8J,IAAI5qJ,GAAG2L,SAAU,CAAE5b,MAAOuK,EAAGsP,SAAUxV,GACnE,CAeA,SAAS,GAAGA,GACV,MAAMrF,GAAI,gBAAGiR,IACb,OAAO,kBACJzK,GAAW,MAALxG,GAAaA,EAAE4gG,oBAAsB,YAAY,IAAKv7F,KAAMmB,IAAO,MAC1E,CAAM,MAALxG,OAAY,EAASA,EAAE4gG,oBAAqBv7F,GAEjD,6cC3rBA,IAAI9E,EAAwC,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUN,MAAMG,EAASC,GAAc,KAAKS,OAClE,GACJ,EAEO,SAAS,EAAIgU,EAAK6mJ,GAAe,GACpC,OAAOx7J,EAAUD,UAAM,OAAQ,GAAQ,YACnC,MAAMgvD,EAAQ,eAAyBA,MACvC,GAAIA,EACA,aAAcA,EAAM7rD,IAAIyR,IAAMtK,KAElC,MAAM0U,QAAYtV,MAAMkL,EAAK,CACzBxJ,OAAQ,MACRC,QAAS,CACL,eAAgB,sBAGxB,OAAIowJ,OAAJ,QAGcz8I,EAAIpV,MACtB,GACJ,CACO,SAAS,EAAKgL,EAAKtK,EAAMmxJ,GAAe,GAC3C,OAAOx7J,EAAUD,UAAM,OAAQ,GAAQ,YACnC,MAAM07J,EAAiBpxJ,aAAgB6rD,SACjCnH,EAAQ,eAAyBA,MACvC,GAAIA,EACA,IAQI,aAPkBA,EAAM2sG,KAAK/mJ,EAAKtK,EAAM,CACpCe,QAASqwJ,OACH5hJ,EACA,CACE,eAAgB,uBAGjBxP,IAKf,CAFA,MAAOzC,GACH,OAAOA,EAAM2N,SAASlL,IAC1B,CAGJ,MAAM0U,QAAYtV,MAAMkL,EAAK,CACzBxJ,OAAQ,OACRC,QAASqwJ,OACH5hJ,EACA,CACE,eAAgB,oBAExB3Y,KAAMu6J,EAAiBpxJ,EAAOlE,KAAKC,UAAUiE,KAEjD,IAAImxJ,EAGJ,aAAcz8I,EAAIpV,MACtB,GACJ,CC/DO,MAAM,EAAY,KAAO,QAAQlH,cAAe0L,UAAU7G,SAAS,aCA1E,IAAI,EAAwC,SAAUrH,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUN,MAAMG,EAASC,GAAc,KAAKS,OAClE,GACJ,EACIg7J,EAAgD,SAAUx5J,GAC1D,IAAKP,OAAOg6J,cAAe,MAAM,IAAI55J,UAAU,wCAC/C,IAAiCtC,EAA7BwG,EAAI/D,EAAEP,OAAOg6J,eACjB,OAAO11J,EAAIA,EAAE7G,KAAK8C,IAAMA,EAAwB,mBAAb05J,SAA0BA,SAAS15J,GAAKA,EAAEP,OAAOC,YAAanC,EAAI,CAAC,EAAGiC,EAAK,QAASA,EAAK,SAAUA,EAAK,UAAWjC,EAAEkC,OAAOg6J,eAAiB,WAAc,OAAO77J,IAAM,EAAGL,GAC9M,SAASiC,EAAKhC,GAAKD,EAAEC,GAAKwC,EAAExC,IAAM,SAAUmC,GAAK,OAAO,IAAIzB,SAAQ,SAAUC,EAASC,IACvF,SAAgBD,EAASC,EAAQ3B,EAAGkD,GAAKzB,QAAQC,QAAQwB,GAAGd,MAAK,SAASc,GAAKxB,EAAQ,CAAEG,MAAOqB,EAAGf,KAAMnC,GAAM,GAAG2B,EAAS,EADbgrD,CAAOjrD,EAASC,GAA7BuB,EAAIK,EAAExC,GAAGmC,IAA8Bf,KAAMe,EAAErB,MAAQ,GAAI,CAAG,CAEnK,EAIA,MAAMq7J,EAAuB,0BAmEtB,SAASC,EAAa1xJ,GACzB,OAAO,EAAUtK,UAAM,OAAQ,GAAQ,YACnC,MAAM4U,EAAM,eAAyBqnJ,eAC/B12J,EAAK22J,EAAkBtnJ,EAAKtK,GAC5B0U,QAAY,EAAKpK,EAAKtK,GAAM,GAIlC,OAHI/E,GACA42J,EAAqB52J,GAElByZ,CACX,GACJ,CAEA,SAASo9I,EAAqBxnJ,EAAKtK,GAC/B,OAAO,EAAUtK,UAAM,OAAQ,GAAQ,YACnC,MAAMq8J,EAAW,IAAIlmG,SACrB,IAAK,MAAMhyD,KAAOmG,OACIwP,IAAdxP,EAAKnG,IACLk4J,EAAS11F,OAAOxiE,EAAKmG,EAAKnG,IAGlC,KAAI,KAAe6wD,UAAUsnG,YACrBtnG,UAAUsnG,WAAW1nJ,EAAKynJ,IAIlC,aAAa,EAAKznJ,EAAKynJ,GAAU,EACrC,GACJ,CACA,SAASH,EAAkBtnJ,EAAKtK,GAC5B,IAAK,IACD,OAEJ,IAAIiyJ,EAAW,GACf,MAAMC,EAAM95J,OAAOsM,eAAe3K,QAAQ03J,GAC1C,GAAIS,EACA,IACID,EAAWn2J,KAAKM,MAAM81J,EAI1B,CAFA,MAAO9iJ,GACHhX,OAAOsM,eAAexK,WAAWu3J,EACrC,CAEJ,MAAMx2J,EA8DV,WACI,IAAIk3J,EAA6B,MAAhBz3J,KAAKE,SAAoB,EACtCw3J,EAA8B,MAAhB13J,KAAKE,SAAoB,EAG3C,OAFAu3J,GAAa,MAAQA,EAAU/2J,SAAS,KAAK2B,OAAO,GACpDq1J,GAAc,MAAQA,EAAWh3J,SAAS,KAAK2B,OAAO,GAC/Co1J,EAAYC,CACvB,CApEeC,GAGX,OAFAJ,EAASp6J,KAAK,CAAEoD,KAAIqP,MAAKtK,SACzB5H,OAAOsM,eAAevK,QAAQs3J,EAAsB31J,KAAKC,UAAUk2J,IAC5Dh3J,CACX,CACA,SAAS42J,EAAqB52J,GAC1B,IAAK,IACD,OAEJ,MAAM+E,EAAO5H,OAAOsM,eAAe3K,QAAQ03J,GAC3C,GAAKzxJ,EAIL,IACI,MAAMiyJ,EAAWn2J,KAAKM,MAAM4D,GAC5BiyJ,EAASx5H,OAAOw5H,EAAS34F,WAAW7/D,GAAMA,EAAEwB,KAAOA,IAAK,GACxD7C,OAAOsM,eAAevK,QAAQs3J,EAAsB31J,KAAKC,UAAUk2J,GAIvE,CAFA,MAAO17J,GACHuQ,QAAQvJ,MAAM,iCAClB,MAVIuJ,QAAQvJ,MAAM,uBAWtB,CCpJO,MAAM,EACTF,YAAYkU,GACR,IAAInC,EACJ1Z,KAAK48J,YAAc,IACnB58J,KAAK68J,eAAiB,0CACtB78J,KAAKi8J,eAAiB,iDACtBj8J,KAAK88J,sBAAwB,qDAC7B98J,KAAK+8J,UAAY,iCACjB/8J,KAAKg9J,sBAAuB,EAC5Bh9J,KAAKggG,OAASnkF,EAAOmkF,OACrBhgG,KAAK4U,IAAMiH,EAAOjH,IACdiH,EAAOkhJ,YACP/8J,KAAK+8J,UAAYlhJ,EAAOkhJ,WAExBlhJ,EAAO+gJ,cACP58J,KAAK48J,YAAc/gJ,EAAO+gJ,aAE1B/gJ,EAAOmzC,QACPhvD,KAAKgvD,MAAQnzC,EAAOmzC,MAAM5hD,UAE1ByO,EAAOghJ,iBACP78J,KAAK68J,eAAiBhhJ,EAAOghJ,gBAE7BhhJ,EAAOogJ,iBACPj8J,KAAKi8J,eAAiBpgJ,EAAOogJ,gBAE7BpgJ,EAAOihJ,wBACP98J,KAAK88J,sBAAwBjhJ,EAAOihJ,uBAExC98J,KAAKg9J,qBAAkE,QAA1CtjJ,EAAKmC,EAAOohJ,gCAA6C,IAAPvjJ,GAAgBA,CACnG,CACA3R,YAAY8T,GACR,EAAYhZ,QAAU,IAAI,EAAYgZ,GDqHvC,WACH,IAAInC,EAAIwjJ,EAAKxiJ,EAAIO,EACV,EAAUjb,UAAM,OAAQ,GAAQ,YACnC,IAAK,IACD,OAEJ,MAAMsK,EAAO5H,OAAOsM,eAAe3K,QAAQ03J,GAC3C,IAAKzxJ,EACD,OAEJ,MAAMiyJ,EAAWn2J,KAAKM,MAAM4D,GAC5B,IACI,IAAK,IAAqD6yJ,EAAjDhgJ,GAAK,EAAMigJ,EAAaxB,EAAcW,GAAyBY,QAAqBC,EAAWx8J,SAAQ8Y,EAAKyjJ,EAAan8J,MAAWmc,GAAK,EAAM,CACpJlC,EAAKkiJ,EAAaz8J,MAClByc,GAAK,EACL,MAAMqvC,EAAUvxC,EAChB,IACQuxC,EAAQliD,WACF8xJ,EAAqB5vG,EAAQ53C,IAAK43C,EAAQliD,YAG1C,EAAIkiD,EAAQ53C,KAAK,GAE3BunJ,EAAqB3vG,EAAQjnD,GAIjC,CAFA,MAAO1E,GAEP,CACJ,CAQJ,CANA,MAAOw8J,GAASH,EAAM,CAAEr1J,MAAOw1J,EAAS,CACxC,QACI,IACSlgJ,GAAOzD,KAAOgB,EAAK0iJ,EAAWl5J,gBAAewW,EAAGpb,KAAK89J,GAE1B,CAApC,QAAU,GAAIF,EAAK,MAAMA,EAAIr1J,KAAO,CACxC,CACJ,GACJ,CC1JQy1J,EACJ,CACAv1J,oBACI,IAAK,EAAYlF,QACb,MAAM,IAAIuB,MAAM,yBAEpB,OAAO,EAAYvB,OACvB,ECvCG,IAAI06J,ECHAC,ECAAC,ECAA,ECAA,ECAA,ECAA,ECAAC,ECIAC,ETwCX,EAAY96J,QACZ,WACI,IAAK,IACD,OAGJ,MAAM+6J,EAAMl7J,OAAOq9F,YACnB,IAAK69D,EACD,OAEJ,OAAO,IAAI,EAAYA,EAC3B,CAXsBC,GCxCtB,SAAWN,GACPA,EAAyB,QAAI,UAC7BA,EAAwB,OAAI,SAC5BA,EAAwB,OAAI,QAC/B,CAJD,CAIGA,IAAoBA,EAAkB,CAAC,ICP1C,SAAWC,GACPA,EAAmC,UAAI,MACvCA,EAAoC,WAAI,MAC3C,CAHD,CAGGA,IAA4BA,EAA0B,CAAC,ICH1D,SAAWC,GAKPA,EAA4B,UAAI,OAIhCA,EAAwB,MAAI,OAC/B,CAVD,CAUGA,IAAqBA,EAAmB,CAAC,ICV5C,SAAWK,GACPA,EAA8C,uBAAI,yBAOlDA,EAA8C,uBAAI,yBAQlDA,EAA2C,oBAAI,sBAM/CA,EAAwC,iBAAI,mBAI5CA,EAAkC,WAAI,aAOtCA,EAA0C,mBAAI,qBAK9CA,EAAyC,kBAAI,oBAM7CA,EAAuC,gBAAI,kBAK3CA,EAAuC,gBAAI,kBAa3CA,EAAoC,aAAI,eAOxCA,EAA+C,wBAAI,0BAOnDA,EAA2C,oBAAI,sBAc/CA,EAAiD,0BAAI,4BAOrDA,EAA6D,sCAAI,wCAOjEA,EAA0C,mBAAI,qBAM9CA,EAAiD,0BAAI,4BAOrDA,EAAqD,8BAAI,gCAKzDA,EAAoC,aAAI,eAQxCA,EAAkC,WAAI,aAItCA,EAA4C,qBAAI,sBACnD,CAvID,CAuIG,IAA0B,EAAwB,CAAC,ICvItD,SAAWC,GAOPA,EAA8B,UAAI,YAIlCA,EAA6B,SAAI,YAIjCA,EAA8B,UAAI,aAIlCA,EAA4B,QAAI,WAIhCA,EAA6B,SAAI,YAKjCA,EAA8B,UAAI,aAKlCA,EAA+B,WAAI,cAKnCA,EAAkC,cAAI,kBAKtCA,EAAmC,eAAI,mBAIvCA,EAAoC,gBAAI,eAC3C,CAhDD,CAgDG,IAAuB,EAAqB,CAAC,IChDhD,SAAWC,GACPA,EAA2B,QAAI,gBAC/BA,EAAuB,IAAI,YAC3BA,EAA4B,SAAI,iBAChCA,EAAyB,MAAI,aAChC,CALD,CAKG,IAAsB,EAAoB,CAAC,ICL9C,SAAWC,GACPA,EAA2B,OAAI,SAC/BA,EAA+B,WAAI,mBACnCA,EAAuC,mBAAI,SAC3CA,EAAgC,YAAI,oBACpCA,EAAoC,gBAAI,eACxCA,EAA6B,SAAI,gBACjCA,EAA+B,WAAI,mBACnCA,EAA+B,WAAI,mBACnCA,EAAoC,gBAAI,sBACxCA,EAA2B,OAAI,cAE/BA,EAAyB,KAAI,MAChC,CAbD,CAaG,IAAuB,EAAqB,CAAC,ICbhD,SAAWP,GAiBPA,EAA2B,QAAI,UAU/BA,EAA+B,YAAI,eASnCA,EAA4B,SAAI,YAUhCA,EAA8B,WAAI,cASlCA,EAA2B,QAAI,WAQ/BA,EAAuB,IAAI,MAQ3BA,EAAsB,GAAI,IAC7B,CAxED,CAwEGA,IAAsBA,EAAoB,CAAC,IEjEvC,SAAS,EAASh9J,GACrB,OAAOA,OACX,CDiCO,SAASw9J,EAAoBC,EAAe3nI,GAE/C,OADApoB,SAASpH,iBAAiBm3J,EAAe3nI,GAClC,KACHpoB,SAASvH,oBAAoBs3J,EAAe3nI,EAAS,CAE7D,EA3CA,SAAWmnI,GAIPA,EAAiC,iBAAI,2BAIrCA,EAAsC,sBAAI,iCAI1CA,EAA+B,eAAI,wBAInCA,EAA+B,eAAI,wBACtC,CAjBD,CAiBGA,IAAmBA,EAAiB,CAAC,IElBxC,MACMS,EAAc,oBAiHb,MAAM,EAA2B,IA7GxC,MACI/wJ,OACQ,eAAyB2vJ,sBAGzB,KAAet6J,OAAO6B,cACtB7B,OAAO6B,aAAaE,QAAQ25J,EAAah4J,KAAKC,UAAUrG,KAAKq+J,QAErE,CACAv7H,UACI,GAAI,KAAepgC,OAAO6B,aAAc,CACpC,MAAMya,EAAMtc,OAAO6B,aAAaF,QAAQ+5J,GACpCp/I,IACAhf,KAAKq+J,OAASj4J,KAAKM,MAAMsY,GAEjC,CACJ,CACArX,cACI3H,KAAKs+J,cAAgB,CAAC,EACtBt+J,KAAKq+J,OAAS,GACdr+J,KAAK8iC,SACT,CAMAy7H,MAAMC,EAAWjoG,GACT,eAAyBymG,uBAG7Bh9J,KAAKq+J,OAAOl8J,KAAK,CACbs8J,GAAI,IAAIj5J,KACRD,GAAIi5J,EACJjoG,YAEJv2D,KAAKqN,OACD,KACAe,SAASswJ,cAAc,IAAIC,YAAYhB,EAAeiB,eAAgB,CAClEC,OAAQ,CACJL,YACAjoG,cAIhB,CAOAuoG,2BAA2Bl/J,EAAI,IAC3B,OAAI,eAAyBo9J,sBACzB5rJ,QAAQC,KAAK,sDACN,IAEJnS,MAAMsJ,KAAKxI,KAAKq+J,OAAOh1J,KAAK1J,GAAMA,EAAE4F,MACtCi9H,UACAn7H,MAAM,EAAGzH,EAClB,CAOAm/J,YAAYn/J,EAAI,IACZ,OAAI,eAAyBo9J,sBACzB5rJ,QAAQC,KAAK,sDACN,IAEJnS,MAAMsJ,KAAKxI,KAAKq+J,OAAOh1J,KAAK1J,GAAMA,EAAE42D,UAASpvD,OAAO,IACtDq7H,UACAn7H,MAAM,EAAGzH,EAClB,CAOAo/J,8BAA8BC,GAC1B,GAAI,eAAyBjC,qBAEzB,OADA5rJ,QAAQC,KAAK,sDACN,GAEX,MAAM6tJ,EAAgBl/J,KAAKq+J,OAC3B,GAAIa,EAAcp/J,OAAS,EACvB,MAAO,GAEX,GAAIE,KAAKs+J,cAAcW,IACf,IAAIz5J,KAAKxF,KAAKs+J,cAAcW,GAAcE,QAAQpgE,WAClD,IAAIv5F,MAAOu5F,UAlGV,KAmGD,OAAO/+F,KAAKs+J,cAAcW,GAAcG,IAGhD,MAAMC,EAAqD,EAAvCr6J,KAAKC,MAAMi6J,EAAcp/J,OAAS,GAChDs/J,EAAMlgK,MAAMsJ,KAAK02J,GAClB18B,UACAn7H,MAAM,EAAGg4J,GACTh2J,KAAK1J,GAAMA,EAAE4F,KAKlB,OAJAvF,KAAKs+J,cAAcW,GAAgB,CAC/BE,OAAQ,IAAI35J,KACZ45J,OAEGA,CACX,GClHEE,EAAW,sBACjB,IAAIC,EAAe,GACnB,GAAI,IAAa,CACb,MAAMvgJ,EAAMtc,OAAO6B,aAAaF,QAAQi7J,GACpCtgJ,IACAugJ,EAAen5J,KAAKM,MAAMsY,GAElC,CACA,MACawgJ,EAAoB,CAM7BnyJ,KAAOoyJ,IACH,MAAM5pE,EAAY0pE,EAAa37F,WAAW87F,GAAOA,EAAGD,OAASA,IACzD5pE,GAAa,GACb0pE,EAAax8H,OAAO8yD,EAAW,GAEnC0pE,EAAap9J,KAAK,CACdw9J,WAAW,IAAIn6J,MAAOu5F,UACtB0gE,KAAMA,IAENF,EAAaz/J,OAAS8/J,KACtBL,EAAeA,EAAal4J,OAAMu4J,KAElC,MACAxxJ,SAASswJ,cAAc,IAAIC,YAAYhB,EAAekC,mBACtDn9J,OAAO6B,aAAaE,QAAQ66J,EAAUl5J,KAAKC,UAAUk5J,IACzD,EAMJp8J,IAAK,IACMo8J,EAAal4J,OAAMu4J,IChC3B,MAAM,EAWT73J,YAAW,KAAEgL,EAAI,MAAEulG,KdwBhB,SAAwC10F,GACpC,EAAU5jB,UAAM,OAAQ,GAAQ,YACnC,MAAM4U,EAAM,GAAG,eAAyBqnJ,iBAClC12J,EAAK22J,EAAkBtnJ,EAAKgP,GAC5B5E,QAAYo9I,EAAqBxnJ,EAAKgP,GAI5C,OAHIre,GACA42J,EAAqB52J,GAElByZ,CACX,GACJ,CcrBQ8gJ,CAZa,CACTl8I,MAAO,iBACPm8I,cAAe,QACfC,aAAc,eAAyBhgE,OACvCigE,aAAcltJ,EACdmtJ,WAAY,CACR5nD,MAAOA,EAAMjvG,KAAK1J,IACd,IAAI+Z,EAAIgB,EAAIO,EAAIkC,EAAIC,EAAI+iJ,EACxB,OAAQphK,OAAOS,OAAO,CAAEm3F,SAAwC,QAA7Bj9E,EAAK/Z,EAAE42D,QAAQogC,gBAA6B,IAAPj9E,EAAgBA,EAAK,MAAO0mJ,cAAgD,QAAhC1lJ,EAAK/a,EAAE42D,QAAQ8pG,mBAAgC,IAAP3lJ,EAAgBA,EAAK/a,EAAE42D,QAAQhxD,GAAIizG,QAAS74G,EAAE42D,QAAQhxD,GAAIgzG,UAAqC,QAAzBt9F,EAAKtb,EAAE42D,QAAQ9uD,YAAyB,IAAPwT,EAAgBA,EAAK,UAAWqlJ,gBAAwC,QAAtBnjJ,EAAKxd,EAAE4gK,iBAA8B,IAAPpjJ,EAAgBA,EAAKxd,EAAE42D,QAAQhxD,GAAIi7J,WAAY10H,WAA0C,QAA9B1uB,EAAKzd,EAAE42D,QAAQkqG,iBAA8B,IAAPrjJ,EAAgBA,EAAK,KAAMsjJ,SAAU/gK,EAAEghK,QAASC,cAAejhK,EAAEkhK,YAAap/G,MAAO9hD,EAAEmhK,QAAiC,QAArBX,EAAKxgK,EAAEohK,gBAA6B,IAAPZ,EAAgBA,EAAK,CAAC,EAAI,MAK9lB,CAQAp4J,2BAA0B,uBAAEi5J,EAAsB,SAAEv5D,EAAQ,SAAEs5D,EAAW,CAAC,IACtE,MAAMz2J,EAAO,CACTsZ,MAAO,iBACPm8I,cAAe,QACfC,aAAc,eAAyBhgE,OACvCkgE,WAAY,CACRe,QAASD,EAAuBE,QAChCC,WAAYH,EAAuBI,MACnCC,UAAWL,EAAuB9mJ,MAClCL,OAAQmnJ,EAAuBnnJ,OAC/BynJ,QAASN,EAAuBO,QAChCC,UAAWR,EAAuBS,SAClCnpD,MAAO7Q,GACHA,EAASp+F,KAAI,CAAClK,EAAGmgB,KACb,IAAI5F,EAAIgB,EACR,IAAKvb,EAAEoG,GACH,MAAM,IAAInB,MAAM,wCAEpB,MAAO,CACHkb,MAAOA,EAAQ,EACfk5F,QAASr5G,EAAEoG,GACX66J,cAAejhK,EAAEkhK,aAAelhK,EAAEoG,GAClCgzG,UAA6B,QAAjB7+F,EAAKva,EAAEsI,YAAyB,IAAPiS,EAAgBA,EAAK,UAC1D4mJ,gBAAiBnhK,EAAEohK,WAAaphK,EAAEoG,GAClCotE,MAA0B,QAAlBj4D,EAAKvb,EAAEwzE,aAA0B,IAAPj4D,EAAgBA,EAAK,IACvDi8E,SAAUx3F,EAAEw3F,SACZ8hB,WAAYt5G,EAAE04G,MACda,cAAev5G,EAAEwwE,SACpB,MAIjBqsF,EAAa,CACTj9J,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAG8K,GAAOy2J,IAE/C,CAUAh5J,4BAA2B,uBAAEi5J,EAAsB,QAAEzqG,EAAO,WAAEmrG,EAAU,mBAAEC,EAAkB,UAAEpB,EAAS,SAAEQ,EAAW,CAAC,IACjH,IAAIrnJ,EAAIgB,EACJ67C,GACA,QAA+BA,EAAQhxD,GAAIgxD,GAE/C,MAAMjsD,EAAO,CACTsZ,MAAO,mBACPm8I,cAAe,QACfC,aAAc,eAAyBhgE,OACvCkgE,WAAY,CACRe,QAASD,EAAuBE,QAChCC,WAAYH,EAAuBI,MACnCC,UAAWL,EAAuB9mJ,MAClCL,OAAQmnJ,EAAuBnnJ,OAC/BynJ,QAASN,EAAuBO,QAChCC,UAAWR,EAAuBS,SAClCG,eAAgBF,GAAc,CAACA,GAC/BppD,MAAO/hD,GAAW,CACd,CACIj3C,MAAOqiJ,QAA+DA,EAAqB,EAC3FnpD,QAASjiD,EAAQhxD,GACjB66J,cAAe7pG,EAAQ8pG,aAAe9pG,EAAQhxD,GAC9CgzG,UAAmC,QAAvB7+F,EAAK68C,EAAQ9uD,YAAyB,IAAPiS,EAAgBA,EAAK,UAChE4mJ,gBAAiBC,GAAahqG,EAAQhxD,GACtCotE,MAAoC,QAA5Bj4D,EAAK67C,EAAQkqG,iBAA8B,IAAP/lJ,EAAgBA,EAAK,IACjEi8E,SAAUpgC,EAAQogC,SAClB8hB,WAAYliD,EAAQshD,MACpBa,cAAeniD,EAAQoZ,aAKvCqsF,EAAa,CACTj9J,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAG8K,GAAOy2J,IAE/C,CAOAh5J,2BAA0B,QAAEwuD,EAAO,WAAE4xC,EAAU,UAAEo4D,EAAS,cAAEsB,EAAa,SAAEd,EAAW,CAAC,IACnF,IAAIrnJ,EAAIgB,EACR,IAAK67C,EAAQhxD,GACT,MAAM,IAAInB,MAAM,wCAEpB,QAA+BmyD,EAAQhxD,GAAIgxD,GAC3C,MAAMjsD,EAAO,CACTw3J,aAAc,eAAyB9hE,OACvC+hE,WAAY,UACZC,eAAgB75D,EAChB85D,qBAAsB1rG,EAAQ8pG,aAAe9pG,EAAQhxD,GACrD28J,gBAAiB3rG,EAAQhxD,GACzB48J,kBAA2C,QAAvBzoJ,EAAK68C,EAAQ9uD,YAAyB,IAAPiS,EAAgBA,EAAK,UACxE0oJ,iBAAyC,QAAtB1nJ,EAAK67C,EAAQ3hD,WAAwB,IAAP8F,EAAgBA,EAAK,GACtE2nJ,uBAAwB9B,GAAahqG,EAAQhxD,GAC7C+8J,oBAAqBT,Id/G1B,SAAqCj+I,GACjC,EAAU5jB,UAAM,OAAQ,GAAQ,YACnC,MAAM4U,EAAM,GAAG,eAAyBioJ,gCAClCt3J,EAAK22J,EAAkBtnJ,EAAKgP,GAC5B5E,QAAYo9I,EAAqBxnJ,EAAKgP,GAI5C,OAHIre,GACA42J,EAAqB52J,GAElByZ,CACX,GACJ,CcuGQujJ,CAA4BxjK,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAG8K,GAAOy2J,GACvE,CAUAh5J,eAAc,KAAE03J,EAAI,aAAE+C,EAAY,aAAEC,EAAY,cAAEZ,EAAa,SAAEd,EAAW,CAAC,IACzEvB,EAAkBnyJ,KAAKoyJ,GACvB,MAAMn1J,EAAO,CACTw3J,aAAc,eAAyB9hE,OACvC0iE,WAAYjD,EACZkD,mBAAoBH,EACpBI,kBAAmBH,EACnBH,oBAAqBT,Id9I1B,SAA4Bj+I,GACxB,EAAU5jB,UAAM,OAAQ,GAAQ,YACnC,MAAM4U,EAAM,GAAG,eAAyBioJ,gCAClCt3J,EAAK22J,EAAkBtnJ,EAAKgP,GAC5B5E,QAAYo9I,EAAqBxnJ,EAAKgP,GAI5C,OAHIre,GACA42J,EAAqB52J,GAElByZ,CACX,GACJ,CcsIQ6jJ,CAAmB9jK,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAG8K,GAAOy2J,GAC9D,CAYAh5J,kCAAiC,cAAE+6J,EAAa,cAAEC,EAAa,SAAEt7D,EAAQ,eAAEu7D,EAAc,SAAEC,EAAQ,gBAAEC,EAAe,cAAErB,EAAa,SAAEd,EAAW,CAAC,IAC7I,MAAMz2J,EAAO,CACTw3J,aAAc,eAAyB9hE,OACvCmjE,mBAAoBL,EACpBM,mBAAoBL,EACpBM,iBAAkB57D,EAASp+F,KAAKlK,GAAMA,EAAEoG,KAAIgE,KAAK,KACjD+5J,qBAAsBN,EACtBV,oBAAqBT,EACrB0B,eAAgBN,EAChBO,sBAAuBN,IdrI5B,SAAkCt/I,GAC9B,EAAU5jB,UAAM,OAAQ,GAAQ,YACnC,MAAM4U,EAAM,GAAG,eAAyBioJ,4CAClCt3J,EAAK22J,EAAkBtnJ,EAAKgP,GAC5B5E,QAAYo9I,EAAqBxnJ,EAAKgP,GAI5C,OAHIre,GACA42J,EAAqB52J,GAElByZ,CACX,GACJ,Cc6HQykJ,CAAyB1kK,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAG8K,GAAOy2J,GACpE,CAWAh5J,0CAAyC,QAAEwuD,EAAO,cAAEusG,EAAa,cAAEC,EAAa,UAAExC,EAAS,gBAAEmD,EAAe,SAAET,EAAQ,gBAAEC,EAAe,cAAErB,EAAa,SAAEd,EAAW,CAAC,IAChK,IAAKxqG,EAAQhxD,GACT,MAAM,IAAInB,MAAM,wCAEpB,QAA+BmyD,EAAQhxD,GAAIgxD,GAC3C,MAAMjsD,EAAO,CACTw3J,aAAc,eAAyB9hE,OACvCmjE,mBAAoBL,EACpBb,qBAAsB1rG,EAAQ8pG,aAAe9pG,EAAQhxD,GACrD88J,uBAAwB9B,GAAahqG,EAAQhxD,GAC7C69J,mBAAoBL,EACpBb,gBAAiB3rG,EAAQhxD,GACzB48J,kBAAmB5rG,EAAQ9uD,KAC3B26J,iBAAkB7rG,EAAQ3hD,IAC1B+uJ,gBAAiBptG,EAAQkqG,UACzBmD,iBAAkBrtG,EAAQstG,IAC1BC,sBAAuBJ,EACvBH,eAAgBN,EAChBO,sBAAuBN,EACvBZ,oBAAqBT,Id3J1B,SAA0Cj+I,GACtC,EAAU5jB,UAAM,OAAQ,GAAQ,YACnC,MAAM4U,EAAM,GAAG,eAAyBioJ,6CAClCt3J,EAAK22J,EAAkBtnJ,EAAKgP,GAC5B5E,QAAYo9I,EAAqBxnJ,EAAKgP,GAI5C,OAHIre,GACA42J,EAAqB52J,GAElByZ,CACX,GACJ,CcmJQ+kJ,CAAiChlK,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAG8K,GAAOy2J,GAC5E,CAIAh5J,yBAAwB,KAAE03J,EAAI,SAAEuE,EAAQ,WAAEC,EAAU,SAAEC,EAAQ,UAAEC,EAAS,SAAEpD,EAAW,CAAC,IACnF,MAAMz2J,EAAO,CACTw3J,aAAc,eAAyB9hE,OACvCvwF,KAAM,SACN20J,cAAe,QACf1B,WAAYjD,EACZ4E,eAAgBL,EAChBM,iBAAkBL,EAClBM,YAAaL,EACbM,aAAcL,IdhKnB,SAAiCvgJ,GAC7B,EAAU5jB,UAAM,OAAQ,GAAQ,YACnC,MAAM4U,EAAM,GAAG,eAAyBioJ,6BAClCt3J,EAAK22J,EAAkBtnJ,EAAKgP,GAC5B5E,QAAYo9I,EAAqBxnJ,EAAKgP,GAI5C,OAHIre,GACA42J,EAAqB52J,GAElByZ,CACX,GACJ,CcwJQylJ,CAAwB1lK,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAG8K,GAAOy2J,GACnE,EC9OJ,IAAI,EAAwC,SAAU7gK,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUN,MAAMG,EAASC,GAAc,KAAKS,OAClE,GACJ,ECCO,SAAS8jK,EAAuBh/H,GACnC,ODOG,SAAsB2wE,GACzB,MAAMl0F,EAAQ,CACVwiJ,aAAc,CACVtuD,YAGR,MAAO,CACHuuD,gBAAiB,eACjBC,YAAchiF,GAAY,EAAU7iF,UAAM,OAAQ,GAAQ,YACtD,MAAM4lF,EAAO1mF,MAAMsJ,KAAKq6E,GACxB,GAAsB,GAAlBwzB,EAAQv2G,OACR,OAAO8lF,EAEX,IAAK,MAAMt1E,KAAKs1E,EAAM,CAClB,MAAMywB,EAAUt3G,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAG8Q,EAAE+lG,SAAU,CAAEsuD,aAAcxiJ,EAAMwiJ,eAClFr0J,EAAE+lG,QAAUA,CAChB,CACA,OAAOzwB,CACX,IAER,CC3BW++E,CAAaj/H,EAAQo/H,iBAChC,CCXA,IAAI,EAAwC,SAAU5kK,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUN,MAAMG,EAASC,GAAc,KAAKS,OAClE,GACJ,EAEA,MAAMmrD,EAAW,CACbhI,MAAO05G,EAAiBsH,MACxBnmC,MAAO,IASJ,SAASomC,EAAY/zJ,GACxB,MAAMgQ,EAASliB,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAGusD,GAAW96C,GACpDkR,EAAQ,CACV8iJ,gBAAiB,CACb1wB,SAAS,EACT2wB,QAASjkJ,EAAOikJ,QAChBC,QAASlkJ,EAAOkkJ,QAChBl0J,QAAS,CACL8yC,MAAO9iC,EAAO8iC,MACd66E,MAAO39G,EAAO29G,MACdwmC,SAAUnkJ,EAAOmkJ,UAErBC,oBAAqBpkJ,EAAOokJ,sBAGpC,MAAO,CACHT,gBAAiB,cACjBC,YAAchiF,GAAY,EAAU7iF,UAAM,OAAQ,GAAQ,YACtD,MAAM4lF,EAAO1mF,MAAMsJ,KAAKq6E,GACxB,IAAK,MAAMvyE,KAAKs1E,EAAM,CAClB,MAAMywB,EAAUt3G,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAG8Q,EAAE+lG,SAAU,CAAE4uD,gBAAiB9iJ,EAAM8iJ,kBACrF30J,EAAE+lG,QAAUA,CAChB,CACA,OAAOzwB,CACX,IACA0/E,SAAWvkK,IACP,IAAI2Y,EAAIgB,EACR,KAAMzJ,aAAyC,EAASA,EAAQs0J,eAC5D,OAAOxkK,EAEX,IAAK,MAAMu4J,KAAgG,QAAzF5+I,EAAmC,QAA7BhB,EAAK3Y,EAAOykK,mBAAgC,IAAP9rJ,OAAgB,EAASA,EAAG+rJ,oBAAiC,IAAP/qJ,EAAgBA,EAAK,GAChI4+I,EAAGjjD,SACHplG,EAAQs0J,cAAcG,oBAAoBpM,EAAGjjD,SAGrD,OAAOt1G,CAAM,EAGzB,CCnDO,SAAS4kK,EAAgB5E,GAC5B,MAAO,CACH6D,gBAAiB,kBACjBgB,eAAe,EACfN,SAAU,CAACtmJ,EAAK5d,KACZ,IAAIsY,EAAIgB,EAAIO,EAAIkC,EAChB,IAAK/b,EAAE6f,OACH,OAAOjC,EAEX,MAAM,GAAEzZ,EAAE,KAAEk6J,GAASr+J,EAAE6f,OACvB,IAAK1b,IAAOk6J,EACR,OAAOzgJ,EAEX,MAAMspC,EAAsC,QAA9B5uC,EAAKsF,EAAI6mJ,YAAYtgK,UAAwB,IAAPmU,OAAgB,EAASA,EAAG4uC,KAChF,OAAKA,GAGL,SAAmB,CACfm3G,MAAsC,QAA9B/kJ,EAAK4tC,EAAKw9G,sBAAmC,IAAPprJ,OAAgB,EAASA,EAAGqrJ,aACmB,QAAvF5oJ,EAAoC,QAA9BlC,EAAKqtC,EAAKw9G,sBAAmC,IAAP7qJ,OAAgB,EAASA,EAAG8qJ,iBAA8B,IAAP5oJ,OAAgB,EAASA,EAAGrd,QAAU,EACrI,qBACA2/J,EACN+C,aAAcl6G,EAAK09G,kBACnBvD,aAAcn6G,EAAKm6G,aACnB1B,aAEC3/J,EAAE6f,SACH7f,EAAE6f,OAAS,CAAC,GAEhB7f,EAAE6f,OAAOglJ,qBAAsB,EACxBjnJ,GAfIA,CAeD,EAGtB,CCnCO,SAAS,EAAqBje,GACjC,IAAI2Y,EACJ,IAAIwsJ,EAAqB,GACrBC,GAAsB,EAC1B,GAAKplK,EAAOs1G,SAAqC,IAA1Bt1G,EAAOs1G,QAAQv2G,OA8BtC,OA3B0B,QAAzB4Z,EAAK3Y,EAAOs1G,eAA4B,IAAP38F,GAAyBA,EAAGpS,SAASH,IACnE,GAAIA,EAAOsI,OAAS8tJ,EAAgB6I,OAAQ,CACxC,IAAKj/J,EAAOkmB,QAAUlmB,EAAOumC,IACzB,OAEAvmC,EAAOkmB,OAASlmB,EAAOokC,KAAOpkC,EAAOumC,KAAOvmC,EAAOD,MAC/Ci/J,IACAD,GAAsB,MAE1BC,GAAsB,EACtBD,GACI/+J,EAAOhD,IAAM,IAAMgD,EAAOkmB,MAAQ,MAAQlmB,EAAOumC,IAE7D,MAEIvmC,EAAO8J,QAAQ3J,SAAS8vD,IACfA,EAAOj4B,WAGRgnI,IACAD,GAAsB,MAE1BC,GAAsB,EACtBD,GAAsB/+J,EAAOhD,IAAM,IAAMizD,EAAO3vD,KAAI,GAE5D,IAEG0+J,EAAsBD,OAAqBpsJ,CACtD,CCtCI,aACA,aACA,cACA,kBACA,WCPJ,IAAI,EAAwC,SAAU5Z,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUN,MAAMG,EAASC,GAAc,KAAKS,OAClE,GACJ,EAUO,SAAS,EAAgBqQ,GAC5B,MAAO,CACH2zJ,gBAAiB,kBACjBC,YAAa,CAAChiF,EAASwjF,IAAc,EAAUrmK,UAAM,OAAQ,GAAQ,YACjE,IAAI0Z,EACJ,MAAMksE,EAAO1mF,MAAMsJ,KAAKq6E,GACxB,IAAK,MAAMvyE,KAAKuyE,EAAS,CAChBvyE,EAAEsuF,WACHtuF,EAAEsuF,SAAW,CAAC,GAElBtuF,EAAEsuF,SAAS0nE,gBAAkB,CACzBC,uBAAuB,EACvB39G,OAAQ33C,aAAyC,EAASA,EAAQ23C,QAEtE,IAAI49G,EAAU,GACd,GAAIv1J,aAAyC,EAASA,EAAQw1J,sBAC1DD,EAAUv1J,EAAQw1J,sBAAsBp9J,KAAKq9J,IAAQ,CACjDnhK,GAAImhK,WAGP,GAAkC,0BAA9BL,EAAUM,kBACc,QAA3BjtJ,EAAK2sJ,EAAUplJ,cAA2B,IAAPvH,OAAgB,EAASA,EAAGi2D,UAAW,CAC5E,MAAM,SAAEA,GAAa02F,EAAUplJ,OAC/BulJ,EAAU,gCAAuD72F,GAAUtmE,KAAK9D,IAAO,CAAGA,QAC9F,MAEIihK,EAAU,+BAAsDn9J,KAAK9D,IAAO,CAAGA,SAE/EihK,EAAQ1mK,OAAS,IACjBwQ,EAAEsuF,SAASjkF,QAAU,CACjBisJ,cAAe,CACX,CACIC,aAAc,UACdL,aAKpB,CACA,OAAO5gF,CACX,IAER,CC5DA,IAAI,EAAwC,SAAU1lF,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUN,MAAMG,EAASC,GAAc,KAAKS,OAClE,GACJ,EASO,SAASkmK,EAAkBC,EAAYC,EAAa,UACvD,MAAO,CACHpC,gBAAiB,oBACjBC,YAAchiF,GAAY,EAAU7iF,UAAM,OAAQ,GAAQ,YACtD,MAAM4lF,EAAO1mF,MAAMsJ,KAAKq6E,GACxB,IAAK,MAAMvyE,KAAKs1E,EACPt1E,EAAEsuF,WACHtuF,EAAEsuF,SAAW,CAAC,GAElBtuF,EAAEsuF,SAASqoE,eAAiB,CACxBC,cAAeF,EACfD,cAGR,OAAOnhF,CACX,IAER,CClCA,IAAI,EAAwC,SAAU1lF,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUN,MAAMG,EAASC,GAAc,KAAKS,OAClE,GACJ,EAYO,SAASumK,EAAyB3xJ,EAAUgpJ,EAAW7pD,GAC1D,IAAIj7F,EACJ,OAAO,EAAU1Z,UAAM,OAAQ,GAAQ,YACnC,MAAMonK,EAAmC,QAA3B1tJ,EAAKlE,EAASgxJ,eAA4B,IAAP9sJ,OAAgB,EAASA,EAAGsvE,MAAMtpF,GAAMA,EAAE6F,KAAOi5J,IAClG,IAAK4I,EACD,OAEJ,MAAMC,EAAa,CACfllJ,MAAO3M,EAAS8yC,KAAKg/G,aACrBptJ,MAAOktJ,EAAK3/J,KACZkoE,SAAUy3F,EAAKz3F,SACfglC,aAAcA,GAEZ//F,EAAM,uCACR,eAAyBorF,OACzB,eC9BL,SAAiC/+E,GACpC,IAAIsmJ,EAAU,IACd,IAAK,MAAOpjK,EAAKzD,KAAU3B,OAAO0gB,QAAQwB,QACxBnH,IAAVpZ,IAGJ6mK,GAAW,GAAGpjK,KAAOuJ,mBAAmBhN,OAE5C,OAAO6mK,CACX,CDsBYC,CAAwBH,GAC5B,aAAa,EAAIzyJ,EACrB,GACJ,CEvCO,SAAS6yJ,EAAsBC,EAASxtD,EAAYytD,GACvD,MAAMC,EAmBV,SAA6BF,EAASruH,EAAO,IAAI7zC,MAC7C,OAAOkiK,EAAQvgK,QAAQ0gK,IACnB,MAAMC,EAAYC,EAAiBF,EAAOC,WAC1C,GAAuB,KAAnBD,EAAOG,QACP,OAAOF,GAAazuH,EAExB,MAAM2uH,EAAUD,EAAiBF,EAAOG,SAAS,GACjD,OAAOF,GAAazuH,GAAQ2uH,GAAW3uH,CAAI,GAEnD,CA5ByB4uH,CAAoBP,GAczC,OAEJ,SAA6BA,EAASjI,GAClC,OAAOiI,EAAQvgK,QAAQ0gK,GAAmC,OAAxBA,EAAOK,cAAyBL,EAAOK,aAAa3gK,SAASk4J,IACnG,CAJW0I,CAbcP,EAAazgK,QAAQ0gK,IACtC,OAAQ3tD,GACJ,IAAK,cACD,OAAO2tD,EAAOO,kBAElB,IAAK,cACD,OAAOP,EAAOQ,kBAElB,IAAK,gBACD,OAAOR,EAAOS,mBAEtB,IAEqCX,EAC7C,CAcA,SAASI,EAAiB1uH,EAAM3L,GAC5B,MAAO66H,EAAMjvH,EAAO27B,GAAO57B,EAAKjwC,MAAM,KAChCo/J,EAAS,IAAIhjK,KAAKqO,SAAS00J,GAAO10J,SAASylC,GAAS,EAAGzlC,SAASohE,IAItE,OAHIvnC,GACA86H,EAAOC,SAAS,GAAI,GAAI,IAErBD,CACX,CCrCA,IAAI,EAAwC,SAAUtoK,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUN,MAAMG,EAASC,GAAc,KAAKS,OAClE,GACJ,EAIA,MACM,EAAc,iBACd,EAAiB,oBAUhB,SAAS8nK,EAAiBC,EAAaC,EAT9B,OAUZ,OAAO,EAAU5oK,UAAM,OAAQ,GAAQ,YACnC,GAAI,KAAe0C,OAAO6B,eAAgC,IAAhBokK,EAAsB,CAC5D,MAAMlK,EAAK/7J,OAAO6B,aAAaF,QAAQ,GACjC2a,EAAMtc,OAAO6B,aAAaF,QAAQ,GACxC,GAAI2a,GAAOy/I,IAAM,IAAIj5J,MAAOu5F,UAAYlrF,SAAS4qJ,EAAI,IAAMmK,EACvD,OAAOxiK,KAAKM,MAAMsY,EAE1B,CACA,MAAMqO,EAAQ,iDAAS,eAAyB2yE,SAC1ChhF,QAAY1e,QAAQkvD,IAAI,CAC1B,EAAI,GAAGniC,UACP,EAAI,GAAGA,iBACP,EAAI,GAAGA,iBAEL/iB,EAAO,CACT2Z,KAAMjF,EAAI,GACV6oJ,OAAQ7oJ,EAAI,GACZ6pJ,KAAM7pJ,EAAI,IAMd,OAJI,KAAetc,OAAO6B,eACtB7B,OAAO6B,aAAaE,QAAQ,EAAa2B,KAAKC,UAAUiE,IACxD5H,OAAO6B,aAAaE,QAAQ,GAAgB,IAAIe,MAAOu5F,UAAUr5F,aAE9D4E,CACX,GACJ,CClDA,IAAI,EAAwC,SAAUpK,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUN,MAAMG,EAASC,GAAc,KAAKS,OAClE,GACJ,ECRA,IAAI,EAAwC,SAAUV,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUN,MAAMG,EAASC,GAAc,KAAKS,OAClE,GACJ,ECRA,IAcIkoK,EAAqCC,GAAyCC,GAd9E,GAAwC,SAAU9oK,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUN,MAAMG,EAASC,GAAc,KAAKS,OAClE,GACJ,EACIqoK,GAAkE,SAAUC,EAAUlhK,EAAOmhK,EAAM/nK,GACnG,GAAa,MAAT+nK,IAAiB/nK,EAAG,MAAM,IAAIa,UAAU,iDAC5C,GAAqB,mBAAV+F,EAAuBkhK,IAAalhK,IAAU5G,GAAK4G,EAAMzE,IAAI2lK,GAAW,MAAM,IAAIjnK,UAAU,4EACvG,MAAgB,MAATknK,EAAe/nK,EAAa,MAAT+nK,EAAe/nK,EAAE9B,KAAK4pK,GAAY9nK,EAAIA,EAAEV,MAAQsH,EAAM7E,IAAI+lK,EACxF,EAYO,MAAME,GACTzhK,YAAY0hK,EAAgBlnJ,EAAOqzB,GAC/BszH,EAAoCniK,IAAI3G,MAIxCA,KAAKspK,MAAQ,GACbtpK,KAAKqpK,eAAiBA,EACtBrpK,KAAKmiB,MAAQA,EACbniB,KAAKw1C,KAAOA,EACZyzH,GAAuBjpK,KAAM8oK,EAAqC,IAAKE,IAA8C1pK,KAAKU,MAC1HipK,GAAuBjpK,KAAM8oK,EAAqC,IAAKC,IAAyCzpK,KAAKU,KACzH,CAIIq2G,cACA,OAAOr2G,KAAKmiB,MAAMk0F,OACtB,CAII9wG,SACA,OAAOvF,KAAKmiB,MAAM5c,EACtB,CAII+iD,WACA,OAAOtoD,KAAKmiB,MAAMmmC,IACtB,CAIIk+G,cACA,OAAOxmK,KAAKmiB,MAAMqkJ,OACtB,CAII+C,qBACA,OAAOvpK,KAAKw1C,KAAKv0B,MACrB,CAOAuoJ,QAAQvoJ,GACJ,IAAIvH,EAAIgB,EAAIO,EAAIkC,EAChB,OAAO,GAAUnd,UAAM,OAAQ,GAAQ,YACnC,MAAMypK,EAAU1qK,OAAOS,OAAO,CAAC,EAAGQ,KAAKw1C,MACjCk0H,EAAoB1pK,KAAKmiB,MAC/B,GAAKsnJ,EAAQ5mF,QAAb,CAGA,IAAK,IAAIljF,EAAI,EAAGA,EAAI8pK,EAAQ5mF,QAAQ/iF,OAAQH,IAAK,CAC7C,MAAMkhJ,EAAY4oB,EAAQ5mF,QAAQljF,GAC7BkhJ,EAAUjiD,WACXiiD,EAAUjiD,SAAW,CAAC,QAEiD9kF,KAAtEmH,aAAuC,EAASA,EAAO0oJ,WACxD9oB,EAAUjiD,SAASrnB,OACfmyF,EAAkBphH,KAAKshH,YAAc3oJ,EAAO0oJ,UAGhD9oB,EAAUjiD,SAASrnB,OACfmyF,EAAkBphH,KAAKshH,YAAcF,EAAkBphH,KAAKivB,OAEpEspE,EAAUjiD,SAASggC,MAAgM,QAAvL3jH,EAA6E,QAAvEvB,EAAKuH,aAAuC,EAASA,EAAO29G,aAA0B,IAAPllH,EAAgBA,EAAmC,QAA7BgB,EAAKmmI,EAAUjiD,gBAA6B,IAAPlkF,OAAgB,EAASA,EAAGkkH,aAA0B,IAAP3jH,EAAgBA,EAAK,EAChPwuJ,EAAQ5mF,QAAQljF,GAAKkhJ,CACzB,CAYA,OAVI5/H,aAAuC,EAASA,EAAOskJ,iBAClDkE,EAAQI,YACTJ,EAAQI,UAAY,IAExBJ,EAAQI,UAAU1nK,KAAKuiK,EAAuBzjJ,EAAOskJ,iBAEzDkE,EAAQK,sBAAwB,IACmB,QAA1C3sJ,EAAKnd,KAAKw1C,KAAKs0H,6BAA0C,IAAP3sJ,EAAgBA,EAAK,MACzEusJ,EAAkBlD,eAEZ,GCUlB,SAA2BplK,EAAGyhJ,GACjC,IAAInpI,EAQJ,GAPAtY,EAAEyhF,QAA+B,QAApBnpE,EAAKtY,EAAEyhF,eAA4B,IAAPnpE,OAAgB,EAASA,EAAGrQ,KAAKiH,IACtE,IAAIoJ,EAAIgB,EAIR,OAHyB,QAApBhB,EAAKpJ,EAAE+lG,eAA4B,IAAP38F,OAAgB,EAASA,EAAGurJ,mBACpC,QAApBvqJ,EAAKpK,EAAE+lG,eAA4B,IAAP37F,UAA8BA,EAAGuqJ,iBAE3D30J,CAAC,IAERlP,EAAEyoK,UAAW,CACb,MAAMvqJ,EAAQle,EAAEyoK,UAAUjmG,WAAWz9D,GAA2B,eAArBA,EAAEy+J,kBACzCtlJ,GAAS,GACTle,EAAEyoK,UAAU9mI,OAAOzjB,EAAO,GAE9Ble,EAAEyoK,UAAU1nK,MC7He0+I,ED6HSgC,EC5HjC,CACH+hB,gBAAiB,oBACjBU,SAAW9vJ,IACP,IAAIkE,EAAIgB,EACR,MAAMkrE,EAAO7mF,OAAOS,OAAO,CAAC,EAAGgW,GACzB45E,EAAgG,QAAvF10E,EAAiC,QAA3BhB,EAAKksE,EAAK4/E,mBAAgC,IAAP9rJ,OAAgB,EAASA,EAAG+rJ,oBAAiC,IAAP/qJ,OAAgB,EAASA,EAAGsuE,MAAM14E,GAAMA,EAAE/K,KAAOs7I,EAAUt7I,KAIzK,OAHI6pF,IACAA,EAAMinB,QAAUwqC,EAAUxqC,SAEvBzwB,CAAI,IDoHnB,CC9HG,IAA4Bi7D,ED+H/B,OAAOz/I,CACX,CD3BoC2oK,CAAkBN,EAASC,GA5BnD,CA6BJ,GACJ,CAKA/5B,cACI,OAAQ3vI,KAAKmiB,MAAMmmC,KAAK09G,kBACpBhmK,KAAKmiB,MAAMmmC,KAAKivB,OAASv3E,KAAKmiB,MAAMmmC,KAAKshH,WACjD,CAKAI,gBACI,OAAOhlK,KAAKilK,KAAKjqK,KAAKmiB,MAAMmmC,KAAK09G,kBAAoBhmK,KAAKmiB,MAAMmmC,KAAKivB,OACzE,CACA2yF,gBAAgB1L,EAAW7pD,GACvB,OAAOwyD,EAAyBnnK,KAAKmiB,MAAOq8I,EAAW7pD,EAC3D,CAKAw1D,WAAWlpJ,EAAS,CAAC,GACjB,OAAO,GAAUjhB,UAAM,OAAQ,GAAQ,YACnC,OF7HL,SAAoBqpK,EAAgBnvD,GACvC,IAAIxgG,EAAIgB,EACR,OAAO,EAAU1a,UAAM,OAAQ,GAAQ,YACnC,IAAK,CAAC,SAAU,yBAAyBuH,SAAS8hK,EAAe7zH,KAAKmxH,iBAClE,MAAO,GAEX,MAAM/nE,QAAiB8pE,IACvB,IAAK9pE,EAASipE,OACV,MAAO,GAEX,OAAQwB,EAAe7zH,KAAKmxH,iBACxB,IAAK,SAAU,CACX,IAAKzsD,EACD,MAAM,IAAI91G,MAAM,8EAEpB,MAAM+jG,EAAmD,QAArCzuF,EAAK2vJ,EAAe7zH,KAAKv0B,cAA2B,IAAPvH,OAAgB,EAASA,EAAG+lJ,KAC7F,IAAKt3D,EACD,MAAM,IAAI/jG,MAAM,oDAEpB,OAAOqjK,EAAsB7oE,EAASipE,OAAOuC,aAAclwD,EAAY/R,EAC3E,CACA,IAAK,wBAAyB,CAC1B,MAAMx4B,EAAiD,QAArCj1D,EAAK2uJ,EAAe7zH,KAAKv0B,cAA2B,IAAPvG,OAAgB,EAASA,EAAGi1D,SAC3F,OAAKA,EAGE83F,EAAsB7oE,EAASipE,OAAOuC,aAAc,gBAAiBz6F,GAFjE,EAGf,EAEJ,MAAM,IAAIvrE,MAAM,4DACpB,GACJ,CE8FmB+lK,CAAWnqK,KAAMihB,EAAOi5F,WACnC,GACJ,CAMAmwD,qBACI,OAAOrqK,KAAKw1C,KAAKv0B,MACrB,EAEJ6nJ,EAAsC,IAAIwB,QAAWvB,GAA0C,WACzD,WAA9B/oK,KAAKw1C,KAAKmxH,kBACV3mK,KAAKuqK,aAAe,KAChB,IAAI7wJ,EACJ,OAAkC,QAA3BA,EAAK1Z,KAAKw1C,KAAKv0B,cAA2B,IAAPvH,OAAgB,EAASA,EAAG+lJ,MD9I3E,SAAsBA,GACzB,OAAO,EAAUz/J,UAAM,OAAQ,GAAQ,YACnC,MAAM4+F,QAAiB8pE,IACvB,OAAK9pE,EAASiqE,KAGPjqE,EAASiqE,KAAK2B,oBAAoBrjK,QAAQkC,GAAQA,EAAIohK,SAAS1pI,MAAMp4B,GAAMA,IAAM82J,MAF7E,EAGf,GACJ,CCyImB8K,CAAavqK,KAAKw1C,KAAKv0B,OAAOw+I,MAF1Bn/J,QAAQC,QAAQ,GAEe,EAGtD,EAAGyoK,GAA+C,WAC9C,IAAItvJ,EAAIgB,EAAIO,EACZ,OAA6B,QAApBvB,EAAK1Z,KAAKw1C,YAAyB,IAAP97B,OAAgB,EAASA,EAAGitJ,iBAC7D,IAAK,SACD3mK,KAAK0qK,iBAAmB,UAAU,UAAElM,EAAS,UAAE+B,EAAS,kBAAEoK,GAAoB,EAAI,SAAE5J,IAChF,IAAIrnJ,EAAIgB,EAAIO,EACZ,IAAKjb,KAAKw1C,KACN,OAEAm1H,KAAmD,QAA3BjxJ,EAAK1Z,KAAKw1C,KAAKv0B,cAA2B,IAAPvH,OAAgB,EAASA,EAAGusJ,uBACvF,SAAmB,CACfxG,KAAMz/J,KAAKmiB,MAAMmmC,KAAKg/G,aACtB9E,aAAcxiK,KAAKmiB,MAAMmmC,KAAKshH,YAC9BnH,aAAcziK,KAAKmiB,MAAMmmC,KAAKm6G,aAC9BZ,cAAe,EAAqB7hK,KAAKmiB,OACzC4+I,aAEC/gK,KAAKw1C,KAAKv0B,SACXjhB,KAAKw1C,KAAKv0B,OAAS,CAAC,GAExBjhB,KAAKw1C,KAAKv0B,OAAOglJ,qBAAsB,GAE3C,MAAM2E,EAAS,IACR5qK,KAAKmiB,MAAMqkJ,WACiC,QAA1C9rJ,EAAK1a,KAAKw1C,KAAKs0H,6BAA0C,IAAPpvJ,EAAgBA,EAAK,IAC9EsuE,MAAMjlF,GAAMA,EAAEwB,KAAOi5J,IACvB,IAAKoM,EACD,MAAM,IAAIxmK,MAAM,uBAAuBo6J,oCAE3C,qBAA+B,CAC3BjoG,QAASq0G,EACTziE,WAAYnoG,KAAKmiB,MAAMmmC,KAAKg/G,aAC5B/G,cAEJ,IAAK,MAAMsK,KAA8B,QAArB5vJ,EAAKjb,KAAKspK,aAA0B,IAAPruJ,EAAgBA,EAAK,GAClE4vJ,EAAK,CAAEp7J,KAAM,SAAU+uJ,YAAW+B,aAE1C,EACA,MAEJ,IAAK,wBACDvgK,KAAK8qK,gCAAkC,UAAU,UAAEtM,EAAS,cAAEsE,EAAa,UAAEvC,EAAS,SAAEQ,IACpF,IAAIrnJ,EAAIgB,EAAIO,EAAIkC,EAAIC,EAAI+iJ,EACxB,IAAKngK,KAAKw1C,KACN,OAEJ,MAAMo1H,EAAS,IACR5qK,KAAKmiB,MAAMqkJ,WACiC,QAA1C9sJ,EAAK1Z,KAAKw1C,KAAKs0H,6BAA0C,IAAPpwJ,EAAgBA,EAAK,IAC9EsvE,MAAMjlF,GAAMA,EAAEwB,KAAOi5J,IACvB,IAAKoM,EACD,MAAM,IAAIxmK,MAAM,uBAAuBo6J,oCAE3C,MAAMl/I,EAAQtf,KAAKmiB,MAAMqkJ,QAAQ5iG,WAAW7/D,GAAMA,EAAEwB,KAAOi5J,IACrDluJ,EAAiC,QAA5BoK,EAAK1a,KAAKw1C,KAAKqtC,eAA4B,IAAPnoE,OAAgB,EAASA,EAAGsuE,MAAM14E,IAAQ,IAAIoJ,EAAIgB,EAAI,OAAOnP,QAAmF,QAA1EmP,EAA2B,QAArBhB,EAAKpJ,EAAEsuF,gBAA6B,IAAPllF,OAAgB,EAASA,EAAGyI,aAA0B,IAAPzH,OAAgB,EAASA,EAAGukJ,aAAa,IAChP,IAAIgE,EAAUC,EACTljK,KAAKw1C,KAAKv0B,SACXjhB,KAAKw1C,KAAKv0B,OAAS,CAAC,GAEpBjhB,KAAKw1C,KAAKv0B,OAAO8pJ,SACjB9H,EAAWjjK,KAAKw1C,KAAKv0B,OAAO8pJ,OAAO9H,SACnCC,EAAkBljK,KAAKw1C,KAAKv0B,OAAO8pJ,OAAO7H,iBAE9C,oCAA8C,CAC1C3sG,QAASq0G,EACT9H,gBACAC,cAA4L,QAA5K3lJ,EAAsH,QAAhHD,EAAiE,QAA3DlC,EAAK3K,aAA6B,EAASA,EAAEsuF,gBAA6B,IAAP3jF,OAAgB,EAASA,EAAGkH,aAA0B,IAAPhF,OAAgB,EAASA,EAAG8hJ,oBAAiC,IAAP7hJ,EAAgBA,EAAK,UACzNmjJ,YACAmD,gBAAiBpkJ,EAAQ,EACzB2jJ,WACAC,kBACArB,cAAe,EAAqB7hK,KAAKmiB,OACzC4+I,aAEJ,IAAK,MAAM8J,KAA8B,QAArB1K,EAAKngK,KAAKspK,aAA0B,IAAPnJ,EAAgBA,EAAK,GAClE0K,EAAK,CAAEp7J,KAAM,wBAAyB+uJ,YAAW+B,aAEzD,EACA,MAEJ,IAAK,oBAAqB,CACtB,KAAkC,QAA3B7lJ,EAAK1a,KAAKw1C,KAAKv0B,cAA2B,IAAPvG,OAAgB,EAASA,EAAGswJ,WAClE,MAEJ,MAAMnvJ,EAAqC,QAA3BZ,EAAKjb,KAAKw1C,KAAKv0B,cAA2B,IAAPhG,OAAgB,EAASA,EAAG+vJ,UAC/E,GAA+B,wBAA3BnvJ,EAAOovJ,SAASpxJ,OAChB,MAEJ,GAA+B,mBAA3BgC,EAAOovJ,SAASpxJ,OAA6B,CAC7C,IAAKgC,EAAOqvJ,cACR,MAEJlrK,KAAKmrK,+BAAiC,UAAU,WAAEC,IAC9C,IAAI1xJ,EACJ,IAAKmC,EAAOqvJ,eAAiD,IAAhCrvJ,EAAOqvJ,cAAcprK,OAC9C,OAEJ,MAAMqtG,EAAkG,QAAzFzzF,EAAKmC,EAAOqvJ,cAAc,GAAG/9D,MAAMnkB,MAAMmkB,GAAUA,EAAMi+D,aAAeA,WAAgC,IAAP1xJ,EAAgBA,EAAKmC,EAAOqvJ,cAAc,GAAG/9D,MAAM,GAC9JA,GAGL,sBAAgC,CAC5B6zD,uBAAwBnlJ,EAAOovJ,SAC/BvJ,WAAY,CACR0J,aACA9rJ,MAAO,EACP+rJ,eAAgBl+D,EAAMm+D,OACtBC,iBAAkBp+D,EAAMv4F,IACxB42J,aAAc,UAG1B,EACA,KACJ,CACAxrK,KAAKyrK,yBAA2B,UAAU,UAAEjN,EAAS,UAAE+B,EAAS,SAAEQ,IAC9D,IAAIrnJ,EAAIgB,EACR,IAAK1a,KAAKw1C,KACN,OAEJ,MAAMo1H,EAAS,IACR5qK,KAAKmiB,MAAMqkJ,WACiC,QAA1C9sJ,EAAK1Z,KAAKw1C,KAAKs0H,6BAA0C,IAAPpwJ,EAAgBA,EAAK,IAC9EsvE,MAAMjlF,GAAMA,EAAEwB,KAAOi5J,IACvB,IAAKoM,EACD,MAAM,IAAIxmK,MAAM,uBAAuBo6J,oCAE3C,IAAK3iJ,EACD,MAAM,IAAIzX,MAAM,uDAEpB,MAAMkb,EAAQtf,KAAKmiB,MAAMqkJ,QAAQ5iG,WAAW7/D,GAAMA,EAAEwB,KAAOi5J,IAC3D,sBAAgC,CAC5BwC,uBAAwBnlJ,EAAOovJ,SAC/B10G,QAASq0G,EACTjJ,mBAAoBriJ,EAAQ,EAC5BihJ,YACAQ,aAEJ,IAAK,MAAM8J,KAA8B,QAArBnwJ,EAAK1a,KAAKspK,aAA0B,IAAP5uJ,EAAgBA,EAAK,GAClEmwJ,EAAK,CAAEp7J,KAAM,iBAAkB+uJ,YAAW+B,aAElD,CACJ,EAER,EG7SA,IAWImL,GAAgCC,GAAgCC,GAAmCC,GAXnGC,GAAkE,SAAU5C,EAAUlhK,EAAOtH,EAAOyoK,EAAM/nK,GAC1G,GAAa,MAAT+nK,EAAc,MAAM,IAAIlnK,UAAU,kCACtC,GAAa,MAATknK,IAAiB/nK,EAAG,MAAM,IAAIa,UAAU,iDAC5C,GAAqB,mBAAV+F,EAAuBkhK,IAAalhK,IAAU5G,GAAK4G,EAAMzE,IAAI2lK,GAAW,MAAM,IAAIjnK,UAAU,2EACvG,MAAiB,MAATknK,EAAe/nK,EAAE9B,KAAK4pK,EAAUxoK,GAASU,EAAIA,EAAEV,MAAQA,EAAQsH,EAAM5E,IAAI8lK,EAAUxoK,GAASA,CACxG,EACI,GAAkE,SAAUwoK,EAAUlhK,EAAOmhK,EAAM/nK,GACnG,GAAa,MAAT+nK,IAAiB/nK,EAAG,MAAM,IAAIa,UAAU,iDAC5C,GAAqB,mBAAV+F,EAAuBkhK,IAAalhK,IAAU5G,GAAK4G,EAAMzE,IAAI2lK,GAAW,MAAM,IAAIjnK,UAAU,4EACvG,MAAgB,MAATknK,EAAe/nK,EAAa,MAAT+nK,EAAe/nK,EAAE9B,KAAK4pK,GAAY9nK,EAAIA,EAAEV,MAAQsH,EAAM7E,IAAI+lK,EACxF,EAOO,MAAM,GACTvhK,YAAY6N,EAAUu2J,EAAW96J,EAAS+6J,GAMtC,GALAN,GAA+B/kK,IAAI3G,MACnC2rK,GAA+BvoK,IAAIpD,UAAM,GACzC4rK,GAAkCxoK,IAAIpD,KAAM,CAAC,GAC7CA,KAAKwlK,YAAchwJ,EACnBs2J,GAAuB9rK,KAAM2rK,GAAgCI,EAAW,KACpEC,GACAhsK,KAAKisK,mCAAqCD,EAC1C,MAAM,IAAI5nK,MAAM,0DAEpB,GAAuBpE,KAAM0rK,GAAgC,IAAKG,IAAwCvsK,KAAKU,MAC/G,IAAK,MAAMoB,KAAK2qK,EACZ,GAAI3qK,EAAEyoK,UACF,IAAK,MAAMqC,KAAY9qK,EAAEyoK,UAChBqC,EAAS5G,aAGRr0J,aAAyC,EAASA,EAAQgQ,OAAOi+E,QAClEjuF,EAAQgQ,OAAOi+E,QAAUgtE,EAAStG,gBAG7B30J,aAAyC,EAASA,EAAQgQ,OAAOkrJ,YAAcD,EAAStG,gBAF9FsG,EAAS5G,SAAStlK,KAAMoB,EAQ5C,CAOAgrK,gBAAgB7mK,GACZ,IAAImU,EACJ,OAAqD,QAA7CA,EAAK1Z,KAAKwlK,YAAY6G,yBAAsC,IAAP3yJ,OAAgB,EAASA,EAAGsvE,MAAM14E,GAAMA,EAAE/K,KAAOA,GAClH,CAMAsgK,YAAYtgK,GACR,IAAK,GAAuBvF,KAAM4rK,GAAmC,KAAKrmK,GACtE,MAAM,IAAInB,MAAM,iBAAiBmB,eAErC,OAAO,GAAuBvF,KAAM4rK,GAAmC,KAAKrmK,EAChF,CAOA+mK,YAAY/mK,GACR,QAAS,GAAuBvF,KAAM4rK,GAAmC,KAAKrmK,EAClF,CAKA0mK,iCACI,OAAO,GAAuBjsK,KAAM2rK,GAAgC,KAC/DtiK,KAAKjI,IACN,IAAIsY,EAAIgB,EACR,MAAO,GAAGtZ,EAAEulK,mBAAwC,QAApBjtJ,EAAKtY,EAAEyhF,eAA4B,IAAPnpE,OAAgB,EAASA,EAAGrQ,KAAKiH,GAAMA,EAAE/K,QAA8B,QAAtBmV,EAAKtZ,EAAEyoK,iBAA8B,IAAPnvJ,OAAgB,EAASA,EAAGrR,KAAKlD,GAAMA,EAAEy+J,mBAAkB,IAErMr7J,KAAK,IACd,EAEJoiK,GAAiC,IAAIrzG,QAAWszG,GAAoC,IAAItzG,QAAWozG,GAAiC,IAAIpB,QAAWuB,GAAyC,WACxL,IAAInyJ,EACJ,IAAK,MAAMpJ,KAA8C,QAAxCoJ,EAAK1Z,KAAKwlK,YAAYC,oBAAiC,IAAP/rJ,EAAgBA,EAAK,GAAI,CACtF,MAAM87B,EAAO,GAAuBx1C,KAAM2rK,GAAgC,KAAK3iF,MAAM5nF,IAAQ,IAAIsY,EAAI,OAA4B,QAApBA,EAAKtY,EAAEyhF,eAA4B,IAAPnpE,OAAgB,EAASA,EAAGqnB,MAAMwrI,GAAOj8J,EAAE/K,IAAMgnK,EAAGhnK,IAAM+K,EAAE/K,IAAM,GAAGgnK,EAAGhnK,eAAc,IAC3NiwC,IACA,GAAuBx1C,KAAM4rK,GAAmC,KAAKt7J,EAAE/K,IAAM,IAAI6jK,GAAyBppK,KAAMsQ,EAAGklC,GAE3H,CACJ,EFjGA,IAAI,GAAwC,SAAUt1C,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAkC,CAAvB,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUN,MAAMG,EAASC,GAAc,KAAKS,OAClE,GACJ,EAOO,MAAM4rK,GAAkB,IGVxB,MACH7kK,cACI3H,KAAKysK,OAAS,IAAIxpK,IAClBjD,KAAK0sK,WAAa,IAAIzpK,GAC1B,CAQA0pK,MAAMxoK,EAAKmjH,GAAQ,GAEf,IAAKA,IAAU,IACX,OAEJ,MAAM7pG,EAAOzd,KAAKyd,KAAKtZ,GACvB,IAAKnE,KAAKysK,OAAOlpK,IAAIka,GACjB,OAEJ,MAAM0hJ,EAASn/J,KAAKysK,OAAOtpK,IAAIsa,GACzBghJ,EAAKz+J,KAAK0sK,WAAWvpK,IAAIsa,GAC/B,GAAI0hJ,GAAUV,EAAI,CACd,IAAI,IAAIj5J,MAAOu5F,UAAY0/D,EACvB,OAAOr4J,KAAKM,MAAMy4J,GAEtBn/J,KAAKysK,OAAO9oK,OAAO8Z,GACnBzd,KAAK0sK,WAAW/oK,OAAO8Z,EAC3B,CAEJ,CACAtR,MAAMhI,EAAKmG,EAAMsiK,EAAc,eAAyBhQ,aACpD,MAAMn/I,EAAOzd,KAAKyd,KAAKtZ,GACvBnE,KAAKysK,OAAOrpK,IAAIqa,EAAMrX,KAAKC,UAAUiE,IACrCtK,KAAK0sK,WAAWtpK,IAAIqa,GAAM,IAAIjY,MAAOu5F,UAAY6tE,EACrD,CACAnvJ,KAAKkrC,GACD,OAAOzpD,MAAMsJ,KAAKpC,KAAKC,UAAUsiD,IAAQ3/C,QAAO,CAACtJ,EAAGsE,IAAOgB,KAAK6nK,KAAK,GAAIntK,GAAKsE,EAAEsF,WAAW,GAAM,GAAG,EACxG,GH5BG,MAAM,GACT3B,YAAYsZ,EAAS,CAAC,GAClBjhB,KAAKihB,OAASA,CAClB,EASG,SAAS,MAAc6rJ,GAC1B,IAAIpzJ,EAAIgB,EAAIO,EAAIkC,EAAIC,EACpB,OAAO,GAAUpd,UAAM,OAAQ,GAAQ,YACnC,GAAI8sK,EAAiBhtK,OAAS,EAC1B,MAAM,IAAIsE,MAAM,4DAEpB,MAAMgzD,EAAS01G,EAAiB9jF,MAAM5nF,GAAMA,aAAa,KACnD2rK,EAAiCD,EAAiB3lK,QAAQ/F,KAAQA,aAAa,MAC/E2qK,QAAkBzrK,QAAQkvD,IAAIu9G,IAC9B,cAAEC,EAAa,kBAAEC,SA2C/B,SAAkClB,GAC9B,OAAO,GAAU/rK,UAAM,OAAQ,GAAQ,YACnC,MAAMgtK,EAAgB,GAChBC,EAAoB,GAC1B,IAAK,MAAM7rK,KAAK2qK,EAAW,CACvB,GAAI3qK,EAAEyhF,QAAS,CACX,IAAIzlB,EAAK,IAAIh8D,EAAEyhF,SACf,GAAIzhF,EAAEyoK,UACF,IAAK,MAAMqC,KAAY9qK,EAAEyoK,UACjBqC,EAASrH,cACTznG,QAAW8uG,EAASrH,YAAYznG,EAAIh8D,IAIhD4rK,EAAc7qK,QAAQi7D,EAC1B,CACIh8D,EAAE8rK,aACFD,EAAkB9qK,QAAQf,EAAE8rK,YAEpC,CAEA,IAAK,MAAM/qJ,KAAS6qJ,EAChB,GAA8D,IAA1DA,EAAc7lK,QAAQmJ,GAAMA,EAAE/K,KAAO4c,EAAM5c,KAAIzF,OAC/C,MAAM,IAAIsE,MAAM,qEAGxB,MAAO,CACH4oK,gBACAC,oBAER,GACJ,CA1E2DE,CAAyBpB,GACtEqB,EAAerB,EAAU/iF,MAAM5nF,GAAMmK,QAAQnK,EAAEisK,kBAC/Cz6J,EAAU,CACZ+H,QAAS,CACL2yJ,QAAS,CACoJ,QAAxJ5yJ,EAAwG,QAAlGhB,EAAK0zJ,aAAmD,EAASA,EAAaC,sBAAmC,IAAP3zJ,OAAgB,EAASA,EAAGsmF,cAA2B,IAAPtlF,EAAgBA,EAAK,eAAyBslF,SAGvNgtE,cAAeA,EAAcltK,OAAS,EAAIktK,OAAgBlzJ,EAC1DozJ,YAAaD,EAAkBntK,OAAS,EAAImtK,OAAoBnzJ,GAE9DqlJ,EAASqN,GAAgBG,MAAM/5J,GACrC,IAAI4C,EAEJ,GADoBw3J,EAAc7lK,QAAQmJ,GAAMA,EAAEi9J,gBAAkB,SACpDztK,OAAS,GAAKmtK,EAAkBntK,OAAS,EACrD,GAAIq/J,EACA3pJ,EAAW2pJ,MAEV,CACD,MAAMngJ,QAAY,EAA2J,QAArJ7B,EAAwG,QAAlGlC,EAAKmyJ,aAAmD,EAASA,EAAaC,sBAAmC,IAAPpyJ,OAAgB,EAASA,EAAGrG,WAAwB,IAAPuI,EAAgBA,EAAK,eAAyBvI,IAAKhC,GACxO,IAAKoM,EACD,MAAM,IAAI5a,MAAM,uBAEpBoR,EAAWwJ,EACmE,MAArD,QAAnB5B,EAAK4B,EAAIspC,YAAyB,IAAPlrC,OAAgB,EAASA,EAAGowJ,eACzDhB,GAAgBrgK,MAAMyG,EAAS4C,EAEvC,CAEJ,OAAO,IAAI,GAAoBA,QAA2CA,EAAW,CACjF8yC,KAAM,CACFmlH,MAAO,EACPD,aAAc,KAElB/H,aAAcuH,EAAc3jK,KAAKtF,IAAM,CACnCwB,GAAIxB,EAAEwB,GACN+iD,KAAM,CAAC,EACPk+G,QAAS,OAEb6F,kBAAmB,IACpBN,EAAW30G,EAClB,GACJ,CI1EO,SAASs2G,GAAiBjO,GAC7B,OAAQA,EAEHj2J,QAAQ,UAAW,KAEnBA,QAAQ,SAAU,KAElBgC,OAEAmiK,mBACT,CCbA,MAAM,GAAW,CACbpoK,GAAI,SACJq5H,MAAO,EACPgvC,cAAe,CAAC,YAWb,SAAS,GAAOnO,EAAMxuJ,KAAY44J,GACrC,MAAM5oJ,EAASliB,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAG,IAAWyR,GACpD48J,EAAcH,GAAiBjO,GAC/Bt9I,EAAQ,CACV5c,GAAI0b,EAAO1b,GACXgoK,cAAe,SACf3uE,SAAU7/F,OAAOS,OAAO,CAAE2iB,MAAO,CACzBs9I,KAAMoO,IACL5sJ,IAEb,MAAO,CACH0lJ,gBAAiB,SACjB1lJ,OAAQliB,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAGyhB,GAAS,CAAEw+I,SACnD58E,QAAS,CAAC1gE,GACV0nJ,YAER,CC9BA,MAAM,GAAW,CACbtkK,GAAI,cACJq5H,MAAO,GAUJ,SAASsuC,GAAYzN,EAAMxuJ,GAC9B,MAAMgQ,EAASliB,OAAOS,OAAOT,OAAOS,OAAO,CAAC,EAAG,IAAWyR,GAE1D,MAAO,CACH01J,gBAAiB,cACjBuG,YAAa,CAHHnuK,OAAOS,OAAO,CAAE+tK,cAAe,aAA+BprJ,MAAOurJ,GAAiBjO,IAASx+I,IAKjH,CCHO,SAAS6sJ,GAAiB78J,KAAY44J,GACzC,OAAO,GAAO,IAAK9qK,OAAOS,OAAO,CAAE+F,GAAI,mBAAoBqoK,cAAe,CAAC,YAA8B38J,MAAa44J,EAC1H,CCpBA,IAeIkE,GAOOC,IANX,SAAWD,GACPA,EAAgC,KAAI,OACpCA,EAAoC,SAAI,WACxCA,EAAmC,QAAI,UACvCA,EAAoC,SAAI,UAC3C,CALD,CAKGA,KAA8BA,GAA4B,CAAC,IAE9D,SAAWC,GACPA,EAAiC,SAAI,WACrCA,EAA6C,qBAAI,wBACjDA,EAAuC,eAAI,kBAC3CA,EAAuC,eAAI,kBAC3CA,EAAmC,WAAI,cACvCA,EAAwC,gBAAI,oBAC5CA,EAAgC,QAAI,UACpCA,EAAuC,eAAI,kBAC3CA,EAA0C,kBAAI,sBAC9CA,EAAwC,gBAAI,mBAC5CA,EAA+B,OAAI,cACtC,CAZD,CAYGA,KAA2BA,GAAyB,CAAC,IC5BjD,MAAMC,GAILh9J,cACA,OAAOjR,KAAKq2G,QAAQlvG,QAAQA,GAAWA,EAAOsI,OAAS8tJ,EAAgB2Q,SAC3E,CAIIC,cACA,OAAOnuK,KAAKq2G,QAAQlvG,QAAQA,GAAWA,EAAOsI,OAAS8tJ,EAAgB6I,QAC3E,CAMAz+J,YAAYymK,GACR,IAAI10J,EACJ1Z,KAAKq2G,QAAU,GACfr2G,KAAKq2G,QAAyG,QAA9F38F,EAAK00J,aAAqD,EAASA,EAAc/3D,eAA4B,IAAP38F,EAAgBA,EAAK,EAC/I,CACAgsJ,oBAAoBrvD,GAChBr2G,KAAKq2G,QAAUA,EACX,KACAjoG,SAASswJ,cAAc,IAAIC,YAAYhB,EAAe0Q,eAAgB,CAClExP,OAAQ,CACJxoD,QAASr2G,KAAKq2G,WAI9B,CAIA/xG,QACItE,KAAKq2G,QAAU,EACnB,CAMAi4D,kBACI,MAAO,CACHj4D,QAASr2G,KAAKq2G,QAEtB,CACAhsF,SAASriB,GACLhI,KAAKq2G,QAAUruG,EAAMquG,OACzB,CASAk4D,aAAapqK,EAAKzD,GACd,MAAM8tK,EAAYxuK,KAAKyuK,gCAAgCtqK,EAAKzD,GACtDguK,EAAcF,EAAUrvI,SAC9BqvI,EAAUrvI,UAAYqvI,EAAUrvI,SAC5B,KACA/wB,SAASswJ,cAAc,IAAIC,YAAYhB,EAAegR,sBAAuB,CACzE9P,OAAQ,CACJ16J,MACAsD,KAAM/G,EACNy+B,UAAWuvI,KAI3B,CAQAE,aAAazqK,EAAKzD,GACIV,KAAKyuK,gCAAgCtqK,EAAKzD,GAClDy+B,UAAW,EACjB,KACA/wB,SAASswJ,cAAc,IAAIC,YAAYhB,EAAegR,sBAAuB,CACzE9P,OAAQ,CACJ16J,MACAsD,KAAM/G,EACNy+B,UAAU,KAI1B,CAQA0vI,eAAe1qK,EAAKzD,GACEV,KAAKyuK,gCAAgCtqK,EAAKzD,GAClDy+B,UAAW,EACjB,KACA/wB,SAASswJ,cAAc,IAAIC,YAAYhB,EAAegR,sBAAuB,CACzE9P,OAAQ,CACJ16J,MACAsD,KAAM/G,EACNy+B,UAAU,KAI1B,CAOA2vI,sBAAsB3qK,GAClB,GAAIA,EAAJ,CACI,MAAMizD,EAASp3D,KAAKq2G,QAAQrtB,MAAM5mF,GAAMA,EAAE+B,MAAQA,IAC9CizD,GAAU62G,GAAcc,2BAA2B33G,IACnDA,EAAOnmD,QAAQ3J,SAASlF,GAAOA,EAAE+8B,UAAW,GAGpD,MACAn/B,KAAKq2G,QAAQ/uG,SAAS8vD,IACdA,GAAU62G,GAAcc,2BAA2B33G,IACnDA,EAAOnmD,QAAQ3J,SAAS0nK,GAAQA,EAAG7vI,UAAW,GAClD,IAEA,KACA/wB,SAASswJ,cAAc,IAAIC,YAAYhB,EAAegR,uBAE9D,CAUAM,YAAY9qK,EAAKonC,EAAKrkC,GAClB,MAAMgoK,EAAalvK,KAAKq2G,QAAQzyC,WAAWlkE,GAAMA,EAAEyE,MAAQA,IAC3D,IAAIywE,EACJ,IAAoB,IAAhBs6F,EACAt6F,EAAS,CACLzwE,MACAupC,IAAKxmC,EAAIxB,WACT2nB,MAAOke,EAAI7lC,WACX6lC,IAAKA,EAAI7lC,WACTwB,IAAKA,EAAIxB,WACTlE,MAAO2C,EACPsL,KAAM8tJ,EAAgB6I,QAE1BpmK,KAAKq2G,QAAQl0G,KAAKyyE,OAEjB,KAAKq5F,GAAckB,0BAA0BnvK,KAAKq2G,QAAQ64D,IAC3D,MAAM,IAAI9qK,MAAM,UAAUD,6BAG1BywE,EAAS50E,KAAKq2G,QAAQ64D,GACtBt6F,EAAOvnD,MAAQke,EAAI7lC,WACnBkvE,EAAOlnC,IAAMxmC,EAAIxB,UACrB,CACI,KACA0I,SAASswJ,cAAc,IAAIC,YAAYhB,EAAegR,sBAAuB,CACzE9P,OAAQ,CACJ16J,IAAKA,EACLsD,KAAMmtE,EAAOpzE,MACb6rB,MAAOke,EAAI7lC,WACXgoC,IAAKxmC,EAAIxB,cAIzB,CAKAo/J,iBACI,MAAMzuD,EAAU,GAChB,IAAK,MAAMlvG,KAAUnH,KAAKq2G,QACtB,GAAI43D,GAAcc,2BAA2B5nK,IACzC8mK,GAAcmB,0BAA0BjoK,GAAS,CACjD,MAAMg4B,EAAWh4B,EAAO8J,QAAQ9J,QAAQkoK,IAAqC,IAAvBA,EAAUlwI,WAChE,GAAwB,IAApBA,EAASr/B,OACT,SAEJu2G,EAAQl0G,KAAK,CACTgC,IAAKgD,EAAOhD,IACZylB,OAAQuV,EAAS91B,KAAK3J,GAAMA,EAAEgB,QAC9Bk+F,SAAU,CACN0wE,cAAc,IAG1B,MACK,GAAIrB,GAAckB,0BAA0BhoK,GAAS,CACtD,IAAKA,EAAOkmB,QAAUlmB,EAAOumC,IACzB,SAEJ2oE,EAAQl0G,KAAK,CACTgC,IAAKgD,EAAOhD,IACZylB,OAAQ,CAACziB,EAAOkmB,MAAOlmB,EAAOumC,KAC9BkxD,SAAU,CACN0wE,cAAc,IAG1B,CAEJ,OAAOj5D,CACX,CAOAk5D,iBAAiBprK,GACb,MAAM0xD,EAAM71D,KAAKq2G,QAAQrtB,MAAM5mF,GAAMA,EAAE+B,MAAQA,IAC/C,GAAI0xD,IACCo4G,GAAcc,2BAA2Bl5G,IACtCo4G,GAAcmB,0BAA0Bv5G,IAAO,CAEnD,OADwBA,EAAI5kD,QAAQ9J,QAAQqoK,IAA+B,IAApBA,EAAOrwI,WACvC91B,KAAK3J,GAAMA,EAAEgB,OACxC,CACA,GAAIm1D,GACAo4G,GAAckB,0BAA0Bt5G,IACxCA,EAAIxoC,OACJwoC,EAAInoB,IACJ,MAAO,CAACmoB,EAAIxoC,MAAOwoC,EAAInoB,IAG/B,CAMA+hI,cACI,MAAMxuJ,EAAS,IAAInY,gBACnB,IAAK,MAAM3B,KAAUnH,KAAKq2G,QACtB,GAAI43D,GAAcc,2BAA2B5nK,IACzC8mK,GAAcmB,0BAA0BjoK,GAAS,CACjD,MAAMg4B,EAAWh4B,EAAO8J,QAAQ9J,QAAQkoK,IAAqC,IAAvBA,EAAUlwI,WAChE,GAAwB,IAApBA,EAASr/B,OACT,SAEJmhB,EAAO0lD,OAAO,KAAKx/D,EAAOhD,MAAOg7B,EAAS91B,KAAK3J,GAAMA,EAAEgB,QAAO6I,KAAK,KACvE,MACK,GAAI0kK,GAAckB,0BAA0BhoK,GAAS,CACtD,IAAKA,EAAOkmB,QAAUlmB,EAAOumC,IACzB,SAEJzsB,EAAO0lD,OAAO,KAAKx/D,EAAOhD,MAAO,GAAGgD,EAAOkmB,SAASlmB,EAAOumC,MAC/D,CAEJ,OAAOzsB,EAAOvb,UAClB,CAMAgqK,kBAAkBzuJ,GACdjhB,KAAK8uK,wBACL,IAAK,MAAO3qK,EAAKzD,KAAUugB,EAAOxB,UAC9B,GAAItb,EAAI6H,WAAW,KAAM,CACrB,MAAM2jK,EAAYxrK,EAAIoL,UAAU,GAChC7O,EAAM0I,MAAM,KAAK9B,SAASvF,GAAM/B,KAAK4uK,aAAae,EAAW5tK,IACjE,MACK,GAAIoC,EAAI6H,WAAW,KAAM,CAC1B,MAAM4jK,EAAYzrK,EAAIoL,UAAU,GAChCvP,KAAKivK,YAAYW,EAAW9jI,WAAWprC,EAAM0I,MAAM,KAAK,IAAK0iC,WAAWprC,EAAM0I,MAAM,KAAK,IAC7F,CAER,CAMAymK,kBACI,MAAMA,EAAkB,GACxB,IAAK,MAAM1oK,KAAUnH,KAAKq2G,QACtB,GAAI43D,GAAcc,2BAA2B5nK,IACzC8mK,GAAcmB,0BAA0BjoK,GAAS,CACjD,MAAMg4B,EAAWh4B,EAAO8J,QAAQ9J,QAAQkoK,IAAqC,IAAvBA,EAAUlwI,WAChE,GAAwB,IAApBA,EAASr/B,OACT,SAEJ,IAAK,MAAMs3D,KAAUj4B,EACjB0wI,EAAgB1tK,KAAK,CACjBgC,IAAKgD,EAAOhD,IACZ3C,MAAO2F,EAAO3F,MACdiO,KAAMtI,EAAOsI,KACb/O,MAAO02D,EAAO12D,OAG1B,MACK,GAAIutK,GAAckB,0BAA0BhoK,GAAS,CACtD,IAAKA,EAAOkmB,QAAUlmB,EAAOumC,IACzB,SAEJmiI,EAAgB1tK,KAAK,CACjBgC,IAAKgD,EAAOhD,IACZ3C,MAAO2F,EAAO3F,MACdiO,KAAMtI,EAAOsI,KACb/O,MAAO,GAAGyG,EAAOkmB,SAASlmB,EAAOumC,OAEzC,CAEJ,OAAOmiI,CACX,CAOApB,gCAAgCtqK,EAAKzD,GACjC,MAAMovK,EAAc9vK,KAAKq2G,QAAQzyC,WAAWxhE,GAAMA,EAAE+B,MAAQA,IAC5D,IAAIizD,EACJ,IAAqB,IAAjB04G,EACA14G,EAAS,CACLjzD,MACA3C,MAAO2C,EACP8M,QAAS,GACTxB,KAAM8tJ,EAAgB2Q,SAE1BluK,KAAKq2G,QAAQl0G,KAAKi1D,OAEjB,KAAK62G,GAAcc,2BAA2B/uK,KAAKq2G,QAAQy5D,MAC3D7B,GAAcmB,0BAA0BpvK,KAAKq2G,QAAQy5D,IACtD,MAAM,IAAI1rK,MAAM,UAAUD,8BAG1BizD,EAASp3D,KAAKq2G,QAAQy5D,EAC1B,CACA,MAAMC,EAAiB34G,EAAOnmD,QAAQ2yD,WAAWxhE,GAAMA,EAAE1B,QAAUA,IACnE,OAAwB,IAApBqvK,GACA34G,EAAOnmD,QAAQ9O,KAAK,CAChBqqF,MAAO,EACP/kF,KAAM/G,EACNy+B,UAAU,EACVz+B,MAAOA,IAEJ02D,EAAOnmD,QAAQmmD,EAAOnmD,QAAQnR,OAAS,IAE3Cs3D,EAAOnmD,QAAQ8+J,EAC1B,CAMAhoK,iCAAiCZ,GAC7B,OAAOA,EAAOsI,OAAS8tJ,EAAgB6I,MAC3C,CAMAr+J,kCAAkCZ,GAC9B,OAAOA,EAAOsI,OAAS8tJ,EAAgB2Q,OAC3C,CAMAnmK,iCAAiCZ,GAC7B,OAAOA,EAAOsI,OAAS8tJ,EAAgByS,MAC3C,0NChY6M,SAASrwK,IAAI,OAAOA,EAAEZ,OAAOS,OAAOT,OAAOS,OAAOoG,OAAO,SAASnG,GAAG,IAAI,IAAIoB,EAAE,EAAEA,EAAEhB,UAAUC,OAAOe,IAAI,CAAC,IAAIjB,EAAEC,UAAUgB,GAAG,IAAI,IAAIkD,KAAKnE,EAAEb,OAAOK,UAAUC,eAAeC,KAAKM,EAAEmE,KAAKtE,EAAEsE,GAAGnE,EAAEmE,GAAG,CAAC,OAAOtE,CAAC,EAAEE,EAAEI,MAAMC,KAAKH,UAAU,CAAC,SAASiE,EAAErE,GAAG,IAAIoB,EAAEpB,GAAG,IAAIG,EAAE,GAAGmE,EAAE,GAAG,MAAM3B,EAAEvB,EAAEwB,QAAQ,MAAM,IAAID,IAAI2B,EAAElD,EAAEwG,MAAMjF,GAAGvB,EAAEA,EAAEwG,MAAM,EAAEjF,IAAI,MAAM1C,EAAEmB,EAAEwB,QAAQ,KAAK,OAAO,IAAI3C,IAAIE,EAAEiB,EAAEwG,MAAM3H,GAAGmB,EAAEA,EAAEwG,MAAM,EAAE3H,IAAI,CAAC0a,SAASvZ,EAAE6a,OAAO,MAAM9b,EAAE,GAAGA,EAAE6d,KAAK,MAAM1Z,EAAE,GAAGA,EAAE,CAAC,MAAMC,EAAE,6BAA6BmB,EAAE1F,IAAI,GAAG,iBAAiBA,EAAE,OAAO,CAACA,GAAGuE,EAAEkO,KAAKzS,GAAX,CAAeA,EAAC,EAAwH,SAASyG,EAAEzG,EAAEoB,EAAkG,IAAkB,IAAIjB,EAAE,IAAIuF,EAAE1F,GAAG,OAAOA,EAAE,GAAGA,EAAEuM,WAAW,OAAOvM,EAAEuM,WAAW,OAAO,OAAOvM,EAAE,MAAMsE,EAAE,OAAOnE,EAAE,MAAMiB,EAAEA,EAAtP,IAA6PjB,EAAE,IAAI,MAAM,GAAG,MAAMmE,GAAGA,EAAEuzD,SAAS,KAAKvzD,EAAEsD,MAAM,GAAG,GAAGtD,IAAItE,EAAEuM,WAAW,KAAKvM,EAAE,IAAIA,KAAK,CAAC,MAAM2B,EAAE3B,GAAG,MAAMA,OAAE,EAAOA,EAAEuM,WAAW,KAA4EzK,EAAE,CAAC9B,EAAEoB,IAAI,iBAAiBpB,EAAEA,EAAE0F,EAAE1F,GAAG2B,EAAE3B,GAAG,SAASA,GAAG,MAAMoB,EAAEqF,EAAEzG,GAAwG,OAAOoB,CAAC,CAAtI,CAAwIpB,GAAG,SAASA,EAAEoB,GAAG,GAAGO,EAAE3B,GAAG,OAAOA,EAAE,MAAY2C,GAAE,aAAE3C,EAAEoB,GAAG,OAAuCuB,CAAC,CAA5F,CAA8F3C,EAAEoB,GAAGpB,EAAEZ,EAAE,CAAC,KAAK,WAAW,UAAU,eAAe,kBAAkB,cAAc,WAAW,kBAAkB,QAAQ,UAAU,aAAa,SAASsH,EAAE1G,GAAG,OAAOyG,EAAEzG,EAA/3B,GAAq4B,CAAC,MAAM4B,EAAE,CAAC6qG,gBAAgB,SAAS+jE,YAAY,SAAS1iE,gBAAgB,QAAQ,SAASxrG,EAAEtC,GAAgB,OAAO,gBAAgB,WAAE,MAAK,EAAEmP,SAAShP,KAAkB,gBAAgBd,EAAEa,EAAE,CAAC,EAAEF,EAAE,CAACywK,UAAUtwK,MAAK,CAAC,MAAMd,UAAU,YAAY6I,YAAYlI,GAAGmI,MAAMnI,GAAGO,KAAKmwK,gBAAgB,EAAE3vD,mBAAmB/gH,EAAE8gH,UAAU1/G,MAAMb,KAAK+c,MAAMwwF,gBAAgB9tG,EAAEoB,GAAG,CAAC4hB,UAAU,CAACziB,KAAK+c,MAAM0F,UAAUziB,KAAK+c,MAAMmvF,iBAAiB/kG,OAAOoE,SAAShC,KAAK,KAAK4N,MAAMxX,EAAE,CAAC,EAAEK,KAAK+c,MAAM5F,MAAMnX,KAAK+c,MAAMkzJ,cAAc,KAAK,IAAIpvK,GAAE,EAAG,oBAAoB6B,QAAQA,OAAOk1J,uBAAuB/2J,GAAE,GAAIb,KAAKgI,MAAM,CAACooK,YAAYvvK,GAAGb,KAAKqwK,cAAc,KAAKrwK,KAAK8yB,UAAU9yB,KAAK8yB,UAAUltB,KAAK5F,KAAK,CAACswK,YAAY,IAAI7wK,EAAEiD,OAAOkM,SAASwL,SAAS1X,OAAOkM,SAAS8M,OAAO1b,KAAK+c,MAAMmzJ,WAAWlwK,KAAK+c,MAAMmzJ,UAAU91J,WAAW3a,EAAEO,KAAK+c,MAAMmzJ,UAAU91J,SAASpa,KAAK+c,MAAMmzJ,UAAUx0J,QAAQ,MAAM7a,EAAEiD,EAAEvC,EAAEvB,KAAK+c,MAAM2B,GAAGjf,IAAIG,EAAEiB,EAAEuZ,SAASvZ,EAAE6a,OAAO,GAAGjc,IAAIG,EAAE,OAAO6qE,UAAUlF,QAAQ3lE,EAAE,CAAC0qB,uBAAuB,IAAItqB,KAAKuwK,GAAG,OAAO,MAAM1sK,SAASpE,EAAEmiC,GAAG/gC,GAAGb,KAAKuwK,GAAGvwK,KAAKqwK,eAAerwK,KAAKqwK,cAAcvlK,QAAQrL,EAAE42J,UAAUx1J,GAAGpB,EAAEs3J,YAAY,CAACjkI,UAAUrzB,GAAGO,KAAK+c,MAAM0gC,UAAU1+C,OAAOK,UAAUC,eAAeC,KAAKU,KAAK+c,MAAM0gC,SAAS,WAAWz9C,KAAK+c,MAAM0gC,SAASliC,QAAQ9b,EAAEO,KAAK+c,MAAM0gC,UAAUz9C,KAAK+c,MAAM0gC,SAASh+C,GAAGO,KAAKgI,MAAMooK,aAAa3wK,IAAIO,KAAKuwK,GAAG,EAAE9wK,EAAEoB,KAAK,MAAMjB,EAAE,IAAI8C,OAAOk1J,sBAAqBh4J,IAAIA,EAAE0H,SAAQ1H,IAAIH,IAAIG,EAAE0d,QAAQzc,EAAEjB,EAAEi4J,gBAAgBj4J,EAAE4wK,kBAAkB,EAAC,GAAE,IAAI,OAAO5wK,EAAEw2J,QAAQ32J,GAAG,CAACoE,SAASjE,EAAEgiC,GAAGniC,EAAG,EAAtK,CAAwKA,GAAEA,IAAIA,EAAEO,KAAKqwK,cAAcrwK,KAAKswK,YAAYtwK,KAAKqwK,eAAerwK,KAAKqwK,cAAcvlK,OAAM,IAAI,CAAC6f,SAAS,MAAMlrB,EAAEO,KAAK+c,OAAO2B,GAAG9e,EAAEwgH,SAASr8G,EAAE/D,KAAKmwK,gBAAgB7pJ,QAAQ5mB,EAAE2hG,aAAar9F,EAAEgE,MAAM7I,EAAEqK,QAAQtD,EAAEgqK,UAAU9uK,GAAG3B,EAAEsF,EAAE,SAAStF,EAAEoB,GAAG,GAAG,MAAMpB,EAAE,MAAM,CAAC,EAAE,IAAIG,EAAEmE,EAAE3B,EAAE,CAAC,EAAE1C,EAAEX,OAAOgK,KAAKtJ,GAAG,IAAIsE,EAAE,EAAEA,EAAErE,EAAEI,OAAOiE,IAAIlD,EAAEwB,QAAQzC,EAAEF,EAAEqE,KAAK,IAAI3B,EAAExC,GAAGH,EAAEG,IAAI,OAAOwC,CAAC,CAAjI,CAAmI3C,EAAEZ,GAAgNsH,EAAE5E,EAAE3B,EAAEwB,EAAEgZ,UAAU,OAAOjV,EAAEgB,GAAgB,gBAAgB,OAAExG,EAAE,CAAC+e,GAAGvY,EAAE6B,MAAM7I,EAAEihH,SAASr8G,EAAE05C,SAASz9C,KAAK8yB,UAAUuuE,aAAa5hG,IAAIuE,GAAGA,EAAEvE,GAAG,MAAMoB,EAAEiD,EAAEqC,GAAGskE,UAAUlG,SAAS1jE,EAAEuZ,SAASvZ,EAAE6a,OAAM,EAAG4K,QAAQ7mB,IAAI,GAAGC,GAAGA,EAAED,KAAK,IAAIA,EAAE0yB,QAAQnyB,KAAK+c,MAAMO,QAAQ7d,EAAE+yB,kBAAkB/yB,EAAEi6C,SAASj6C,EAAEk6C,QAAQl6C,EAAEm6C,SAASn6C,EAAE4kC,UAAU,CAAC5kC,EAAEkyB,iBAAiB,IAAI9wB,EAAEqF,EAAE,MAAMtG,EAAEke,UAAU3X,KAAK/E,EAAEgZ,SAAS,kBAAkBlU,GAAGtG,IAAIiB,GAAE,GAAI6B,OAAOioE,YAAYxkE,EAAE,CAAC6B,MAAM7I,EAAEqK,QAAQ3I,GAAG,CAAC,OAAM,CAAC,GAAIkE,IAAiB,gBAAgB,IAAIpF,EAAE,CAACyV,KAAKjP,GAAGpB,GAAG,EAAEjG,EAAEisB,UAAUprB,EAAE,CAAC,EAAE0B,EAAE,CAACilB,QAAQ,OAAO5H,GAAG,oBAAoBlV,QAAQ,OAAOxB,MAAM,WAAW,IAAIM,EAAE,cAAa,CAAC7I,EAAEG,IAAiB,gBAAgBmC,EAAEpC,EAAE,CAAC89C,SAAS79C,GAAGH,MAAK,MAAMW,EAAE,CAACX,EAAEoB,KAAK6B,OAAOioE,YAAYppE,EAAE9B,EAAEiD,OAAOkM,SAASwL,UAAUvZ,EAAC,yQCA1zI,SAASuB,IAAI,OAAOA,EAAErD,OAAOS,OAAOT,OAAOS,OAAOoG,OAAO,SAASnG,GAAG,IAAI,IAAIoB,EAAE,EAAEA,EAAEhB,UAAUC,OAAOe,IAAI,CAAC,IAAIjB,EAAEC,UAAUgB,GAAG,IAAI,IAAIkD,KAAKnE,EAAEb,OAAOK,UAAUC,eAAeC,KAAKM,EAAEmE,KAAKtE,EAAEsE,GAAGnE,EAAEmE,GAAG,CAAC,OAAOtE,CAAC,EAAE2C,EAAErC,MAAMC,KAAKH,UAAU,CAAC,MAAMiE,EAAE,IAAIb,IAAIkC,EAAE,CAAChC,IAAI1D,GAAGqE,EAAEX,IAAI1D,IAAI,GAAG2D,IAAI3D,EAAEoB,GAAG,MAAMjB,EAAEkE,EAAEX,IAAI1D,IAAI,GAAGG,EAAEuC,KAAKtB,GAAGiD,EAAEV,IAAI3D,EAAEG,EAAE,EAAE+D,OAAOlE,GAAGqE,EAAEH,OAAOlE,EAAE,GAAGC,EAAE,oBAAoBiD,MAAMA,KAAKmhE,qBAAqBnhE,KAAKmhE,oBAAoBl+D,KAAKlD,SAAS,SAASjD,GAAG,MAAMoB,EAAE2E,KAAKC,MAAM,OAAO/B,YAAW,WAAWjE,EAAE,CAACgxK,YAAW,EAAGC,cAAc,WAAW,OAAO1rK,KAAKkC,IAAI,EAAE,IAAI1B,KAAKC,MAAM5E,GAAG,GAAG,GAAE,EAAE,EAAE,IAAImD,EAAYvE,KAAiFuE,IAAIA,EAAE,CAAC,IAAnF2sK,YAAY,eAAelxK,EAAEmxK,KAAK,OAAOnxK,EAAEoxK,cAAc,kBAA8B,MAAMlxK,EAAE,IAAI0F,IAAI,CAAC,MAAM,WAAW,0BAA0B,WAAW,SAAS,YAAYN,EAAE,IAAIM,IAAIxG,EAAE,IAAIoE,IAAI,SAAS7B,EAAEP,GAAgB,OAAO,gBAAgB,WAAE,MAAK,IAAiB,gBAAgB1B,EAAE0B,IAAG,CAAC,SAAS1B,EAAES,GAAG,MAAMguE,IAAI9pE,EAAEgtK,SAASnxK,EAAEqE,EAAE2sK,aAAa/wK,GAAG,CAAC,GAAGwa,SAASrV,IAAG,mBAAI,IAAG,gBAAE,KAAK,IAAItF,EAAE,OAAOE,GAAG,KAAKqE,EAAE2sK,YAAYlxK,EAAE4B,EAAEzB,GAAG,MAAM,KAAKoE,EAAE4sK,KAAKlxK,GAAE,KAAKD,EAAE4B,EAAEzB,EAAC,IAAI,MAAM,KAAKoE,EAAE6sK,cAAc,CAAC,MAAMpxK,EAAEX,EAAEc,GAAGuF,EAAE/B,IAAI2B,EAAEtF,EAAE,EAAE,MAAM,KAAK,MAAMs7D,OAAOl6D,EAAEkwK,aAAanxK,EAAEoxK,cAAcjtK,GAAGtE,GAAG,CAAC,EAAEG,IAAI,MAAMiB,GAAGA,EAAEgG,oBAAoB,OAAOjH,IAAImE,IAAI,MAAMlD,GAAGA,EAAEgG,oBAAoB,QAAQ9C,IAAI,MAAMlD,GAAGA,EAAEiL,QAAO,CAAC,GAAG,IAAInM,IAAIqE,EAAE6sK,cAAc,CAAC,MAAMhwK,EAAEsF,EAAEvG,GAAGmE,EAAEjF,EAAEc,GAAG,MAAM,oBAAoB8C,QAAQyC,EAAE/B,IAAI2B,EAAEhB,GAAgB,gBAAgB,SAASlD,EAAEuB,EAAE,CAACqN,KAAK,iBAAiB,gBAAgB9P,EAAE0kE,YAAY,aAAatgE,EAAE,CAACq5C,wBAAwB,CAACC,OAAOl3C,EAAEvG,MAAMwC,EAAE,CAACqN,KAAK,iBAAiBm+D,IAAI1nE,EAAEpC,GAAG,gBAAgBnE,EAAE0kE,YAAY,aAAatgE,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS1C,EAAE5B,GAAG,MAAM8F,GAAG1E,EAAE+sE,IAAIhuE,EAAEkxK,SAAS/sK,EAAEC,EAAE2sK,YAAYM,OAAOntK,EAAEmtI,QAAQ9rI,GAAG1F,GAAG,CAAC,EAAEC,EAAEmB,GAAGjB,EAAED,EAAE,CAAC,OAAO,SAASyB,EAAE,CAAC4vF,KAAKltF,EAAE+D,MAAM1C,GAAG,GAAGzF,EAAE,CAAC,IAAI,MAAMD,KAAKE,EAAE,GAAG,MAAMyB,GAAGA,EAAE3B,GAAG,CAAC,IAAIN,EAAE,MAAM0B,EAAEhC,EAAEsE,IAAIzD,IAAI,CAAC,GAAGwxK,UAAUtxK,EAAE,KAAK,MAAMiB,OAAE,EAAOA,EAAEpB,KAAK,CAAC,EAAE,IAAI4B,EAAE6E,EAAEtG,EAAEuC,KAAK,MAAMf,OAAE,EAAOA,EAAE3B,IAAI,MAAMoB,GAAG,OAAO1B,EAAE0B,EAAEpB,KAAKN,EAAEykB,MAAM,MAAMxiB,GAAG,OAAOC,EAAED,EAAE3B,KAAK4B,EAAE/B,KAAK8B,EAAE,MAAMP,GAAG,OAAOqF,EAAErF,EAAEpB,SAAI,EAAOyG,EAAE0d,OAAO/kB,EAAEuE,IAAI1D,EAAE0C,EAAE,CAAC,EAAEvB,EAAE,CAAC,CAACpB,GAAG,CAACyxK,UAAUtxK,KAAK,CAAC,GAAGmF,EAAExB,IAAI7D,GAAG,OAAO,IAAI,CAAC,MAAMqC,EAAEoE,EAAE1G,GAAGkJ,EAAE7J,EAAEW,GAAG6I,EAAE8F,SAAS6I,cAAc,UAAUpW,IAAIyH,EAAE/C,GAAG1E,GAAGyH,EAAEkzD,QAAQs1G,SAAS/sK,EAAE,IAAI,MAAMtE,EAAEoB,KAAK9B,OAAO0gB,QAAQ9W,GAAGL,EAAE4O,aAAazX,EAAEoB,GAAGkB,IAAIuG,EAAEmhE,YAAY1nE,GAAGnC,IAAI0I,EAAEslE,IAAIhuE,GAAG,MAAM6L,EAAE,CAAC,EAAE,GAAG/L,EAAE,CAAC,IAAI,MAAMD,KAAKE,EAAE,CAAC,MAAMkB,EAAEA,GAAGS,EAAET,EAAEnB,EAAED,GAAG6I,EAAEtB,iBAAiBvH,EAAEoB,GAAG4K,EAAE,GAAGhM,aAAaoB,CAAC,CAACkE,EAAE4B,IAAIjH,EAAE,CAAC,OAAO0O,SAASjN,KAAKqW,YAAYlP,GAAG,CAACyyD,OAAOzyD,EAAEyoK,aAAatlK,EAAEslK,aAAaC,cAAcvlK,EAAEulK,cAAc,CAAC,SAAS7qK,EAAE1G,GAAG,MAAM29C,wBAAwBv8C,EAAE0Z,SAAS3a,EAAE,IAAIH,GAAG,CAAC,GAAG49C,OAAOt5C,EAAE,IAAIlD,GAAG,CAAC,EAAE,OAAOkD,GAAGnE,CAAC,CAAC,SAASd,EAAEW,GAAG,MAAMoB,EAAE,CAAC,EAAE,IAAI,MAAMjB,EAAEmE,KAAKhF,OAAO0gB,QAAQhgB,GAAGE,EAAE4D,IAAI3D,KAAKiB,EAAEjB,GAAGmE,GAAG,OAAOlD,CAAC,CAAC,SAASqF,EAAEzG,GAAG,GAAGA,EAAE,MAAM,4BAA4BiO,mBAAmBjO,IAAI,CAAC,SAAS6B,EAAE7B,EAAEoB,EAAEjB,GAAG,MAAMmE,EAAElF,EAAEsE,IAAItC,IAAI,CAAC,EAAE,IAAI,MAAMA,KAAK,MAAMkD,GAAG,OAAO3B,EAAE2B,EAAEnE,SAAI,EAAOwC,EAAE8uK,YAAY,GAAG,CAAC,IAAI9uK,EAAEvB,EAAEpB,EAAE,CAACZ,EAAEuE,IAAIvC,EAAE,CAAC,CAACjB,GAAG,CAACgkB,MAAMnkB,IAAI,kGCIp5F,MAAM0xK,UAAmB/sK,OAKlB,MAAMgtK,UAA6BD,EACxCxpK,YAAY0vC,GACVzvC,MAAM,qBAAqByvC,EAAOg6H,cACpC,EAMK,MAAMC,UAA6BH,EACxCxpK,YAAY0vC,GACVzvC,MAAM,qBAAqByvC,EAAOg6H,cACpC,EAMK,MAAME,UAA6BJ,EACxCxpK,YAAY0vC,GACVzvC,MAAM,qBAAqByvC,EAAOg6H,cACpC,EAMK,MAAMG,UAAsCL,GAK5C,MAAMM,UAAyBN,EACpCxpK,YAAY4lC,GACV3lC,MAAM,gBAAgB2lC,IACxB,EAMK,MAAMmkI,UAA6BP,GAKnC,MAAMQ,UAA4BR,EACvCxpK,cACEC,MAAM,4BACR,ECvDF,MAAMhI,EAAI,UACRF,EAAI,QACJyF,EAAI,OAEOysK,EAAa,CACxBrJ,KAAM3oK,EACN05C,MAAO15C,EACPq1E,IAAKr1E,GAGMiyK,EAAW,CACtBtJ,KAAM3oK,EACN05C,MAAO55C,EACPu1E,IAAKr1E,GAGMkyK,EAAwB,CACnCvJ,KAAM3oK,EACN05C,MAAO55C,EACPu1E,IAAKr1E,EACLmyK,QAASryK,GAGEsyK,EAAY,CACvBzJ,KAAM3oK,EACN05C,MAAOn0C,EACP8vE,IAAKr1E,GAGMqyK,EAAY,CACvB1J,KAAM3oK,EACN05C,MAAOn0C,EACP8vE,IAAKr1E,EACLmyK,QAAS5sK,GAGE+sK,EAAc,CACzBC,KAAMvyK,EACNwyK,OAAQxyK,GAGGyyK,EAAoB,CAC/BF,KAAMvyK,EACNwyK,OAAQxyK,EACR0yK,OAAQ1yK,GAGG2yK,EAAyB,CACpCJ,KAAMvyK,EACNwyK,OAAQxyK,EACR0yK,OAAQ1yK,EACR4yK,aAAc9yK,GAGH+yK,EAAwB,CACnCN,KAAMvyK,EACNwyK,OAAQxyK,EACR0yK,OAAQ1yK,EACR4yK,aAAcrtK,GAGHutK,EAAiB,CAC5BP,KAAMvyK,EACNwyK,OAAQxyK,EACR+yK,UAAW,OAGAC,EAAuB,CAClCT,KAAMvyK,EACNwyK,OAAQxyK,EACR0yK,OAAQ1yK,EACR+yK,UAAW,OAGAE,EAA4B,CACvCV,KAAMvyK,EACNwyK,OAAQxyK,EACR0yK,OAAQ1yK,EACR+yK,UAAW,MACXH,aAAc9yK,GAGHozK,EAA2B,CACtCX,KAAMvyK,EACNwyK,OAAQxyK,EACR0yK,OAAQ1yK,EACR+yK,UAAW,MACXH,aAAcrtK,GAGH4tK,EAAiB,CAC5BxK,KAAM3oK,EACN05C,MAAO15C,EACPq1E,IAAKr1E,EACLuyK,KAAMvyK,EACNwyK,OAAQxyK,GAGGozK,EAA8B,CACzCzK,KAAM3oK,EACN05C,MAAO15C,EACPq1E,IAAKr1E,EACLuyK,KAAMvyK,EACNwyK,OAAQxyK,EACR0yK,OAAQ1yK,GAGGqzK,EAAe,CAC1B1K,KAAM3oK,EACN05C,MAAO55C,EACPu1E,IAAKr1E,EACLuyK,KAAMvyK,EACNwyK,OAAQxyK,GAGGszK,EAA4B,CACvC3K,KAAM3oK,EACN05C,MAAO55C,EACPu1E,IAAKr1E,EACLuyK,KAAMvyK,EACNwyK,OAAQxyK,EACR0yK,OAAQ1yK,GAGGuzK,EAA4B,CACvC5K,KAAM3oK,EACN05C,MAAO55C,EACPu1E,IAAKr1E,EACLmyK,QAASryK,EACTyyK,KAAMvyK,EACNwyK,OAAQxyK,GAGGwzK,EAAgB,CAC3B7K,KAAM3oK,EACN05C,MAAOn0C,EACP8vE,IAAKr1E,EACLuyK,KAAMvyK,EACNwyK,OAAQxyK,EACR4yK,aAAc9yK,GAGH2zK,EAA6B,CACxC9K,KAAM3oK,EACN05C,MAAOn0C,EACP8vE,IAAKr1E,EACLuyK,KAAMvyK,EACNwyK,OAAQxyK,EACR0yK,OAAQ1yK,EACR4yK,aAAc9yK,GAGH4zK,EAAgB,CAC3B/K,KAAM3oK,EACN05C,MAAOn0C,EACP8vE,IAAKr1E,EACLmyK,QAAS5sK,EACTgtK,KAAMvyK,EACNwyK,OAAQxyK,EACR4yK,aAAcrtK,GAGHouK,EAA6B,CACxChL,KAAM3oK,EACN05C,MAAOn0C,EACP8vE,IAAKr1E,EACLmyK,QAAS5sK,EACTgtK,KAAMvyK,EACNwyK,OAAQxyK,EACR0yK,OAAQ1yK,EACR4yK,aAAcrtK,GChKT,SAASmpD,EAAYlsD,GAC1B,YAAoB,IAANA,CAChB,CAEO,SAASwyD,EAASxyD,GACvB,MAAoB,iBAANA,CAChB,CAEO,SAASoxK,EAAUpxK,GACxB,MAAoB,iBAANA,GAAkBA,EAAI,GAAM,CAC5C,CAYO,SAASqxK,IACd,IACE,MAAuB,oBAAT9gF,QAA0BA,KAAKmE,kBAG/C,CAFE,MAAOj2F,GACP,OAAO,CACT,CACF,CAQO,SAAS6yK,EAAOj+G,EAAKwwD,EAAI/C,GAC9B,GAAmB,IAAfztD,EAAI31D,OAGR,OAAO21D,EAAIzsD,QAAO,CAAC2qK,EAAM/yK,KACvB,MAAMi2D,EAAO,CAACovD,EAAGrlH,GAAOA,GACxB,OAAK+yK,GAEMzwD,EAAQywD,EAAK,GAAI98G,EAAK,MAAQ88G,EAAK,GACrCA,EAFA98G,CAKT,GACC,MAAM,EACX,CASO,SAAS,EAAe52C,EAAKqI,GAClC,OAAOvpB,OAAOK,UAAUC,eAAeC,KAAK2gB,EAAKqI,EACnD,CAIO,SAASsrJ,EAAel+G,EAAO7tC,EAAQlD,GAC5C,OAAO6uJ,EAAU99G,IAAUA,GAAS7tC,GAAU6tC,GAAS/wC,CACzD,CAOO,SAASkvJ,EAASlrH,EAAO/oD,EAAI,GAElC,IAAIk0K,EAMJ,OAJEA,EAHYnrH,EAAQ,EAGX,KAAO,IAAMA,GAAOkrH,SAASj0K,EAAG,MAE/B,GAAK+oD,GAAOkrH,SAASj0K,EAAG,KAE7Bk0K,CACT,CAEO,SAASC,EAAa3zJ,GAC3B,OAAIkuC,EAAYluC,IAAsB,OAAXA,GAA8B,KAAXA,OAC5C,EAEOvM,SAASuM,EAAQ,GAE5B,CAEO,SAAS4zJ,EAAc5zJ,GAC5B,OAAIkuC,EAAYluC,IAAsB,OAAXA,GAA8B,KAAXA,OAC5C,EAEO0rB,WAAW1rB,EAEtB,CAEO,SAAS6zJ,EAAYC,GAE1B,IAAI5lH,EAAY4lH,IAA0B,OAAbA,GAAkC,KAAbA,EAE3C,CACL,MAAM9yK,EAAkC,IAA9B0qC,WAAW,KAAOooI,GAC5B,OAAOlvK,KAAKC,MAAM7D,EACpB,CACF,CAEO,SAAS+yK,EAAQ/6H,EAAQg7H,EAAQC,GAAa,GACnD,MAAMC,EAAS,IAAMF,EAErB,OADYC,EAAarvK,KAAKuvK,MAAQvvK,KAAKgpB,OAC5BorB,EAASk7H,GAAUA,CACpC,CAIO,SAASE,EAAWjM,GACzB,OAAOA,EAAO,GAAM,IAAMA,EAAO,KAAQ,GAAKA,EAAO,KAAQ,EAC/D,CAEO,SAASkM,EAAWlM,GACzB,OAAOiM,EAAWjM,GAAQ,IAAM,GAClC,CAEO,SAASmM,EAAYnM,EAAMjvH,GAChC,MAAMq7H,EA1DD,SAAkBzoK,EAAGtM,GAC1B,OAAOsM,EAAItM,EAAIoF,KAAKC,MAAMiH,EAAItM,EAChC,CAwDmBg1K,CAASt7H,EAAQ,EAAG,IAAM,EAG3C,OAAiB,IAAbq7H,EACKH,EAHGjM,GAAQjvH,EAAQq7H,GAAY,IAGT,GAAK,GAE3B,CAAC,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAIA,EAAW,EAEzE,CAGO,SAASE,EAAa50J,GAC3B,IAAIphB,EAAI2G,KAAKsvK,IACX70J,EAAIsoJ,KACJtoJ,EAAIq5B,MAAQ,EACZr5B,EAAIg1D,IACJh1D,EAAIkyJ,KACJlyJ,EAAImyJ,OACJnyJ,EAAIqyJ,OACJryJ,EAAI80J,aAQN,OAJI90J,EAAIsoJ,KAAO,KAAOtoJ,EAAIsoJ,MAAQ,IAChC1pK,EAAI,IAAI2G,KAAK3G,GACbA,EAAEm2K,eAAen2K,EAAEo2K,iBAAmB,QAEhCp2K,CACV,CAEO,SAASq2K,EAAgBC,GAC9B,MAAMpwH,GACDowH,EACCnwK,KAAKC,MAAMkwK,EAAW,GACtBnwK,KAAKC,MAAMkwK,EAAW,KACtBnwK,KAAKC,MAAMkwK,EAAW,MACxB,EACFC,EAAOD,EAAW,EAClBnwH,GAAMowH,EAAOpwK,KAAKC,MAAMmwK,EAAO,GAAKpwK,KAAKC,MAAMmwK,EAAO,KAAOpwK,KAAKC,MAAMmwK,EAAO,MAAQ,EACzF,OAAc,IAAPrwH,GAAmB,IAAPC,EAAW,GAAK,EACrC,CAEO,SAASqwH,EAAe9M,GAC7B,OAAIA,EAAO,GACFA,EACKA,EAAO,GAAK,KAAOA,EAAO,IAAOA,CACjD,CAIO,SAAS+M,GAAc7W,EAAI8W,EAAcz9E,EAAQ09E,EAAW,MACjE,MAAMn8H,EAAO,IAAI7zC,KAAKi5J,GACpBgX,EAAW,CACT9C,UAAW,MACXpK,KAAM,UACNjvH,MAAO,UACP27B,IAAK,UACLk9F,KAAM,UACNC,OAAQ,WAGRoD,IACFC,EAASD,SAAWA,GAGtB,MAAME,EAAW,CAAElD,aAAc+C,KAAiBE,GAE5CpgH,EAAS,IAAIs9B,KAAKiE,eAAekB,EAAQ49E,GAC5CC,cAAct8H,GACd2vC,MAAM7iF,GAA+B,iBAAzBA,EAAEsJ,KAAKuE,gBACtB,OAAOqhD,EAASA,EAAO30D,MAAQ,IACjC,CAGO,SAASk1K,GAAaC,EAAYC,GACvC,IAAIC,EAAUliK,SAASgiK,EAAY,IAG/BrpI,OAAO0V,MAAM6zH,KACfA,EAAU,GAGZ,MAAMC,EAASniK,SAASiiK,EAAc,KAAO,EAE7C,OAAiB,GAAVC,GADUA,EAAU,GAAKh3K,OAAOk3K,GAAGF,GAAU,IAAMC,EAASA,EAErE,CAIO,SAASE,GAASx1K,GACvB,MAAMy1K,EAAe3pI,OAAO9rC,GAC5B,GAAqB,kBAAVA,GAAiC,KAAVA,GAAgB8rC,OAAO0V,MAAMi0H,GAC7D,MAAM,IAAIzE,EAAqB,sBAAsBhxK,KACvD,OAAOy1K,CACT,CAEO,SAASC,GAAgBn2J,EAAKo2J,GACnC,MAAMC,EAAa,CAAC,EACpB,IAAK,MAAMvxK,KAAKkb,EACd,GAAI,EAAeA,EAAKlb,GAAI,CAC1B,MAAMhD,EAAIke,EAAIlb,GACd,GAAIhD,QAA+B,SACnCu0K,EAAWD,EAAWtxK,IAAMmxK,GAASn0K,EACvC,CAEF,OAAOu0K,CACT,CAEO,SAASC,GAAah/F,EAAQqc,GACnC,MAAM4iF,EAAQxxK,KAAKuvK,MAAMvvK,KAAKopB,IAAImpD,EAAS,KACzCk/F,EAAUzxK,KAAKuvK,MAAMvvK,KAAKopB,IAAImpD,EAAS,KACvCm/F,EAAOn/F,GAAU,EAAI,IAAM,IAE7B,OAAQqc,GACN,IAAK,QACH,MAAO,GAAG8iF,IAAO7C,EAAS2C,EAAO,MAAM3C,EAAS4C,EAAS,KAC3D,IAAK,SACH,MAAO,GAAGC,IAAOF,IAAQC,EAAU,EAAI,IAAIA,IAAY,KACzD,IAAK,SACH,MAAO,GAAGC,IAAO7C,EAAS2C,EAAO,KAAK3C,EAAS4C,EAAS,KAC1D,QACE,MAAM,IAAIE,WAAW,gBAAgB/iF,yCAE3C,CAEO,SAASgjF,GAAW32J,GACzB,OA1MK,SAAcA,EAAKlX,GACxB,OAAOA,EAAKC,QAAO,CAAClF,EAAG6E,KACrB7E,EAAE6E,GAAKsX,EAAItX,GACJ7E,IACN,CAAC,EACN,CAqMS,CAAKmc,EAAK,CAAC,OAAQ,SAAU,SAAU,eAChD,CAEO,MAAM42J,GACX,+ECrQK,MAAMC,GAAa,CACxB,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAGWC,GAAc,CACzB,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAGWC,GAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAE7E,SAASC,GAAOn3K,GACrB,OAAQA,GACN,IAAK,SACH,MAAO,IAAIk3K,IACb,IAAK,QACH,MAAO,IAAID,IACb,IAAK,OACH,MAAO,IAAID,IACb,IAAK,UACH,MAAO,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,MACnE,IAAK,UACH,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC5E,QACE,OAAO,KAEb,CAEO,MAAMI,GAAe,CAC1B,SACA,UACA,YACA,WACA,SACA,WACA,UAGWC,GAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAE3DC,GAAiB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEtD,SAASC,GAASv3K,GACvB,OAAQA,GACN,IAAK,SACH,MAAO,IAAIs3K,IACb,IAAK,QACH,MAAO,IAAID,IACb,IAAK,OACH,MAAO,IAAID,IACb,IAAK,UACH,MAAO,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACxC,QACE,OAAO,KAEb,CAEO,MAAMI,GAAY,CAAC,KAAM,MAEnBC,GAAW,CAAC,gBAAiB,eAE7BC,GAAY,CAAC,KAAM,MAEnBC,GAAa,CAAC,IAAK,KAEzB,SAASC,GAAK53K,GACnB,OAAQA,GACN,IAAK,SACH,MAAO,IAAI23K,IACb,IAAK,QACH,MAAO,IAAID,IACb,IAAK,OACH,MAAO,IAAID,IACb,QACE,OAAO,KAEb,CCxGA,SAASI,GAAgBC,EAAQC,GAC/B,IAAIn4K,EAAI,GACR,IAAK,MAAMqc,KAAS67J,EACd77J,EAAM+7J,QACRp4K,GAAKqc,EAAMwwB,IAEX7sC,GAAKm4K,EAAc97J,EAAMwwB,KAG7B,OAAO7sC,CACT,CAEA,MAAMq4K,GAAyB,CAC7BrpK,EAAG,EACHspK,GAAI,EACJC,IAAK,EACLC,KAAM,EACNz4K,EAAG,EACH6vJ,GAAI,EACJ6oB,IAAK,EACLC,KAAM,EACNntK,EAAG,EACHotK,GAAI,EACJC,IAAK,EACLC,KAAM,EACNn3K,EAAG,EACHo3K,GAAI,EACJC,IAAK,EACLC,KAAM,EACN9oK,EAAG,EACH+oK,GAAI,EACJC,IAAK,EACLC,KAAM,GAOO,MAAMriF,GACnBzuF,cAAc+vF,EAAQx9E,EAAO,CAAC,GAC5B,OAAO,IAAIk8E,GAAUsB,EAAQx9E,EAC/B,CAEAvS,mBAAmB+wK,GACjB,IAAIv9J,EAAU,KACZw9J,EAAc,GACdC,GAAY,EACd,MAAMpB,EAAS,GACf,IAAK,IAAIj4K,EAAI,EAAGA,EAAIm5K,EAAIh5K,OAAQH,IAAK,CACnC,MAAMqE,EAAI80K,EAAI3qK,OAAOxO,GACX,MAANqE,GACE+0K,EAAYj5K,OAAS,GACvB83K,EAAOz1K,KAAK,CAAE21K,QAASkB,EAAWzsI,IAAKwsI,IAEzCx9J,EAAU,KACVw9J,EAAc,GACdC,GAAaA,GACJA,GAEAh1K,IAAMuX,EADfw9J,GAAe/0K,GAIX+0K,EAAYj5K,OAAS,GACvB83K,EAAOz1K,KAAK,CAAE21K,SAAS,EAAOvrI,IAAKwsI,IAErCA,EAAc/0K,EACduX,EAAUvX,EAEd,CAMA,OAJI+0K,EAAYj5K,OAAS,GACvB83K,EAAOz1K,KAAK,CAAE21K,QAASkB,EAAWzsI,IAAKwsI,IAGlCnB,CACT,CAEA7vK,8BAA8BgU,GAC5B,OAAOg8J,GAAuBh8J,EAChC,CAEApU,YAAYmwF,EAAQmhF,GAClBj5K,KAAKsa,KAAO2+J,EACZj5K,KAAKk5K,IAAMphF,EACX93F,KAAKm5K,UAAY,IACnB,CAEAC,wBAAwB7nB,EAAIj3I,GACH,OAAnBta,KAAKm5K,YACPn5K,KAAKm5K,UAAYn5K,KAAKk5K,IAAIG,qBAG5B,OADWr5K,KAAKm5K,UAAUG,YAAY/nB,EAAI,IAAKvxJ,KAAKsa,QAASA,IACnDs5E,QACZ,CAEA2lF,eAAehoB,EAAIj3I,EAAO,CAAC,GAEzB,OADWta,KAAKk5K,IAAII,YAAY/nB,EAAI,IAAKvxJ,KAAKsa,QAASA,IAC7Cs5E,QACZ,CAEA4lF,oBAAoBjoB,EAAIj3I,EAAO,CAAC,GAE9B,OADWta,KAAKk5K,IAAII,YAAY/nB,EAAI,IAAKvxJ,KAAKsa,QAASA,IAC7Cq7J,eACZ,CAEA7iF,gBAAgBy+D,EAAIj3I,EAAO,CAAC,GAE1B,OADWta,KAAKk5K,IAAII,YAAY/nB,EAAI,IAAKvxJ,KAAKsa,QAASA,IAC7Cw4E,iBACZ,CAEA2mF,IAAI75K,EAAGT,EAAI,GAET,GAAIa,KAAKsa,KAAKo/J,YACZ,OAAO7F,EAASj0K,EAAGT,GAGrB,MAAMmb,EAAO,IAAKta,KAAKsa,MAMvB,OAJInb,EAAI,IACNmb,EAAKq/J,MAAQx6K,GAGRa,KAAKk5K,IAAIU,gBAAgBt/J,GAAMs5E,OAAOh0F,EAC/C,CAEAi6K,yBAAyBtoB,EAAIunB,GAC3B,MAAMgB,EAA0C,OAA3B95K,KAAKk5K,IAAIa,cAC5BC,EAAuBh6K,KAAKk5K,IAAIe,gBAA8C,YAA5Bj6K,KAAKk5K,IAAIe,eAC3D75J,EAAS,CAAC9F,EAAM4/J,IAAYl6K,KAAKk5K,IAAIgB,QAAQ3oB,EAAIj3I,EAAM4/J,GACvD3D,EAAgBj8J,GACVi3I,EAAG4oB,eAA+B,IAAd5oB,EAAGh6E,QAAgBj9D,EAAK8/J,OACvC,IAGF7oB,EAAG8oB,QAAU9oB,EAAG+oB,KAAK/D,aAAahlB,EAAGkN,GAAInkJ,EAAKs5E,QAAU,GAEjE2mF,EAAW,IACTT,EDhCD,SAA6BvoB,GAClC,OAAO+lB,GAAU/lB,EAAG4gB,KAAO,GAAK,EAAI,EACtC,CC+BY,CAA4B5gB,GAC5BnxI,EAAO,CAAE+xJ,KAAM,UAAWQ,UAAW,OAAS,aACpDr5H,EAAQ,CAACx5C,EAAQ06K,IACfV,ED5BD,SAA0BvoB,EAAIzxJ,GACnC,OAAOm3K,GAAOn3K,GAAQyxJ,EAAGj4G,MAAQ,EACnC,CC2BY,CAAyBi4G,EAAIzxJ,GAC7BsgB,EAAOo6J,EAAa,CAAElhI,MAAOx5C,GAAW,CAAEw5C,MAAOx5C,EAAQm1E,IAAK,WAAa,SACjF88F,EAAU,CAACjyK,EAAQ06K,IACjBV,EDpCD,SAA4BvoB,EAAIzxJ,GACrC,OAAOu3K,GAASv3K,GAAQyxJ,EAAGwgB,QAAU,EACvC,CCmCY,CAA2BxgB,EAAIzxJ,GAC/BsgB,EACEo6J,EAAa,CAAEzI,QAASjyK,GAAW,CAAEiyK,QAASjyK,EAAQw5C,MAAO,OAAQ27B,IAAK,WAC1E,WAERwlG,EAAc1+J,IACZ,MAAMk9J,EAAaziF,GAAUuhF,uBAAuBh8J,GACpD,OAAIk9J,EACKj5K,KAAKo5K,wBAAwB7nB,EAAI0nB,GAEjCl9J,CACT,EAEF2+J,EAAO56K,GACLg6K,ED3CD,SAAwBvoB,EAAIzxJ,GACjC,OAAO43K,GAAK53K,GAAQyxJ,EAAGgX,KAAO,EAAI,EAAI,EACxC,CCyCuB,CAAuBhX,EAAIzxJ,GAAUsgB,EAAO,CAAEs6J,IAAK56K,GAAU,OAwLhF,OAAO63K,GAAgBnhF,GAAUmkF,YAAY7B,IAvL1B/8J,IAEf,OAAQA,GAEN,IAAK,IACH,OAAO/b,KAAKy5K,IAAIloB,EAAGwjB,aACrB,IAAK,IAEL,IAAK,MACH,OAAO/0K,KAAKy5K,IAAIloB,EAAGwjB,YAAa,GAElC,IAAK,IACH,OAAO/0K,KAAKy5K,IAAIloB,EAAG+gB,QACrB,IAAK,KACH,OAAOtyK,KAAKy5K,IAAIloB,EAAG+gB,OAAQ,GAE7B,IAAK,KACH,OAAOtyK,KAAKy5K,IAAIz0K,KAAKC,MAAMssJ,EAAGwjB,YAAc,IAAK,GACnD,IAAK,MACH,OAAO/0K,KAAKy5K,IAAIz0K,KAAKC,MAAMssJ,EAAGwjB,YAAc,MAE9C,IAAK,IACH,OAAO/0K,KAAKy5K,IAAIloB,EAAG6gB,QACrB,IAAK,KACH,OAAOpyK,KAAKy5K,IAAIloB,EAAG6gB,OAAQ,GAE7B,IAAK,IACH,OAAOpyK,KAAKy5K,IAAIloB,EAAG4gB,KAAO,IAAO,EAAI,GAAK5gB,EAAG4gB,KAAO,IACtD,IAAK,KACH,OAAOnyK,KAAKy5K,IAAIloB,EAAG4gB,KAAO,IAAO,EAAI,GAAK5gB,EAAG4gB,KAAO,GAAI,GAC1D,IAAK,IACH,OAAOnyK,KAAKy5K,IAAIloB,EAAG4gB,MACrB,IAAK,KACH,OAAOnyK,KAAKy5K,IAAIloB,EAAG4gB,KAAM,GAE3B,IAAK,IAEH,OAAOoE,EAAa,CAAE3iF,OAAQ,SAAUwmF,OAAQp6K,KAAKsa,KAAK8/J,SAC5D,IAAK,KAEH,OAAO7D,EAAa,CAAE3iF,OAAQ,QAASwmF,OAAQp6K,KAAKsa,KAAK8/J,SAC3D,IAAK,MAEH,OAAO7D,EAAa,CAAE3iF,OAAQ,SAAUwmF,OAAQp6K,KAAKsa,KAAK8/J,SAC5D,IAAK,OAEH,OAAO7oB,EAAG+oB,KAAKM,WAAWrpB,EAAGkN,GAAI,CAAE7qE,OAAQ,QAASkE,OAAQ93F,KAAKk5K,IAAIphF,SACvE,IAAK,QAEH,OAAOy5D,EAAG+oB,KAAKM,WAAWrpB,EAAGkN,GAAI,CAAE7qE,OAAQ,OAAQkE,OAAQ93F,KAAKk5K,IAAIphF,SAEtE,IAAK,IAEH,OAAOy5D,EAAGspB,SAEZ,IAAK,IACH,OAAON,IAET,IAAK,IACH,OAAOP,EAAuB55J,EAAO,CAAE60D,IAAK,WAAa,OAASj1E,KAAKy5K,IAAIloB,EAAGt8E,KAChF,IAAK,KACH,OAAO+kG,EAAuB55J,EAAO,CAAE60D,IAAK,WAAa,OAASj1E,KAAKy5K,IAAIloB,EAAGt8E,IAAK,GAErF,IAAK,IAaL,IAAK,IAEH,OAAOj1E,KAAKy5K,IAAIloB,EAAGwgB,SAZrB,IAAK,MAEH,OAAOA,EAAQ,SAAS,GAC1B,IAAK,OAEH,OAAOA,EAAQ,QAAQ,GACzB,IAAK,QAEH,OAAOA,EAAQ,UAAU,GAK3B,IAAK,MAEH,OAAOA,EAAQ,SAAS,GAC1B,IAAK,OAEH,OAAOA,EAAQ,QAAQ,GACzB,IAAK,QAEH,OAAOA,EAAQ,UAAU,GAE3B,IAAK,IAEH,OAAOiI,EACH55J,EAAO,CAAEk5B,MAAO,UAAW27B,IAAK,WAAa,SAC7Cj1E,KAAKy5K,IAAIloB,EAAGj4G,OAClB,IAAK,KAEH,OAAO0gI,EACH55J,EAAO,CAAEk5B,MAAO,UAAW27B,IAAK,WAAa,SAC7Cj1E,KAAKy5K,IAAIloB,EAAGj4G,MAAO,GACzB,IAAK,MAEH,OAAOA,EAAM,SAAS,GACxB,IAAK,OAEH,OAAOA,EAAM,QAAQ,GACvB,IAAK,QAEH,OAAOA,EAAM,UAAU,GAEzB,IAAK,IAEH,OAAO0gI,EACH55J,EAAO,CAAEk5B,MAAO,WAAa,SAC7Bt5C,KAAKy5K,IAAIloB,EAAGj4G,OAClB,IAAK,KAEH,OAAO0gI,EACH55J,EAAO,CAAEk5B,MAAO,WAAa,SAC7Bt5C,KAAKy5K,IAAIloB,EAAGj4G,MAAO,GACzB,IAAK,MAEH,OAAOA,EAAM,SAAS,GACxB,IAAK,OAEH,OAAOA,EAAM,QAAQ,GACvB,IAAK,QAEH,OAAOA,EAAM,UAAU,GAEzB,IAAK,IAEH,OAAO0gI,EAAuB55J,EAAO,CAAEmoJ,KAAM,WAAa,QAAUvoK,KAAKy5K,IAAIloB,EAAGgX,MAClF,IAAK,KAEH,OAAOyR,EACH55J,EAAO,CAAEmoJ,KAAM,WAAa,QAC5BvoK,KAAKy5K,IAAIloB,EAAGgX,KAAK7iK,WAAW2B,OAAO,GAAI,GAC7C,IAAK,OAEH,OAAO2yK,EACH55J,EAAO,CAAEmoJ,KAAM,WAAa,QAC5BvoK,KAAKy5K,IAAIloB,EAAGgX,KAAM,GACxB,IAAK,SAEH,OAAOyR,EACH55J,EAAO,CAAEmoJ,KAAM,WAAa,QAC5BvoK,KAAKy5K,IAAIloB,EAAGgX,KAAM,GAExB,IAAK,IAEH,OAAOmS,EAAI,SACb,IAAK,KAEH,OAAOA,EAAI,QACb,IAAK,QACH,OAAOA,EAAI,UACb,IAAK,KACH,OAAO16K,KAAKy5K,IAAIloB,EAAG4jB,SAASzvK,WAAW2B,OAAO,GAAI,GACpD,IAAK,OACH,OAAOrH,KAAKy5K,IAAIloB,EAAG4jB,SAAU,GAC/B,IAAK,IACH,OAAOn1K,KAAKy5K,IAAIloB,EAAGupB,YACrB,IAAK,KACH,OAAO96K,KAAKy5K,IAAIloB,EAAGupB,WAAY,GACjC,IAAK,IACH,OAAO96K,KAAKy5K,IAAIloB,EAAG9hE,SACrB,IAAK,MACH,OAAOzvF,KAAKy5K,IAAIloB,EAAG9hE,QAAS,GAC9B,IAAK,IAEH,OAAOzvF,KAAKy5K,IAAIloB,EAAGwpB,SACrB,IAAK,KAEH,OAAO/6K,KAAKy5K,IAAIloB,EAAGwpB,QAAS,GAC9B,IAAK,IACH,OAAO/6K,KAAKy5K,IAAIz0K,KAAKC,MAAMssJ,EAAGkN,GAAK,MACrC,IAAK,IACH,OAAOz+J,KAAKy5K,IAAIloB,EAAGkN,IACrB,QACE,OAAOgc,EAAW1+J,GACtB,GAIN,CAEAi/J,yBAAyBC,EAAKnC,GAC5B,MAAMoC,EAAgBn/J,IAClB,OAAQA,EAAM,IACZ,IAAK,IACH,MAAO,cACT,IAAK,IACH,MAAO,SACT,IAAK,IACH,MAAO,SACT,IAAK,IACH,MAAO,OACT,IAAK,IACH,MAAO,MACT,IAAK,IACH,MAAO,OACT,IAAK,IACH,MAAO,QACT,IAAK,IACH,MAAO,OACT,QACE,OAAO,KACX,EAUFo/J,EAAS3kF,GAAUmkF,YAAY7B,GAC/BsC,EAAaD,EAAOnyK,QAClB,CAAComF,GAAS0oF,UAASvrI,SAAWurI,EAAU1oF,EAAQA,EAAMxyE,OAAO2vB,IAC7D,IAGJ,OAAOorI,GAAgBwD,EAdL,CAACE,GAAYt/J,IAC3B,MAAMu/J,EAASJ,EAAan/J,GAC5B,OAAIu/J,EACKt7K,KAAKy5K,IAAI4B,EAAOl4K,IAAIm4K,GAASv/J,EAAMjc,QAEnCic,CACT,EAQ2B87J,CADjBoD,EAAIM,WAAWH,EAAW/xK,IAAI6xK,GAAc/zK,QAAQ1H,GAAMA,MAE1E,ECtYa,MAAM+7K,GACnB7zK,YAAY0vC,EAAQokI,GAClBz7K,KAAKq3C,OAASA,EACdr3C,KAAKy7K,YAAcA,CACrB,CAEApK,YACE,OAAIrxK,KAAKy7K,YACA,GAAGz7K,KAAKq3C,WAAWr3C,KAAKy7K,cAExBz7K,KAAKq3C,MAEhB,ECPa,MAAMqkI,GAMfjsK,WACF,MAAM,IAAIkiK,CACZ,CAOIlqK,WACF,MAAM,IAAIkqK,CACZ,CAEIgK,eACF,OAAO37K,KAAKyH,IACd,CAOIm0K,kBACF,MAAM,IAAIjK,CACZ,CAWAiJ,WAAWnc,EAAInkJ,GACb,MAAM,IAAIq3J,CACZ,CAUA4E,aAAa9X,EAAI7qE,GACf,MAAM,IAAI+9E,CACZ,CAQAp6F,OAAOknF,GACL,MAAM,IAAIkT,CACZ,CAQAkK,OAAOC,GACL,MAAM,IAAInK,CACZ,CAOI0I,cACF,MAAM,IAAI1I,CACZ,ECtFF,IAAIoK,GAAY,KAMD,MAAMC,WAAmBN,GAK3B73K,sBAIT,OAHkB,OAAdk4K,KACFA,GAAY,IAAIC,IAEXD,EACT,CAGItsK,WACF,MAAO,QACT,CAGIhI,WACF,OAAO,IAAIkrF,KAAKiE,gBAAiB9D,kBAAkB0iF,QACrD,CAGIoG,kBACF,OAAO,CACT,CAGAhB,WAAWnc,GAAI,OAAE7qE,EAAM,OAAEkE,IACvB,OAAOw9E,GAAc7W,EAAI7qE,EAAQkE,EACnC,CAGAy+E,aAAa9X,EAAI7qE,GACf,OAAO2iF,GAAav2K,KAAKu3E,OAAOknF,GAAK7qE,EACvC,CAGArc,OAAOknF,GACL,OAAQ,IAAIj5J,KAAKi5J,GAAIwd,mBACvB,CAGAJ,OAAOC,GACL,MAA0B,WAAnBA,EAAUrsK,IACnB,CAGI4qK,cACF,OAAO,CACT,ECxDF,IAAI6B,GAAW,CAAC,EAkBhB,MAAMC,GAAY,CAChB5T,KAAM,EACNjvH,MAAO,EACP27B,IAAK,EACLylG,IAAK,EACLvI,KAAM,EACNC,OAAQ,EACRE,OAAQ,GA0BV,IAAI8J,GAAgB,CAAC,EAKN,MAAMC,WAAiBX,GAKpC3zK,cAAcN,GAIZ,OAHK20K,GAAc30K,KACjB20K,GAAc30K,GAAQ,IAAI40K,GAAS50K,IAE9B20K,GAAc30K,EACvB,CAMAM,oBACEq0K,GAAgB,CAAC,EACjBF,GAAW,CAAC,CACd,CAUAn0K,wBAAwBrI,GACtB,OAAOM,KAAKs8K,YAAY58K,EAC1B,CAUAqI,mBAAmBuyK,GACjB,IAAKA,EACH,OAAO,EAET,IAEE,OADA,IAAI3nF,KAAKiE,eAAe,QAAS,CAAE4+E,SAAU8E,IAAQ1mF,UAC9C,CAGT,CAFE,MAAO/yF,GACP,OAAO,CACT,CACF,CAEA8G,YAAYF,GACVG,QAEA5H,KAAK66K,SAAWpzK,EAEhBzH,KAAKu8K,MAAQF,GAASC,YAAY70K,EACpC,CAGIgI,WACF,MAAO,MACT,CAGIhI,WACF,OAAOzH,KAAK66K,QACd,CAGIe,kBACF,OAAO,CACT,CAGAhB,WAAWnc,GAAI,OAAE7qE,EAAM,OAAEkE,IACvB,OAAOw9E,GAAc7W,EAAI7qE,EAAQkE,EAAQ93F,KAAKyH,KAChD,CAGA8uK,aAAa9X,EAAI7qE,GACf,OAAO2iF,GAAav2K,KAAKu3E,OAAOknF,GAAK7qE,EACvC,CAGArc,OAAOknF,GACL,MAAMplH,EAAO,IAAI7zC,KAAKi5J,GAEtB,GAAIv8G,MAAM7I,GAAO,OAAOmjI,IAExB,MAAMC,GAnJOnC,EAmJOt6K,KAAKyH,KAlJtBy0K,GAAS5B,KACZ4B,GAAS5B,GAAQ,IAAI3nF,KAAKiE,eAAe,QAAS,CAChD8lF,QAAQ,EACRlH,SAAU8E,EACV/R,KAAM,UACNjvH,MAAO,UACP27B,IAAK,UACLk9F,KAAM,UACNC,OAAQ,UACRE,OAAQ,UACRoI,IAAK,WAGFwB,GAAS5B,IAdlB,IAAiBA,EAoJb,IAAK/R,EAAMjvH,EAAO27B,EAAK0nG,EAAQxK,EAAMC,EAAQE,GAAUmK,EAAI9G,cAlH/D,SAAqB8G,EAAKpjI,GACxB,MAAMs+C,EAAY8kF,EAAI9G,cAAct8H,GAC9BujI,EAAS,GACf,IAAK,IAAIj9K,EAAI,EAAGA,EAAIg4F,EAAU73F,OAAQH,IAAK,CACzC,MAAM,KAAE8P,EAAI,MAAE/O,GAAUi3F,EAAUh4F,GAC5Bk9K,EAAMV,GAAU1sK,GAET,QAATA,EACFmtK,EAAOC,GAAOn8K,EACJ4tD,EAAYuuH,KACtBD,EAAOC,GAAOhpK,SAASnT,EAAO,IAElC,CACA,OAAOk8K,CACT,CAqGQE,CAAYL,EAAKpjI,GA1HzB,SAAqBojI,EAAKpjI,GACxB,MAAMs+C,EAAY8kF,EAAI7oF,OAAOv6C,GAAM7vC,QAAQ,UAAW,IACpD6rD,EAAS,kDAAkD7zC,KAAKm2E,IAC/D,CAAEolF,EAAQC,EAAMC,EAAOC,EAASC,EAAOC,EAASC,GAAWhoH,EAC9D,MAAO,CAAC4nH,EAAOF,EAAQC,EAAME,EAASC,EAAOC,EAASC,EACxD,CAsHQC,CAAYb,EAAKpjI,GAEN,OAAXsjI,IACFpU,EAAyB,EAAjBvjK,KAAKopB,IAAIm6I,IAgBnB,IAAIgV,GAAQlkI,EACZ,MAAMmkI,EAAOD,EAAO,IAEpB,OADAA,GAAQC,GAAQ,EAAIA,EAAO,IAAOA,GAZpB3I,EAAa,CACzBtM,OACAjvH,QACA27B,MACAk9F,KAN4B,KAATA,EAAc,EAAIA,EAOrCC,SACAE,SACAyC,YAAa,IAMCwI,GAAQ,GAC1B,CAGA1B,OAAOC,GACL,MAA0B,SAAnBA,EAAUrsK,MAAmBqsK,EAAUr0K,OAASzH,KAAKyH,IAC9D,CAGI4yK,cACF,OAAOr6K,KAAKu8K,KACd,ECxLF,IAAI,GAAY,KAMD,MAAMkB,WAAwB/B,GAKhCgC,yBAIT,OAHkB,OAAd,KACF,GAAY,IAAID,GAAgB,IAE3B,EACT,CAOA11K,gBAAgBwvE,GACd,OAAkB,IAAXA,EAAekmG,GAAgBC,YAAc,IAAID,GAAgBlmG,EAC1E,CAUAxvE,sBAAsBrI,GACpB,GAAIA,EAAG,CACL,MAAMqE,EAAIrE,EAAE6gB,MAAM,yCAClB,GAAIxc,EACF,OAAO,IAAI05K,GAAgB7H,GAAa7xK,EAAE,GAAIA,EAAE,IAEpD,CACA,OAAO,IACT,CAEA4D,YAAY4vE,GACV3vE,QAEA5H,KAAK29K,MAAQpmG,CACf,CAGI9nE,WACF,MAAO,OACT,CAGIhI,WACF,OAAsB,IAAfzH,KAAK29K,MAAc,MAAQ,MAAMpH,GAAav2K,KAAK29K,MAAO,WACnE,CAEIhC,eACF,OAAmB,IAAf37K,KAAK29K,MACA,UAEA,UAAUpH,IAAcv2K,KAAK29K,MAAO,WAE/C,CAGA/C,aACE,OAAO56K,KAAKyH,IACd,CAGA8uK,aAAa9X,EAAI7qE,GACf,OAAO2iF,GAAav2K,KAAK29K,MAAO/pF,EAClC,CAGIgoF,kBACF,OAAO,CACT,CAGArkG,SACE,OAAOv3E,KAAK29K,KACd,CAGA9B,OAAOC,GACL,MAA0B,UAAnBA,EAAUrsK,MAAoBqsK,EAAU6B,QAAU39K,KAAK29K,KAChE,CAGItD,cACF,OAAO,CACT,EC9Fa,MAAMuD,WAAoBlC,GACvC/zK,YAAYkzK,GACVjzK,QAEA5H,KAAK66K,SAAWA,CAClB,CAGIprK,WACF,MAAO,SACT,CAGIhI,WACF,OAAOzH,KAAK66K,QACd,CAGIe,kBACF,OAAO,CACT,CAGAhB,aACE,OAAO,IACT,CAGArE,eACE,MAAO,EACT,CAGAh/F,SACE,OAAOilG,GACT,CAGAX,SACE,OAAO,CACT,CAGIxB,cACF,OAAO,CACT,ECxCK,SAASwD,GAAcl1H,EAAOm1H,GAEnC,GAAIxvH,EAAY3F,IAAoB,OAAVA,EACxB,OAAOm1H,EACF,GAAIn1H,aAAiB+yH,GAC1B,OAAO/yH,EACF,GTUa,iBSVAA,EAAQ,CAC1B,MAAMo1H,EAAUp1H,EAAM30C,cACtB,MAAgB,UAAZ+pK,GAAmC,WAAZA,EAA6BD,EACnC,QAAZC,GAAiC,QAAZA,EAA0BN,GAAgBC,YAC5DD,GAAgBO,eAAeD,IAAY1B,GAASjvK,OAAOu7C,EACzE,CAAO,OAAIiM,EAASjM,GACX80H,GAAgB55K,SAAS8kD,GACN,iBAAVA,GAAsBA,EAAM4uB,QAAkC,iBAAjB5uB,EAAM4uB,OAG5D5uB,EAEA,IAAIi1H,GAAYj1H,EAE3B,CCzBA,IAKEs1H,GALEx4K,GAAM,IAAMD,KAAKC,MACnBq4K,GAAc,SACd5kB,GAAgB,KAChBglB,GAAyB,KACzBC,GAAwB,KAMX,MAAMC,GAKR34K,iBACT,OAAOA,EACT,CASWA,eAAI7F,GACb6F,GAAM7F,CACR,CAOWk+K,uBAAYxD,GACrBwD,GAAcxD,CAChB,CAOWwD,yBACT,OAAOD,GAAcC,GAAa9B,GAAWn4K,SAC/C,CAMWq1J,2BACT,OAAOA,EACT,CAMWA,yBAAcphE,GACvBohE,GAAgBphE,CAClB,CAMWomF,oCACT,OAAOA,EACT,CAMWA,kCAAuBG,GAChCH,GAAyBG,CAC3B,CAMWF,mCACT,OAAOA,EACT,CAMWA,iCAAsBlE,GAC/BkE,GAAwBlE,CAC1B,CAMWgE,4BACT,OAAOA,EACT,CAMWA,0BAAex+K,GACxBw+K,GAAiBx+K,CACnB,CAMAsI,qBACEu2K,GAAOC,aACPlC,GAASkC,YACX,ECrHF,IAAIC,GAAc,CAAC,EAWnB,IAAIC,GAAc,CAAC,EACnB,SAASC,GAAaC,EAAWrkK,EAAO,CAAC,GACvC,MAAMnW,EAAMiC,KAAKC,UAAU,CAACs4K,EAAWrkK,IACvC,IAAImiK,EAAMgC,GAAYt6K,GAKtB,OAJKs4K,IACHA,EAAM,IAAI9pF,KAAKiE,eAAe+nF,EAAWrkK,GACzCmkK,GAAYt6K,GAAOs4K,GAEdA,CACT,CAEA,IAAImC,GAAe,CAAC,EAWpB,IAAIC,GAAe,CAAC,EAYpB,IAAIC,GAAiB,KAwErB,SAASC,GAAU7F,EAAKp5K,EAAQk/K,EAAWC,EAAWC,GACpD,MAAMloJ,EAAOkiJ,EAAIa,YAAYiF,GAE7B,MAAa,UAAThoJ,EACK,KACW,OAATA,EACFioJ,EAAUn/K,GAEVo/K,EAAOp/K,EAElB,CAmBA,MAAMq/K,GACJx3K,YAAYy3K,EAAM1F,EAAap/J,GAC7Bta,KAAK25K,MAAQr/J,EAAKq/J,OAAS,EAC3B35K,KAAKiF,MAAQqV,EAAKrV,QAAS,EAE3B,MAAM,MAAE00K,EAAK,MAAE10K,KAAUo6K,GAAc/kK,EAEvC,IAAKo/J,GAAe36K,OAAOgK,KAAKs2K,GAAWv/K,OAAS,EAAG,CACrD,MAAM21K,EAAW,CAAE6J,aAAa,KAAUhlK,GACtCA,EAAKq/J,MAAQ,IAAGlE,EAAS8J,qBAAuBjlK,EAAKq/J,OACzD35K,KAAKw/K,IArIX,SAAsBb,EAAWrkK,EAAO,CAAC,GACvC,MAAMnW,EAAMiC,KAAKC,UAAU,CAACs4K,EAAWrkK,IACvC,IAAIklK,EAAMZ,GAAaz6K,GAKvB,OAJKq7K,IACHA,EAAM,IAAI7sF,KAAK+D,aAAaioF,EAAWrkK,GACvCskK,GAAaz6K,GAAOq7K,GAEfA,CACT,CA6HiBC,CAAaL,EAAM3J,EAChC,CACF,CAEA7hF,OAAOj0F,GACL,GAAIK,KAAKw/K,IAAK,CACZ,MAAM7B,EAAQ39K,KAAKiF,MAAQD,KAAKC,MAAMtF,GAAKA,EAC3C,OAAOK,KAAKw/K,IAAI5rF,OAAO+pF,EACzB,CAGE,OAAO9J,EADO7zK,KAAKiF,MAAQD,KAAKC,MAAMtF,GAAKw0K,EAAQx0K,EAAG,GAC/BK,KAAK25K,MAEhC,EAOF,MAAM+F,GACJ/3K,YAAY4pJ,EAAI6tB,EAAM9kK,GAGpB,IAAIzO,EACJ,GAHA7L,KAAKsa,KAAOA,EAGRi3I,EAAG+oB,KAAKsB,YAAa,CAOvB,MAAM+D,EAAkBpuB,EAAGh6E,OAAS,IAAjB,EACbqoG,EAAUD,GAAa,EAAI,WAAWA,IAAc,UAAUA,IAClD,IAAdpuB,EAAGh6E,QAAgB8kG,GAASjvK,OAAOwyK,GAASrD,OAC9C1wK,EAAI+zK,EACJ5/K,KAAKuxJ,GAAKA,IASV1lJ,EAAI,MACAyO,EAAKk4J,aACPxyK,KAAKuxJ,GAAKA,EAEVvxJ,KAAKuxJ,GAAmB,IAAdA,EAAGh6E,OAAeg6E,EAAKt1C,GAAS4jE,WAAWtuB,EAAGkN,GAAiB,GAAZlN,EAAGh6E,OAAc,KAGpF,KAA4B,WAAjBg6E,EAAG+oB,KAAK7qK,KACjBzP,KAAKuxJ,GAAKA,GAEVvxJ,KAAKuxJ,GAAKA,EACV1lJ,EAAI0lJ,EAAG+oB,KAAK7yK,MAGd,MAAMguK,EAAW,IAAKz1K,KAAKsa,MACvBzO,IACF4pK,EAASD,SAAW3pK,GAEtB7L,KAAKy8K,IAAMiC,GAAaU,EAAM3J,EAChC,CAEA7hF,SACE,OAAO5zF,KAAKy8K,IAAI7oF,OAAO5zF,KAAKuxJ,GAAGuuB,WACjC,CAEAnK,gBACE,OAAO31K,KAAKy8K,IAAI9G,cAAc31K,KAAKuxJ,GAAGuuB,WACxC,CAEAhtF,kBACE,OAAO9yF,KAAKy8K,IAAI3pF,iBAClB,EAMF,MAAMitF,GACJp4K,YAAYy3K,EAAMY,EAAW1lK,GAC3Bta,KAAKsa,KAAO,CAAEnD,MAAO,UAAWmD,IAC3B0lK,GAAavM,MAChBzzK,KAAKigL,IAhNX,SAAsBtB,EAAWrkK,EAAO,CAAC,GACvC,MAAM,KAAEgiG,KAAS4jE,GAAiB5lK,EAC5BnW,EAAMiC,KAAKC,UAAU,CAACs4K,EAAWuB,IACvC,IAAIV,EAAMX,GAAa16K,GAKvB,OAJKq7K,IACHA,EAAM,IAAI7sF,KAAKmE,mBAAmB6nF,EAAWrkK,GAC7CukK,GAAa16K,GAAOq7K,GAEfA,CACT,CAuMiBW,CAAaf,EAAM9kK,GAElC,CAEAs5E,OAAOpH,EAAOj/C,GACZ,OAAIvtC,KAAKigL,IACAjgL,KAAKigL,IAAIrsF,OAAOpH,EAAOj/C,GVlI7B,SAA4BA,EAAMi/C,EAAO4zF,EAAU,SAAUC,GAAS,GAC3E,MAAM5+H,EAAQ,CACZ6+H,MAAO,CAAC,OAAQ,OAChBC,SAAU,CAAC,UAAW,QACtBtJ,OAAQ,CAAC,QAAS,OAClBuJ,MAAO,CAAC,OAAQ,OAChBC,KAAM,CAAC,MAAO,MAAO,QACrBjK,MAAO,CAAC,OAAQ,OAChBC,QAAS,CAAC,SAAU,QACpBiK,QAAS,CAAC,SAAU,SAGhBC,GAA8D,IAAnD,CAAC,QAAS,UAAW,WAAWt+K,QAAQkrC,GAEzD,GAAgB,SAAZ6yI,GAAsBO,EAAU,CAClC,MAAMC,EAAiB,SAATrzI,EACd,OAAQi/C,GACN,KAAK,EACH,OAAOo0F,EAAQ,WAAa,QAAQn/H,EAAMlU,GAAM,KAClD,KAAM,EACJ,OAAOqzI,EAAQ,YAAc,QAAQn/H,EAAMlU,GAAM,KACnD,KAAK,EACH,OAAOqzI,EAAQ,QAAU,QAAQn/H,EAAMlU,GAAM,KAGnD,CAEA,MAAMszI,EAAW9hL,OAAOk3K,GAAGzpF,GAAQ,IAAMA,EAAQ,EAC/Cs0F,EAAW97K,KAAKopB,IAAIo+D,GACpBu0F,EAAwB,IAAbD,EACXE,EAAWv/H,EAAMlU,GACjB0zI,EAAUZ,EACNU,EACEC,EAAS,GACTA,EAAS,IAAMA,EAAS,GAC1BD,EACAt/H,EAAMlU,GAAM,GACZA,EACN,OAAOszI,EAAW,GAAGC,KAAYG,QAAgB,MAAMH,KAAYG,GACrE,CU6Fa,CAA2B1zI,EAAMi/C,EAAOxsF,KAAKsa,KAAK8lK,QAA6B,SAApBpgL,KAAKsa,KAAKnD,MAEhF,CAEAw+J,cAAcnpF,EAAOj/C,GACnB,OAAIvtC,KAAKigL,IACAjgL,KAAKigL,IAAItK,cAAcnpF,EAAOj/C,GAE9B,EAEX,EAOa,MAAM+wI,GACnBv2K,gBAAgBuS,GACd,OAAOgkK,GAAOlxK,OAAOkN,EAAKw9E,OAAQx9E,EAAK+jK,gBAAiB/jK,EAAK2/J,eAAgB3/J,EAAK4mK,YACpF,CAEAn5K,cAAc+vF,EAAQumF,EAAiBpE,EAAgBiH,GAAc,GACnE,MAAMC,EAAkBrpF,GAAUsmF,GAASllB,cAErCkoB,EAAUD,IAAoBD,EAAc,QApOhDpC,KAGFA,IAAiB,IAAInsF,KAAKiE,gBAAiB9D,kBAAkBgF,OACtDgnF,KAiODuC,EAAmBhD,GAAmBD,GAASF,uBAC/CoD,EAAkBrH,GAAkBmE,GAASD,sBACnD,OAAO,IAAIG,GAAO8C,EAASC,EAAkBC,EAAiBH,EAChE,CAEAp5K,oBACE+2K,GAAiB,KACjBL,GAAc,CAAC,EACfG,GAAe,CAAC,EAChBC,GAAe,CAAC,CAClB,CAEA92K,mBAAkB,OAAE+vF,EAAM,gBAAEumF,EAAe,eAAEpE,GAAmB,CAAC,GAC/D,OAAOqE,GAAOlxK,OAAO0qF,EAAQumF,EAAiBpE,EAChD,CAEAtyK,YAAYmwF,EAAQypF,EAAWtH,EAAgBkH,GAC7C,MAAOK,EAAcC,EAAuBC,GA9OhD,SAA2BC,GASzB,MAAMC,EAASD,EAAUt/K,QAAQ,OACjC,IAAgB,IAAZu/K,EACF,MAAO,CAACD,GACH,CACL,IAAI1wK,EACJ,MAAM4wK,EAAUF,EAAUpyK,UAAU,EAAGqyK,GACvC,IACE3wK,EAAUytK,GAAaiD,GAAW7uF,iBAGpC,CAFE,MAAOjyF,GACPoQ,EAAUytK,GAAamD,GAAS/uF,iBAClC,CAEA,MAAM,gBAAEurF,EAAe,SAAEyD,GAAa7wK,EAEtC,MAAO,CAAC4wK,EAASxD,EAAiByD,EACpC,CACF,CAqNwEC,CAAkBjqF,GAEtF93F,KAAK83F,OAAS0pF,EACdxhL,KAAKq+K,gBAAkBkD,GAAaE,GAAyB,KAC7DzhL,KAAKi6K,eAAiBA,GAAkByH,GAAwB,KAChE1hL,KAAKo/K,KAxNT,SAA0BuC,EAAWtD,EAAiBpE,GACpD,OAAIA,GAAkBoE,GACpBsD,GAAa,KAET1H,IACF0H,GAAa,OAAO1H,KAGlBoE,IACFsD,GAAa,OAAOtD,KAEfsD,GAEAA,CAEX,CAyMgBK,CAAiBhiL,KAAK83F,OAAQ93F,KAAKq+K,gBAAiBr+K,KAAKi6K,gBAErEj6K,KAAKiiL,cAAgB,CAAEruF,OAAQ,CAAC,EAAG4mF,WAAY,CAAC,GAChDx6K,KAAKkiL,YAAc,CAAEtuF,OAAQ,CAAC,EAAG4mF,WAAY,CAAC,GAC9Cx6K,KAAKmiL,cAAgB,KACrBniL,KAAKoiL,SAAW,CAAC,EAEjBpiL,KAAKmhL,gBAAkBA,EACvBnhL,KAAKqiL,kBAAoB,IAC3B,CAEIC,kBApLN,IAA6BpJ,EAyLzB,OAJ8B,MAA1Bl5K,KAAKqiL,oBACPriL,KAAKqiL,qBAtLkBnJ,EAsLsBl5K,MArLzCq+K,iBAA2C,SAAxBnF,EAAImF,mBAIH,SAAxBnF,EAAImF,kBACHnF,EAAIphF,QACLohF,EAAIphF,OAAO9rF,WAAW,OACkD,SAAxE,IAAI2mF,KAAKiE,eAAesiF,EAAIkG,MAAMtsF,kBAAkBurF,kBAiL/Cr+K,KAAKqiL,iBACd,CAEAtI,cACE,MAAMwI,EAAeviL,KAAKggL,YACpBwC,IACsB,OAAzBxiL,KAAKq+K,iBAAqD,SAAzBr+K,KAAKq+K,iBACd,OAAxBr+K,KAAKi6K,gBAAmD,YAAxBj6K,KAAKi6K,gBACxC,OAAOsI,GAAgBC,EAAiB,KAAO,MACjD,CAEAjwI,MAAMkwI,GACJ,OAAKA,GAAoD,IAA5C1jL,OAAO67F,oBAAoB6nF,GAAM3iL,OAGrCw+K,GAAOlxK,OACZq1K,EAAK3qF,QAAU93F,KAAKmhL,gBACpBsB,EAAKpE,iBAAmBr+K,KAAKq+K,gBAC7BoE,EAAKxI,gBAAkBj6K,KAAKi6K,eAC5BwI,EAAKvB,cAAe,GANflhL,IASX,CAEA0iL,cAAcD,EAAO,CAAC,GACpB,OAAOziL,KAAKuyC,MAAM,IAAKkwI,EAAMvB,aAAa,GAC5C,CAEA7H,kBAAkBoJ,EAAO,CAAC,GACxB,OAAOziL,KAAKuyC,MAAM,IAAKkwI,EAAMvB,aAAa,GAC5C,CAEAjK,OAAOn3K,EAAQ8zF,GAAS,EAAOorF,GAAY,GACzC,OAAOD,GAAU/+K,KAAMF,EAAQk/K,EAAW,IAAgB,KACxD,MAAMI,EAAOxrF,EAAS,CAAEt6C,MAAOx5C,EAAQm1E,IAAK,WAAc,CAAE37B,MAAOx5C,GACjEs3F,EAAYxD,EAAS,SAAW,aAIlC,OAHK5zF,KAAKkiL,YAAY9qF,GAAWt3F,KAC/BE,KAAKkiL,YAAY9qF,GAAWt3F,GA5PpC,SAAmBsB,GACjB,MAAM+/C,EAAK,GACX,IAAK,IAAIxhD,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAC5B,MAAM4xJ,EAAKt1C,GAAS0mE,IAAI,KAAMhjL,EAAG,GACjCwhD,EAAGh/C,KAAKf,EAAEmwJ,GACZ,CACA,OAAOpwG,CACT,CAqP8CyhI,EAAWrxB,GAAOvxJ,KAAKk6K,QAAQ3oB,EAAI6tB,EAAM,YAE1Ep/K,KAAKkiL,YAAY9qF,GAAWt3F,EAAO,GAE9C,CAEAu3K,SAASv3K,EAAQ8zF,GAAS,EAAOorF,GAAY,GAC3C,OAAOD,GAAU/+K,KAAMF,EAAQk/K,EAAW,IAAkB,KAC1D,MAAMI,EAAOxrF,EACP,CAAEm+E,QAASjyK,EAAQyoK,KAAM,UAAWjvH,MAAO,OAAQ27B,IAAK,WACxD,CAAE88F,QAASjyK,GACfs3F,EAAYxD,EAAS,SAAW,aAMlC,OALK5zF,KAAKiiL,cAAc7qF,GAAWt3F,KACjCE,KAAKiiL,cAAc7qF,GAAWt3F,GAhQtC,SAAqBsB,GACnB,MAAM+/C,EAAK,GACX,IAAK,IAAIxhD,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,MAAM4xJ,EAAKt1C,GAAS0mE,IAAI,KAAM,GAAI,GAAKhjL,GACvCwhD,EAAGh/C,KAAKf,EAAEmwJ,GACZ,CACA,OAAOpwG,CACT,CAyPgD0hI,EAAatxB,GACnDvxJ,KAAKk6K,QAAQ3oB,EAAI6tB,EAAM,cAGpBp/K,KAAKiiL,cAAc7qF,GAAWt3F,EAAO,GAEhD,CAEAw3K,UAAU0H,GAAY,GACpB,OAAOD,GACL/+K,UACA8Z,EACAklK,GACA,IAAM,KACN,KAGE,IAAKh/K,KAAKmiL,cAAe,CACvB,MAAM/C,EAAO,CAAEjN,KAAM,UAAWQ,UAAW,OAC3C3yK,KAAKmiL,cAAgB,CAAClmE,GAAS0mE,IAAI,KAAM,GAAI,GAAI,GAAI1mE,GAAS0mE,IAAI,KAAM,GAAI,GAAI,KAAKt5K,KAClFkoJ,GAAOvxJ,KAAKk6K,QAAQ3oB,EAAI6tB,EAAM,cAEnC,CAEA,OAAOp/K,KAAKmiL,aAAa,GAG/B,CAEAzK,KAAK53K,EAAQk/K,GAAY,GACvB,OAAOD,GAAU/+K,KAAMF,EAAQk/K,EAAW,IAAc,KACtD,MAAMI,EAAO,CAAE1E,IAAK56K,GAUpB,OANKE,KAAKoiL,SAAStiL,KACjBE,KAAKoiL,SAAStiL,GAAU,CAACm8G,GAAS0mE,KAAK,GAAI,EAAG,GAAI1mE,GAAS0mE,IAAI,KAAM,EAAG,IAAIt5K,KAAKkoJ,GAC/EvxJ,KAAKk6K,QAAQ3oB,EAAI6tB,EAAM,UAIpBp/K,KAAKoiL,SAAStiL,EAAO,GAEhC,CAEAo6K,QAAQ3oB,EAAIkkB,EAAUhxB,GACpB,MAEEq+B,EAFS9iL,KAAKs5K,YAAY/nB,EAAIkkB,GACjBE,gBACM3sF,MAAM7iF,GAAMA,EAAEsJ,KAAKuE,gBAAkBywI,IAC1D,OAAOq+B,EAAWA,EAASpiL,MAAQ,IACrC,CAEAk5K,gBAAgBt/J,EAAO,CAAC,GAGtB,OAAO,IAAI6kK,GAAoBn/K,KAAKo/K,KAAM9kK,EAAKo/J,aAAe15K,KAAKsiL,YAAahoK,EAClF,CAEAg/J,YAAY/nB,EAAIkkB,EAAW,CAAC,GAC1B,OAAO,IAAIiK,GAAkBnuB,EAAIvxJ,KAAKo/K,KAAM3J,EAC9C,CAEAsN,aAAazoK,EAAO,CAAC,GACnB,OAAO,IAAIylK,GAAiB//K,KAAKo/K,KAAMp/K,KAAKggL,YAAa1lK,EAC3D,CAEA0oK,cAAc1oK,EAAO,CAAC,GACpB,OA9aJ,SAAqBqkK,EAAWrkK,EAAO,CAAC,GACtC,MAAMnW,EAAMiC,KAAKC,UAAU,CAACs4K,EAAWrkK,IACvC,IAAImiK,EAAM+B,GAAYr6K,GAKtB,OAJKs4K,IACHA,EAAM,IAAI9pF,KAAKqE,WAAW2nF,EAAWrkK,GACrCkkK,GAAYr6K,GAAOs4K,GAEdA,CACT,CAsaWwG,CAAYjjL,KAAKo/K,KAAM9kK,EAChC,CAEA0lK,YACE,MACkB,OAAhBhgL,KAAK83F,QACyB,UAA9B93F,KAAK83F,OAAO9jF,eACZ,IAAI2+E,KAAKiE,eAAe52F,KAAKo/K,MAAMtsF,kBAAkBgF,OAAO9rF,WAAW,QAE3E,CAEA6vK,OAAOv4J,GACL,OACEtjB,KAAK83F,SAAWx0E,EAAMw0E,QACtB93F,KAAKq+K,kBAAoB/6J,EAAM+6J,iBAC/Br+K,KAAKi6K,iBAAmB32J,EAAM22J,cAElC,ECjbF,SAASiJ,MAAkBC,GACzB,MAAMC,EAAOD,EAAQn6K,QAAO,CAAC5H,EAAG2C,IAAM3C,EAAI2C,EAAEwT,QAAQ,IACpD,OAAOm0B,OAAO,IAAI03I,KACpB,CAEA,SAASC,MAAqBC,GAC5B,OAAQn9K,GACNm9K,EACGt6K,QACC,EAAEu6K,EAAYC,EAAYv8J,GAAS8+H,KACjC,MAAOx5G,EAAK+tI,EAAM15K,GAAQmlJ,EAAG5/I,EAAG8gB,GAChC,MAAO,CAAC,IAAKs8J,KAAeh3I,GAAO+tI,GAAQkJ,EAAY5iL,EAAK,GAE9D,CAAC,CAAC,EAAG,KAAM,IAEZyG,MAAM,EAAG,EAChB,CAEA,SAASX,GAAMhH,KAAM+jL,GACnB,GAAS,MAAL/jL,EACF,MAAO,CAAC,KAAM,MAGhB,IAAK,MAAO81F,EAAOkuF,KAAcD,EAAU,CACzC,MAAMt9K,EAAIqvF,EAAMh0E,KAAK9hB,GACrB,GAAIyG,EACF,OAAOu9K,EAAUv9K,EAErB,CACA,MAAO,CAAC,KAAM,KAChB,CAEA,SAASw9K,MAAe56K,GACtB,MAAO,CAACwX,EAAO0G,KACb,MAAMizE,EAAM,CAAC,EACb,IAAIv6F,EAEJ,IAAKA,EAAI,EAAGA,EAAIoJ,EAAKjJ,OAAQH,IAC3Bu6F,EAAInxF,EAAKpJ,IAAMo0K,EAAaxzJ,EAAM0G,EAAStnB,IAE7C,MAAO,CAACu6F,EAAK,KAAMjzE,EAAStnB,EAAE,CAElC,CAGA,MAAMikL,GAAc,kCAEdC,GAAmB,sDACnBC,GAAep4I,OAAO,GAAGm4I,GAAiBtsK,SAFxB,MAAMqsK,GAAYrsK,iBAAiBs/J,GAAUt/J,oBAG/DwsK,GAAwBr4I,OAAO,OAAOo4I,GAAavsK,YAInDysK,GAAqBL,GAAY,WAAY,aAAc,WAC3DM,GAAwBN,GAAY,OAAQ,WAE5CO,GAAex4I,OACnB,GAAGm4I,GAAiBtsK,cAAcqsK,GAAYrsK,WAAWs/J,GAAUt/J,aAE/D4sK,GAAwBz4I,OAAO,OAAOw4I,GAAa3sK,YAEzD,SAAS,GAAIgJ,EAAOs8J,EAAKh2D,GACvB,MAAM1gH,EAAIoa,EAAMs8J,GAChB,OAAOvuH,EAAYnoD,GAAK0gH,EAAWktD,EAAa5tK,EAClD,CAYA,SAASi+K,GAAe7jK,EAAO0G,GAQ7B,MAAO,CAPM,CACXuvJ,MAAO,GAAIj2J,EAAO0G,EAAQ,GAC1BwvJ,QAAS,GAAIl2J,EAAO0G,EAAS,EAAG,GAChCy5J,QAAS,GAAIngK,EAAO0G,EAAS,EAAG,GAChCktB,aAAc8/H,EAAY1zJ,EAAM0G,EAAS,KAG7B,KAAMA,EAAS,EAC/B,CAEA,SAASo9J,GAAiB9jK,EAAO0G,GAC/B,MAAMq9J,GAAS/jK,EAAM0G,KAAY1G,EAAM0G,EAAS,GAC9Cs9J,EAAa3O,GAAar1J,EAAM0G,EAAS,GAAI1G,EAAM0G,EAAS,IAE9D,MAAO,CAAC,CAAC,EADAq9J,EAAQ,KAAO7G,GAAgB55K,SAAS0gL,GAC/Bt9J,EAAS,EAC7B,CAEA,SAASu9J,GAAgBjkK,EAAO0G,GAE9B,MAAO,CAAC,CAAC,EADI1G,EAAM0G,GAAUo1J,GAASjvK,OAAOmT,EAAM0G,IAAW,KAC5CA,EAAS,EAC7B,CAIA,MAAMw9J,GAAc/4I,OAAO,MAAMm4I,GAAiBtsK,WAI5CmtK,GACJ,+PAEF,SAASC,GAAmBpkK,GAC1B,MAAO7gB,EAAGklL,EAASC,EAAUC,EAASC,EAAQC,EAASC,EAAWC,EAAWC,GAC3E5kK,EAEI6kK,EAA6B,MAAT1lL,EAAE,GACtB2lL,EAAkBH,GAA8B,MAAjBA,EAAU,GAEzCI,EAAc,CAAC7L,EAAKnyD,GAAQ,SACxBxtG,IAAR2/J,IAAsBnyD,GAAUmyD,GAAO2L,IAAuB3L,EAAMA,EAEtE,MAAO,CACL,CACE6G,MAAOgF,EAAYtR,EAAc4Q,IACjC3N,OAAQqO,EAAYtR,EAAc6Q,IAClCrE,MAAO8E,EAAYtR,EAAc8Q,IACjCrE,KAAM6E,EAAYtR,EAAc+Q,IAChCvO,MAAO8O,EAAYtR,EAAcgR,IACjCvO,QAAS6O,EAAYtR,EAAciR,IACnCvE,QAAS4E,EAAYtR,EAAckR,GAA0B,OAAdA,GAC/C/wI,aAAcmxI,EAAYrR,EAAYkR,GAAkBE,IAG9D,CAKA,MAAME,GAAa,CACjBC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAGP,SAASC,GAAYC,EAAYtB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,GAC9E,MAAMnkL,EAAS,CACbwnK,KAAyB,IAAnBqc,EAAQ9kL,OAAeu1K,EAAetB,EAAa6Q,IAAY7Q,EAAa6Q,GAClFtrI,MAAO,WAA4BurI,GAAY,EAC/C5vG,IAAK8+F,EAAagR,GAClB5S,KAAM4B,EAAaiR,GACnB5S,OAAQ2B,EAAakR,IAWvB,OARIC,IAAWnkL,EAAOuxK,OAASyB,EAAamR,IACxCgB,IACFnlL,EAAOgxK,QACLmU,EAAWpmL,OAAS,EAChB,WAA6BomL,GAAc,EAC3C,WAA8BA,GAAc,GAG7CnlL,CACT,CAGA,MAAMolL,GACJ,kMAEF,SAASC,GAAe7lK,GACtB,MACI,CACA2lK,EACAnB,EACAF,EACAD,EACAI,EACAC,EACAC,EACAmB,EACAC,EACAzQ,EACAC,GACEv1J,EACJxf,EAASklL,GAAYC,EAAYtB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,GAElF,IAAI3tG,EASJ,OAPEA,EADE8uG,EACOd,GAAWc,GACXC,EACA,EAEA1Q,GAAaC,EAAYC,GAG7B,CAAC/0K,EAAQ,IAAI08K,GAAgBlmG,GACtC,CAYA,MAAMgvG,GACF,6HACFC,GACE,yJACFC,GACE,4HAEJ,SAASC,GAAoBnmK,GAC3B,MAAO,CAAE2lK,EAAYnB,EAAQF,EAAUD,EAASI,EAASC,EAAWC,GAAa3kK,EAEjF,MAAO,CADI0lK,GAAYC,EAAYtB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,GAClEzH,GAAgBC,YAClC,CAEA,SAASiJ,GAAapmK,GACpB,MAAO,CAAE2lK,EAAYrB,EAAUE,EAAQC,EAASC,EAAWC,EAAWN,GAAWrkK,EAEjF,MAAO,CADI0lK,GAAYC,EAAYtB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,GAClEzH,GAAgBC,YAClC,CAEA,MAAMkJ,GAA+B1D,GAnLjB,8CAmL6Ca,IAC3D8C,GAAgC3D,GAnLjB,8BAmL8Ca,IAC7D+C,GAAmC5D,GAnLjB,mBAmLiDa,IACnEgD,GAAuB7D,GAAeY,IAEtCkD,GAA6B3D,IAxKnC,SAAuB9iK,EAAO0G,GAO5B,MAAO,CANM,CACXshJ,KAAM,GAAIhoJ,EAAO0G,GACjBqyB,MAAO,GAAI/4B,EAAO0G,EAAS,EAAG,GAC9BguD,IAAK,GAAI10D,EAAO0G,EAAS,EAAG,IAGhB,KAAMA,EAAS,EAC/B,GAkKEm9J,GACAC,GACAG,IAEIyC,GAA8B5D,GAClCW,GACAI,GACAC,GACAG,IAEI0C,GAA+B7D,GACnCY,GACAG,GACAC,GACAG,IAEI2C,GAA0B9D,GAC9Be,GACAC,GACAG,IAkCF,MAAM4C,GAAqB/D,GAAkBe,IAM7C,MAAMiD,GAA+BnE,GAhPjB,wBAgP6CiB,IAC3DmD,GAAuBpE,GAAegB,IAEtCqD,GAAkClE,GACtCe,GACAC,GACAG,ICrTF,MAGagD,GAAiB,CAC1BhH,MAAO,CACLC,KAAM,EACNjK,MAAO,IACPC,QAAS,MACTiK,QAAS,OACTvsI,aAAc,QAEhBssI,KAAM,CACJjK,MAAO,GACPC,QAAS,KACTiK,QAAS,MACTvsI,aAAc,OAEhBqiI,MAAO,CAAEC,QAAS,GAAIiK,QAAS,KAASvsI,aAAc,MACtDsiI,QAAS,CAAEiK,QAAS,GAAIvsI,aAAc,KACtCusI,QAAS,CAAEvsI,aAAc,MAE3BszI,GAAe,CACbnH,MAAO,CACLC,SAAU,EACVtJ,OAAQ,GACRuJ,MAAO,GACPC,KAAM,IACNjK,MAAO,KACPC,QAAS,OACTiK,QAAS,QACTvsI,aAAc,SAEhBosI,SAAU,CACRtJ,OAAQ,EACRuJ,MAAO,GACPC,KAAM,GACNjK,MAAO,KACPC,QAAS,OACTiK,QAAS,QACTvsI,aAAc,SAEhB8iI,OAAQ,CACNuJ,MAAO,EACPC,KAAM,GACNjK,MAAO,IACPC,QAAS,MACTiK,QAAS,OACTvsI,aAAc,WAGbqzI,IAELE,GAAqB,SACrBC,GAAsB,UACtBC,GAAiB,CACftH,MAAO,CACLC,SAAU,EACVtJ,OAAQ,GACRuJ,MAAOkH,QACPjH,KAAMiH,GACNlR,MAAOkR,QACPjR,QAASiR,SACThH,QAASgH,SAA+B,GACxCvzI,aAAcuzI,SAA+B,GAAK,KAEpDnH,SAAU,CACRtJ,OAAQ,EACRuJ,MAAOkH,UACPjH,KAAMiH,UACNlR,MAAO,SACPC,QAAS,SACTiK,QAAUgH,SAA+B,GAAM,EAC/CvzI,aAAc,mBAEhB8iI,OAAQ,CACNuJ,MAAOmH,mBACPlH,KAAMkH,GACNnR,MAAOmR,QACPlR,QAASkR,QACTjH,QAASiH,QACTxzI,aAAcwzI,cAEbH,IAIDK,GAAe,CACnB,QACA,WACA,SACA,QACA,OACA,QACA,UACA,UACA,gBAGIC,GAAeD,GAAaxgL,MAAM,GAAGm7H,UAG3C,SAASjwF,GAAM0oI,EAAKwH,EAAMn+K,GAAQ,GAEhC,MAAMyjL,EAAO,CACXn+J,OAAQtlB,EAAQm+K,EAAK74J,OAAS,IAAKqxJ,EAAIrxJ,UAAY64J,EAAK74J,QAAU,CAAC,GACnEsvJ,IAAK+B,EAAI/B,IAAI3mI,MAAMkwI,EAAKvJ,KACxB8O,mBAAoBvF,EAAKuF,oBAAsB/M,EAAI+M,oBAErD,OAAO,IAAIC,GAASF,EACtB,CAOA,SAAS7vD,GAAQgwD,EAAQC,EAASC,EAAUC,EAAOC,GACjD,MAAMC,EAAOL,EAAOI,GAAQF,GAC1Bt+D,EAAMq+D,EAAQC,GAAYG,EAG1Bt9D,IAFWjmH,KAAK0xK,KAAK5sD,KAAS9kH,KAAK0xK,KAAK2R,EAAMC,MAGb,IAAlBD,EAAMC,IAAiBtjL,KAAKopB,IAAI07F,IAAQ,EAX3D,SAAmBlqH,GACjB,OAAOA,EAAI,EAAIoF,KAAKC,MAAMrF,GAAKoF,KAAKilK,KAAKrqK,EAC3C,CAS+D4oL,CAAU1+D,GAAO9kH,KAAKuvK,MAAMzqD,GACzFu+D,EAAMC,IAAWr9D,EACjBk9D,EAAQC,IAAan9D,EAAQs9D,CAC/B,CA6Be,MAAMN,GAInBtgL,YAAYkU,GACV,MAAM4sK,EAAyC,aAA9B5sK,EAAOmsK,qBAAqC,EAI7DhoL,KAAK4pB,OAAS/N,EAAO+N,OAIrB5pB,KAAKk5K,IAAMr9J,EAAOq9J,KAAOoF,GAAOlxK,SAIhCpN,KAAKgoL,mBAAqBS,EAAW,WAAa,SAIlDzoL,KAAK0oL,QAAU7sK,EAAO6sK,SAAW,KAIjC1oL,KAAKkoL,OAASO,EAAWb,GAAiBH,GAI1CznL,KAAK2oL,iBAAkB,CACzB,CAWA5gL,kBAAkBykF,EAAOlyE,GACvB,OAAO2tK,GAASW,WAAW,CAAEz0I,aAAcq4C,GAASlyE,EACtD,CAqBAvS,kBAAkBkY,EAAK3F,EAAO,CAAC,GAC7B,GAAW,MAAP2F,GAA8B,iBAARA,EACxB,MAAM,IAAIyxJ,EACR,gEACU,OAARzxJ,EAAe,cAAgBA,IAKrC,OAAO,IAAIgoK,GAAS,CAClBr+J,OAAQwsJ,GAAgBn2J,EAAKgoK,GAASY,eACtC3P,IAAKoF,GAAOsK,WAAWtuK,GACvB0tK,mBAAoB1tK,EAAK0tK,oBAE7B,CAYAjgL,wBAAwB+gL,GACtB,GAAIl0H,EAASk0H,GACX,OAAOb,GAASpI,WAAWiJ,GACtB,GAAIb,GAASc,WAAWD,GAC7B,OAAOA,EACF,GAA4B,iBAAjBA,EAChB,OAAOb,GAASW,WAAWE,GAE3B,MAAM,IAAIpX,EACR,6BAA6BoX,oBAA+BA,IAGlE,CAeA/gL,eAAey/B,EAAMltB,GACnB,MAAO+6C,GDqBJ,SAA0B31D,GAC/B,OAAOgH,GAAMhH,EAAG,CAACglL,GAAaC,IAChC,CCvBqBqE,CAAiBxhJ,GAClC,OAAI6tB,EACK4yH,GAASW,WAAWvzH,EAAQ/6C,GAE5B2tK,GAASS,QAAQ,aAAc,cAAclhJ,iCAExD,CAiBAz/B,mBAAmBy/B,EAAMltB,GACvB,MAAO+6C,GDGJ,SAA0B31D,GAC/B,OAAOgH,GAAMhH,EAAG,CAAC+kL,GAAa2C,IAChC,CCLqB6B,CAAiBzhJ,GAClC,OAAI6tB,EACK4yH,GAASW,WAAWvzH,EAAQ/6C,GAE5B2tK,GAASS,QAAQ,aAAc,cAAclhJ,iCAExD,CAQAz/B,eAAesvC,EAAQokI,EAAc,MACnC,IAAKpkI,EACH,MAAM,IAAIq6H,EAAqB,oDAGjC,MAAMgX,EAAUrxI,aAAkBmkI,GAAUnkI,EAAS,IAAImkI,GAAQnkI,EAAQokI,GAEzE,GAAI2C,GAASH,eACX,MAAM,IAAI1M,EAAqBmX,GAE/B,OAAO,IAAIT,GAAS,CAAES,WAE1B,CAKA3gL,qBAAqBwlC,GACnB,MAAM+oI,EAAa,CACjB/N,KAAM,QACN+X,MAAO,QACPvF,QAAS,WACTwF,SAAU,WACVjnI,MAAO,SACP29H,OAAQ,SACR19H,KAAM,QACNinI,MAAO,QACPvrG,IAAK,OACLwrG,KAAM,OACNtO,KAAM,QACNqE,MAAO,QACPpE,OAAQ,UACRqE,QAAS,UACTnE,OAAQ,UACRoO,QAAS,UACT3L,YAAa,eACb5gI,aAAc,gBACd5G,EAAOA,EAAKv5B,cAAgBu5B,GAE9B,IAAK+oI,EAAY,MAAM,IAAI7E,EAAiBlkI,GAE5C,OAAO+oI,CACT,CAOAvuK,kBAAkB3F,GAChB,OAAQA,GAAKA,EAAEumL,kBAAoB,CACrC,CAMI7wF,aACF,OAAO93F,KAAKq6K,QAAUr6K,KAAKk5K,IAAIphF,OAAS,IAC1C,CAOIumF,sBACF,OAAOr+K,KAAKq6K,QAAUr6K,KAAKk5K,IAAImF,gBAAkB,IACnD,CAwBAniE,SAAS48D,EAAKx+J,EAAO,CAAC,GAEpB,MAAM4uK,EAAU,IACX5uK,EACHrV,OAAsB,IAAfqV,EAAK0T,QAAkC,IAAf1T,EAAKrV,OAEtC,OAAOjF,KAAKq6K,QACR7jF,GAAUppF,OAAOpN,KAAKk5K,IAAKgQ,GAASlO,yBAAyBh7K,KAAM84K,GAzZ3D,kBA2Zd,CAeAqQ,QAAQ7uK,EAAO,CAAC,GACd,MAAMnV,EAAI0iL,GACPx+K,KAAKkkC,IACJ,MAAMhB,EAAMvsC,KAAK4pB,OAAO2jB,GACxB,OAAI+gB,EAAY/hB,GACP,KAEFvsC,KAAKk5K,IACTU,gBAAgB,CAAEziK,MAAO,OAAQiyK,YAAa,UAAW9uK,EAAMizB,KAAMA,EAAKlmC,MAAM,GAAI,KACpFusF,OAAOrnD,EAAI,IAEfplC,QAAQvH,GAAMA,IAEjB,OAAOI,KAAKk5K,IACT8J,cAAc,CAAEvzK,KAAM,cAAe0H,MAAOmD,EAAK0jB,WAAa,YAAa1jB,IAC3Es5E,OAAOzuF,EACZ,CAOAkkL,WACE,OAAKrpL,KAAKq6K,QACH,IAAKr6K,KAAK4pB,QADS,CAAC,CAE7B,CAYA0/J,QAEE,IAAKtpL,KAAKq6K,QAAS,OAAO,KAE1B,IAAI36K,EAAI,IAcR,OAbmB,IAAfM,KAAKsgL,QAAa5gL,GAAKM,KAAKsgL,MAAQ,KACpB,IAAhBtgL,KAAKi3K,QAAkC,IAAlBj3K,KAAKugL,WAAgB7gL,GAAKM,KAAKi3K,OAAyB,EAAhBj3K,KAAKugL,SAAe,KAClE,IAAfvgL,KAAKwgL,QAAa9gL,GAAKM,KAAKwgL,MAAQ,KACtB,IAAdxgL,KAAKygL,OAAY/gL,GAAKM,KAAKygL,KAAO,KACnB,IAAfzgL,KAAKw2K,OAAgC,IAAjBx2K,KAAKy2K,SAAkC,IAAjBz2K,KAAK0gL,SAAuC,IAAtB1gL,KAAKm0C,eACvEz0C,GAAK,KACY,IAAfM,KAAKw2K,QAAa92K,GAAKM,KAAKw2K,MAAQ,KACnB,IAAjBx2K,KAAKy2K,UAAe/2K,GAAKM,KAAKy2K,QAAU,KACvB,IAAjBz2K,KAAK0gL,SAAuC,IAAtB1gL,KAAKm0C,eAG7Bz0C,GAAKy0K,EAAQn0K,KAAK0gL,QAAU1gL,KAAKm0C,aAAe,IAAM,GAAK,KACnD,MAANz0C,IAAWA,GAAK,OACbA,CACT,CAkBA6pL,UAAUjvK,EAAO,CAAC,GAChB,IAAKta,KAAKq6K,QAAS,OAAO,KAE1B,MAAMmP,EAASxpL,KAAKypL,WACpB,GAAID,EAAS,GAAKA,GAAU,MAAU,OAAO,KAE7ClvK,EAAO,CACLovK,sBAAsB,EACtBC,iBAAiB,EACjBC,eAAe,EACfh2F,OAAQ,cACLt5E,GAGL,MAAM5Z,EAAQV,KAAKu7K,QAAQ,QAAS,UAAW,UAAW,gBAE1D,IAAIzC,EAAsB,UAAhBx+J,EAAKs5E,OAAqB,OAAS,QAExCt5E,EAAKqvK,iBAAqC,IAAlBjpL,EAAMggL,SAAwC,IAAvBhgL,EAAMyzC,eACxD2kI,GAAuB,UAAhBx+J,EAAKs5E,OAAqB,KAAO,MACnCt5E,EAAKovK,sBAA+C,IAAvBhpL,EAAMyzC,eACtC2kI,GAAO,SAIX,IAAIv3H,EAAM7gD,EAAMw7G,SAAS48D,GAMzB,OAJIx+J,EAAKsvK,gBACProI,EAAM,IAAMA,GAGPA,CACT,CAMA4Q,SACE,OAAOnyD,KAAKspL,OACd,CAMA5jL,WACE,OAAO1F,KAAKspL,OACd,CAMAG,WACE,OAAOzpL,KAAKskE,GAAG,eACjB,CAMAijB,UACE,OAAOvnF,KAAKypL,UACd,CAOAI,KAAKvlK,GACH,IAAKtkB,KAAKq6K,QAAS,OAAOr6K,KAE1B,MAAMi7K,EAAMgN,GAAS6B,iBAAiBxlK,GACpCvjB,EAAS,CAAC,EAEZ,IAAK,MAAM4H,KAAKk/K,IACV,EAAe5M,EAAIrxJ,OAAQjhB,IAAM,EAAe3I,KAAK4pB,OAAQjhB,MAC/D5H,EAAO4H,GAAKsyK,EAAI93K,IAAIwF,GAAK3I,KAAKmD,IAAIwF,IAItC,OAAO4pC,GAAMvyC,KAAM,CAAE4pB,OAAQ7oB,IAAU,EACzC,CAOAgpL,MAAMzlK,GACJ,IAAKtkB,KAAKq6K,QAAS,OAAOr6K,KAE1B,MAAMi7K,EAAMgN,GAAS6B,iBAAiBxlK,GACtC,OAAOtkB,KAAK6pL,KAAK5O,EAAI+O,SACvB,CASAC,SAASzrK,GACP,IAAKxe,KAAKq6K,QAAS,OAAOr6K,KAC1B,MAAMe,EAAS,CAAC,EAChB,IAAK,MAAM4H,KAAK5J,OAAOgK,KAAK/I,KAAK4pB,QAC/B7oB,EAAO4H,GAAKutK,GAAS13J,EAAGxe,KAAK4pB,OAAOjhB,GAAIA,IAE1C,OAAO4pC,GAAMvyC,KAAM,CAAE4pB,OAAQ7oB,IAAU,EACzC,CAUAoC,IAAIoqC,GACF,OAAOvtC,KAAKioL,GAASY,cAAct7I,GACrC,CASAnqC,IAAIwmB,GACF,IAAK5pB,KAAKq6K,QAAS,OAAOr6K,KAG1B,OAAOuyC,GAAMvyC,KAAM,CAAE4pB,OADP,IAAK5pB,KAAK4pB,UAAWwsJ,GAAgBxsJ,EAAQq+J,GAASY,iBAEtE,CAOAqB,aAAY,OAAEpyF,EAAM,gBAAEumF,EAAe,mBAAE2J,GAAuB,CAAC,GAC7D,MACE1tK,EAAO,CAAE4+J,IADCl5K,KAAKk5K,IAAI3mI,MAAM,CAAEulD,SAAQumF,qBAOrC,OAJI2J,IACF1tK,EAAK0tK,mBAAqBA,GAGrBz1I,GAAMvyC,KAAMsa,EACrB,CAUAgqD,GAAG/2B,GACD,OAAOvtC,KAAKq6K,QAAUr6K,KAAKu7K,QAAQhuI,GAAMpqC,IAAIoqC,GAAQivI,GACvD,CAQA2N,YACE,IAAKnqL,KAAKq6K,QAAS,OAAOr6K,KAC1B,MAAMoqL,EAAOpqL,KAAKqpL,WAElB,OAviBJ,SAAyBnB,EAAQkC,GAC/BtC,GAAa9+K,QAAO,CAACuzD,EAAUhhD,IACxB+yC,EAAY87H,EAAK7uK,IAMbghD,GALHA,GACF27D,GAAQgwD,EAAQkC,EAAM7tH,EAAU6tH,EAAM7uK,GAEjCA,IAIR,KACL,CA2hBI8uK,CAAgBrqL,KAAKkoL,OAAQkC,GACtB73I,GAAMvyC,KAAM,CAAE4pB,OAAQwgK,IAAQ,EACvC,CAOA7O,WAAW95H,GACT,IAAKzhD,KAAKq6K,QAAS,OAAOr6K,KAE1B,GAAqB,IAAjByhD,EAAM3hD,OACR,OAAOE,KAGTyhD,EAAQA,EAAMp4C,KAAKtE,GAAMkjL,GAASY,cAAc9jL,KAEhD,MAAMulL,EAAQ,CAAC,EACbC,EAAc,CAAC,EACfH,EAAOpqL,KAAKqpL,WACd,IAAImB,EAEJ,IAAK,MAAM7hL,KAAKk/K,GACd,GAAIpmI,EAAMp/C,QAAQsG,IAAM,EAAG,CACzB6hL,EAAW7hL,EAEX,IAAI8hL,EAAM,EAGV,IAAK,MAAMC,KAAMH,EACfE,GAAOzqL,KAAKkoL,OAAOwC,GAAI/hL,GAAK4hL,EAAYG,GACxCH,EAAYG,GAAM,EAIhB91H,EAASw1H,EAAKzhL,MAChB8hL,GAAOL,EAAKzhL,IAGd,MAAMhJ,EAAIqF,KAAKuvK,MAAMkW,GACrBH,EAAM3hL,GAAKhJ,EACX4qL,EAAY5hL,IAAY,IAAN8hL,EAAiB,IAAJ9qL,GAAY,IAG3C,IAAK,MAAMiuC,KAAQw8I,EACbvC,GAAaxlL,QAAQurC,GAAQi6I,GAAaxlL,QAAQsG,IACpDuvH,GAAQl4H,KAAKkoL,OAAQkC,EAAMx8I,EAAM08I,EAAO3hL,EAI9C,MAAWisD,EAASw1H,EAAKzhL,MACvB4hL,EAAY5hL,GAAKyhL,EAAKzhL,IAM1B,IAAK,MAAMxE,KAAOomL,EACS,IAArBA,EAAYpmL,KACdmmL,EAAME,IACJrmL,IAAQqmL,EAAWD,EAAYpmL,GAAOomL,EAAYpmL,GAAOnE,KAAKkoL,OAAOsC,GAAUrmL,IAIrF,OAAOouC,GAAMvyC,KAAM,CAAE4pB,OAAQ0gK,IAAS,GAAMH,WAC9C,CAOAH,SACE,IAAKhqL,KAAKq6K,QAAS,OAAOr6K,KAC1B,MAAM2qL,EAAU,CAAC,EACjB,IAAK,MAAMhiL,KAAK5J,OAAOgK,KAAK/I,KAAK4pB,QAC/B+gK,EAAQhiL,GAAwB,IAAnB3I,KAAK4pB,OAAOjhB,GAAW,GAAK3I,KAAK4pB,OAAOjhB,GAEvD,OAAO4pC,GAAMvyC,KAAM,CAAE4pB,OAAQ+gK,IAAW,EAC1C,CAMIrK,YACF,OAAOtgL,KAAKq6K,QAAUr6K,KAAK4pB,OAAO02J,OAAS,EAAI9D,GACjD,CAMI+D,eACF,OAAOvgL,KAAKq6K,QAAUr6K,KAAK4pB,OAAO22J,UAAY,EAAI/D,GACpD,CAMIvF,aACF,OAAOj3K,KAAKq6K,QAAUr6K,KAAK4pB,OAAOqtJ,QAAU,EAAIuF,GAClD,CAMIgE,YACF,OAAOxgL,KAAKq6K,QAAUr6K,KAAK4pB,OAAO42J,OAAS,EAAIhE,GACjD,CAMIiE,WACF,OAAOzgL,KAAKq6K,QAAUr6K,KAAK4pB,OAAO62J,MAAQ,EAAIjE,GAChD,CAMIhG,YACF,OAAOx2K,KAAKq6K,QAAUr6K,KAAK4pB,OAAO4sJ,OAAS,EAAIgG,GACjD,CAMI/F,cACF,OAAOz2K,KAAKq6K,QAAUr6K,KAAK4pB,OAAO6sJ,SAAW,EAAI+F,GACnD,CAMIkE,cACF,OAAO1gL,KAAKq6K,QAAUr6K,KAAK4pB,OAAO82J,SAAW,EAAIlE,GACnD,CAMIroI,mBACF,OAAOn0C,KAAKq6K,QAAUr6K,KAAK4pB,OAAOuqB,cAAgB,EAAIqoI,GACxD,CAOInC,cACF,OAAwB,OAAjBr6K,KAAK0oL,OACd,CAMIkC,oBACF,OAAO5qL,KAAK0oL,QAAU1oL,KAAK0oL,QAAQrxI,OAAS,IAC9C,CAMIwzI,yBACF,OAAO7qL,KAAK0oL,QAAU1oL,KAAK0oL,QAAQjN,YAAc,IACnD,CAQAI,OAAOv4J,GACL,IAAKtjB,KAAKq6K,UAAY/2J,EAAM+2J,QAC1B,OAAO,EAGT,IAAKr6K,KAAKk5K,IAAI2C,OAAOv4J,EAAM41J,KACzB,OAAO,EAST,IAAK,MAAMn0K,KAAK8iL,GACd,GAPUiD,EAOF9qL,KAAK4pB,OAAO7kB,GAPNgmL,EAOUznK,EAAMsG,OAAO7kB,UAL1B+U,IAAPgxK,GAA2B,IAAPA,OAAwBhxK,IAAPixK,GAA2B,IAAPA,EACtDD,IAAOC,GAKZ,OAAO,EARX,IAAYD,EAAIC,EAWhB,OAAO,CACT,EC73BF,MAAM,GAAU,mBA8BD,MAAMC,GAInBrjL,YAAYkU,GAIV7b,KAAKN,EAAImc,EAAOwR,MAIhBrtB,KAAKa,EAAIgb,EAAO6xB,IAIhB1tC,KAAK0oL,QAAU7sK,EAAO6sK,SAAW,KAIjC1oL,KAAKirL,iBAAkB,CACzB,CAQAljL,eAAesvC,EAAQokI,EAAc,MACnC,IAAKpkI,EACH,MAAM,IAAIq6H,EAAqB,oDAGjC,MAAMgX,EAAUrxI,aAAkBmkI,GAAUnkI,EAAS,IAAImkI,GAAQnkI,EAAQokI,GAEzE,GAAI2C,GAASH,eACX,MAAM,IAAI3M,EAAqBoX,GAE/B,OAAO,IAAIsC,GAAS,CAAEtC,WAE1B,CAQA3gL,qBAAqBslB,EAAOqgB,GAC1B,MAAMw9I,EAAaC,GAAiB99J,GAClC+9J,EAAWD,GAAiBz9I,GAExB29I,EAhFV,SAA0Bh+J,EAAOqgB,GAC/B,OAAKrgB,GAAUA,EAAMgtJ,QAET3sI,GAAQA,EAAI2sI,QAEb3sI,EAAMrgB,EACR29J,GAAStC,QACd,mBACA,qEAAqEr7J,EAAMi8J,mBAAmB57I,EAAI47I,WAG7F,KAPA0B,GAAStC,QAAQ,0BAFjBsC,GAAStC,QAAQ,2BAW5B,CAmE0B4C,CAAiBJ,EAAYE,GAEnD,OAAqB,MAAjBC,EACK,IAAIL,GAAS,CAClB39J,MAAO69J,EACPx9I,IAAK09I,IAGAC,CAEX,CAQAtjL,aAAaslB,EAAO/I,GAClB,MAAM22J,EAAMgN,GAAS6B,iBAAiBxlK,GACpCitI,EAAK45B,GAAiB99J,GACxB,OAAO29J,GAASO,cAAch6B,EAAIA,EAAGs4B,KAAK5O,GAC5C,CAQAlzK,cAAc2lC,EAAKppB,GACjB,MAAM22J,EAAMgN,GAAS6B,iBAAiBxlK,GACpCitI,EAAK45B,GAAiBz9I,GACxB,OAAOs9I,GAASO,cAAch6B,EAAGw4B,MAAM9O,GAAM1pB,EAC/C,CAUAxpJ,eAAey/B,EAAMltB,GACnB,MAAO5a,EAAGmB,IAAM2mC,GAAQ,IAAIp+B,MAAM,IAAK,GACvC,GAAI1J,GAAKmB,EAAG,CACV,IAAIwsB,EAAOm+J,EAQP99I,EAAK+9I,EAPT,IACEp+J,EAAQ4uF,GAASyvE,QAAQhsL,EAAG4a,GAC5BkxK,EAAen+J,EAAMgtJ,OAGvB,CAFE,MAAOx5K,GACP2qL,GAAe,CACjB,CAGA,IACE99I,EAAMuuE,GAASyvE,QAAQ7qL,EAAGyZ,GAC1BmxK,EAAa/9I,EAAI2sI,OAGnB,CAFE,MAAOx5K,GACP4qL,GAAa,CACf,CAEA,GAAID,GAAgBC,EAClB,OAAOT,GAASO,cAAcl+J,EAAOqgB,GAGvC,GAAI89I,EAAc,CAChB,MAAMvQ,EAAMgN,GAASyD,QAAQ7qL,EAAGyZ,GAChC,GAAI2gK,EAAIZ,QACN,OAAO2Q,GAASW,MAAMt+J,EAAO4tJ,EAEjC,MAAO,GAAIwQ,EAAY,CACrB,MAAMxQ,EAAMgN,GAASyD,QAAQhsL,EAAG4a,GAChC,GAAI2gK,EAAIZ,QACN,OAAO2Q,GAASY,OAAOl+I,EAAKutI,EAEhC,CACF,CACA,OAAO+P,GAAStC,QAAQ,aAAc,cAAclhJ,iCACtD,CAOAz/B,kBAAkB3F,GAChB,OAAQA,GAAKA,EAAE6oL,kBAAoB,CACrC,CAMI59J,YACF,OAAOrtB,KAAKq6K,QAAUr6K,KAAKN,EAAI,IACjC,CAMIguC,UACF,OAAO1tC,KAAKq6K,QAAUr6K,KAAKa,EAAI,IACjC,CAMIw5K,cACF,OAA8B,OAAvBr6K,KAAK4qL,aACd,CAMIA,oBACF,OAAO5qL,KAAK0oL,QAAU1oL,KAAK0oL,QAAQrxI,OAAS,IAC9C,CAMIwzI,yBACF,OAAO7qL,KAAK0oL,QAAU1oL,KAAK0oL,QAAQjN,YAAc,IACnD,CAOA37K,OAAOytC,EAAO,gBACZ,OAAOvtC,KAAKq6K,QAAUr6K,KAAK6rL,WAAet+I,GAAOpqC,IAAIoqC,GAAQivI,GAC/D,CASAhwF,MAAMj/C,EAAO,gBACX,IAAKvtC,KAAKq6K,QAAS,OAAOmC,IAC1B,MAAMnvJ,EAAQrtB,KAAKqtB,MAAMy+J,QAAQv+I,GAC/BG,EAAM1tC,KAAK0tC,IAAIo+I,QAAQv+I,GACzB,OAAOvoC,KAAKC,MAAMyoC,EAAIq+I,KAAK1+J,EAAOkgB,GAAMpqC,IAAIoqC,IAAS,CACvD,CAOAy+I,QAAQz+I,GACN,QAAOvtC,KAAKq6K,UAAUr6K,KAAKunH,WAAavnH,KAAKa,EAAEkpL,MAAM,GAAGiC,QAAQhsL,KAAKN,EAAG6tC,GAC1E,CAMAg6E,UACE,OAAOvnH,KAAKN,EAAE6nF,YAAcvnF,KAAKa,EAAE0mF,SACrC,CAOA0kG,QAAQC,GACN,QAAKlsL,KAAKq6K,SACHr6K,KAAKN,EAAIwsL,CAClB,CAOAC,SAASD,GACP,QAAKlsL,KAAKq6K,SACHr6K,KAAKa,GAAKqrL,CACnB,CAOA70K,SAAS60K,GACP,QAAKlsL,KAAKq6K,UACHr6K,KAAKN,GAAKwsL,GAAYlsL,KAAKa,EAAIqrL,EACxC,CASA9oL,KAAI,MAAEiqB,EAAK,IAAEqgB,GAAQ,CAAC,GACpB,OAAK1tC,KAAKq6K,QACH2Q,GAASO,cAAcl+J,GAASrtB,KAAKN,EAAGguC,GAAO1tC,KAAKa,GADjCb,IAE5B,CAOAosL,WAAWC,GACT,IAAKrsL,KAAKq6K,QAAS,MAAO,GAC1B,MAAMiS,EAASD,EACVhjL,IAAI8hL,IACJhkL,QAAQtI,GAAMmB,KAAKqX,SAASxY,KAC5BmjB,OACHs6C,EAAU,GACZ,IAAI,EAAE58D,GAAMM,KACVL,EAAI,EAEN,KAAOD,EAAIM,KAAKa,GAAG,CACjB,MAAMoqH,EAAQqhE,EAAO3sL,IAAMK,KAAKa,EAC9BD,GAAQqqH,GAASjrH,KAAKa,EAAIb,KAAKa,EAAIoqH,EACrC3uD,EAAQn6D,KAAK6oL,GAASO,cAAc7rL,EAAGkB,IACvClB,EAAIkB,EACJjB,GAAK,CACP,CAEA,OAAO28D,CACT,CAQAiwH,QAAQjoK,GACN,MAAM22J,EAAMgN,GAAS6B,iBAAiBxlK,GAEtC,IAAKtkB,KAAKq6K,UAAYY,EAAIZ,SAAsC,IAA3BY,EAAI32G,GAAG,gBAC1C,MAAO,GAGT,IAEE1jE,GAFE,EAAElB,GAAMM,KACV8gC,EAAM,EAGR,MAAMw7B,EAAU,GAChB,KAAO58D,EAAIM,KAAKa,GAAG,CACjB,MAAMoqH,EAAQjrH,KAAKqtB,MAAMw8J,KAAK5O,EAAIgP,UAAU/9K,GAAMA,EAAI40B,KACtDlgC,GAAQqqH,GAASjrH,KAAKa,EAAIb,KAAKa,EAAIoqH,EACnC3uD,EAAQn6D,KAAK6oL,GAASO,cAAc7rL,EAAGkB,IACvClB,EAAIkB,EACJkgC,GAAO,CACT,CAEA,OAAOw7B,CACT,CAOAkwH,cAAcC,GACZ,OAAKzsL,KAAKq6K,QACHr6K,KAAKusL,QAAQvsL,KAAKF,SAAW2sL,GAAeplL,MAAM,EAAGolL,GADlC,EAE5B,CAOAC,SAASppK,GACP,OAAOtjB,KAAKa,EAAIyiB,EAAM5jB,GAAKM,KAAKN,EAAI4jB,EAAMziB,CAC5C,CAOA8rL,WAAWrpK,GACT,QAAKtjB,KAAKq6K,UACFr6K,KAAKa,IAAOyiB,EAAM5jB,CAC5B,CAOAktL,SAAStpK,GACP,QAAKtjB,KAAKq6K,UACF/2J,EAAMziB,IAAOb,KAAKN,CAC5B,CAOAmtL,QAAQvpK,GACN,QAAKtjB,KAAKq6K,UACHr6K,KAAKN,GAAK4jB,EAAM5jB,GAAKM,KAAKa,GAAKyiB,EAAMziB,EAC9C,CAOAg7K,OAAOv4J,GACL,SAAKtjB,KAAKq6K,UAAY/2J,EAAM+2J,WAIrBr6K,KAAKN,EAAEm8K,OAAOv4J,EAAM5jB,IAAMM,KAAKa,EAAEg7K,OAAOv4J,EAAMziB,GACvD,CASAisL,aAAaxpK,GACX,IAAKtjB,KAAKq6K,QAAS,OAAOr6K,KAC1B,MAAMN,EAAIM,KAAKN,EAAI4jB,EAAM5jB,EAAIM,KAAKN,EAAI4jB,EAAM5jB,EAC1CmB,EAAIb,KAAKa,EAAIyiB,EAAMziB,EAAIb,KAAKa,EAAIyiB,EAAMziB,EAExC,OAAInB,GAAKmB,EACA,KAEAmqL,GAASO,cAAc7rL,EAAGmB,EAErC,CAQAksL,MAAMzpK,GACJ,IAAKtjB,KAAKq6K,QAAS,OAAOr6K,KAC1B,MAAMN,EAAIM,KAAKN,EAAI4jB,EAAM5jB,EAAIM,KAAKN,EAAI4jB,EAAM5jB,EAC1CmB,EAAIb,KAAKa,EAAIyiB,EAAMziB,EAAIb,KAAKa,EAAIyiB,EAAMziB,EACxC,OAAOmqL,GAASO,cAAc7rL,EAAGmB,EACnC,CAQAkH,aAAailL,GACX,MAAO59F,EAAO69F,GAASD,EACpBhrK,MAAK,CAACle,EAAGhF,IAAMgF,EAAEpE,EAAIZ,EAAEY,IACvBsJ,QACC,EAAEkkL,EAAO3xK,GAAUylB,IACZzlB,EAEMA,EAAQmxK,SAAS1rJ,IAASzlB,EAAQoxK,WAAW3rJ,GAC/C,CAACksJ,EAAO3xK,EAAQwxK,MAAM/rJ,IAEtB,CAACksJ,EAAMtwK,OAAO,CAACrB,IAAWylB,GAJ1B,CAACksJ,EAAOlsJ,IAOnB,CAAC,GAAI,OAKT,OAHIisJ,GACF79F,EAAMjtF,KAAK8qL,GAEN79F,CACT,CAOArnF,WAAWilL,GACT,IAAI3/J,EAAQ,KACV8/J,EAAe,EACjB,MAAM7wH,EAAU,GACd8wH,EAAOJ,EAAU3jL,KAAK1J,GAAM,CAC1B,CAAE65C,KAAM75C,EAAED,EAAG+P,KAAM,KACnB,CAAE+pC,KAAM75C,EAAEkB,EAAG4O,KAAM,QAGrBgmD,EADYv2D,MAAME,UAAUwd,UAAUwwK,GACtBprK,MAAK,CAACle,EAAGhF,IAAMgF,EAAE01C,KAAO16C,EAAE06C,OAE5C,IAAK,MAAM75C,KAAK81D,EACd03H,GAA2B,MAAXxtL,EAAE8P,KAAe,GAAK,EAEjB,IAAjB09K,EACF9/J,EAAQ1tB,EAAE65C,MAENnsB,IAAUA,IAAW1tB,EAAE65C,MACzB8iB,EAAQn6D,KAAK6oL,GAASO,cAAcl+J,EAAO1tB,EAAE65C,OAG/CnsB,EAAQ,MAIZ,OAAO29J,GAAS7/H,MAAMmR,EACxB,CAOA+wH,cAAcL,GACZ,OAAOhC,GAASsC,IAAI,CAACttL,MAAM4c,OAAOowK,IAC/B3jL,KAAK1J,GAAMK,KAAK8sL,aAAantL,KAC7BwH,QAAQxH,GAAMA,IAAMA,EAAE4nH,WAC3B,CAMA7hH,WACE,OAAK1F,KAAKq6K,QACH,IAAIr6K,KAAKN,EAAE4pL,aAAatpL,KAAKa,EAAEyoL,WADZ,EAE5B,CAQAA,MAAMhvK,GACJ,OAAKta,KAAKq6K,QACH,GAAGr6K,KAAKN,EAAE4pL,MAAMhvK,MAASta,KAAKa,EAAEyoL,MAAMhvK,KADnB,EAE5B,CAQAizK,YACE,OAAKvtL,KAAKq6K,QACH,GAAGr6K,KAAKN,EAAE6tL,eAAevtL,KAAKa,EAAE0sL,cADb,EAE5B,CASAhE,UAAUjvK,GACR,OAAKta,KAAKq6K,QACH,GAAGr6K,KAAKN,EAAE6pL,UAAUjvK,MAASta,KAAKa,EAAE0oL,UAAUjvK,KAD3B,EAE5B,CASA4hG,SAASsxE,GAAY,UAAEz3G,EAAY,OAAU,CAAC,GAC5C,OAAK/1E,KAAKq6K,QACH,GAAGr6K,KAAKN,EAAEw8G,SAASsxE,KAAcz3G,IAAY/1E,KAAKa,EAAEq7G,SAASsxE,KAD1C,EAE5B,CAcA3B,WAAWt+I,EAAMjzB,GACf,OAAKta,KAAKq6K,QAGHr6K,KAAKa,EAAEkrL,KAAK/rL,KAAKN,EAAG6tC,EAAMjzB,GAFxB2tK,GAASS,QAAQ1oL,KAAK4qL,cAGjC,CASA6C,aAAazlK,GACX,OAAOgjK,GAASO,cAAcvjK,EAAMhoB,KAAKN,GAAIsoB,EAAMhoB,KAAKa,GAC1D,ECllBa,MAAM0xG,GAMnBxqG,cAAcuyK,EAAO8D,GAASN,aAC5B,MAAM4P,EAAQzxE,GAASx2G,MAAMkoL,QAAQrT,GAAMl3K,IAAI,CAAEk2C,MAAO,KAExD,OAAQghI,EAAKsB,aAAe8R,EAAMn2G,SAAWm2G,EAAMtqL,IAAI,CAAEk2C,MAAO,IAAKi+B,MACvE,CAOAxvE,uBAAuBuyK,GACrB,OAAO+B,GAASC,YAAYhC,EAC9B,CAgBAvyK,qBAAqB4gD,GACnB,OAAOk1H,GAAcl1H,EAAOy1H,GAASN,YACvC,CAmBA/1K,cACEjI,EAAS,QACT,OAAEg4F,EAAS,KAAI,gBAAEumF,EAAkB,KAAI,OAAEuP,EAAS,KAAI,eAAE3T,EAAiB,WAAc,CAAC,GAExF,OAAQ2T,GAAUtP,GAAOlxK,OAAO0qF,EAAQumF,EAAiBpE,IAAiBhD,OAAOn3K,EACnF,CAeAiI,oBACEjI,EAAS,QACT,OAAEg4F,EAAS,KAAI,gBAAEumF,EAAkB,KAAI,OAAEuP,EAAS,KAAI,eAAE3T,EAAiB,WAAc,CAAC,GAExF,OAAQ2T,GAAUtP,GAAOlxK,OAAO0qF,EAAQumF,EAAiBpE,IAAiBhD,OAAOn3K,GAAQ,EAC3F,CAgBAiI,gBAAgBjI,EAAS,QAAQ,OAAEg4F,EAAS,KAAI,gBAAEumF,EAAkB,KAAI,OAAEuP,EAAS,MAAS,CAAC,GAC3F,OAAQA,GAAUtP,GAAOlxK,OAAO0qF,EAAQumF,EAAiB,OAAOhH,SAASv3K,EAC3E,CAcAiI,sBACEjI,EAAS,QACT,OAAEg4F,EAAS,KAAI,gBAAEumF,EAAkB,KAAI,OAAEuP,EAAS,MAAS,CAAC,GAE5D,OAAQA,GAAUtP,GAAOlxK,OAAO0qF,EAAQumF,EAAiB,OAAOhH,SAASv3K,GAAQ,EACnF,CAUAiI,kBAAiB,OAAE+vF,EAAS,MAAS,CAAC,GACpC,OAAOwmF,GAAOlxK,OAAO0qF,GAAQw/E,WAC/B,CAYAvvK,YAAYjI,EAAS,SAAS,OAAEg4F,EAAS,MAAS,CAAC,GACjD,OAAOwmF,GAAOlxK,OAAO0qF,EAAQ,KAAM,WAAW4/E,KAAK53K,EACrD,CAUAiI,kBACE,MAAO,CAAE8lL,SAAUpa,IACrB,ECrKF,SAASqa,GAAQC,EAAS/2I,GACxB,MAAMg3I,EAAez8B,GAAOA,EAAG08B,MAAM,EAAG,CAAEC,eAAe,IAAQpC,QAAQ,OAAOvkG,UAC9EpmC,EAAK6sI,EAAYh3I,GAASg3I,EAAYD,GACxC,OAAO/oL,KAAKC,MAAMgjL,GAASpI,WAAW1+H,GAAImjB,GAAG,QAC/C,CAyCe,SAAS,GAACypH,EAAS/2I,EAAOyK,EAAOnnC,GAC9C,IAAK2M,EAAQq1C,EAAS6xH,EAAWC,GAxCnC,SAAwBnnK,EAAQ+vB,EAAOyK,GACrC,MAAM4sI,EAAU,CACd,CAAC,QAAS,CAACvqL,EAAGhF,IAAMA,EAAEypK,KAAOzkK,EAAEykK,MAC/B,CAAC,WAAY,CAACzkK,EAAGhF,IAAMA,EAAEi8K,QAAUj3K,EAAEi3K,SACrC,CAAC,SAAU,CAACj3K,EAAGhF,IAAMA,EAAEw6C,MAAQx1C,EAAEw1C,MAA4B,IAAnBx6C,EAAEypK,KAAOzkK,EAAEykK,OACrD,CACE,QACA,CAACzkK,EAAGhF,KACF,MAAM2hL,EAAOqN,GAAQhqL,EAAGhF,GACxB,OAAQ2hL,EAAQA,EAAO,GAAM,CAAC,GAGlC,CAAC,OAAQqN,KAGLxxH,EAAU,CAAC,EACjB,IAAI8xH,EAAaD,EAEjB,IAAK,MAAO5gJ,EAAM+gJ,KAAWD,EAC3B,GAAI5sI,EAAMp/C,QAAQkrC,IAAS,EAAG,CAC5B6gJ,EAAc7gJ,EAEd,IAAIghJ,EAAQD,EAAOrnK,EAAQ+vB,GAC3Bm3I,EAAYlnK,EAAO4iK,KAAK,CAAE,CAACt8I,GAAOghJ,IAE9BJ,EAAYn3I,GACd/vB,EAASA,EAAO4iK,KAAK,CAAE,CAACt8I,GAAOghJ,EAAQ,IACvCA,GAAS,GAETtnK,EAASknK,EAGX7xH,EAAQ/uB,GAAQghJ,CAClB,CAGF,MAAO,CAACtnK,EAAQq1C,EAAS6xH,EAAWC,EACtC,CAGkDI,CAAeT,EAAS/2I,EAAOyK,GAE/E,MAAMgtI,EAAkBz3I,EAAQ/vB,EAE1BynK,EAAkBjtI,EAAMt6C,QAC3BpC,GAAM,CAAC,QAAS,UAAW,UAAW,gBAAgB1C,QAAQ0C,IAAM,IAGxC,IAA3B2pL,EAAgB5uL,SACdquL,EAAYn3I,IACdm3I,EAAYlnK,EAAO4iK,KAAK,CAAE,CAACuE,GAAc,KAGvCD,IAAclnK,IAChBq1C,EAAQ8xH,IAAgB9xH,EAAQ8xH,IAAgB,GAAKK,GAAmBN,EAAYlnK,KAIxF,MAAM3C,EAAW2jK,GAASW,WAAWtsH,EAAShiD,GAE9C,OAAIo0K,EAAgB5uL,OAAS,EACpBmoL,GAASpI,WAAW4O,EAAiBn0K,GACzCihK,WAAWmT,GACX7E,KAAKvlK,GAEDA,CAEX,CC3EA,MAAMqqK,GAAmB,CACvBC,KAAM,QACNC,QAAS,QACTC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,SAAU,QACVC,KAAM,QACNC,QAAS,wBACTC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,QAAS,QACTC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,OAGFC,GAAwB,CAC5BrB,KAAM,CAAC,KAAM,MACbC,QAAS,CAAC,KAAM,MAChBC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,SAAU,CAAC,MAAO,OAClBC,KAAM,CAAC,KAAM,MACbE,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,QAAS,CAAC,KAAM,MAChBC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,OAGTG,GAAevB,GAAiBQ,QAAQ3lL,QAAQ,WAAY,IAAIJ,MAAM,IA0BrE,SAAS+mL,IAAW,gBAAE9R,GAAmB13G,EAAS,IACvD,OAAO,IAAIj7B,OAAO,GAAGijJ,GAAiBtQ,GAAmB,UAAU13G,IACrE,CChEA,SAASypH,GAAQ56F,EAAOmmE,EAAO,CAACh8J,GAAMA,IACpC,MAAO,CAAE61F,QAAO66F,MAAO,EAAE3wL,KAAOi8J,EDqC3B,SAAqBp6G,GAC1B,IAAI7gD,EAAQmT,SAAS0tC,EAAK,IAC1B,GAAIW,MAAMxhD,GAAQ,CAChBA,EAAQ,GACR,IAAK,IAAIf,EAAI,EAAGA,EAAI4hD,EAAIzhD,OAAQH,IAAK,CACnC,MAAMkW,EAAO0rC,EAAIj4C,WAAW3J,GAE5B,IAAiD,IAA7C4hD,EAAI5hD,GAAG+b,OAAOizK,GAAiBQ,SACjCzuL,GAASwvL,GAAa7tL,QAAQk/C,EAAI5hD,SAElC,IAAK,MAAMwE,KAAO8rL,GAAuB,CACvC,MAAO1kJ,EAAKrkC,GAAO+oL,GAAsB9rL,GACrC0R,GAAQ01B,GAAO11B,GAAQ3O,IACzBxG,GAASmV,EAAO01B,EAEpB,CAEJ,CACA,OAAO13B,SAASnT,EAAO,GACzB,CACE,OAAOA,CAEX,CC3DuC4vL,CAAY5wL,IACnD,CAEA,MACM6wL,GAAc,KADPphL,OAAOC,aAAa,QAE3BohL,GAAoB,IAAI9kJ,OAAO6kJ,GAAa,KAElD,SAASE,GAAa/wL,GAGpB,OAAOA,EAAE8J,QAAQ,MAAO,QAAQA,QAAQgnL,GAAmBD,GAC7D,CAEA,SAASG,GAAqBhxL,GAC5B,OAAOA,EACJ8J,QAAQ,MAAO,IACfA,QAAQgnL,GAAmB,KAC3Bx8K,aACL,CAEA,SAAS28K,GAAMC,EAAS5iH,GACtB,OAAgB,OAAZ4iH,EACK,KAEA,CACLp7F,MAAO9pD,OAAOklJ,EAAQvnL,IAAIonL,IAAclnL,KAAK,MAC7C8mL,MAAO,EAAE3wL,KACPkxL,EAAQhtH,WAAWjkE,GAAM+wL,GAAqBhxL,KAAOgxL,GAAqB/wL,KAAMquE,EAGxF,CAEA,SAASuJ,GAAOie,EAAOq7F,GACrB,MAAO,CAAEr7F,QAAO66F,MAAO,EAAE,CAAEnqL,EAAGC,KAAOyvK,GAAa1vK,EAAGC,GAAI0qL,SAC3D,CAEA,SAASC,GAAOt7F,GACd,MAAO,CAAEA,QAAO66F,MAAO,EAAE3wL,KAAOA,EAClC,CAmJA,MAAMqxL,GAA0B,CAC9BxoB,KAAM,CACJ,UAAW,KACX6X,QAAS,SAEX9mI,MAAO,CACL8mI,QAAS,IACT,UAAW,KACXvsI,MAAO,MACPm9I,KAAM,QAER/7G,IAAK,CACHmrG,QAAS,IACT,UAAW,MAEbrO,QAAS,CACPl+H,MAAO,MACPm9I,KAAM,QAERC,UAAW,IACXC,UAAW,IACX/e,KAAM,CACJiO,QAAS,IACT,UAAW,MAEbhO,OAAQ,CACNgO,QAAS,IACT,UAAW,MAEb9N,OAAQ,CACN8N,QAAS,IACT,UAAW,OA0If,IAAI+Q,GAAqB,KAUzB,SAASC,GAAsBr1K,EAAO+7E,GACpC,GAAI/7E,EAAM+7J,QACR,OAAO/7J,EAGT,MAAMk9J,EAAaziF,GAAUuhF,uBAAuBh8J,EAAMwwB,KAE1D,IAAK0sI,EACH,OAAOl9J,EAGT,MAGMo/J,EAHY3kF,GAAUppF,OAAO0qF,EAAQmhF,GACnBO,qBAnBnB2X,KACHA,GAAqBl1E,GAAS4jE,WAAW,gBAGpCsR,KAiBc9nL,KAAKlK,GA9J5B,SAAsB2xF,EAAMgH,EAAQmhF,GAClC,MAAM,KAAExpK,EAAI,MAAE/O,GAAUowF,EAExB,GAAa,YAATrhF,EACF,MAAO,CACLqoK,SAAS,EACTvrI,IAAK7rC,GAIT,MAAMyW,EAAQ8hK,EAAWxpK,GAEzB,IAAI88B,EAAMwkJ,GAAwBthL,GAKlC,MAJmB,iBAAR88B,IACTA,EAAMA,EAAIp1B,IAGRo1B,EACK,CACLurI,SAAS,EACTvrI,YAHJ,CAQF,CAqIkC8kJ,CAAalyL,EAAG24F,EAAQmhF,KAExD,OAAIkC,EAAO5zK,cAASuS,GACXiC,EAGFo/J,CACT,CAUO,SAASmW,GAAkBx5F,EAAQnvC,EAAOirC,GAC/C,MAAMunF,EATR,SAA2BA,EAAQrjF,GACjC,OAAO54F,MAAME,UAAUwd,UAAUu+J,EAAO9xK,KAAK5J,GAAM2xL,GAAsB3xL,EAAGq4F,KAC9E,CAOiBy5F,CAAkB/6F,GAAUmkF,YAAY/mF,GAASkE,GAC9Dr2C,EAAQ05H,EAAO9xK,KAAK5J,GAjWxB,SAAsBsc,EAAOm9J,GAC3B,MAAMhnF,EAAMi+F,GAAWjX,GACrB/mF,EAAMg+F,GAAWjX,EAAK,OACtBsY,EAAQrB,GAAWjX,EAAK,OACxBuY,EAAOtB,GAAWjX,EAAK,OACvBwY,EAAMvB,GAAWjX,EAAK,OACtByY,EAAWxB,GAAWjX,EAAK,SAC3B0Y,EAAazB,GAAWjX,EAAK,SAC7B2Y,EAAW1B,GAAWjX,EAAK,SAC3B4Y,EAAY3B,GAAWjX,EAAK,SAC5B6Y,EAAY5B,GAAWjX,EAAK,SAC5B8Y,EAAY7B,GAAWjX,EAAK,SAC5BpB,EAAWr4K,IAAM,OAAG+1F,MAAO9pD,QAhBVhrC,EAgB6BjB,EAAE8sC,IAf3C7rC,EAAM8I,QAAQ,8BAA+B,UAeK6mL,MAAO,EAAE3wL,KAAOA,EAAGo4K,SAAS,GAhBvF,IAAqBp3K,CAgByE,EAwHtF6sC,EAvHM,CAAC9tC,IACT,GAAIsc,EAAM+7J,QACR,OAAOA,EAAQr4K,GAEjB,OAAQA,EAAE8sC,KAER,IAAK,IACH,OAAOokJ,GAAMzX,EAAIxB,KAAK,SAAS,GAAQ,GACzC,IAAK,KACH,OAAOiZ,GAAMzX,EAAIxB,KAAK,QAAQ,GAAQ,GAExC,IAAK,IACH,OAAO0Y,GAAQyB,GACjB,IAAK,KAwEL,IAAK,KACH,OAAOzB,GAAQ2B,EAAW1c,GAvE5B,IAAK,OAoEL,IAAK,OACH,OAAO+a,GAAQqB,GAnEjB,IAAK,QACH,OAAOrB,GAAQ4B,GACjB,IAAK,SACH,OAAO5B,GAAQsB,GAEjB,IAAK,IAQL,IAAK,IASL,IAAK,IAYL,IAAK,IAIL,IAAK,IAIL,IAAK,IAEL,IAAK,IAIL,IAAK,IAuBL,IAAK,IACH,OAAOtB,GAAQuB,GAjEjB,IAAK,KAQL,IAAK,KASL,IAAK,KAQL,IAAK,KAIL,IAAK,KAIL,IAAK,KAML,IAAK,KAIL,IAAK,KAuBL,IAAK,KACH,OAAOvB,GAAQj+F,GAjEjB,IAAK,MACH,OAAOw+F,GAAMzX,EAAIjC,OAAO,SAAS,GAAM,GAAQ,GACjD,IAAK,OACH,OAAO0Z,GAAMzX,EAAIjC,OAAO,QAAQ,GAAM,GAAQ,GAKhD,IAAK,MACH,OAAO0Z,GAAMzX,EAAIjC,OAAO,SAAS,GAAO,GAAQ,GAClD,IAAK,OACH,OAAO0Z,GAAMzX,EAAIjC,OAAO,QAAQ,GAAO,GAAQ,GAOjD,IAAK,IAyBL,IAAK,IACH,OAAOmZ,GAAQwB,GAxBjB,IAAK,MAyBL,IAAK,MACH,OAAOxB,GAAQoB,GACjB,IAAK,IACH,OAAOV,GAAOgB,GAChB,IAAK,KACH,OAAOhB,GAAOa,GAChB,IAAK,MAgBL,IAAK,IACL,IAAK,IACH,OAAOvB,GAAQl+F,GAfjB,IAAK,IACH,OAAOy+F,GAAMzX,EAAI5B,YAAa,GAehC,IAAK,MACH,OAAOqZ,GAAMzX,EAAI7B,SAAS,SAAS,GAAO,GAAQ,GACpD,IAAK,OACH,OAAOsZ,GAAMzX,EAAI7B,SAAS,QAAQ,GAAO,GAAQ,GACnD,IAAK,MACH,OAAOsZ,GAAMzX,EAAI7B,SAAS,SAAS,GAAM,GAAQ,GACnD,IAAK,OACH,OAAOsZ,GAAMzX,EAAI7B,SAAS,QAAQ,GAAM,GAAQ,GAElD,IAAK,IACL,IAAK,KACH,OAAO9/F,GAAO,IAAI7rC,OAAO,QAAQimJ,EAASp6K,eAAe46E,EAAI56E,aAAc,GAC7E,IAAK,MACH,OAAOggE,GAAO,IAAI7rC,OAAO,QAAQimJ,EAASp6K,WAAW46E,EAAI56E,YAAa,GAGxE,IAAK,IACH,OAAOu5K,GAAO,sBAChB,QACE,OAAOhZ,EAAQr4K,GACnB,EAGSwyL,CAAQl2K,IAAU,CAC7B6uK,cApLgB,qDAyLlB,OAFAr9I,EAAKxxB,MAAQA,EAENwxB,CACT,CAsN8B2kJ,CAAazyL,EAAGq4F,KAC1Cq6F,EAAoB1wI,EAAMunC,MAAMvpF,GAAMA,EAAEmrL,gBAE1C,GAAIuH,EACF,MAAO,CAAExpI,QAAOwyH,SAAQyP,cAAeuH,EAAkBvH,eACpD,CACL,MAAOwH,EAAa7gI,GA5JxB,SAAoB9P,GAElB,MAAO,CAAC,IADGA,EAAMp4C,KAAKtE,GAAMA,EAAEywF,QAAOxsF,QAAO,CAAC5H,EAAG2C,IAAM,GAAG3C,KAAK2C,EAAEwT,WAAW,OACxDkqC,EACrB,CAyJoC4wI,CAAW5wI,GACzC+zC,EAAQ9pD,OAAO0mJ,EAAa,MAC3BE,EAAYt4I,GAzJnB,SAAe2O,EAAO6sC,EAAOjkC,GAC3B,MAAMvX,EAAU2O,EAAMpoC,MAAMi1E,GAE5B,GAAIx7C,EAAS,CACX,MAAMwV,EAAM,CAAC,EACb,IAAI+iI,EAAa,EACjB,IAAK,MAAM5yL,KAAK4xD,EACd,GAAI,EAAeA,EAAU5xD,GAAI,CAC/B,MAAMuG,EAAIqrD,EAAS5xD,GACjBkxL,EAAS3qL,EAAE2qL,OAAS3qL,EAAE2qL,OAAS,EAAI,GAChC3qL,EAAE4xK,SAAW5xK,EAAE6V,QAClByzC,EAAItpD,EAAE6V,MAAMwwB,IAAI,IAAMrmC,EAAEmqL,MAAMr2I,EAAQ3yC,MAAMkrL,EAAYA,EAAa1B,KAEvE0B,GAAc1B,CAChB,CAEF,MAAO,CAAC72I,EAASwV,EACnB,CACE,MAAO,CAACxV,EAAS,CAAC,EAEtB,CAqI8Bz5B,CAAMooC,EAAO6sC,EAAOjkC,IAC3CxwD,EAAQu5K,EAAMkY,GAAkBx4I,EApIvC,SAA6BA,GAmC3B,IACIw4I,EADAlY,EAAO,KA0CX,OAxCKhsH,EAAYtU,EAAQnuC,KACvByuK,EAAO+B,GAASjvK,OAAO4sC,EAAQnuC,IAG5ByiD,EAAYtU,EAAQhtC,KAClBstK,IACHA,EAAO,IAAImD,GAAgBzjI,EAAQhtC,IAErCwlL,EAAiBx4I,EAAQhtC,GAGtBshD,EAAYtU,EAAQ1pC,KACvB0pC,EAAQ9qC,EAAsB,GAAjB8qC,EAAQ1pC,EAAI,GAAS,GAG/Bg+C,EAAYtU,EAAQ9zC,KACnB8zC,EAAQ9zC,EAAI,IAAoB,IAAd8zC,EAAQl2C,EAC5Bk2C,EAAQ9zC,GAAK,GACU,KAAd8zC,EAAQ9zC,GAA0B,IAAd8zC,EAAQl2C,IACrCk2C,EAAQ9zC,EAAI,IAIE,IAAd8zC,EAAQqgH,GAAWrgH,EAAQ34C,IAC7B24C,EAAQ34C,GAAK24C,EAAQ34C,GAGlBitD,EAAYtU,EAAQj1C,KACvBi1C,EAAQtvC,EAAIupK,EAAYj6H,EAAQj1C,IAY3B,CATMhG,OAAOgK,KAAKixC,GAAShxC,QAAO,CAACjF,EAAG4E,KAC3C,MAAMvH,EApEQ,CAAC2a,IACf,OAAQA,GACN,IAAK,IACH,MAAO,cACT,IAAK,IACH,MAAO,SACT,IAAK,IACH,MAAO,SACT,IAAK,IACL,IAAK,IACH,MAAO,OACT,IAAK,IACH,MAAO,MACT,IAAK,IACH,MAAO,UACT,IAAK,IACL,IAAK,IACH,MAAO,QACT,IAAK,IACH,MAAO,OACT,IAAK,IACL,IAAK,IACH,MAAO,UACT,IAAK,IACH,MAAO,aACT,IAAK,IACH,MAAO,WACT,IAAK,IACH,MAAO,UACT,QACE,OAAO,KACX,EAqCU02K,CAAQ9pL,GAKlB,OAJIvH,IACF2C,EAAE3C,GAAK44C,EAAQrxC,IAGV5E,CAAC,GACP,CAAC,GAEUu2K,EAAMkY,EACtB,CAuDUE,CAAoB14I,GACpB,CAAC,KAAM,UAAMlgC,GACnB,GAAI,EAAekgC,EAAS,MAAQ,EAAeA,EAAS,KAC1D,MAAM,IAAIw3H,EACR,yDAGJ,MAAO,CAAE7oH,QAAOwyH,SAAQ3lF,QAAO88F,aAAYt4I,UAASj5C,SAAQu5K,OAAMkY,iBACpE,CACF,CChaA,MAAMG,GAAgB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACvEC,GAAa,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAElE,SAASC,GAAetlJ,EAAM7sC,GAC5B,OAAO,IAAI86K,GACT,oBACA,iBAAiB96K,qBAAyBA,WAAe6sC,sBAE7D,CAEA,SAASulJ,GAAUvqB,EAAMjvH,EAAO27B,GAC9B,MAAMp2E,EAAI,IAAI2G,KAAKA,KAAKsvK,IAAIvM,EAAMjvH,EAAQ,EAAG27B,IAEzCszF,EAAO,KAAOA,GAAQ,GACxB1pK,EAAEm2K,eAAen2K,EAAEo2K,iBAAmB,MAGxC,MAAM7yH,EAAKvjD,EAAEk0L,YAEb,OAAc,IAAP3wI,EAAW,EAAIA,CACxB,CAEA,SAAS4wI,GAAezqB,EAAMjvH,EAAO27B,GACnC,OAAOA,GAAOu/F,EAAWjM,GAAQqqB,GAAaD,IAAer5I,EAAQ,EACvE,CAEA,SAAS25I,GAAiB1qB,EAAM94E,GAC9B,MAAMjb,EAAQggG,EAAWjM,GAAQqqB,GAAaD,GAC5CO,EAAS1+G,EAAM5Q,WAAWjkE,GAAMA,EAAI8vF,IAEtC,MAAO,CAAEn2C,MAAO45I,EAAS,EAAGj+G,IADpBwa,EAAUjb,EAAM0+G,GAE1B,CAMO,SAASC,GAAgBC,GAC9B,MAAM,KAAE7qB,EAAI,MAAEjvH,EAAK,IAAE27B,GAAQm+G,EAC3B3jG,EAAUujG,GAAezqB,EAAMjvH,EAAO27B,GACtC88F,EAAU+gB,GAAUvqB,EAAMjvH,EAAO27B,GAEnC,IACEkgG,EADE2F,EAAa91K,KAAKC,OAAOwqF,EAAUsiF,EAAU,IAAM,GAavD,OAVI+I,EAAa,GACf3F,EAAW5M,EAAO,EAClBuS,EAAa5F,EAAgBC,IACpB2F,EAAa5F,EAAgB3M,IACtC4M,EAAW5M,EAAO,EAClBuS,EAAa,GAEb3F,EAAW5M,EAGN,CAAE4M,WAAU2F,aAAY/I,aAAY6E,GAAWwc,GACxD,CAEO,SAASC,GAAgBC,GAC9B,MAAM,SAAEne,EAAQ,WAAE2F,EAAU,QAAE/I,GAAYuhB,EACxCC,EAAgBT,GAAU3d,EAAU,EAAG,GACvCqe,EAAa/e,EAAWU,GAE1B,IACE5M,EADE94E,EAAuB,EAAbqrF,EAAiB/I,EAAUwhB,EAAgB,EAGrD9jG,EAAU,GACZ84E,EAAO4M,EAAW,EAClB1lF,GAAWglF,EAAWlM,IACb94E,EAAU+jG,GACnBjrB,EAAO4M,EAAW,EAClB1lF,GAAWglF,EAAWU,IAEtB5M,EAAO4M,EAGT,MAAM,MAAE77H,EAAK,IAAE27B,GAAQg+G,GAAiB1qB,EAAM94E,GAC9C,MAAO,CAAE84E,OAAMjvH,QAAO27B,SAAQ2hG,GAAW0c,GAC3C,CAEO,SAASG,GAAmBC,GACjC,MAAM,KAAEnrB,EAAI,MAAEjvH,EAAK,IAAE27B,GAAQy+G,EAE7B,MAAO,CAAEnrB,OAAM94E,QADCujG,GAAezqB,EAAMjvH,EAAO27B,MACjB2hG,GAAW8c,GACxC,CAEO,SAASC,GAAmBC,GACjC,MAAM,KAAErrB,EAAI,QAAE94E,GAAYmkG,GACpB,MAAEt6I,EAAK,IAAE27B,GAAQg+G,GAAiB1qB,EAAM94E,GAC9C,MAAO,CAAE84E,OAAMjvH,QAAO27B,SAAQ2hG,GAAWgd,GAC3C,CA2BO,SAASC,GAAwB5zK,GACtC,MAAM6zK,EAAYtgB,EAAUvzJ,EAAIsoJ,MAC9BwrB,EAAangB,EAAe3zJ,EAAIq5B,MAAO,EAAG,IAC1C06I,EAAWpgB,EAAe3zJ,EAAIg1D,IAAK,EAAGy/F,EAAYz0J,EAAIsoJ,KAAMtoJ,EAAIq5B,QAElE,OAAKw6I,EAEOC,GAEAC,GACHnB,GAAe,MAAO5yK,EAAIg1D,KAF1B49G,GAAe,QAAS5yK,EAAIq5B,OAF5Bu5I,GAAe,OAAQ5yK,EAAIsoJ,KAMtC,CAEO,SAAS0rB,GAAmBh0K,GACjC,MAAM,KAAEkyJ,EAAI,OAAEC,EAAM,OAAEE,EAAM,YAAEyC,GAAgB90J,EACxCi0K,EACFtgB,EAAezB,EAAM,EAAG,KACd,KAATA,GAA0B,IAAXC,GAA2B,IAAXE,GAAgC,IAAhByC,EAClDof,EAAcvgB,EAAexB,EAAQ,EAAG,IACxCgiB,EAAcxgB,EAAetB,EAAQ,EAAG,IACxC+hB,EAAmBzgB,EAAemB,EAAa,EAAG,KAEpD,OAAKmf,EAEOC,EAEAC,GAEAC,GACHxB,GAAe,cAAe9d,GAF9B8d,GAAe,SAAUvgB,GAFzBugB,GAAe,SAAUzgB,GAFzBygB,GAAe,OAAQ1gB,EAQlC,CCnHA,MAAM,GAAU,mBACVmiB,GAAW,OAEjB,SAASC,GAAgBja,GACvB,OAAO,IAAIkB,GAAQ,mBAAoB,aAAalB,EAAK7yK,yBAC3D,CAGA,SAAS+sL,GAAuBjjC,GAI9B,OAHoB,OAAhBA,EAAG+hC,WACL/hC,EAAG+hC,SAAWH,GAAgB5hC,EAAGvtJ,IAE5ButJ,EAAG+hC,QACZ,CAIA,SAAS,GAAM34F,EAAM8nF,GACnB,MAAMlnK,EAAU,CACdkjJ,GAAI9jE,EAAK8jE,GACT6b,KAAM3/E,EAAK2/E,KACXt2K,EAAG22F,EAAK32F,EACR5B,EAAGu4F,EAAKv4F,EACR82K,IAAKv+E,EAAKu+E,IACVwP,QAAS/tF,EAAK+tF,SAEhB,OAAO,IAAIzsE,GAAS,IAAK1gG,KAAYknK,EAAMjmB,IAAKjhJ,GAClD,CAIA,SAASk5K,GAAUC,EAAStyL,EAAGuyL,GAE7B,IAAIC,EAAWF,EAAc,GAAJtyL,EAAS,IAGlC,MAAM4sK,EAAK2lB,EAAGp9G,OAAOq9G,GAGrB,GAAIxyL,IAAM4sK,EACR,MAAO,CAAC4lB,EAAUxyL,GAIpBwyL,GAAuB,IAAV5lB,EAAK5sK,GAAU,IAG5B,MAAMyyL,EAAKF,EAAGp9G,OAAOq9G,GACrB,OAAI5lB,IAAO6lB,EACF,CAACD,EAAU5lB,GAIb,CAAC0lB,EAA6B,GAAnB1vL,KAAKumC,IAAIyjI,EAAI6lB,GAAW,IAAM7vL,KAAKkC,IAAI8nK,EAAI6lB,GAC/D,CAGA,SAASC,GAAQr2B,EAAIlnF,GAGnB,MAAM14E,EAAI,IAAI2G,KAFdi5J,GAAe,GAATlnF,EAAc,KAIpB,MAAO,CACLgxF,KAAM1pK,EAAEo2K,iBACR37H,MAAOz6C,EAAEk2L,cAAgB,EACzB9/G,IAAKp2E,EAAEm2L,aACP7iB,KAAMtzK,EAAEo2L,cACR7iB,OAAQvzK,EAAEq2L,gBACV5iB,OAAQzzK,EAAEs2L,gBACVpgB,YAAal2K,EAAEu2L,qBAEnB,CAGA,SAASC,GAAQp1K,EAAKs3D,EAAQ+iG,GAC5B,OAAOma,GAAU5f,EAAa50J,GAAMs3D,EAAQ+iG,EAC9C,CAGA,SAASgb,GAAW36F,EAAMsgF,GACxB,MAAMsa,EAAO56F,EAAKv4F,EAChBmmK,EAAO5tE,EAAK32F,EAAEukK,KAAOvjK,KAAKuvK,MAAM0G,EAAIqF,OACpChnI,EAAQqhD,EAAK32F,EAAEs1C,MAAQt0C,KAAKuvK,MAAM0G,EAAIhE,QAAqC,EAA3BjyK,KAAKuvK,MAAM0G,EAAIsF,UAC/Dv8K,EAAI,IACC22F,EAAK32F,EACRukK,OACAjvH,QACA27B,IACEjwE,KAAKumC,IAAIovD,EAAK32F,EAAEixE,IAAKy/F,EAAYnM,EAAMjvH,IACvCt0C,KAAKuvK,MAAM0G,EAAIwF,MACS,EAAxBz7K,KAAKuvK,MAAM0G,EAAIuF,QAEnBgV,EAAcvN,GAASW,WAAW,CAChCtI,MAAOrF,EAAIqF,MAAQt7K,KAAKuvK,MAAM0G,EAAIqF,OAClCC,SAAUtF,EAAIsF,SAAWv7K,KAAKuvK,MAAM0G,EAAIsF,UACxCtJ,OAAQgE,EAAIhE,OAASjyK,KAAKuvK,MAAM0G,EAAIhE,QACpCuJ,MAAOvF,EAAIuF,MAAQx7K,KAAKuvK,MAAM0G,EAAIuF,OAClCC,KAAMxF,EAAIwF,KAAOz7K,KAAKuvK,MAAM0G,EAAIwF,MAChCjK,MAAOyE,EAAIzE,MACXC,QAASwE,EAAIxE,QACbiK,QAASzF,EAAIyF,QACbvsI,aAAc8mI,EAAI9mI,eACjBmwB,GAAG,gBACNowH,EAAU7f,EAAa7wK,GAEzB,IAAKy6J,EAAIr8J,GAAKqyL,GAAUC,EAASa,EAAM56F,EAAK2/E,MAQ5C,OANoB,IAAhBkb,IACF/2B,GAAM+2B,EAENpzL,EAAIu4F,EAAK2/E,KAAK/iG,OAAOknF,IAGhB,CAAEA,KAAIr8J,IACf,CAIA,SAASqzL,GAAoBpgI,EAAQqgI,EAAYp7K,EAAMs5E,EAAQpsD,EAAMgrJ,GACnE,MAAM,QAAE7E,EAAO,KAAErT,GAAShgK,EAC1B,GAAI+6C,GAAyC,IAA/Bt2D,OAAOgK,KAAKssD,GAAQv1D,OAAc,CAC9C,MAAM61L,EAAqBD,GAAcpb,EACvC3/E,EAAOshB,GAAS2sE,WAAWvzH,EAAQ,IAC9B/6C,EACHggK,KAAMqb,EACNnD,mBAEJ,OAAO7E,EAAUhzF,EAAOA,EAAKgzF,QAAQrT,EACvC,CACE,OAAOr+D,GAASysE,QACd,IAAIlN,GAAQ,aAAc,cAAch0I,yBAA4BosD,KAG1E,CAIA,SAASgiG,GAAarkC,EAAI39D,EAAQwmF,GAAS,GACzC,OAAO7oB,EAAG8oB,QACN7jF,GAAUppF,OAAOkxK,GAAOlxK,OAAO,SAAU,CACvCgtK,SACAV,aAAa,IACZG,yBAAyBtoB,EAAI39D,GAChC,IACN,CAEA,SAAS25F,GAAUnrL,EAAGyzL,GACpB,MAAMC,EAAa1zL,EAAE4B,EAAEukK,KAAO,MAAQnmK,EAAE4B,EAAEukK,KAAO,EACjD,IAAIvkK,EAAI,GAaR,OAZI8xL,GAAc1zL,EAAE4B,EAAEukK,MAAQ,IAAGvkK,GAAK,KACtCA,GAAK6vK,EAASzxK,EAAE4B,EAAEukK,KAAMutB,EAAa,EAAI,GAErCD,GACF7xL,GAAK,IACLA,GAAK6vK,EAASzxK,EAAE4B,EAAEs1C,OAClBt1C,GAAK,IACLA,GAAK6vK,EAASzxK,EAAE4B,EAAEixE,OAElBjxE,GAAK6vK,EAASzxK,EAAE4B,EAAEs1C,OAClBt1C,GAAK6vK,EAASzxK,EAAE4B,EAAEixE,MAEbjxE,CACT,CAEA,SAASulL,GACPnnL,EACAyzL,EACAlM,EACAD,EACAqM,EACAC,GAEA,IAAIhyL,EAAI6vK,EAASzxK,EAAE4B,EAAEmuK,MAuCrB,OAtCI0jB,GACF7xL,GAAK,IACLA,GAAK6vK,EAASzxK,EAAE4B,EAAEouK,QACC,IAAfhwK,EAAE4B,EAAEsuK,QAAiBqX,IACvB3lL,GAAK,MAGPA,GAAK6vK,EAASzxK,EAAE4B,EAAEouK,QAGD,IAAfhwK,EAAE4B,EAAEsuK,QAAiBqX,IACvB3lL,GAAK6vK,EAASzxK,EAAE4B,EAAEsuK,QAEM,IAApBlwK,EAAE4B,EAAE+wK,aAAsB2U,IAC5B1lL,GAAK,IACLA,GAAK6vK,EAASzxK,EAAE4B,EAAE+wK,YAAa,KAI/BghB,IACE3zL,EAAE+3K,eAA8B,IAAb/3K,EAAEm1E,SAAiBy+G,EACxChyL,GAAK,IACI5B,EAAEA,EAAI,GACf4B,GAAK,IACLA,GAAK6vK,EAAS7uK,KAAKuvK,OAAOnyK,EAAEA,EAAI,KAChC4B,GAAK,IACLA,GAAK6vK,EAAS7uK,KAAKuvK,OAAOnyK,EAAEA,EAAI,OAEhC4B,GAAK,IACLA,GAAK6vK,EAAS7uK,KAAKuvK,MAAMnyK,EAAEA,EAAI,KAC/B4B,GAAK,IACLA,GAAK6vK,EAAS7uK,KAAKuvK,MAAMnyK,EAAEA,EAAI,OAI/B4zL,IACFhyL,GAAK,IAAM5B,EAAEk4K,KAAKqB,SAAW,KAExB33K,CACT,CAGA,MAAMiyL,GAAoB,CACtB38I,MAAO,EACP27B,IAAK,EACLk9F,KAAM,EACNC,OAAQ,EACRE,OAAQ,EACRyC,YAAa,GAEfmhB,GAAwB,CACtBpb,WAAY,EACZ/I,QAAS,EACTI,KAAM,EACNC,OAAQ,EACRE,OAAQ,EACRyC,YAAa,GAEfohB,GAA2B,CACzB1mG,QAAS,EACT0iF,KAAM,EACNC,OAAQ,EACRE,OAAQ,EACRyC,YAAa,GAIX,GAAe,CAAC,OAAQ,QAAS,MAAO,OAAQ,SAAU,SAAU,eACxEqhB,GAAmB,CACjB,WACA,aACA,UACA,OACA,SACA,SACA,eAEFC,GAAsB,CAAC,OAAQ,UAAW,OAAQ,SAAU,SAAU,eAGxE,SAASxN,GAAct7I,GACrB,MAAM+oI,EAAa,CACjB/N,KAAM,OACN+X,MAAO,OACPhnI,MAAO,QACP29H,OAAQ,QACRhiG,IAAK,MACLwrG,KAAM,MACNtO,KAAM,OACNqE,MAAO,OACPpE,OAAQ,SACRqE,QAAS,SACTsE,QAAS,UACTwF,SAAU,UACVjO,OAAQ,SACRoO,QAAS,SACT3L,YAAa,cACb5gI,aAAc,cACd49H,QAAS,UACTsF,SAAU,UACVif,WAAY,aACZC,YAAa,aACbC,YAAa,aACbC,SAAU,WACVC,UAAW,WACXjnG,QAAS,WACTliD,EAAKv5B,eAEP,IAAKsiK,EAAY,MAAM,IAAI7E,EAAiBlkI,GAE5C,OAAO+oI,CACT,CAKA,SAASqgB,GAAQ12K,EAAK3F,GACpB,MAAMggK,EAAOuD,GAAcvjK,EAAKggK,KAAM8D,GAASN,aAC7C5E,EAAMoF,GAAOsK,WAAWtuK,GACxBs8K,EAAQxY,GAAS34K,MAEnB,IAAIg5J,EAAIr8J,EAGR,GAAKksD,EAAYruC,EAAIsoJ,MAenB9J,EAAKm4B,MAfqB,CAC1B,IAAK,MAAM7xL,KAAK,GACVupD,EAAYruC,EAAIlb,MAClBkb,EAAIlb,GAAKkxL,GAAkBlxL,IAI/B,MAAM2jL,EAAUmL,GAAwB5zK,IAAQg0K,GAAmBh0K,GACnE,GAAIyoK,EACF,OAAOzsE,GAASysE,QAAQA,GAG1B,MAAMmO,EAAevc,EAAK/iG,OAAOq/G,IAChCn4B,EAAIr8J,GAAKizL,GAAQp1K,EAAK42K,EAAcvc,EACvC,CAIA,OAAO,IAAIr+D,GAAS,CAAEwiD,KAAI6b,OAAMpB,MAAK92K,KACvC,CAEA,SAAS00L,GAAazpK,EAAOqgB,EAAKpzB,GAChC,MAAM0T,IAAQsgC,EAAYh0C,EAAK0T,QAAgB1T,EAAK0T,MAClD4lE,EAAS,CAAC5vF,EAAGupC,KACXvpC,EAAImwK,EAAQnwK,EAAGgqB,GAAS1T,EAAKy8K,UAAY,EAAI,GAAG,GAEhD,OADkBrpJ,EAAIwrI,IAAI3mI,MAAMj4B,GAAMyoK,aAAazoK,GAClCs5E,OAAO5vF,EAAGupC,EAAK,EAElC+gJ,EAAU/gJ,GACJjzB,EAAKy8K,UACFrpJ,EAAIs+I,QAAQ3+J,EAAOkgB,GAEV,EADLG,EAAIo+I,QAAQv+I,GAAMw+I,KAAK1+J,EAAMy+J,QAAQv+I,GAAOA,GAAMpqC,IAAIoqC,GAGxDG,EAAIq+I,KAAK1+J,EAAOkgB,GAAMpqC,IAAIoqC,GAIvC,GAAIjzB,EAAKizB,KACP,OAAOqmD,EAAO06F,EAAOh0K,EAAKizB,MAAOjzB,EAAKizB,MAGxC,IAAK,MAAMA,KAAQjzB,EAAKmnC,MAAO,CAC7B,MAAM+qC,EAAQ8hG,EAAO/gJ,GACrB,GAAIvoC,KAAKopB,IAAIo+D,IAAU,EACrB,OAAOoH,EAAOpH,EAAOj/C,EAEzB,CACA,OAAOqmD,EAAOvmE,EAAQqgB,GAAO,EAAI,EAAGpzB,EAAKmnC,MAAMnnC,EAAKmnC,MAAM3hD,OAAS,GACrE,CAEA,SAASk3L,GAASC,GAChB,IACErkJ,EADEt4B,EAAO,CAAC,EAQZ,OANI28K,EAAQn3L,OAAS,GAA4C,iBAAhCm3L,EAAQA,EAAQn3L,OAAS,IACxDwa,EAAO28K,EAAQA,EAAQn3L,OAAS,GAChC8yC,EAAO1zC,MAAMsJ,KAAKyuL,GAAS5vL,MAAM,EAAG4vL,EAAQn3L,OAAS,IAErD8yC,EAAO1zC,MAAMsJ,KAAKyuL,GAEb,CAAC38K,EAAMs4B,EAChB,CAsBe,MAAMqpE,GAInBt0G,YAAYkU,GACV,MAAMy+J,EAAOz+J,EAAOy+J,MAAQ8D,GAASN,YAErC,IAAI4K,EACF7sK,EAAO6sK,UACNl8I,OAAO0V,MAAMrmC,EAAO4iJ,IAAM,IAAI+c,GAAQ,iBAAmB,QACxDlB,EAAKD,QAAkC,KAAxBka,GAAgBja,IAInCt6K,KAAKy+J,GAAKnwG,EAAYzyC,EAAO4iJ,IAAM2f,GAAS34K,MAAQoW,EAAO4iJ,GAE3D,IAAIz6J,EAAI,KACN5B,EAAI,KACN,IAAKsmL,EAAS,CAGZ,GAFkB7sK,EAAO2gJ,KAAO3gJ,EAAO2gJ,IAAIiC,KAAOz+J,KAAKy+J,IAAM5iJ,EAAO2gJ,IAAI8d,KAAKuB,OAAOvB,IAGjFt2K,EAAG5B,GAAK,CAACyZ,EAAO2gJ,IAAIx4J,EAAG6X,EAAO2gJ,IAAIp6J,OAC9B,CACL,MAAM2uJ,EAAKupB,EAAK/iG,OAAOv3E,KAAKy+J,IAC5Bz6J,EAAI8wL,GAAQ90L,KAAKy+J,GAAI1N,GACrB23B,EAAUl8I,OAAO0V,MAAMl+C,EAAEukK,MAAQ,IAAIiT,GAAQ,iBAAmB,KAChEx3K,EAAI0kL,EAAU,KAAO1kL,EACrB5B,EAAIsmL,EAAU,KAAO33B,CACvB,CACF,CAKA/wJ,KAAKk3L,MAAQ5c,EAIbt6K,KAAKk5K,IAAMr9J,EAAOq9J,KAAOoF,GAAOlxK,SAIhCpN,KAAK0oL,QAAUA,EAIf1oL,KAAKszL,SAAW,KAIhBtzL,KAAKgE,EAAIA,EAIThE,KAAKoC,EAAIA,EAITpC,KAAKm3L,iBAAkB,CACzB,CAWApvL,aACE,OAAO,IAAIk0G,GAAS,CAAC,EACvB,CAuBAl0G,eACE,MAAOuS,EAAMs4B,GAAQokJ,GAASn3L,YAC3B0oK,EAAMjvH,EAAO27B,EAAKk9F,EAAMC,EAAQE,EAAQyC,GAAeniI,EAC1D,OAAO+jJ,GAAQ,CAAEpuB,OAAMjvH,QAAO27B,MAAKk9F,OAAMC,SAAQE,SAAQyC,eAAez6J,EAC1E,CA0BAvS,aACE,MAAOuS,EAAMs4B,GAAQokJ,GAASn3L,YAC3B0oK,EAAMjvH,EAAO27B,EAAKk9F,EAAMC,EAAQE,EAAQyC,GAAeniI,EAG1D,OADAt4B,EAAKggK,KAAOmD,GAAgBC,YACrBiZ,GAAQ,CAAEpuB,OAAMjvH,QAAO27B,MAAKk9F,OAAMC,SAAQE,SAAQyC,eAAez6J,EAC1E,CASAvS,kBAAkBsxC,EAAMpoC,EAAU,CAAC,GACjC,MAAMwtJ,GpBzhBar8J,EoByhBDi3C,EpBxhByB,kBAAtCt6C,OAAOK,UAAUsG,SAASpG,KAAK8C,GoBwhBVi3C,EAAKkuC,UAAYi1F,KpBzhBxC,IAAgBp6K,EoB0hBnB,GAAIoqC,OAAO0V,MAAMu8G,GACf,OAAOxiD,GAASysE,QAAQ,iBAG1B,MAAM0O,EAAYvZ,GAAc5sK,EAAQqpK,KAAM8D,GAASN,aACvD,OAAKsZ,EAAU/c,QAIR,IAAIp+D,GAAS,CAClBwiD,GAAIA,EACJ6b,KAAM8c,EACNle,IAAKoF,GAAOsK,WAAW33K,KANhBgrG,GAASysE,QAAQ6L,GAAgB6C,GAQ5C,CAYArvL,kBAAkBosC,EAAcljC,EAAU,CAAC,GACzC,GAAK2jD,EAASzgB,GAIP,OAAIA,GAAgBmgJ,IAAYngJ,EAAemgJ,GAE7Cr4E,GAASysE,QAAQ,0BAEjB,IAAIzsE,GAAS,CAClBwiD,GAAItqH,EACJmmI,KAAMuD,GAAc5sK,EAAQqpK,KAAM8D,GAASN,aAC3C5E,IAAKoF,GAAOsK,WAAW33K,KAVzB,MAAM,IAAIygK,EACR,gEAAgEv9H,gBAA2BA,IAYjG,CAYApsC,mBAAmB24K,EAASzvK,EAAU,CAAC,GACrC,GAAK2jD,EAAS8rH,GAGZ,OAAO,IAAIzkE,GAAS,CAClBwiD,GAAc,IAAViiB,EACJpG,KAAMuD,GAAc5sK,EAAQqpK,KAAM8D,GAASN,aAC3C5E,IAAKoF,GAAOsK,WAAW33K,KALzB,MAAM,IAAIygK,EAAqB,yCAQnC,CA8BA3pK,kBAAkBkY,EAAK3F,EAAO,CAAC,GAC7B2F,EAAMA,GAAO,CAAC,EACd,MAAMm3K,EAAYvZ,GAAcvjK,EAAKggK,KAAM8D,GAASN,aACpD,IAAKsZ,EAAU/c,QACb,OAAOp+D,GAASysE,QAAQ6L,GAAgB6C,IAG1C,MAAMR,EAAQxY,GAAS34K,MACrBoxL,EAAgBvoI,EAAYh0C,EAAKk4K,gBAE7B4E,EAAU7/G,OAAOq/G,GADjBt8K,EAAKk4K,eAETlc,EAAaF,GAAgBn2J,EAAK4oK,IAClCwO,GAAmB/oI,EAAYgoH,EAAW7mF,SAC1C6nG,GAAsBhpI,EAAYgoH,EAAW/N,MAC7CgvB,GAAoBjpI,EAAYgoH,EAAWh9H,SAAWgV,EAAYgoH,EAAWrhG,KAC7EuiH,EAAiBF,GAAsBC,EACvCE,EAAkBnhB,EAAWnB,UAAYmB,EAAWwE,WACpD5B,EAAMoF,GAAOsK,WAAWtuK,GAQ1B,IAAKk9K,GAAkBH,IAAoBI,EACzC,MAAM,IAAIjmB,EACR,uEAIJ,GAAI+lB,GAAoBF,EACtB,MAAM,IAAI7lB,EAA8B,0CAG1C,MAAMkmB,EAAcD,GAAoBnhB,EAAWvE,UAAYylB,EAG/D,IAAI/1I,EACFk2I,EACAC,EAAS9C,GAAQ8B,EAAOC,GACtBa,GACFj2I,EAAQ20I,GACRuB,EAAgBzB,GAChB0B,EAASzE,GAAgByE,IAChBP,GACT51I,EAAQ40I,GACRsB,EAAgBxB,GAChByB,EAASnE,GAAmBmE,KAE5Bn2I,EAAQ,GACRk2I,EAAgB1B,IAIlB,IAAI4B,GAAa,EACjB,IAAK,MAAM9yL,KAAK08C,EAAO,CAEhB6M,EADKgoH,EAAWvxK,IAInBuxK,EAAWvxK,GADF8yL,EACOF,EAAc5yL,GAEd6yL,EAAO7yL,GAJvB8yL,GAAa,CAMjB,CAGA,MAAMC,EAAqBJ,EDlnBxB,SAA4Bz3K,GACjC,MAAM6zK,EAAYtgB,EAAUvzJ,EAAIk1J,UAC9B4iB,EAAYnkB,EAAe3zJ,EAAI66J,WAAY,EAAG5F,EAAgBj1J,EAAIk1J,WAClE6iB,EAAepkB,EAAe3zJ,EAAI8xJ,QAAS,EAAG,GAEhD,OAAK+hB,EAEOiE,GAEAC,GACHnF,GAAe,UAAW5yK,EAAI8xJ,SAF9B8gB,GAAe,OAAQ5yK,EAAIs5B,MAF3Bs5I,GAAe,WAAY5yK,EAAIk1J,SAM1C,CCumBU8iB,CAAmB3hB,GACnB+gB,EDtmBH,SAA+Bp3K,GACpC,MAAM6zK,EAAYtgB,EAAUvzJ,EAAIsoJ,MAC9B2vB,EAAetkB,EAAe3zJ,EAAIwvE,QAAS,EAAGglF,EAAWx0J,EAAIsoJ,OAE/D,OAAKurB,GAEOoE,GACHrF,GAAe,UAAW5yK,EAAIwvE,SAF9BojG,GAAe,OAAQ5yK,EAAIsoJ,KAItC,CC8lBU4vB,CAAsB7hB,GACtBud,GAAwBvd,GAC5BoS,EAAUoP,GAAsB7D,GAAmB3d,GAErD,GAAIoS,EACF,OAAOzsE,GAASysE,QAAQA,GAI1B,MAAM0P,EAAYV,EACZrE,GAAgB/c,GAChB+gB,EACA1D,GAAmBrd,GACnBA,GACH+hB,EAASC,GAAejD,GAAQ+C,EAAWvB,EAAcO,GAC1Dz8F,EAAO,IAAIshB,GAAS,CAClBwiD,GAAI45B,EACJ/d,KAAM8c,EACNh1L,EAAGk2L,EACHpf,QAIJ,OAAI5C,EAAWvE,SAAWylB,GAAkBv3K,EAAI8xJ,UAAYp3E,EAAKo3E,QACxD91D,GAASysE,QACd,qBACA,uCAAuCpS,EAAWvE,yBAAyBp3E,EAAK2uF,WAI7E3uF,CACT,CAkBA5yF,eAAey/B,EAAMltB,EAAO,CAAC,GAC3B,MAAO8vK,EAAMsL,GRjfV,SAAsBh2L,GAC3B,OAAOgH,GACLhH,EACA,CAACknL,GAA8BI,IAC/B,CAACH,GAA+BI,IAChC,CAACH,GAAkCI,IACnC,CAACH,GAAsBI,IAE3B,CQye+BoR,CAAa/wJ,GACxC,OAAOiuJ,GAAoBrL,EAAMsL,EAAYp7K,EAAM,WAAYktB,EACjE,CAgBAz/B,mBAAmBy/B,EAAMltB,EAAO,CAAC,GAC/B,MAAO8vK,EAAMsL,GR1fV,SAA0Bh2L,GAC/B,OAAOgH,GAzET,SAA2BhH,GAEzB,OAAOA,EACJ8J,QAAQ,oBAAqB,KAC7BA,QAAQ,WAAY,KACpBgC,MACL,CAmEegtL,CAAkB94L,GAAI,CAACymL,GAASC,IAC/C,CQwf+BqS,CAAiBjxJ,GAC5C,OAAOiuJ,GAAoBrL,EAAMsL,EAAYp7K,EAAM,WAAYktB,EACjE,CAiBAz/B,gBAAgBy/B,EAAMltB,EAAO,CAAC,GAC5B,MAAO8vK,EAAMsL,GR1gBV,SAAuBh2L,GAC5B,OAAOgH,GACLhH,EACA,CAAC6mL,GAASG,IACV,CAACF,GAAQE,IACT,CAACD,GAAOE,IAEZ,CQmgB+B+R,CAAclxJ,GACzC,OAAOiuJ,GAAoBrL,EAAMsL,EAAYp7K,EAAM,OAAQA,EAC7D,CAeAvS,kBAAkBy/B,EAAMsxI,EAAKx+J,EAAO,CAAC,GACnC,GAAIg0C,EAAY9mB,IAAS8mB,EAAYwqH,GACnC,MAAM,IAAIpH,EAAqB,oDAGjC,MAAM,OAAE55E,EAAS,KAAI,gBAAEumF,EAAkB,MAAS/jK,EAChDq+K,EAAcra,GAAOsa,SAAS,CAC5B9gG,SACAumF,kBACA6C,aAAa,KAEdkJ,EAAMsL,EAAYlD,EAAgB9J,GFpalC,SAAyB5wF,EAAQnvC,EAAOirC,GAC7C,MAAM,OAAE7yF,EAAM,KAAEu5K,EAAI,eAAEkY,EAAc,cAAE5H,GAAkB0G,GAAkBx5F,EAAQnvC,EAAOirC,GACzF,MAAO,CAAC7yF,EAAQu5K,EAAMkY,EAAgB5H,EACxC,CEiaoDiO,CAAgBF,EAAanxJ,EAAMsxI,GACnF,OAAI4P,EACKzsE,GAASysE,QAAQA,GAEjB+M,GAAoBrL,EAAMsL,EAAYp7K,EAAM,UAAUw+J,IAAOtxI,EAAMgrJ,EAE9E,CAKAzqL,kBAAkBy/B,EAAMsxI,EAAKx+J,EAAO,CAAC,GACnC,OAAO2hG,GAAS68E,WAAWtxJ,EAAMsxI,EAAKx+J,EACxC,CAsBAvS,eAAey/B,EAAMltB,EAAO,CAAC,GAC3B,MAAO8vK,EAAMsL,GR9iBV,SAAkBh2L,GACvB,OAAOgH,GACLhH,EACA,CAAC2nL,GAA8BL,IAC/B,CAACM,GAAsBC,IAE3B,CQwiB+BwR,CAASvxJ,GACpC,OAAOiuJ,GAAoBrL,EAAMsL,EAAYp7K,EAAM,MAAOktB,EAC5D,CAQAz/B,eAAesvC,EAAQokI,EAAc,MACnC,IAAKpkI,EACH,MAAM,IAAIq6H,EAAqB,oDAGjC,MAAMgX,EAAUrxI,aAAkBmkI,GAAUnkI,EAAS,IAAImkI,GAAQnkI,EAAQokI,GAEzE,GAAI2C,GAASH,eACX,MAAM,IAAI7M,EAAqBsX,GAE/B,OAAO,IAAIzsE,GAAS,CAAEysE,WAE1B,CAOA3gL,kBAAkB3F,GAChB,OAAQA,GAAKA,EAAE+0L,kBAAoB,CACrC,CAWAh0L,IAAIoqC,GACF,OAAOvtC,KAAKutC,EACd,CAQI8sI,cACF,OAAwB,OAAjBr6K,KAAK0oL,OACd,CAMIkC,oBACF,OAAO5qL,KAAK0oL,QAAU1oL,KAAK0oL,QAAQrxI,OAAS,IAC9C,CAMIwzI,yBACF,OAAO7qL,KAAK0oL,QAAU1oL,KAAK0oL,QAAQjN,YAAc,IACnD,CAOI3jF,aACF,OAAO93F,KAAKq6K,QAAUr6K,KAAKk5K,IAAIphF,OAAS,IAC1C,CAOIumF,sBACF,OAAOr+K,KAAKq6K,QAAUr6K,KAAKk5K,IAAImF,gBAAkB,IACnD,CAOIpE,qBACF,OAAOj6K,KAAKq6K,QAAUr6K,KAAKk5K,IAAIe,eAAiB,IAClD,CAMIK,WACF,OAAOt6K,KAAKk3L,KACd,CAMIrc,eACF,OAAO76K,KAAKq6K,QAAUr6K,KAAKs6K,KAAK7yK,KAAO,IACzC,CAOI8gK,WACF,OAAOvoK,KAAKq6K,QAAUr6K,KAAKgE,EAAEukK,KAAOiU,GACtC,CAOIzB,cACF,OAAO/6K,KAAKq6K,QAAUr1K,KAAKilK,KAAKjqK,KAAKgE,EAAEs1C,MAAQ,GAAKkjI,GACtD,CAOIljI,YACF,OAAOt5C,KAAKq6K,QAAUr6K,KAAKgE,EAAEs1C,MAAQkjI,GACvC,CAOIvnG,UACF,OAAOj1E,KAAKq6K,QAAUr6K,KAAKgE,EAAEixE,IAAMunG,GACrC,CAOIrK,WACF,OAAOnyK,KAAKq6K,QAAUr6K,KAAKgE,EAAEmuK,KAAOqK,GACtC,CAOIpK,aACF,OAAOpyK,KAAKq6K,QAAUr6K,KAAKgE,EAAEouK,OAASoK,GACxC,CAOIlK,aACF,OAAOtyK,KAAKq6K,QAAUr6K,KAAKgE,EAAEsuK,OAASkK,GACxC,CAOIzH,kBACF,OAAO/0K,KAAKq6K,QAAUr6K,KAAKgE,EAAE+wK,YAAcyH,GAC7C,CAQIrH,eACF,OAAOn1K,KAAKq6K,QAAUma,GAAuBx0L,MAAMm1K,SAAWqH,GAChE,CAQI1B,iBACF,OAAO96K,KAAKq6K,QAAUma,GAAuBx0L,MAAM86K,WAAa0B,GAClE,CASIzK,cACF,OAAO/xK,KAAKq6K,QAAUma,GAAuBx0L,MAAM+xK,QAAUyK,GAC/D,CAOI/sF,cACF,OAAOzvF,KAAKq6K,QAAUoZ,GAAmBzzL,KAAKgE,GAAGyrF,QAAU+sF,GAC7D,CAQIwc,iBACF,OAAOh5L,KAAKq6K,QAAU9nE,GAAK0kE,OAAO,QAAS,CAAE2W,OAAQ5tL,KAAKk5K,MAAOl5K,KAAKs5C,MAAQ,GAAK,IACrF,CAQI2/I,gBACF,OAAOj5L,KAAKq6K,QAAU9nE,GAAK0kE,OAAO,OAAQ,CAAE2W,OAAQ5tL,KAAKk5K,MAAOl5K,KAAKs5C,MAAQ,GAAK,IACpF,CAQI4/I,mBACF,OAAOl5L,KAAKq6K,QAAU9nE,GAAK8kE,SAAS,QAAS,CAAEuW,OAAQ5tL,KAAKk5K,MAAOl5K,KAAK+xK,QAAU,GAAK,IACzF,CAQIonB,kBACF,OAAOn5L,KAAKq6K,QAAU9nE,GAAK8kE,SAAS,OAAQ,CAAEuW,OAAQ5tL,KAAKk5K,MAAOl5K,KAAK+xK,QAAU,GAAK,IACxF,CAQIx6F,aACF,OAAOv3E,KAAKq6K,SAAWr6K,KAAKoC,EAAIo6K,GAClC,CAOI4c,sBACF,OAAIp5L,KAAKq6K,QACAr6K,KAAKs6K,KAAKM,WAAW56K,KAAKy+J,GAAI,CACnC7qE,OAAQ,QACRkE,OAAQ93F,KAAK83F,SAGR,IAEX,CAOIuhG,qBACF,OAAIr5L,KAAKq6K,QACAr6K,KAAKs6K,KAAKM,WAAW56K,KAAKy+J,GAAI,CACnC7qE,OAAQ,OACRkE,OAAQ93F,KAAK83F,SAGR,IAEX,CAMIqiF,oBACF,OAAOn6K,KAAKq6K,QAAUr6K,KAAKs6K,KAAKsB,YAAc,IAChD,CAMI0d,cACF,OAAIt5L,KAAKm6K,gBAILn6K,KAAKu3E,OAASv3E,KAAKoD,IAAI,CAAEk2C,MAAO,EAAG27B,IAAK,IAAKsC,QAC7Cv3E,KAAKu3E,OAASv3E,KAAKoD,IAAI,CAAEk2C,MAAO,IAAKi+B,OAG3C,CAQIgiH,mBACF,OAAO/kB,EAAWx0K,KAAKuoK,KACzB,CAQImM,kBACF,OAAOA,EAAY10K,KAAKuoK,KAAMvoK,KAAKs5C,MACrC,CAQIm7H,iBACF,OAAOz0K,KAAKq6K,QAAU5F,EAAWz0K,KAAKuoK,MAAQiU,GAChD,CASItH,sBACF,OAAOl1K,KAAKq6K,QAAUnF,EAAgBl1K,KAAKm1K,UAAYqH,GACzD,CAQAgd,sBAAsBl/K,EAAO,CAAC,GAC5B,MAAM,OAAEw9E,EAAM,gBAAEumF,EAAe,SAAEyD,GAAatrF,GAAUppF,OACtDpN,KAAKk5K,IAAI3mI,MAAMj4B,GACfA,GACAw4E,gBAAgB9yF,MAClB,MAAO,CAAE83F,SAAQumF,kBAAiBpE,eAAgB6H,EACpD,CAYAmM,MAAM12G,EAAS,EAAGj9D,EAAO,CAAC,GACxB,OAAOta,KAAK2tL,QAAQlQ,GAAgB55K,SAAS0zE,GAASj9D,EACxD,CAQAm/K,UACE,OAAOz5L,KAAK2tL,QAAQvP,GAASN,YAC/B,CAWA6P,QAAQrT,GAAM,cAAE4T,GAAgB,EAAK,iBAAEwL,GAAmB,GAAU,CAAC,GAEnE,IADApf,EAAOuD,GAAcvD,EAAM8D,GAASN,cAC3BjC,OAAO77K,KAAKs6K,MACnB,OAAOt6K,KACF,GAAKs6K,EAAKD,QAEV,CACL,IAAIsf,EAAQ35L,KAAKy+J,GACjB,GAAIyvB,GAAiBwL,EAAkB,CACrC,MAAME,EAActf,EAAK/iG,OAAOv3E,KAAKy+J,IAC/Bo7B,EAAQ75L,KAAKqpL,YAClBsQ,GAAStE,GAAQwE,EAAOD,EAAatf,EACxC,CACA,OAAO,GAAMt6K,KAAM,CAAEy+J,GAAIk7B,EAAOrf,QAClC,CATE,OAAOr+D,GAASysE,QAAQ6L,GAAgBja,GAU5C,CAQA4P,aAAY,OAAEpyF,EAAM,gBAAEumF,EAAe,eAAEpE,GAAmB,CAAC,GAEzD,OAAO,GAAMj6K,KAAM,CAAEk5K,IADTl5K,KAAKk5K,IAAI3mI,MAAM,CAAEulD,SAAQumF,kBAAiBpE,oBAExD,CAQA6f,UAAUhiG,GACR,OAAO93F,KAAKkqL,YAAY,CAAEpyF,UAC5B,CAYA10F,IAAIwmB,GACF,IAAK5pB,KAAKq6K,QAAS,OAAOr6K,KAE1B,MAAMs2K,EAAaF,GAAgBxsJ,EAAQi/J,IACzCkR,GACGzrI,EAAYgoH,EAAWnB,YACvB7mH,EAAYgoH,EAAWwE,cACvBxsH,EAAYgoH,EAAWvE,SAC1BslB,GAAmB/oI,EAAYgoH,EAAW7mF,SAC1C6nG,GAAsBhpI,EAAYgoH,EAAW/N,MAC7CgvB,GAAoBjpI,EAAYgoH,EAAWh9H,SAAWgV,EAAYgoH,EAAWrhG,KAC7EuiH,EAAiBF,GAAsBC,EACvCE,EAAkBnhB,EAAWnB,UAAYmB,EAAWwE,WAEtD,IAAK0c,GAAkBH,IAAoBI,EACzC,MAAM,IAAIjmB,EACR,uEAIJ,GAAI+lB,GAAoBF,EACtB,MAAM,IAAI7lB,EAA8B,0CAG1C,IAAIwoB,EACAD,EACFC,EAAQ3G,GAAgB,IAAKF,GAAgBnzL,KAAKgE,MAAOsyK,IAC/ChoH,EAAYgoH,EAAW7mF,UAGjCuqG,EAAQ,IAAKh6L,KAAKqpL,cAAe/S,GAI7BhoH,EAAYgoH,EAAWrhG,OACzB+kH,EAAM/kH,IAAMjwE,KAAKumC,IAAImpI,EAAYslB,EAAMzxB,KAAMyxB,EAAM1gJ,OAAQ0gJ,EAAM/kH,OAPnE+kH,EAAQrG,GAAmB,IAAKF,GAAmBzzL,KAAKgE,MAAOsyK,IAWjE,MAAO7X,EAAIr8J,GAAKizL,GAAQ2E,EAAOh6L,KAAKoC,EAAGpC,KAAKs6K,MAC5C,OAAO,GAAMt6K,KAAM,CAAEy+J,KAAIr8J,KAC3B,CAeAynL,KAAKvlK,GACH,IAAKtkB,KAAKq6K,QAAS,OAAOr6K,KAE1B,OAAO,GAAMA,KAAMs1L,GAAWt1L,KADlBioL,GAAS6B,iBAAiBxlK,IAExC,CAQAylK,MAAMzlK,GACJ,IAAKtkB,KAAKq6K,QAAS,OAAOr6K,KAE1B,OAAO,GAAMA,KAAMs1L,GAAWt1L,KADlBioL,GAAS6B,iBAAiBxlK,GAAU0lK,UAElD,CAYA8B,QAAQv+I,GACN,IAAKvtC,KAAKq6K,QAAS,OAAOr6K,KAC1B,MAAMoC,EAAI,CAAC,EACT63L,EAAiBhS,GAASY,cAAct7I,GAC1C,OAAQ0sJ,GACN,IAAK,QACH73L,EAAEk3C,MAAQ,EAEZ,IAAK,WACL,IAAK,SACHl3C,EAAE6yE,IAAM,EAEV,IAAK,QACL,IAAK,OACH7yE,EAAE+vK,KAAO,EAEX,IAAK,QACH/vK,EAAEgwK,OAAS,EAEb,IAAK,UACHhwK,EAAEkwK,OAAS,EAEb,IAAK,UACHlwK,EAAE2yK,YAAc,EAWpB,GAJuB,UAAnBklB,IACF73L,EAAE2vK,QAAU,GAGS,aAAnBkoB,EAA+B,CACjC,MAAM3pL,EAAItL,KAAKilK,KAAKjqK,KAAKs5C,MAAQ,GACjCl3C,EAAEk3C,MAAkB,GAAThpC,EAAI,GAAS,CAC1B,CAEA,OAAOtQ,KAAKoD,IAAIhB,EAClB,CAYA83L,MAAM3sJ,GACJ,OAAOvtC,KAAKq6K,QACRr6K,KAAK6pL,KAAK,CAAE,CAACt8I,GAAO,IACjBu+I,QAAQv+I,GACRw8I,MAAM,GACT/pL,IACN,CAgBAk8G,SAAS48D,EAAKx+J,EAAO,CAAC,GACpB,OAAOta,KAAKq6K,QACR7jF,GAAUppF,OAAOpN,KAAKk5K,IAAIwJ,cAAcpoK,IAAOu/J,yBAAyB75K,KAAM84K,GAC9E,EACN,CAqBAqhB,eAAelhB,EAAa,EAAoB3+J,EAAO,CAAC,GACtD,OAAOta,KAAKq6K,QACR7jF,GAAUppF,OAAOpN,KAAKk5K,IAAI3mI,MAAMj4B,GAAO2+J,GAAYM,eAAev5K,MAClE,EACN,CAeAo6L,cAAc9/K,EAAO,CAAC,GACpB,OAAOta,KAAKq6K,QACR7jF,GAAUppF,OAAOpN,KAAKk5K,IAAI3mI,MAAMj4B,GAAOA,GAAMk/J,oBAAoBx5K,MACjE,EACN,CAgBAspL,OAAM,OACJ11F,EAAS,WAAU,gBACnB+1F,GAAkB,EAAK,qBACvBD,GAAuB,EAAK,cAC5BqM,GAAgB,EAAI,aACpBC,GAAe,GACb,CAAC,GACH,IAAKh2L,KAAKq6K,QACR,OAAO,KAGT,MAAMggB,EAAiB,aAAXzmG,EAEZ,IAAI5vF,EAAIupL,GAAUvtL,KAAMq6L,GAGxB,OAFAr2L,GAAK,IACLA,GAAKulL,GAAUvpL,KAAMq6L,EAAK1Q,EAAiBD,EAAsBqM,EAAeC,GACzEhyL,CACT,CAUAupL,WAAU,OAAE35F,EAAS,YAAe,CAAC,GACnC,OAAK5zF,KAAKq6K,QAIHkT,GAAUvtL,KAAiB,aAAX4zF,GAHd,IAIX,CAOA0mG,gBACE,OAAO1E,GAAa51L,KAAM,eAC5B,CAiBAupL,WAAU,qBACRG,GAAuB,EAAK,gBAC5BC,GAAkB,EAAK,cACvBoM,GAAgB,EAAI,cACpBnM,GAAgB,EAAK,aACrBoM,GAAe,EAAK,OACpBpiG,EAAS,YACP,CAAC,GACH,IAAK5zF,KAAKq6K,QACR,OAAO,KAIT,OADQuP,EAAgB,IAAM,IAG5BL,GACEvpL,KACW,aAAX4zF,EACA+1F,EACAD,EACAqM,EACAC,EAGN,CAQAuE,YACE,OAAO3E,GAAa51L,KAAM,iCAAiC,EAC7D,CAUAw6L,SACE,OAAO5E,GAAa51L,KAAKiuL,QAAS,kCACpC,CAOAwM,YACE,OAAKz6L,KAAKq6K,QAGHkT,GAAUvtL,MAAM,GAFd,IAGX,CAcA06L,WAAU,cAAE3E,GAAgB,EAAI,YAAE4E,GAAc,EAAK,mBAAEC,GAAqB,GAAS,CAAC,GACpF,IAAI9hB,EAAM,eAaV,OAXI6hB,GAAe5E,KACb6E,IACF9hB,GAAO,KAEL6hB,EACF7hB,GAAO,IACEid,IACTjd,GAAO,OAIJ8c,GAAa51L,KAAM84K,GAAK,EACjC,CAcA+hB,MAAMvgL,EAAO,CAAC,GACZ,OAAKta,KAAKq6K,QAIH,GAAGr6K,KAAKy6L,eAAez6L,KAAK06L,UAAUpgL,KAHpC,IAIX,CAMA5U,WACE,OAAO1F,KAAKq6K,QAAUr6K,KAAKspL,QAAU,EACvC,CAMA/hG,UACE,OAAOvnF,KAAKypL,UACd,CAMAA,WACE,OAAOzpL,KAAKq6K,QAAUr6K,KAAKy+J,GAAK+d,GAClC,CAMAse,YACE,OAAO96L,KAAKq6K,QAAUr6K,KAAKy+J,GAAK,IAAO+d,GACzC,CAMAue,gBACE,OAAO/6L,KAAKq6K,QAAUr1K,KAAKC,MAAMjF,KAAKy+J,GAAK,KAAQ+d,GACrD,CAMArqH,SACE,OAAOnyD,KAAKspL,OACd,CAMA0R,SACE,OAAOh7L,KAAK8/K,UACd,CASAuJ,SAAS/uK,EAAO,CAAC,GACf,IAAKta,KAAKq6K,QAAS,MAAO,CAAC,EAE3B,MAAM/9D,EAAO,IAAKt8G,KAAKgE,GAOvB,OALIsW,EAAK2gL,gBACP3+E,EAAK29D,eAAiBj6K,KAAKi6K,eAC3B39D,EAAK+hE,gBAAkBr+K,KAAKk5K,IAAImF,gBAChC/hE,EAAKxkB,OAAS93F,KAAKk5K,IAAIphF,QAElBwkB,CACT,CAMAwjE,WACE,OAAO,IAAIt6K,KAAKxF,KAAKq6K,QAAUr6K,KAAKy+J,GAAK+d,IAC3C,CAmBAuP,KAAKmP,EAAe3tJ,EAAO,eAAgBjzB,EAAO,CAAC,GACjD,IAAKta,KAAKq6K,UAAY6gB,EAAc7gB,QAClC,OAAO4N,GAASS,QAAQ,0CAG1B,MAAMyS,EAAU,CAAErjG,OAAQ93F,KAAK83F,OAAQumF,gBAAiBr+K,KAAKq+K,mBAAoB/jK,GAE3EmnC,GpB7wDiBiU,EoB6wDEnoB,EpB5wDpBruC,MAAMkU,QAAQsiD,GAASA,EAAQ,CAACA,IoB4wDNrsD,IAAI4+K,GAASY,eAC1CuS,EAAeF,EAAc3zG,UAAYvnF,KAAKunF,UAG9C8zG,EAAStP,GAFCqP,EAAep7L,KAAOk7L,EACxBE,EAAeF,EAAgBl7L,KACTyhD,EAAO05I,GpBjxDpC,IAAoBzlI,EoBmxDvB,OAAO0lI,EAAeC,EAAOrR,SAAWqR,CAC1C,CAUAC,QAAQ/tJ,EAAO,eAAgBjzB,EAAO,CAAC,GACrC,OAAOta,KAAK+rL,KAAK9vE,GAASx2G,MAAO8nC,EAAMjzB,EACzC,CAOAihL,MAAML,GACJ,OAAOl7L,KAAKq6K,QAAU2Q,GAASO,cAAcvrL,KAAMk7L,GAAiBl7L,IACtE,CAWAgsL,QAAQkP,EAAe3tJ,GACrB,IAAKvtC,KAAKq6K,QAAS,OAAO,EAE1B,MAAMmhB,EAAUN,EAAc3zG,UACxBk0G,EAAiBz7L,KAAK2tL,QAAQuN,EAAc5gB,KAAM,CAAE4T,eAAe,IACzE,OAAOuN,EAAe3P,QAAQv+I,IAASiuJ,GAAWA,GAAWC,EAAevB,MAAM3sJ,EACpF,CASAsuI,OAAOv4J,GACL,OACEtjB,KAAKq6K,SACL/2J,EAAM+2J,SACNr6K,KAAKunF,YAAcjkE,EAAMikE,WACzBvnF,KAAKs6K,KAAKuB,OAAOv4J,EAAMg3J,OACvBt6K,KAAKk5K,IAAI2C,OAAOv4J,EAAM41J,IAE1B,CAoBAwiB,WAAWzqL,EAAU,CAAC,GACpB,IAAKjR,KAAKq6K,QAAS,OAAO,KAC1B,MAAM/9D,EAAOrrG,EAAQqrG,MAAQL,GAAS2sE,WAAW,CAAC,EAAG,CAAEtO,KAAMt6K,KAAKs6K,OAChEv0J,EAAU9U,EAAQ8U,QAAW/lB,KAAOs8G,GAAQrrG,EAAQ8U,QAAU9U,EAAQ8U,QAAW,EACnF,IAAI07B,EAAQ,CAAC,QAAS,SAAU,OAAQ,QAAS,UAAW,WACxDlU,EAAOt8B,EAAQs8B,KAKnB,OAJIruC,MAAMkU,QAAQnC,EAAQs8B,QACxBkU,EAAQxwC,EAAQs8B,KAChBA,OAAOzzB,GAEFg9K,GAAax6E,EAAMt8G,KAAK6pL,KAAK9jK,GAAU,IACzC9U,EACHmvK,QAAS,SACT3+H,QACAlU,QAEJ,CAeAouJ,mBAAmB1qL,EAAU,CAAC,GAC5B,OAAKjR,KAAKq6K,QAEHyc,GAAa7lL,EAAQqrG,MAAQL,GAAS2sE,WAAW,CAAC,EAAG,CAAEtO,KAAMt6K,KAAKs6K,OAASt6K,KAAM,IACnFiR,EACHmvK,QAAS,OACT3+H,MAAO,CAAC,QAAS,SAAU,QAC3Bs1I,WAAW,IANa,IAQ5B,CAOAhvL,cAAcskL,GACZ,IAAKA,EAAUrrE,MAAM/E,GAAS2/E,YAC5B,MAAM,IAAIlqB,EAAqB,2CAEjC,OAAOgC,EAAO2Y,GAAY1sL,GAAMA,EAAE4nF,WAAWviF,KAAKumC,IACpD,CAOAxjC,cAAcskL,GACZ,IAAKA,EAAUrrE,MAAM/E,GAAS2/E,YAC5B,MAAM,IAAIlqB,EAAqB,2CAEjC,OAAOgC,EAAO2Y,GAAY1sL,GAAMA,EAAE4nF,WAAWviF,KAAKkC,IACpD,CAWAa,yBAAyBy/B,EAAMsxI,EAAK7nK,EAAU,CAAC,GAC7C,MAAM,OAAE6mF,EAAS,KAAI,gBAAEumF,EAAkB,MAASptK,EAMlD,OAAOqgL,GALShT,GAAOsa,SAAS,CAC5B9gG,SACAumF,kBACA6C,aAAa,IAEqB15I,EAAMsxI,EAC9C,CAKA/wK,yBAAyBy/B,EAAMsxI,EAAK7nK,EAAU,CAAC,GAC7C,OAAOgrG,GAAS4/E,kBAAkBr0J,EAAMsxI,EAAK7nK,EAC/C,CAQW2gK,wBACT,OAAO,CACT,CAMWC,sBACT,OAAO,CACT,CAMWC,mCACT,OAAO,CACT,CAMWE,uBACT,OAAO,CACT,CAMWC,uBACT,OAAO,CACT,CAMWC,yBACT,OAAO,CACT,CAMWG,+BACT,OAAO,CACT,CAMWE,oCACT,OAAO,CACT,CAMWE,mCACT,OAAO,CACT,CAMWC,4BACT,OAAO,CACT,CAMWE,kCACT,OAAO,CACT,CAMWC,uCACT,OAAO,CACT,CAMWC,sCACT,OAAO,CACT,CAMWC,4BACT,OAAO,CACT,CAMWC,yCACT,OAAO,CACT,CAMWC,0BACT,OAAO,CACT,CAMWC,uCACT,OAAO,CACT,CAMWC,uCACT,OAAO,CACT,CAMWC,2BACT,OAAO,CACT,CAMWC,wCACT,OAAO,CACT,CAMWC,2BACT,OAAO,CACT,CAMWC,wCACT,OAAO,CACT,EAMK,SAAS4X,GAAiB2Q,GAC/B,GAAI7/E,GAAS2/E,WAAWE,GACtB,OAAOA,EACF,GAAIA,GAAeA,EAAYv0G,SAAW3yB,EAASknI,EAAYv0G,WACpE,OAAO00B,GAAS8/E,WAAWD,GACtB,GAAIA,GAAsC,iBAAhBA,EAC/B,OAAO7/E,GAAS2sE,WAAWkT,GAE3B,MAAM,IAAIpqB,EACR,8BAA8BoqB,qBAA+BA,IAGnE","sources":["webpack://anora-lifestyle-gatsby/./node_modules/@auth0/auth0-react/dist/auth0-react.esm.js","webpack://anora-lifestyle-gatsby/./node_modules/@gatsbyjs/reach-router/lib/history.js","webpack://anora-lifestyle-gatsby/./node_modules/@gatsbyjs/reach-router/lib/utils.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Accordion/Accordion.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Accordion/AccordionContext.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/AccordionDetails/AccordionDetails.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/AccordionSummary/AccordionSummary.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Backdrop/Backdrop.js","webpack://anora-lifestyle-gatsby/./node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack://anora-lifestyle-gatsby/./node_modules/react-transition-group/esm/TransitionGroup.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/ButtonBase/Ripple.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/ButtonBase/TouchRipple.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/ButtonBase/ButtonBase.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/ClickAwayListener/ClickAwayListener.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Collapse/Collapse.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Drawer/Drawer.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Fade/Fade.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Grow/Grow.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/IconButton/IconButton.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Link/Link.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/List/List.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/List/ListContext.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/ListItem/ListItem.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Modal/ModalManager.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Unstable_TrapFocus/Unstable_TrapFocus.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Modal/SimpleBackdrop.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Modal/Modal.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Paper/Paper.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Portal/Portal.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Slide/Slide.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Toolbar/Toolbar.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Typography/Typography.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/colorManipulator.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/createBreakpoints.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/createMixins.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/colors/common.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/colors/grey.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/colors/indigo.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/colors/pink.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/colors/red.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/colors/orange.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/colors/blue.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/colors/green.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/createPalette.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/createTypography.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/shadows.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/shape.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/createSpacing.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/createTheme.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/defaultTheme.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/transitions.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/useTheme.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/withStyles.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/styles/zIndex.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/transitions/utils.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/capitalize.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/createChainedFunction.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/SvgIcon/SvgIcon.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/createSvgIcon.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/debounce.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/getScrollbarSize.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/deprecatedPropType.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/requirePropFactory.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/unsupportedProp.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/isMuiElement.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/ownerDocument.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/ownerWindow.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/setRef.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/unstable_useId.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/useControlled.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/useEventCallback.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/useForkRef.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/utils/useIsFocusVisible.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/icons/Check.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/icons/ExpandMore.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/icons/KeyboardArrowLeft.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/icons/KeyboardArrowRight.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/icons/ReportProblemOutlined.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/icons/esm/CheckBoxOutlined.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/icons/esm/Close.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/icons/utils/createSvgIcon.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/StylesProvider/StylesProvider.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/ThemeProvider/ThemeProvider.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/ThemeProvider/nested.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/createGenerateClassName/createGenerateClassName.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/getThemeProps/getThemeProps.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/createStyles/createStyles.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/ServerStyleSheets/ServerStyleSheets.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/withTheme/withTheme.js","webpack://anora-lifestyle-gatsby/./node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","webpack://anora-lifestyle-gatsby/./node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","webpack://anora-lifestyle-gatsby/./node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","webpack://anora-lifestyle-gatsby/./node_modules/hyphenate-style-name/index.js","webpack://anora-lifestyle-gatsby/./node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","webpack://anora-lifestyle-gatsby/./node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","webpack://anora-lifestyle-gatsby/./node_modules/css-vendor/dist/css-vendor.esm.js","webpack://anora-lifestyle-gatsby/./node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","webpack://anora-lifestyle-gatsby/./node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/jssPreset/jssPreset.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/makeStyles/multiKeyStore.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/makeStyles/indexCounter.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/getStylesCreator/getStylesCreator.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/getStylesCreator/noopTheme.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/makeStyles/makeStyles.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/mergeClasses/mergeClasses.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/styled/styled.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/useTheme/ThemeContext.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/useTheme/useTheme.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/styles/esm/withStyles/withStyles.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/system/esm/breakpoints.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/system/esm/merge.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/system/esm/spacing.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/system/esm/memoize.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/utils/esm/deepmerge.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/utils/esm/formatMuiErrorMessage.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/index.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/adapters/xhr.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/axios.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/cancel/Cancel.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/cancel/CancelToken.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/cancel/isCancel.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/core/Axios.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/core/InterceptorManager.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/core/buildFullPath.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/core/createError.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/core/dispatchRequest.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/core/enhanceError.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/core/mergeConfig.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/core/settle.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/core/transformData.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/defaults.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/env/data.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/helpers/bind.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/helpers/buildURL.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/helpers/combineURLs.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/helpers/cookies.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/helpers/spread.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/helpers/validator.js","webpack://anora-lifestyle-gatsby/./node_modules/axios/lib/utils.js","webpack://anora-lifestyle-gatsby/./node_modules/clsx/dist/clsx.m.js","webpack://anora-lifestyle-gatsby/./node_modules/cookie/index.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby-react-router-scroll/index.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby/dist/internal-plugins/partytown/utils/get-forwards.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js","webpack://anora-lifestyle-gatsby/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://anora-lifestyle-gatsby/./.cache/api-runner-browser-plugins.js","webpack://anora-lifestyle-gatsby/./.cache/api-runner-browser.js","webpack://anora-lifestyle-gatsby/./.cache/caches/gatsby-plugin-material-ui/styles-provider-props.js","webpack://anora-lifestyle-gatsby/./.cache/emitter.js","webpack://anora-lifestyle-gatsby/./node_modules/mitt/dist/mitt.es.js","webpack://anora-lifestyle-gatsby/./.cache/normalize-page-path.js","webpack://anora-lifestyle-gatsby/./.cache/find-path.js","webpack://anora-lifestyle-gatsby/./.cache/static-query.js","webpack://anora-lifestyle-gatsby/./.cache/gatsby-browser-entry.js","webpack://anora-lifestyle-gatsby/./.cache/prefetch.js","webpack://anora-lifestyle-gatsby/./.cache/loader.js","webpack://anora-lifestyle-gatsby/./.cache/head/components/fire-callback-in-effect.js","webpack://anora-lifestyle-gatsby/./.cache/head/constants.js","webpack://anora-lifestyle-gatsby/./.cache/head/utils.js","webpack://anora-lifestyle-gatsby/./.cache/head/head-export-handler-for-browser.js","webpack://anora-lifestyle-gatsby/./.cache/page-renderer.js","webpack://anora-lifestyle-gatsby/./.cache/route-announcer-props.js","webpack://anora-lifestyle-gatsby/./.cache/navigation.js","webpack://anora-lifestyle-gatsby/./node_modules/shallow-compare/es/index.js","webpack://anora-lifestyle-gatsby/./.cache/ensure-resources.js","webpack://anora-lifestyle-gatsby/./.cache/production-app.js","webpack://anora-lifestyle-gatsby/./.cache/public-page-renderer-prod.js","webpack://anora-lifestyle-gatsby/./.cache/public-page-renderer.js","webpack://anora-lifestyle-gatsby/./.cache/react-dom-utils.js","webpack://anora-lifestyle-gatsby/./.cache/react-lifecycles-compat.js","webpack://anora-lifestyle-gatsby/./.cache/redirect-utils.js","webpack://anora-lifestyle-gatsby/./.cache/register-service-worker.js","webpack://anora-lifestyle-gatsby/./.cache/strip-prefix.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby-plugin-material-ui/gatsby-browser.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby-plugin-material-ui/utils.js","webpack://anora-lifestyle-gatsby/./plugins/gatsby-plugin-cookie-information/CookieInformation.js","webpack://anora-lifestyle-gatsby/./plugins/gatsby-plugin-cookie-information/utils.js","webpack://anora-lifestyle-gatsby/./plugins/gatsby-plugin-cookie-information/gatsby-browser.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/CssBaseline/CssBaseline.js","webpack://anora-lifestyle-gatsby/./src/themes/anoraPro/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/bibendum/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/philipsonSoderberg/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/blossa/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/valhalla/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/images/gammeldansk/Gammeldansk-bg.jpg","webpack://anora-lifestyle-gatsby/./src/themes/gammeldansk/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/wennerco/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/koskenkorva/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/opAnderson/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/skagerrak/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/wineworld-finland/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/LinieAquavit/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/socialwines/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/brands/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/PrimaryThemeProvider.js","webpack://anora-lifestyle-gatsby/./plugins/gatsby-plugin-primary-theme/gatsby-browser.js","webpack://anora-lifestyle-gatsby/./node_modules/react-cookie/es6/CookiesProvider.js","webpack://anora-lifestyle-gatsby/./src/components/context/ReactQueryContext.js","webpack://anora-lifestyle-gatsby/./node_modules/react-i18next/dist/es/I18nextProvider.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://anora-lifestyle-gatsby/./node_modules/i18next/dist/esm/i18next.js","webpack://anora-lifestyle-gatsby/./src/locales/index.js","webpack://anora-lifestyle-gatsby/./src/components/context/TranslationContext.js","webpack://anora-lifestyle-gatsby/./src/components/layout/GoogleTagManager/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/GoogleTagManager/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/FrosmoScript/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/FrosmoScript/folkofolk/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/FrosmoScript/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Hotjar/default/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Hotjar/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/DefaultFonts.js/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/DefaultFonts.js/philipsonSoderberg/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/DefaultFonts.js/wennerco/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/DefaultFonts.js/skagerrak/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/DefaultFonts.js/wineworldFinland/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/DefaultFonts.js/socialwines/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/DefaultFonts.js/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/folkofolk/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/anoraPro/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/blossa/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/bibendum/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/philipsonSoderberg/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/valhalla/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/gammeldansk/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/wennerco/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/koskenkorva/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/opAnderson/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/skagerrak/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/wineworld-finland/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/linieAquavit/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/socialwines/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/Favicon/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/MetaDomainVerificationTag/index.js","webpack://anora-lifestyle-gatsby/./src/components/search/KlevuInit/common/index.js","webpack://anora-lifestyle-gatsby/./src/components/search/KlevuInit/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/RootWrapper/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/RootWrapper/index.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/SnackbarContent/SnackbarContent.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/Snackbar/Snackbar.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/lab/esm/internal/svg-icons/SuccessOutlined.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/lab/esm/internal/svg-icons/ReportProblemOutlined.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/lab/esm/internal/svg-icons/ErrorOutline.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/lab/esm/internal/svg-icons/InfoOutlined.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/lab/esm/internal/svg-icons/Close.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/lab/esm/Alert/Alert.js","webpack://anora-lifestyle-gatsby/./src/components/layout/MessageQueue/Message.js","webpack://anora-lifestyle-gatsby/./src/components/layout/MessageQueue/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/MessageQueue/index.js","webpack://anora-lifestyle-gatsby/./src/components/navigation/AdditionalNavigation/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/navigation/AdditionalNavigation/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/PageWrapper/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/layout/PageWrapper/index.js","webpack://anora-lifestyle-gatsby/./plugins/gatsby-plugin-root-and-page-wrapper/gatsby-browser.js","webpack://anora-lifestyle-gatsby/./src/components/context/ActiveNavigationContext.js","webpack://anora-lifestyle-gatsby/./src/components/context/ContentContext.js","webpack://anora-lifestyle-gatsby/./src/components/context/ContentSearchContext.js","webpack://anora-lifestyle-gatsby/./src/components/context/DialogContext.js","webpack://anora-lifestyle-gatsby/./src/components/context/DrawerContext.js","webpack://anora-lifestyle-gatsby/./src/components/context/KlevuSearchContext.js","webpack://anora-lifestyle-gatsby/./src/components/context/MessageContext.js","webpack://anora-lifestyle-gatsby/./src/components/context/PopUpContext.js","webpack://anora-lifestyle-gatsby/./src/components/navigation/Link/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/navigation/Link/index.js","webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/core/esm/ListItemSecondaryAction/ListItemSecondaryAction.js","webpack://anora-lifestyle-gatsby/./src/components/navigation/NavigationElements/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/navigation/NavigationElements/folkofolk/index.js","webpack://anora-lifestyle-gatsby/./src/components/navigation/NavigationElements/anoraPro/index.js","webpack://anora-lifestyle-gatsby/./src/components/navigation/NavigationElements/index.js","webpack://anora-lifestyle-gatsby/./src/components/shared/Visible/index.js","webpack://anora-lifestyle-gatsby/./src/constants/index.js","webpack://anora-lifestyle-gatsby/./src/sites/viinimaa/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/folkofolk/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/anoraPro/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/bibendum/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/blossa/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/philipson-soderberg/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/valhalla/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/gammeldansk/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/wennerco/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/koskenkorva/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/op-anderson/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/skagerrak/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/wineworld-finland/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/linieAquavit/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/socialwines/settings.js","webpack://anora-lifestyle-gatsby/./src/sites/index.js","webpack://anora-lifestyle-gatsby/./src/themes/folkofolk/primaryTheme.js","webpack://anora-lifestyle-gatsby/./src/themes/viinimaa/primaryTheme.js","webpack://anora-lifestyle-gatsby/./node_modules/uuid/dist/esm-browser/rng.js","webpack://anora-lifestyle-gatsby/./node_modules/uuid/dist/esm-browser/regex.js","webpack://anora-lifestyle-gatsby/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://anora-lifestyle-gatsby/./node_modules/uuid/dist/esm-browser/validate.js","webpack://anora-lifestyle-gatsby/./node_modules/uuid/dist/esm-browser/v4.js","webpack://anora-lifestyle-gatsby/./src/utils/analyticUtils.js","webpack://anora-lifestyle-gatsby/./src/utils/custobarUtils.js","webpack://anora-lifestyle-gatsby/./src/utils/windowUtils.js","webpack://anora-lifestyle-gatsby/./node_modules/@gatsbyjs/reach-router/es/lib/utils.js","webpack://anora-lifestyle-gatsby/./node_modules/@gatsbyjs/reach-router/es/lib/history.js","webpack://anora-lifestyle-gatsby/./node_modules/@gatsbyjs/reach-router/es/index.js","webpack://anora-lifestyle-gatsby/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://anora-lifestyle-gatsby/./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","webpack://anora-lifestyle-gatsby/./node_modules/hoist-non-react-statics/node_modules/react-is/index.js","webpack://anora-lifestyle-gatsby/./node_modules/invariant/browser.js","webpack://anora-lifestyle-gatsby/./node_modules/is-in-browser/dist/module.js","webpack://anora-lifestyle-gatsby/./node_modules/jss/dist/jss.esm.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_DataView.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_Hash.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_ListCache.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_Map.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_MapCache.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_Promise.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_Set.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_SetCache.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_Stack.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_Symbol.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_Uint8Array.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_WeakMap.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_arrayEach.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_arrayFilter.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_arrayLikeKeys.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_arrayMap.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_arrayPush.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_arrayReduce.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_arraySome.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_asciiToArray.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_assocIndexOf.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseEach.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseFilter.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseFindIndex.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseFlatten.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseFor.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseForOwn.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseGet.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseGetAllKeys.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseGetTag.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseHasIn.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseIndexOf.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseIsArguments.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseIsEqual.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseIsEqualDeep.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseIsMatch.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseIsNaN.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseIsNative.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseIsRegExp.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseIsTypedArray.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseIteratee.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseKeys.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseMap.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseMatches.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseMatchesProperty.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseProperty.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_basePropertyDeep.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseReduce.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseSlice.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseTimes.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseToString.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseTrim.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseUnary.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_baseValues.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_cacheHas.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_castFunction.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_castPath.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_castSlice.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_copyArray.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_coreJsData.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_createBaseEach.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_createBaseFor.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_createFind.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_equalArrays.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_equalByTag.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_equalObjects.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_freeGlobal.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_getAllKeys.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_getMapData.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_getMatchData.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_getNative.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_getRawTag.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_getSymbols.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_getTag.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_getValue.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_hasPath.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_hasUnicode.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_hashClear.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_hashDelete.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_hashGet.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_hashHas.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_hashSet.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_isFlattenable.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_isIndex.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_isIterateeCall.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_isKey.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_isKeyable.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_isMasked.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_isPrototype.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_isStrictComparable.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_listCacheClear.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_listCacheDelete.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_listCacheGet.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_listCacheHas.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_listCacheSet.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_mapCacheClear.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_mapCacheDelete.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_mapCacheGet.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_mapCacheHas.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_mapCacheSet.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_mapToArray.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_matchesStrictComparable.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_memoizeCapped.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_nativeCreate.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_nativeKeys.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_nodeUtil.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_objectToString.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_overArg.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_root.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_setCacheAdd.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_setCacheHas.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_setToArray.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_stackClear.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_stackDelete.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_stackGet.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_stackHas.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_stackSet.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_strictIndexOf.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_stringToArray.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_stringToPath.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_toKey.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_toSource.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_trimmedEndIndex.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/_unicodeToArray.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/concat.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/each.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/eq.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/filter.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/find.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/findIndex.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/forEach.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/get.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/hasIn.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/identity.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/includes.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isArguments.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isArray.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isArrayLike.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isBuffer.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isEmpty.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isEqual.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isFunction.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isLength.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isNil.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isNull.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isObject.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isObjectLike.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isRegExp.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isString.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isSymbol.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/isTypedArray.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/keys.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/map.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/memoize.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/property.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/reduce.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/replace.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/split.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/stubArray.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/stubFalse.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/toFinite.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/toInteger.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/toNumber.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/toString.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/uniqueId.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/values.js","webpack://anora-lifestyle-gatsby/./node_modules/react-cookie/es6/Cookies.js","webpack://anora-lifestyle-gatsby/./node_modules/react-cookie/es6/CookiesContext.js","webpack://anora-lifestyle-gatsby/./node_modules/react-helmet/es/Helmet.js","webpack://anora-lifestyle-gatsby/./node_modules/react-helmet/node_modules/react-fast-compare/index.js","webpack://anora-lifestyle-gatsby/./node_modules/react-i18next/dist/es/unescape.js","webpack://anora-lifestyle-gatsby/./node_modules/react-i18next/dist/es/context.js","webpack://anora-lifestyle-gatsby/./node_modules/react-i18next/dist/es/utils.js","webpack://anora-lifestyle-gatsby/./node_modules/react-i18next/dist/es/useTranslation.js","webpack://anora-lifestyle-gatsby/./node_modules/react-is/cjs/react-is.production.min.js","webpack://anora-lifestyle-gatsby/./node_modules/react-is/index.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/focusManager.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/infiniteQueryBehavior.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/logger.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/mutation.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/notifyManager.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/onlineManager.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/query.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/queryCache.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/mutationCache.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/queryClient.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/retryer.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/subscribable.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/utils.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/react/reactBatchedUpdates.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/react/setBatchUpdatesFn.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/react/logger.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/react/setLogger.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/react/QueryClientProvider.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/mutationObserver.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/react/utils.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/react/useMutation.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/queryObserver.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/core/infiniteQueryObserver.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/react/QueryErrorResetBoundary.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/react/useBaseQuery.js","webpack://anora-lifestyle-gatsby/./node_modules/react-query/es/react/useInfiniteQuery.js","webpack://anora-lifestyle-gatsby/./node_modules/react-side-effect/lib/index.js","webpack://anora-lifestyle-gatsby/./node_modules/react-transition-group/esm/config.js","webpack://anora-lifestyle-gatsby/./node_modules/react-transition-group/esm/Transition.js","webpack://anora-lifestyle-gatsby/./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://anora-lifestyle-gatsby/./node_modules/universal-cookie/es6/utils.js","webpack://anora-lifestyle-gatsby/./node_modules/universal-cookie/es6/Cookies.js","webpack://anora-lifestyle-gatsby/./node_modules/universal-cookie/es6/index.js","webpack://anora-lifestyle-gatsby/./src/images/folkofolk/Martini-white.svg","webpack://anora-lifestyle-gatsby/./src/images/folkofolk/Martini.svg","webpack://anora-lifestyle-gatsby/./src/images/folkofolk/Wine-white.svg","webpack://anora-lifestyle-gatsby/./src/images/folkofolk/Wine.svg","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/createClass.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/typeof.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://anora-lifestyle-gatsby/./node_modules/@builder.io/partytown/integration/index.cjs","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://anora-lifestyle-gatsby/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://anora-lifestyle-gatsby/./node_modules/@contentful/live-preview/dist/index-BI1JEOp6.js","webpack://anora-lifestyle-gatsby/./node_modules/@contentful/live-preview/dist/react.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/connection/fetch.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/utils/isBrowser.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/events/eventRequests.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/config.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/models/KlevuApiRawResponse.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/models/KlevuBaseQuerySettings.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/models/KlevuFilterOrder.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/models/KlevuSearchPreference.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/models/KlevuSearchSorting.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/models/KlevuTypeOfRecord.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/models/KlevuTypeOfRequest.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/models/KlevuTypeOfSearch.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/events/KlevuDomEvents.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/utils/notEmpty.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/store/lastClickedProducts.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/store/lastSearches.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/events/KlevuEvents.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/modifiers/applyFilter/applyFilter.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/modifiers/applyFilterWithManager/applyFilterWithManager.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/modifiers/listFilters/listFilters.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/modifiers/sendSearchEvent/sendSearchEvent.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/utils/extractActiveFilters.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/modifiers/sendRecommendationViewEvent/sendRecommendationViewEvent.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/modifiers/personalisation/personalisation.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/modifiers/advancedFiltering/advancedFiltering.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/connection/resultHelpers/getAnnotationsForProduct.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/utils/objectToQueryParamaters.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/utils/getBannersByType.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/connection/kmc.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/connection/resultHelpers/getBanners.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/connection/resultHelpers/getRedirects.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/connection/responseQueryObject.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/connection/klevuFetch.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/modifiers/injectFilterResult/injectFilterResult.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/connection/responseObject.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/store/klevuFetchCache.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/utils/cleanSearchQuery.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/queries/search/search.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/queries/suggestions/suggestions.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/queries/trendingProducts/trendingProducts.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/queries/kmcRecommendation/kmcRecommendation.js","webpack://anora-lifestyle-gatsby/./node_modules/@klevu/core/dist/mjs/store/filterManager.js","webpack://anora-lifestyle-gatsby/./node_modules/gatsby-link/dist/index.modern.mjs","webpack://anora-lifestyle-gatsby/./node_modules/gatsby-script/dist/index.modern.mjs","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/errors.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/impl/formats.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/impl/util.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/impl/english.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/impl/formatter.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/impl/invalid.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/zone.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/zones/systemZone.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/zones/IANAZone.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/zones/fixedOffsetZone.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/zones/invalidZone.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/impl/zoneUtil.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/settings.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/impl/locale.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/impl/regexParser.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/duration.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/interval.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/info.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/impl/diff.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/impl/digits.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/impl/tokenParser.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/impl/conversions.js","webpack://anora-lifestyle-gatsby/./node_modules/luxon/src/datetime.js"],"sourcesContent":["import React, { createContext, useState, useReducer, useRef, useEffect, useCallback, useMemo, useContext } from 'react';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction e(e,t){var i={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(i[o]=e[o]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var n=0;for(o=Object.getOwnPropertySymbols(e);n<o.length;n++)t.indexOf(o[n])<0&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(i[o[n]]=e[o[n]]);}return i}\"function\"==typeof SuppressedError&&SuppressedError;var t=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function i(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}function o(e,t){return e(t={exports:{}},t.exports),t.exports}var n=o((function(e,t){Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(){function e(){var e=this;this.locked=new Map,this.addToLocked=function(t,i){var o=e.locked.get(t);void 0===o?void 0===i?e.locked.set(t,[]):e.locked.set(t,[i]):void 0!==i&&(o.unshift(i),e.locked.set(t,o));},this.isLocked=function(t){return e.locked.has(t)},this.lock=function(t){return new Promise((function(i,o){e.isLocked(t)?e.addToLocked(t,i):(e.addToLocked(t),i());}))},this.unlock=function(t){var i=e.locked.get(t);if(void 0!==i&&0!==i.length){var o=i.pop();e.locked.set(t,i),void 0!==o&&setTimeout(o,0);}else e.locked.delete(t);};}return e.getInstance=function(){return void 0===e.instance&&(e.instance=new e),e.instance},e}();t.default=function(){return i.getInstance()};}));i(n);var a=i(o((function(e,i){var o=t&&t.__awaiter||function(e,t,i,o){return new(i||(i=Promise))((function(n,a){function r(e){try{c(o.next(e));}catch(e){a(e);}}function s(e){try{c(o.throw(e));}catch(e){a(e);}}function c(e){e.done?n(e.value):new i((function(t){t(e.value);})).then(r,s);}c((o=o.apply(e,t||[])).next());}))},a=t&&t.__generator||function(e,t){var i,o,n,a,r={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(i)throw new TypeError(\"Generator is already executing.\");for(;r;)try{if(i=1,o&&(n=2&a[0]?o.return:a[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,a[1])).done)return n;switch(o=0,n&&(a=[2&a[0],n.value]),a[0]){case 0:case 1:n=a;break;case 4:return r.label++,{value:a[1],done:!1};case 5:r.label++,o=a[1],a=[0];continue;case 7:a=r.ops.pop(),r.trys.pop();continue;default:if(!(n=r.trys,(n=n.length>0&&n[n.length-1])||6!==a[0]&&2!==a[0])){r=0;continue}if(3===a[0]&&(!n||a[1]>n[0]&&a[1]<n[3])){r.label=a[1];break}if(6===a[0]&&r.label<n[1]){r.label=n[1],n=a;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(a);break}n[2]&&r.ops.pop(),r.trys.pop();continue}a=t.call(e,r);}catch(e){a=[6,e],o=0;}finally{i=n=0;}if(5&a[0])throw a[1];return {value:a[0]?a[1]:void 0,done:!0}}([a,s])}}},r=t;Object.defineProperty(i,\"__esModule\",{value:!0});var s=\"browser-tabs-lock-key\",c={key:function(e){return o(r,void 0,void 0,(function(){return a(this,(function(e){throw new Error(\"Unsupported\")}))}))},getItem:function(e){return o(r,void 0,void 0,(function(){return a(this,(function(e){throw new Error(\"Unsupported\")}))}))},clear:function(){return o(r,void 0,void 0,(function(){return a(this,(function(e){return [2,window.localStorage.clear()]}))}))},removeItem:function(e){return o(r,void 0,void 0,(function(){return a(this,(function(e){throw new Error(\"Unsupported\")}))}))},setItem:function(e,t){return o(r,void 0,void 0,(function(){return a(this,(function(e){throw new Error(\"Unsupported\")}))}))},keySync:function(e){return window.localStorage.key(e)},getItemSync:function(e){return window.localStorage.getItem(e)},clearSync:function(){return window.localStorage.clear()},removeItemSync:function(e){return window.localStorage.removeItem(e)},setItemSync:function(e,t){return window.localStorage.setItem(e,t)}};function d(e){return new Promise((function(t){return setTimeout(t,e)}))}function u(e){for(var t=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\",i=\"\",o=0;o<e;o++){i+=t[Math.floor(Math.random()*t.length)];}return i}var l=function(){function e(t){this.acquiredIatSet=new Set,this.storageHandler=void 0,this.id=Date.now().toString()+u(15),this.acquireLock=this.acquireLock.bind(this),this.releaseLock=this.releaseLock.bind(this),this.releaseLock__private__=this.releaseLock__private__.bind(this),this.waitForSomethingToChange=this.waitForSomethingToChange.bind(this),this.refreshLockWhileAcquired=this.refreshLockWhileAcquired.bind(this),this.storageHandler=t,void 0===e.waiters&&(e.waiters=[]);}return e.prototype.acquireLock=function(t,i){return void 0===i&&(i=5e3),o(this,void 0,void 0,(function(){var o,n,r,l,h,p,m;return a(this,(function(a){switch(a.label){case 0:o=Date.now()+u(4),n=Date.now()+i,r=s+\"-\"+t,l=void 0===this.storageHandler?c:this.storageHandler,a.label=1;case 1:return Date.now()<n?[4,d(30)]:[3,8];case 2:return a.sent(),null!==l.getItemSync(r)?[3,5]:(h=this.id+\"-\"+t+\"-\"+o,[4,d(Math.floor(25*Math.random()))]);case 3:return a.sent(),l.setItemSync(r,JSON.stringify({id:this.id,iat:o,timeoutKey:h,timeAcquired:Date.now(),timeRefreshed:Date.now()})),[4,d(30)];case 4:return a.sent(),null!==(p=l.getItemSync(r))&&(m=JSON.parse(p)).id===this.id&&m.iat===o?(this.acquiredIatSet.add(o),this.refreshLockWhileAcquired(r,o),[2,!0]):[3,7];case 5:return e.lockCorrector(void 0===this.storageHandler?c:this.storageHandler),[4,this.waitForSomethingToChange(n)];case 6:a.sent(),a.label=7;case 7:return o=Date.now()+u(4),[3,1];case 8:return [2,!1]}}))}))},e.prototype.refreshLockWhileAcquired=function(e,t){return o(this,void 0,void 0,(function(){var i=this;return a(this,(function(r){return setTimeout((function(){return o(i,void 0,void 0,(function(){var i,o,r;return a(this,(function(a){switch(a.label){case 0:return [4,n.default().lock(t)];case 1:return a.sent(),this.acquiredIatSet.has(t)?(i=void 0===this.storageHandler?c:this.storageHandler,null===(o=i.getItemSync(e))?(n.default().unlock(t),[2]):((r=JSON.parse(o)).timeRefreshed=Date.now(),i.setItemSync(e,JSON.stringify(r)),n.default().unlock(t),this.refreshLockWhileAcquired(e,t),[2])):(n.default().unlock(t),[2])}}))}))}),1e3),[2]}))}))},e.prototype.waitForSomethingToChange=function(t){return o(this,void 0,void 0,(function(){return a(this,(function(i){switch(i.label){case 0:return [4,new Promise((function(i){var o=!1,n=Date.now(),a=!1;function r(){if(a||(window.removeEventListener(\"storage\",r),e.removeFromWaiting(r),clearTimeout(s),a=!0),!o){o=!0;var t=50-(Date.now()-n);t>0?setTimeout(i,t):i(null);}}window.addEventListener(\"storage\",r),e.addToWaiting(r);var s=setTimeout(r,Math.max(0,t-Date.now()));}))];case 1:return i.sent(),[2]}}))}))},e.addToWaiting=function(t){this.removeFromWaiting(t),void 0!==e.waiters&&e.waiters.push(t);},e.removeFromWaiting=function(t){void 0!==e.waiters&&(e.waiters=e.waiters.filter((function(e){return e!==t})));},e.notifyWaiters=function(){void 0!==e.waiters&&e.waiters.slice().forEach((function(e){return e()}));},e.prototype.releaseLock=function(e){return o(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return [4,this.releaseLock__private__(e)];case 1:return [2,t.sent()]}}))}))},e.prototype.releaseLock__private__=function(t){return o(this,void 0,void 0,(function(){var i,o,r,d;return a(this,(function(a){switch(a.label){case 0:return i=void 0===this.storageHandler?c:this.storageHandler,o=s+\"-\"+t,null===(r=i.getItemSync(o))?[2]:(d=JSON.parse(r)).id!==this.id?[3,2]:[4,n.default().lock(d.iat)];case 1:a.sent(),this.acquiredIatSet.delete(d.iat),i.removeItemSync(o),n.default().unlock(d.iat),e.notifyWaiters(),a.label=2;case 2:return [2]}}))}))},e.lockCorrector=function(t){for(var i=Date.now()-5e3,o=t,n=[],a=0;;){var r=o.keySync(a);if(null===r)break;n.push(r),a++;}for(var c=!1,d=0;d<n.length;d++){var u=n[d];if(u.includes(s)){var l=o.getItemSync(u);if(null!==l){var h=JSON.parse(l);(void 0===h.timeRefreshed&&h.timeAcquired<i||void 0!==h.timeRefreshed&&h.timeRefreshed<i)&&(o.removeItemSync(u),c=!0);}}}c&&e.notifyWaiters();},e.waiters=void 0,e}();i.default=l;})));const r={timeoutInSeconds:60},s={name:\"auth0-spa-js\",version:\"2.1.3\"},c=()=>Date.now();class d extends Error{constructor(e,t){super(t),this.error=e,this.error_description=t,Object.setPrototypeOf(this,d.prototype);}static fromPayload({error:e,error_description:t}){return new d(e,t)}}class u extends d{constructor(e,t,i,o=null){super(e,t),this.state=i,this.appState=o,Object.setPrototypeOf(this,u.prototype);}}class l extends d{constructor(){super(\"timeout\",\"Timeout\"),Object.setPrototypeOf(this,l.prototype);}}class h extends l{constructor(e){super(),this.popup=e,Object.setPrototypeOf(this,h.prototype);}}class p extends d{constructor(e){super(\"cancelled\",\"Popup closed\"),this.popup=e,Object.setPrototypeOf(this,p.prototype);}}class m extends d{constructor(e,t,i){super(e,t),this.mfa_token=i,Object.setPrototypeOf(this,m.prototype);}}class f extends d{constructor(e,t){super(\"missing_refresh_token\",`Missing Refresh Token (audience: '${g(e,[\"default\"])}', scope: '${g(t)}')`),this.audience=e,this.scope=t,Object.setPrototypeOf(this,f.prototype);}}function g(e,t=[]){return e&&!t.includes(e)?e:\"\"}const w=()=>window.crypto,y=()=>{const e=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_~.\";let t=\"\";return Array.from(w().getRandomValues(new Uint8Array(43))).forEach((i=>t+=e[i%e.length])),t},k=e=>btoa(e),v=t=>{var{clientId:i}=t,o=e(t,[\"clientId\"]);return new URLSearchParams((e=>Object.keys(e).filter((t=>void 0!==e[t])).reduce(((t,i)=>Object.assign(Object.assign({},t),{[i]:e[i]})),{}))(Object.assign({client_id:i},o))).toString()},b=e=>(e=>decodeURIComponent(atob(e).split(\"\").map((e=>\"%\"+(\"00\"+e.charCodeAt(0).toString(16)).slice(-2))).join(\"\")))(e.replace(/_/g,\"/\").replace(/-/g,\"+\")),_=async(e,t)=>{const i=await fetch(e,t);return {ok:i.ok,json:await i.json()}},I=async(e,t,i)=>{const o=new AbortController;let n;return t.signal=o.signal,Promise.race([_(e,t),new Promise(((e,t)=>{n=setTimeout((()=>{o.abort(),t(new Error(\"Timeout when executing 'fetch'\"));}),i);}))]).finally((()=>{clearTimeout(n);}))},S=async(e,t,i,o,n,a,r)=>{return s={auth:{audience:t,scope:i},timeout:n,fetchUrl:e,fetchOptions:o,useFormData:r},c=a,new Promise((function(e,t){const i=new MessageChannel;i.port1.onmessage=function(o){o.data.error?t(new Error(o.data.error)):e(o.data),i.port1.close();},c.postMessage(s,[i.port2]);}));var s,c;},O=async(e,t,i,o,n,a,r=1e4)=>n?S(e,t,i,o,r,n,a):I(e,o,r);async function T(t,i){var{baseUrl:o,timeout:n,audience:a,scope:r,auth0Client:c,useFormData:u}=t,l=e(t,[\"baseUrl\",\"timeout\",\"audience\",\"scope\",\"auth0Client\",\"useFormData\"]);const h=u?v(l):JSON.stringify(l);return await async function(t,i,o,n,a,r,s){let c,u=null;for(let e=0;e<3;e++)try{c=await O(t,o,n,a,r,s,i),u=null;break}catch(e){u=e;}if(u)throw u;const l=c.json,{error:h,error_description:p}=l,g=e(l,[\"error\",\"error_description\"]),{ok:w}=c;if(!w){const e=p||`HTTP error. Unable to fetch ${t}`;if(\"mfa_required\"===h)throw new m(h,e,g.mfa_token);if(\"missing_refresh_token\"===h)throw new f(o,n);throw new d(h||\"request_error\",e)}return g}(`${o}/oauth/token`,n,a||\"default\",r,{method:\"POST\",body:h,headers:{\"Content-Type\":u?\"application/x-www-form-urlencoded\":\"application/json\",\"Auth0-Client\":btoa(JSON.stringify(c||s))}},i,u)}const j=(...e)=>{return (t=e.filter(Boolean).join(\" \").trim().split(/\\s+/),Array.from(new Set(t))).join(\" \");var t;};class C{constructor(e,t=\"@@auth0spajs@@\",i){this.prefix=t,this.suffix=i,this.clientId=e.clientId,this.scope=e.scope,this.audience=e.audience;}toKey(){return [this.prefix,this.clientId,this.audience,this.scope,this.suffix].filter(Boolean).join(\"::\")}static fromKey(e){const[t,i,o,n]=e.split(\"::\");return new C({clientId:i,scope:n,audience:o},t)}static fromCacheEntry(e){const{scope:t,audience:i,client_id:o}=e;return new C({scope:t,audience:i,clientId:o})}}class z{set(e,t){localStorage.setItem(e,JSON.stringify(t));}get(e){const t=window.localStorage.getItem(e);if(t)try{return JSON.parse(t)}catch(e){return}}remove(e){localStorage.removeItem(e);}allKeys(){return Object.keys(window.localStorage).filter((e=>e.startsWith(\"@@auth0spajs@@\")))}}class P{constructor(){this.enclosedCache=function(){let e={};return {set(t,i){e[t]=i;},get(t){const i=e[t];if(i)return i},remove(t){delete e[t];},allKeys:()=>Object.keys(e)}}();}}class x{constructor(e,t,i){this.cache=e,this.keyManifest=t,this.nowProvider=i||c;}async setIdToken(e,t,i){var o;const n=this.getIdTokenCacheKey(e);await this.cache.set(n,{id_token:t,decodedToken:i}),await(null===(o=this.keyManifest)||void 0===o?void 0:o.add(n));}async getIdToken(e){const t=await this.cache.get(this.getIdTokenCacheKey(e.clientId));if(!t&&e.scope&&e.audience){const t=await this.get(e);if(!t)return;if(!t.id_token||!t.decodedToken)return;return {id_token:t.id_token,decodedToken:t.decodedToken}}if(t)return {id_token:t.id_token,decodedToken:t.decodedToken}}async get(e,t=0){var i;let o=await this.cache.get(e.toKey());if(!o){const t=await this.getCacheKeys();if(!t)return;const i=this.matchExistingCacheKey(e,t);i&&(o=await this.cache.get(i));}if(!o)return;const n=await this.nowProvider(),a=Math.floor(n/1e3);return o.expiresAt-t<a?o.body.refresh_token?(o.body={refresh_token:o.body.refresh_token},await this.cache.set(e.toKey(),o),o.body):(await this.cache.remove(e.toKey()),void await(null===(i=this.keyManifest)||void 0===i?void 0:i.remove(e.toKey()))):o.body}async set(e){var t;const i=new C({clientId:e.client_id,scope:e.scope,audience:e.audience}),o=await this.wrapCacheEntry(e);await this.cache.set(i.toKey(),o),await(null===(t=this.keyManifest)||void 0===t?void 0:t.add(i.toKey()));}async clear(e){var t;const i=await this.getCacheKeys();i&&(await i.filter((t=>!e||t.includes(e))).reduce((async(e,t)=>{await e,await this.cache.remove(t);}),Promise.resolve()),await(null===(t=this.keyManifest)||void 0===t?void 0:t.clear()));}async wrapCacheEntry(e){const t=await this.nowProvider();return {body:e,expiresAt:Math.floor(t/1e3)+e.expires_in}}async getCacheKeys(){var e;return this.keyManifest?null===(e=await this.keyManifest.get())||void 0===e?void 0:e.keys:this.cache.allKeys?this.cache.allKeys():void 0}getIdTokenCacheKey(e){return new C({clientId:e},\"@@auth0spajs@@\",\"@@user@@\").toKey()}matchExistingCacheKey(e,t){return t.filter((t=>{var i;const o=C.fromKey(t),n=new Set(o.scope&&o.scope.split(\" \")),a=(null===(i=e.scope)||void 0===i?void 0:i.split(\" \"))||[],r=o.scope&&a.reduce(((e,t)=>e&&n.has(t)),!0);return \"@@auth0spajs@@\"===o.prefix&&o.clientId===e.clientId&&o.audience===e.audience&&r}))[0]}}class Z{constructor(e,t,i){this.storage=e,this.clientId=t,this.cookieDomain=i,this.storageKey=`a0.spajs.txs.${this.clientId}`;}create(e){this.storage.save(this.storageKey,e,{daysUntilExpire:1,cookieDomain:this.cookieDomain});}get(){return this.storage.get(this.storageKey)}remove(){this.storage.remove(this.storageKey,{cookieDomain:this.cookieDomain});}}const K=e=>\"number\"==typeof e,W=[\"iss\",\"aud\",\"exp\",\"nbf\",\"iat\",\"jti\",\"azp\",\"nonce\",\"auth_time\",\"at_hash\",\"c_hash\",\"acr\",\"amr\",\"sub_jwk\",\"cnf\",\"sip_from_tag\",\"sip_date\",\"sip_callid\",\"sip_cseq_num\",\"sip_via_branch\",\"orig\",\"dest\",\"mky\",\"events\",\"toe\",\"txn\",\"rph\",\"sid\",\"vot\",\"vtm\"],E=e=>{if(!e.id_token)throw new Error(\"ID token is required but missing\");const t=(e=>{const t=e.split(\".\"),[i,o,n]=t;if(3!==t.length||!i||!o||!n)throw new Error(\"ID token could not be decoded\");const a=JSON.parse(b(o)),r={__raw:e},s={};return Object.keys(a).forEach((e=>{r[e]=a[e],W.includes(e)||(s[e]=a[e]);})),{encoded:{header:i,payload:o,signature:n},header:JSON.parse(b(i)),claims:r,user:s}})(e.id_token);if(!t.claims.iss)throw new Error(\"Issuer (iss) claim must be a string present in the ID token\");if(t.claims.iss!==e.iss)throw new Error(`Issuer (iss) claim mismatch in the ID token; expected \"${e.iss}\", found \"${t.claims.iss}\"`);if(!t.user.sub)throw new Error(\"Subject (sub) claim must be a string present in the ID token\");if(\"RS256\"!==t.header.alg)throw new Error(`Signature algorithm of \"${t.header.alg}\" is not supported. Expected the ID token to be signed with \"RS256\".`);if(!t.claims.aud||\"string\"!=typeof t.claims.aud&&!Array.isArray(t.claims.aud))throw new Error(\"Audience (aud) claim must be a string or array of strings present in the ID token\");if(Array.isArray(t.claims.aud)){if(!t.claims.aud.includes(e.aud))throw new Error(`Audience (aud) claim mismatch in the ID token; expected \"${e.aud}\" but was not one of \"${t.claims.aud.join(\", \")}\"`);if(t.claims.aud.length>1){if(!t.claims.azp)throw new Error(\"Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values\");if(t.claims.azp!==e.aud)throw new Error(`Authorized Party (azp) claim mismatch in the ID token; expected \"${e.aud}\", found \"${t.claims.azp}\"`)}}else if(t.claims.aud!==e.aud)throw new Error(`Audience (aud) claim mismatch in the ID token; expected \"${e.aud}\" but found \"${t.claims.aud}\"`);if(e.nonce){if(!t.claims.nonce)throw new Error(\"Nonce (nonce) claim must be a string present in the ID token\");if(t.claims.nonce!==e.nonce)throw new Error(`Nonce (nonce) claim mismatch in the ID token; expected \"${e.nonce}\", found \"${t.claims.nonce}\"`)}if(e.max_age&&!K(t.claims.auth_time))throw new Error(\"Authentication Time (auth_time) claim must be a number present in the ID token when Max Age (max_age) is specified\");if(null==t.claims.exp||!K(t.claims.exp))throw new Error(\"Expiration Time (exp) claim must be a number present in the ID token\");if(!K(t.claims.iat))throw new Error(\"Issued At (iat) claim must be a number present in the ID token\");const i=e.leeway||60,o=new Date(e.now||Date.now()),n=new Date(0);if(n.setUTCSeconds(t.claims.exp+i),o>n)throw new Error(`Expiration Time (exp) claim error in the ID token; current time (${o}) is after expiration time (${n})`);if(null!=t.claims.nbf&&K(t.claims.nbf)){const e=new Date(0);if(e.setUTCSeconds(t.claims.nbf-i),o<e)throw new Error(`Not Before time (nbf) claim in the ID token indicates that this token can't be used just yet. Current time (${o}) is before ${e}`)}if(null!=t.claims.auth_time&&K(t.claims.auth_time)){const n=new Date(0);if(n.setUTCSeconds(parseInt(t.claims.auth_time)+e.max_age+i),o>n)throw new Error(`Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Current time (${o}) is after last auth at ${n}`)}if(e.organization){const i=e.organization.trim();if(i.startsWith(\"org_\")){const e=i;if(!t.claims.org_id)throw new Error(\"Organization ID (org_id) claim must be a string present in the ID token\");if(e!==t.claims.org_id)throw new Error(`Organization ID (org_id) claim mismatch in the ID token; expected \"${e}\", found \"${t.claims.org_id}\"`)}else {const e=i.toLowerCase();if(!t.claims.org_name)throw new Error(\"Organization Name (org_name) claim must be a string present in the ID token\");if(e!==t.claims.org_name)throw new Error(`Organization Name (org_name) claim mismatch in the ID token; expected \"${e}\", found \"${t.claims.org_name}\"`)}}return t};var R=o((function(e,i){var o=t&&t.__assign||function(){return o=Object.assign||function(e){for(var t,i=1,o=arguments.length;i<o;i++)for(var n in t=arguments[i])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},o.apply(this,arguments)};function n(e,t){if(!t)return \"\";var i=\"; \"+e;return !0===t?i:i+\"=\"+t}function a(e,t,i){return encodeURIComponent(e).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/\\(/g,\"%28\").replace(/\\)/g,\"%29\")+\"=\"+encodeURIComponent(t).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent)+function(e){if(\"number\"==typeof e.expires){var t=new Date;t.setMilliseconds(t.getMilliseconds()+864e5*e.expires),e.expires=t;}return n(\"Expires\",e.expires?e.expires.toUTCString():\"\")+n(\"Domain\",e.domain)+n(\"Path\",e.path)+n(\"Secure\",e.secure)+n(\"SameSite\",e.sameSite)}(i)}function r(e){for(var t={},i=e?e.split(\"; \"):[],o=/(%[\\dA-F]{2})+/gi,n=0;n<i.length;n++){var a=i[n].split(\"=\"),r=a.slice(1).join(\"=\");'\"'===r.charAt(0)&&(r=r.slice(1,-1));try{t[a[0].replace(o,decodeURIComponent)]=r.replace(o,decodeURIComponent);}catch(e){}}return t}function s(){return r(document.cookie)}function c(e,t,i){document.cookie=a(e,t,o({path:\"/\"},i));}i.__esModule=!0,i.encode=a,i.parse=r,i.getAll=s,i.get=function(e){return s()[e]},i.set=c,i.remove=function(e,t){c(e,\"\",o(o({},t),{expires:-1}));};}));i(R),R.encode,R.parse,R.getAll;var U=R.get,L=R.set,D=R.remove;const X={get(e){const t=U(e);if(void 0!==t)return JSON.parse(t)},save(e,t,i){let o={};\"https:\"===window.location.protocol&&(o={secure:!0,sameSite:\"none\"}),(null==i?void 0:i.daysUntilExpire)&&(o.expires=i.daysUntilExpire),(null==i?void 0:i.cookieDomain)&&(o.domain=i.cookieDomain),L(e,JSON.stringify(t),o);},remove(e,t){let i={};(null==t?void 0:t.cookieDomain)&&(i.domain=t.cookieDomain),D(e,i);}},N={get(e){const t=X.get(e);return t||X.get(`_legacy_${e}`)},save(e,t,i){let o={};\"https:\"===window.location.protocol&&(o={secure:!0}),(null==i?void 0:i.daysUntilExpire)&&(o.expires=i.daysUntilExpire),(null==i?void 0:i.cookieDomain)&&(o.domain=i.cookieDomain),L(`_legacy_${e}`,JSON.stringify(t),o),X.save(e,t,i);},remove(e,t){let i={};(null==t?void 0:t.cookieDomain)&&(i.domain=t.cookieDomain),D(e,i),X.remove(e,t),X.remove(`_legacy_${e}`,t);}},J={get(e){if(\"undefined\"==typeof sessionStorage)return;const t=sessionStorage.getItem(e);return null!=t?JSON.parse(t):void 0},save(e,t){sessionStorage.setItem(e,JSON.stringify(t));},remove(e){sessionStorage.removeItem(e);}};function F(e,t,i){var o=void 0===t?null:t,n=function(e,t){var i=atob(e);if(t){for(var o=new Uint8Array(i.length),n=0,a=i.length;n<a;++n)o[n]=i.charCodeAt(n);return String.fromCharCode.apply(null,new Uint16Array(o.buffer))}return i}(e,void 0!==i&&i),a=n.indexOf(\"\\n\",10)+1,r=n.substring(a)+(o?\"//# sourceMappingURL=\"+o:\"\"),s=new Blob([r],{type:\"application/javascript\"});return URL.createObjectURL(s)}var H,Y,G,V,M=(H=\"Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y2xhc3MgZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQscil7c3VwZXIociksdGhpcy5lcnJvcj10LHRoaXMuZXJyb3JfZGVzY3JpcHRpb249cixPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxlLnByb3RvdHlwZSl9c3RhdGljIGZyb21QYXlsb2FkKHtlcnJvcjp0LGVycm9yX2Rlc2NyaXB0aW9uOnJ9KXtyZXR1cm4gbmV3IGUodCxyKX19Y2xhc3MgdCBleHRlbmRzIGV7Y29uc3RydWN0b3IoZSxzKXtzdXBlcigibWlzc2luZ19yZWZyZXNoX3Rva2VuIixgTWlzc2luZyBSZWZyZXNoIFRva2VuIChhdWRpZW5jZTogJyR7cihlLFsiZGVmYXVsdCJdKX0nLCBzY29wZTogJyR7cihzKX0nKWApLHRoaXMuYXVkaWVuY2U9ZSx0aGlzLnNjb3BlPXMsT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsdC5wcm90b3R5cGUpfX1mdW5jdGlvbiByKGUsdD1bXSl7cmV0dXJuIGUmJiF0LmluY2x1ZGVzKGUpP2U6IiJ9ImZ1bmN0aW9uIj09dHlwZW9mIFN1cHByZXNzZWRFcnJvciYmU3VwcHJlc3NlZEVycm9yO2NvbnN0IHM9ZT0+e3ZhcntjbGllbnRJZDp0fT1lLHI9ZnVuY3Rpb24oZSx0KXt2YXIgcj17fTtmb3IodmFyIHMgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxzKSYmdC5pbmRleE9mKHMpPDAmJihyW3NdPWVbc10pO2lmKG51bGwhPWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxzLmxlbmd0aDtvKyspdC5pbmRleE9mKHNbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHNbb10pJiYocltzW29dXT1lW3Nbb11dKX1yZXR1cm4gcn0oZSxbImNsaWVudElkIl0pO3JldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKChlPT5PYmplY3Qua2V5cyhlKS5maWx0ZXIoKHQ9PnZvaWQgMCE9PWVbdF0pKS5yZWR1Y2UoKCh0LHIpPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse1tyXTplW3JdfSkpLHt9KSkoT2JqZWN0LmFzc2lnbih7Y2xpZW50X2lkOnR9LHIpKSkudG9TdHJpbmcoKX07bGV0IG89e307Y29uc3Qgbj0oZSx0KT0+YCR7ZX18JHt0fWA7YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKGFzeW5jKHtkYXRhOnt0aW1lb3V0OmUsYXV0aDpyLGZldGNoVXJsOmksZmV0Y2hPcHRpb25zOmMsdXNlRm9ybURhdGE6YX0scG9ydHM6W3BdfSk9PntsZXQgZjtjb25zdHthdWRpZW5jZTp1LHNjb3BlOmx9PXJ8fHt9O3RyeXtjb25zdCByPWE/KGU9Pntjb25zdCB0PW5ldyBVUkxTZWFyY2hQYXJhbXMoZSkscj17fTtyZXR1cm4gdC5mb3JFYWNoKCgoZSx0KT0+e3JbdF09ZX0pKSxyfSkoYy5ib2R5KTpKU09OLnBhcnNlKGMuYm9keSk7aWYoIXIucmVmcmVzaF90b2tlbiYmInJlZnJlc2hfdG9rZW4iPT09ci5ncmFudF90eXBlKXtjb25zdCBlPSgoZSx0KT0+b1tuKGUsdCldKSh1LGwpO2lmKCFlKXRocm93IG5ldyB0KHUsbCk7Yy5ib2R5PWE/cyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse3JlZnJlc2hfdG9rZW46ZX0pKTpKU09OLnN0cmluZ2lmeShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse3JlZnJlc2hfdG9rZW46ZX0pKX1sZXQgaCxnOyJmdW5jdGlvbiI9PXR5cGVvZiBBYm9ydENvbnRyb2xsZXImJihoPW5ldyBBYm9ydENvbnRyb2xsZXIsYy5zaWduYWw9aC5zaWduYWwpO3RyeXtnPWF3YWl0IFByb21pc2UucmFjZShbKGQ9ZSxuZXcgUHJvbWlzZSgoZT0+c2V0VGltZW91dChlLGQpKSkpLGZldGNoKGksT2JqZWN0LmFzc2lnbih7fSxjKSldKX1jYXRjaChlKXtyZXR1cm4gdm9pZCBwLnBvc3RNZXNzYWdlKHtlcnJvcjplLm1lc3NhZ2V9KX1pZighZylyZXR1cm4gaCYmaC5hYm9ydCgpLHZvaWQgcC5wb3N0TWVzc2FnZSh7ZXJyb3I6IlRpbWVvdXQgd2hlbiBleGVjdXRpbmcgJ2ZldGNoJyJ9KTtmPWF3YWl0IGcuanNvbigpLGYucmVmcmVzaF90b2tlbj8oKChlLHQscik9PntvW24odCxyKV09ZX0pKGYucmVmcmVzaF90b2tlbix1LGwpLGRlbGV0ZSBmLnJlZnJlc2hfdG9rZW4pOigoZSx0KT0+e2RlbGV0ZSBvW24oZSx0KV19KSh1LGwpLHAucG9zdE1lc3NhZ2Uoe29rOmcub2ssanNvbjpmfSl9Y2F0Y2goZSl7cC5wb3N0TWVzc2FnZSh7b2s6ITEsanNvbjp7ZXJyb3I6ZS5lcnJvcixlcnJvcl9kZXNjcmlwdGlvbjplLm1lc3NhZ2V9fSl9dmFyIGR9KSl9KCk7Cgo=\",Y=null,G=!1,function(e){return V=V||F(H,Y,G),new Worker(V,e)});const A={};class B{constructor(e,t){this.cache=e,this.clientId=t,this.manifestKey=this.createManifestKeyFrom(this.clientId);}async add(e){var t;const i=new Set((null===(t=await this.cache.get(this.manifestKey))||void 0===t?void 0:t.keys)||[]);i.add(e),await this.cache.set(this.manifestKey,{keys:[...i]});}async remove(e){const t=await this.cache.get(this.manifestKey);if(t){const i=new Set(t.keys);return i.delete(e),i.size>0?await this.cache.set(this.manifestKey,{keys:[...i]}):await this.cache.remove(this.manifestKey)}}get(){return this.cache.get(this.manifestKey)}clear(){return this.cache.remove(this.manifestKey)}createManifestKeyFrom(e){return `@@auth0spajs@@::${e}`}}const $={memory:()=>(new P).enclosedCache,localstorage:()=>new z},q=e=>$[e],Q=t=>{const{openUrl:i,onRedirect:o}=t,n=e(t,[\"openUrl\",\"onRedirect\"]);return Object.assign(Object.assign({},n),{openUrl:!1===i||i?i:o})},ee=new a;class te{constructor(e){let t,i;if(this.userCache=(new P).enclosedCache,this.defaultOptions={authorizationParams:{scope:\"openid profile email\"},useRefreshTokensFallback:!1,useFormData:!0},this._releaseLockOnPageHide=async()=>{await ee.releaseLock(\"auth0.lock.getTokenSilently\"),window.removeEventListener(\"pagehide\",this._releaseLockOnPageHide);},this.options=Object.assign(Object.assign(Object.assign({},this.defaultOptions),e),{authorizationParams:Object.assign(Object.assign({},this.defaultOptions.authorizationParams),e.authorizationParams)}),\"undefined\"!=typeof window&&(()=>{if(!w())throw new Error(\"For security reasons, `window.crypto` is required to run `auth0-spa-js`.\");if(void 0===w().subtle)throw new Error(\"\\n auth0-spa-js must run on a secure origin. See https://github.com/auth0/auth0-spa-js/blob/main/FAQ.md#why-do-i-get-auth0-spa-js-must-run-on-a-secure-origin for more information.\\n \")})(),e.cache&&e.cacheLocation&&console.warn(\"Both `cache` and `cacheLocation` options have been specified in the Auth0Client configuration; ignoring `cacheLocation` and using `cache`.\"),e.cache)i=e.cache;else {if(t=e.cacheLocation||\"memory\",!q(t))throw new Error(`Invalid cache location \"${t}\"`);i=q(t)();}this.httpTimeoutMs=e.httpTimeoutInSeconds?1e3*e.httpTimeoutInSeconds:1e4,this.cookieStorage=!1===e.legacySameSiteCookie?X:N,this.orgHintCookieName=`auth0.${this.options.clientId}.organization_hint`,this.isAuthenticatedCookieName=(e=>`auth0.${e}.is.authenticated`)(this.options.clientId),this.sessionCheckExpiryDays=e.sessionCheckExpiryDays||1;const o=e.useCookiesForTransactions?this.cookieStorage:J;var n;this.scope=j(\"openid\",this.options.authorizationParams.scope,this.options.useRefreshTokens?\"offline_access\":\"\"),this.transactionManager=new Z(o,this.options.clientId,this.options.cookieDomain),this.nowProvider=this.options.nowProvider||c,this.cacheManager=new x(i,i.allKeys?void 0:new B(i,this.options.clientId),this.nowProvider),this.domainUrl=(n=this.options.domain,/^https?:\\/\\//.test(n)?n:`https://${n}`),this.tokenIssuer=((e,t)=>e?e.startsWith(\"https://\")?e:`https://${e}/`:`${t}/`)(this.options.issuer,this.domainUrl),\"undefined\"!=typeof window&&window.Worker&&this.options.useRefreshTokens&&\"memory\"===t&&(this.options.workerUrl?this.worker=new Worker(this.options.workerUrl):this.worker=new M);}_url(e){const t=encodeURIComponent(btoa(JSON.stringify(this.options.auth0Client||s)));return `${this.domainUrl}${e}&auth0Client=${t}`}_authorizeUrl(e){return this._url(`/authorize?${v(e)}`)}async _verifyIdToken(e,t,i){const o=await this.nowProvider();return E({iss:this.tokenIssuer,aud:this.options.clientId,id_token:e,nonce:t,organization:i,leeway:this.options.leeway,max_age:(n=this.options.authorizationParams.max_age,\"string\"!=typeof n?n:parseInt(n,10)||void 0),now:o});var n;}_processOrgHint(e){e?this.cookieStorage.save(this.orgHintCookieName,e,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}):this.cookieStorage.remove(this.orgHintCookieName,{cookieDomain:this.options.cookieDomain});}async _prepareAuthorizeUrl(e,t,i){const o=k(y()),n=k(y()),a=y(),r=(e=>{const t=new Uint8Array(e);return (e=>{const t={\"+\":\"-\",\"/\":\"_\",\"=\":\"\"};return e.replace(/[+/=]/g,(e=>t[e]))})(window.btoa(String.fromCharCode(...Array.from(t))))})(await(async e=>{const t=w().subtle.digest({name:\"SHA-256\"},(new TextEncoder).encode(e));return await t})(a)),s=((e,t,i,o,n,a,r,s)=>Object.assign(Object.assign(Object.assign({client_id:e.clientId},e.authorizationParams),i),{scope:j(t,i.scope),response_type:\"code\",response_mode:s||\"query\",state:o,nonce:n,redirect_uri:r||e.authorizationParams.redirect_uri,code_challenge:a,code_challenge_method:\"S256\"}))(this.options,this.scope,e,o,n,r,e.redirect_uri||this.options.authorizationParams.redirect_uri||i,null==t?void 0:t.response_mode),c=this._authorizeUrl(s);return {nonce:n,code_verifier:a,scope:s.scope,audience:s.audience||\"default\",redirect_uri:s.redirect_uri,state:o,url:c}}async loginWithPopup(e,t){var i;if(e=e||{},!(t=t||{}).popup&&(t.popup=(e=>{const t=window.screenX+(window.innerWidth-400)/2,i=window.screenY+(window.innerHeight-600)/2;return window.open(e,\"auth0:authorize:popup\",`left=${t},top=${i},width=400,height=600,resizable,scrollbars=yes,status=1`)})(\"\"),!t.popup))throw new Error(\"Unable to open a popup for loginWithPopup - window.open returned `null`\");const o=await this._prepareAuthorizeUrl(e.authorizationParams||{},{response_mode:\"web_message\"},window.location.origin);t.popup.location.href=o.url;const n=await(e=>new Promise(((t,i)=>{let o;const n=setInterval((()=>{e.popup&&e.popup.closed&&(clearInterval(n),clearTimeout(a),window.removeEventListener(\"message\",o,!1),i(new p(e.popup)));}),1e3),a=setTimeout((()=>{clearInterval(n),i(new h(e.popup)),window.removeEventListener(\"message\",o,!1);}),1e3*(e.timeoutInSeconds||60));o=function(r){if(r.data&&\"authorization_response\"===r.data.type){if(clearTimeout(a),clearInterval(n),window.removeEventListener(\"message\",o,!1),e.popup.close(),r.data.response.error)return i(d.fromPayload(r.data.response));t(r.data.response);}},window.addEventListener(\"message\",o);})))(Object.assign(Object.assign({},t),{timeoutInSeconds:t.timeoutInSeconds||this.options.authorizeTimeoutInSeconds||60}));if(o.state!==n.state)throw new d(\"state_mismatch\",\"Invalid state\");const a=(null===(i=e.authorizationParams)||void 0===i?void 0:i.organization)||this.options.authorizationParams.organization;await this._requestToken({audience:o.audience,scope:o.scope,code_verifier:o.code_verifier,grant_type:\"authorization_code\",code:n.code,redirect_uri:o.redirect_uri},{nonceIn:o.nonce,organization:a});}async getUser(){var e;const t=await this._getIdTokenFromCache();return null===(e=null==t?void 0:t.decodedToken)||void 0===e?void 0:e.user}async getIdTokenClaims(){var e;const t=await this._getIdTokenFromCache();return null===(e=null==t?void 0:t.decodedToken)||void 0===e?void 0:e.claims}async loginWithRedirect(t={}){var i;const o=Q(t),{openUrl:n,fragment:a,appState:r}=o,s=e(o,[\"openUrl\",\"fragment\",\"appState\"]),c=(null===(i=s.authorizationParams)||void 0===i?void 0:i.organization)||this.options.authorizationParams.organization,d=await this._prepareAuthorizeUrl(s.authorizationParams||{}),{url:u}=d,l=e(d,[\"url\"]);this.transactionManager.create(Object.assign(Object.assign(Object.assign({},l),{appState:r}),c&&{organization:c}));const h=a?`${u}#${a}`:u;n?await n(h):window.location.assign(h);}async handleRedirectCallback(e=window.location.href){const t=e.split(\"?\").slice(1);if(0===t.length)throw new Error(\"There are no query params available for parsing.\");const{state:i,code:o,error:n,error_description:a}=(e=>{e.indexOf(\"#\")>-1&&(e=e.substring(0,e.indexOf(\"#\")));const t=new URLSearchParams(e);return {state:t.get(\"state\"),code:t.get(\"code\")||void 0,error:t.get(\"error\")||void 0,error_description:t.get(\"error_description\")||void 0}})(t.join(\"\")),r=this.transactionManager.get();if(!r)throw new d(\"missing_transaction\",\"Invalid state\");if(this.transactionManager.remove(),n)throw new u(n,a||n,i,r.appState);if(!r.code_verifier||r.state&&r.state!==i)throw new d(\"state_mismatch\",\"Invalid state\");const s=r.organization,c=r.nonce,l=r.redirect_uri;return await this._requestToken(Object.assign({audience:r.audience,scope:r.scope,code_verifier:r.code_verifier,grant_type:\"authorization_code\",code:o},l?{redirect_uri:l}:{}),{nonceIn:c,organization:s}),{appState:r.appState}}async checkSession(e){if(!this.cookieStorage.get(this.isAuthenticatedCookieName)){if(!this.cookieStorage.get(\"auth0.is.authenticated\"))return;this.cookieStorage.save(this.isAuthenticatedCookieName,!0,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}),this.cookieStorage.remove(\"auth0.is.authenticated\");}try{await this.getTokenSilently(e);}catch(e){}}async getTokenSilently(e={}){var t;const i=Object.assign(Object.assign({cacheMode:\"on\"},e),{authorizationParams:Object.assign(Object.assign(Object.assign({},this.options.authorizationParams),e.authorizationParams),{scope:j(this.scope,null===(t=e.authorizationParams)||void 0===t?void 0:t.scope)})}),o=await((e,t)=>{let i=A[t];return i||(i=e().finally((()=>{delete A[t],i=null;})),A[t]=i),i})((()=>this._getTokenSilently(i)),`${this.options.clientId}::${i.authorizationParams.audience}::${i.authorizationParams.scope}`);return e.detailedResponse?o:null==o?void 0:o.access_token}async _getTokenSilently(t){const{cacheMode:i}=t,o=e(t,[\"cacheMode\"]);if(\"off\"!==i){const e=await this._getEntryFromCache({scope:o.authorizationParams.scope,audience:o.authorizationParams.audience||\"default\",clientId:this.options.clientId});if(e)return e}if(\"cache-only\"!==i){if(!await(async(e,t=3)=>{for(let i=0;i<t;i++)if(await e())return !0;return !1})((()=>ee.acquireLock(\"auth0.lock.getTokenSilently\",5e3)),10))throw new l;try{if(window.addEventListener(\"pagehide\",this._releaseLockOnPageHide),\"off\"!==i){const e=await this._getEntryFromCache({scope:o.authorizationParams.scope,audience:o.authorizationParams.audience||\"default\",clientId:this.options.clientId});if(e)return e}const e=this.options.useRefreshTokens?await this._getTokenUsingRefreshToken(o):await this._getTokenFromIFrame(o),{id_token:t,access_token:n,oauthTokenScope:a,expires_in:r}=e;return Object.assign(Object.assign({id_token:t,access_token:n},a?{scope:a}:null),{expires_in:r})}finally{await ee.releaseLock(\"auth0.lock.getTokenSilently\"),window.removeEventListener(\"pagehide\",this._releaseLockOnPageHide);}}}async getTokenWithPopup(e={},t={}){var i;const o=Object.assign(Object.assign({},e),{authorizationParams:Object.assign(Object.assign(Object.assign({},this.options.authorizationParams),e.authorizationParams),{scope:j(this.scope,null===(i=e.authorizationParams)||void 0===i?void 0:i.scope)})});t=Object.assign(Object.assign({},r),t),await this.loginWithPopup(o,t);return (await this.cacheManager.get(new C({scope:o.authorizationParams.scope,audience:o.authorizationParams.audience||\"default\",clientId:this.options.clientId}))).access_token}async isAuthenticated(){return !!await this.getUser()}_buildLogoutUrl(t){null!==t.clientId?t.clientId=t.clientId||this.options.clientId:delete t.clientId;const i=t.logoutParams||{},{federated:o}=i,n=e(i,[\"federated\"]),a=o?\"&federated\":\"\";return this._url(`/v2/logout?${v(Object.assign({clientId:t.clientId},n))}`)+a}async logout(t={}){const i=Q(t),{openUrl:o}=i,n=e(i,[\"openUrl\"]);null===t.clientId?await this.cacheManager.clear():await this.cacheManager.clear(t.clientId||this.options.clientId),this.cookieStorage.remove(this.orgHintCookieName,{cookieDomain:this.options.cookieDomain}),this.cookieStorage.remove(this.isAuthenticatedCookieName,{cookieDomain:this.options.cookieDomain}),this.userCache.remove(\"@@user@@\");const a=this._buildLogoutUrl(n);o?await o(a):!1!==o&&window.location.assign(a);}async _getTokenFromIFrame(e){const t=Object.assign(Object.assign({},e.authorizationParams),{prompt:\"none\"}),i=this.cookieStorage.get(this.orgHintCookieName);i&&!t.organization&&(t.organization=i);const{url:o,state:n,nonce:a,code_verifier:r,redirect_uri:s,scope:c,audience:u}=await this._prepareAuthorizeUrl(t,{response_mode:\"web_message\"},window.location.origin);try{if(window.crossOriginIsolated)throw new d(\"login_required\",\"The application is running in a Cross-Origin Isolated context, silently retrieving a token without refresh token is not possible.\");const i=e.timeoutInSeconds||this.options.authorizeTimeoutInSeconds,h=await((e,t,i=60)=>new Promise(((o,n)=>{const a=window.document.createElement(\"iframe\");a.setAttribute(\"width\",\"0\"),a.setAttribute(\"height\",\"0\"),a.style.display=\"none\";const r=()=>{window.document.body.contains(a)&&(window.document.body.removeChild(a),window.removeEventListener(\"message\",s,!1));};let s;const c=setTimeout((()=>{n(new l),r();}),1e3*i);s=function(e){if(e.origin!=t)return;if(!e.data||\"authorization_response\"!==e.data.type)return;const i=e.source;i&&i.close(),e.data.response.error?n(d.fromPayload(e.data.response)):o(e.data.response),clearTimeout(c),window.removeEventListener(\"message\",s,!1),setTimeout(r,2e3);},window.addEventListener(\"message\",s,!1),window.document.body.appendChild(a),a.setAttribute(\"src\",e);})))(o,this.domainUrl,i);if(n!==h.state)throw new d(\"state_mismatch\",\"Invalid state\");const p=await this._requestToken(Object.assign(Object.assign({},e.authorizationParams),{code_verifier:r,code:h.code,grant_type:\"authorization_code\",redirect_uri:s,timeout:e.authorizationParams.timeout||this.httpTimeoutMs}),{nonceIn:a,organization:t.organization});return Object.assign(Object.assign({},p),{scope:c,oauthTokenScope:p.scope,audience:u})}catch(e){throw \"login_required\"===e.error&&this.logout({openUrl:!1}),e}}async _getTokenUsingRefreshToken(e){const t=await this.cacheManager.get(new C({scope:e.authorizationParams.scope,audience:e.authorizationParams.audience||\"default\",clientId:this.options.clientId}));if(!(t&&t.refresh_token||this.worker)){if(this.options.useRefreshTokensFallback)return await this._getTokenFromIFrame(e);throw new f(e.authorizationParams.audience||\"default\",e.authorizationParams.scope)}const i=e.authorizationParams.redirect_uri||this.options.authorizationParams.redirect_uri||window.location.origin,o=\"number\"==typeof e.timeoutInSeconds?1e3*e.timeoutInSeconds:null;try{const n=await this._requestToken(Object.assign(Object.assign(Object.assign({},e.authorizationParams),{grant_type:\"refresh_token\",refresh_token:t&&t.refresh_token,redirect_uri:i}),o&&{timeout:o}));return Object.assign(Object.assign({},n),{scope:e.authorizationParams.scope,oauthTokenScope:n.scope,audience:e.authorizationParams.audience||\"default\"})}catch(t){if((t.message.indexOf(\"Missing Refresh Token\")>-1||t.message&&t.message.indexOf(\"invalid refresh token\")>-1)&&this.options.useRefreshTokensFallback)return await this._getTokenFromIFrame(e);throw t}}async _saveEntryInCache(t){const{id_token:i,decodedToken:o}=t,n=e(t,[\"id_token\",\"decodedToken\"]);this.userCache.set(\"@@user@@\",{id_token:i,decodedToken:o}),await this.cacheManager.setIdToken(this.options.clientId,t.id_token,t.decodedToken),await this.cacheManager.set(n);}async _getIdTokenFromCache(){const e=this.options.authorizationParams.audience||\"default\",t=await this.cacheManager.getIdToken(new C({clientId:this.options.clientId,audience:e,scope:this.scope})),i=this.userCache.get(\"@@user@@\");return t&&t.id_token===(null==i?void 0:i.id_token)?i:(this.userCache.set(\"@@user@@\",t),t)}async _getEntryFromCache({scope:e,audience:t,clientId:i}){const o=await this.cacheManager.get(new C({scope:e,audience:t,clientId:i}),60);if(o&&o.access_token){const{access_token:e,oauthTokenScope:t,expires_in:i}=o,n=await this._getIdTokenFromCache();return n&&Object.assign(Object.assign({id_token:n.id_token,access_token:e},t?{scope:t}:null),{expires_in:i})}}async _requestToken(e,t){const{nonceIn:i,organization:o}=t||{},n=await T(Object.assign({baseUrl:this.domainUrl,client_id:this.options.clientId,auth0Client:this.options.auth0Client,useFormData:this.options.useFormData,timeout:this.httpTimeoutMs},e),this.worker),a=await this._verifyIdToken(n.id_token,i,o);return await this._saveEntryInCache(Object.assign(Object.assign(Object.assign(Object.assign({},n),{decodedToken:a,scope:e.scope,audience:e.audience||\"default\"}),n.scope?{oauthTokenScope:n.scope}:null),{client_id:this.options.clientId})),this.cookieStorage.save(this.isAuthenticatedCookieName,!0,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}),this._processOrgHint(o||a.claims.org_id),Object.assign(Object.assign({},n),{decodedToken:a})}}class ie{}\n\n/**\r\n * The initial auth state.\r\n */\r\nvar initialAuthState = {\r\n isAuthenticated: false,\r\n isLoading: true,\r\n};\n\n/**\r\n * @ignore\r\n */\r\nvar stub = function () {\r\n throw new Error('You forgot to wrap your component in <Auth0Provider>.');\r\n};\r\n/**\r\n * @ignore\r\n */\r\nvar initialContext = __assign(__assign({}, initialAuthState), { buildAuthorizeUrl: stub, buildLogoutUrl: stub, getAccessTokenSilently: stub, getAccessTokenWithPopup: stub, getIdTokenClaims: stub, loginWithRedirect: stub, loginWithPopup: stub, logout: stub, handleRedirectCallback: stub });\r\n/**\r\n * The Auth0 Context\r\n */\r\nvar Auth0Context = createContext(initialContext);\n\n/**\r\n * An OAuth2 error will come from the authorization server and will have at least an `error` property which will\r\n * be the error code. And possibly an `error_description` property\r\n *\r\n * See: https://openid.net/specs/openid-connect-core-1_0.html#rfc.section.3.1.2.6\r\n */\r\nvar OAuthError = /** @class */ (function (_super) {\r\n __extends(OAuthError, _super);\r\n function OAuthError(error, error_description) {\r\n var _this = _super.call(this, error_description || error) || this;\r\n _this.error = error;\r\n _this.error_description = error_description;\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(_this, OAuthError.prototype);\r\n return _this;\r\n }\r\n return OAuthError;\r\n}(Error));\n\nvar CODE_RE = /[?&]code=[^&]+/;\r\nvar STATE_RE = /[?&]state=[^&]+/;\r\nvar ERROR_RE = /[?&]error=[^&]+/;\r\nvar hasAuthParams = function (searchParams) {\r\n if (searchParams === void 0) { searchParams = window.location.search; }\r\n return (CODE_RE.test(searchParams) || ERROR_RE.test(searchParams)) &&\r\n STATE_RE.test(searchParams);\r\n};\r\nvar normalizeErrorFn = function (fallbackMessage) {\r\n return function (error) {\r\n if (error instanceof Error) {\r\n return error;\r\n }\r\n // try to check errors of the following form: {error: string; error_description?: string}\r\n if (error !== null &&\r\n typeof error === 'object' &&\r\n 'error' in error &&\r\n typeof error.error === 'string') {\r\n if ('error_description' in error &&\r\n typeof error.error_description === 'string') {\r\n return new OAuthError(error.error, error.error_description);\r\n }\r\n return new OAuthError(error.error);\r\n }\r\n return new Error(fallbackMessage);\r\n };\r\n};\r\nvar loginError = normalizeErrorFn('Login failed');\r\nvar tokenError = normalizeErrorFn('Get access token failed');\r\n/**\r\n * @ignore\r\n * Helper function to map the v1 `redirectUri` option to the v2 `authorizationParams.redirect_uri`\r\n * and log a warning.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nvar deprecateRedirectUri = function (options) {\r\n var _a;\r\n if (options === null || options === void 0 ? void 0 : options.redirectUri) {\r\n console.warn('Using `redirectUri` has been deprecated, please use `authorizationParams.redirect_uri` instead as `redirectUri` will be no longer supported in a future version');\r\n options.authorizationParams = options.authorizationParams || {};\r\n options.authorizationParams.redirect_uri = options.redirectUri;\r\n delete options.redirectUri;\r\n }\r\n if ((_a = options === null || options === void 0 ? void 0 : options.authorizationParams) === null || _a === void 0 ? void 0 : _a.redirectUri) {\r\n console.warn('Using `authorizationParams.redirectUri` has been deprecated, please use `authorizationParams.redirect_uri` instead as `authorizationParams.redirectUri` will be removed in a future version');\r\n options.authorizationParams.redirect_uri =\r\n options.authorizationParams.redirectUri;\r\n delete options.authorizationParams.redirectUri;\r\n }\r\n};\n\n/**\r\n * Handles how that state changes in the `useAuth0` hook.\r\n */\r\nvar reducer = function (state, action) {\r\n switch (action.type) {\r\n case 'LOGIN_POPUP_STARTED':\r\n return __assign(__assign({}, state), { isLoading: true });\r\n case 'LOGIN_POPUP_COMPLETE':\r\n case 'INITIALISED':\r\n return __assign(__assign({}, state), { isAuthenticated: !!action.user, user: action.user, isLoading: false, error: undefined });\r\n case 'HANDLE_REDIRECT_COMPLETE':\r\n case 'GET_ACCESS_TOKEN_COMPLETE':\r\n if (state.user === action.user) {\r\n return state;\r\n }\r\n return __assign(__assign({}, state), { isAuthenticated: !!action.user, user: action.user });\r\n case 'LOGOUT':\r\n return __assign(__assign({}, state), { isAuthenticated: false, user: undefined });\r\n case 'ERROR':\r\n return __assign(__assign({}, state), { isLoading: false, error: action.error });\r\n }\r\n};\n\n/**\r\n * @ignore\r\n */\r\nvar toAuth0ClientOptions = function (opts) {\r\n deprecateRedirectUri(opts);\r\n return __assign(__assign({}, opts), { auth0Client: {\r\n name: 'auth0-react',\r\n version: '2.2.4',\r\n } });\r\n};\r\n/**\r\n * @ignore\r\n */\r\nvar defaultOnRedirectCallback = function (appState) {\r\n window.history.replaceState({}, document.title, (appState === null || appState === void 0 ? void 0 : appState.returnTo) || window.location.pathname);\r\n};\r\n/**\r\n * ```jsx\r\n * <Auth0Provider\r\n * domain={domain}\r\n * clientId={clientId}\r\n * authorizationParams={{ redirect_uri: window.location.origin }}}>\r\n * <MyApp />\r\n * </Auth0Provider>\r\n * ```\r\n *\r\n * Provides the Auth0Context to its child components.\r\n */\r\nvar Auth0Provider = function (opts) {\r\n var children = opts.children, skipRedirectCallback = opts.skipRedirectCallback, _a = opts.onRedirectCallback, onRedirectCallback = _a === void 0 ? defaultOnRedirectCallback : _a, _b = opts.context, context = _b === void 0 ? Auth0Context : _b, clientOpts = __rest(opts, [\"children\", \"skipRedirectCallback\", \"onRedirectCallback\", \"context\"]);\r\n var client = useState(function () { return new te(toAuth0ClientOptions(clientOpts)); })[0];\r\n var _c = useReducer(reducer, initialAuthState), state = _c[0], dispatch = _c[1];\r\n var didInitialise = useRef(false);\r\n useEffect(function () {\r\n if (didInitialise.current) {\r\n return;\r\n }\r\n didInitialise.current = true;\r\n (function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var user, appState, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 7, , 8]);\r\n user = void 0;\r\n if (!(hasAuthParams() && !skipRedirectCallback)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, client.handleRedirectCallback()];\r\n case 1:\r\n appState = (_a.sent()).appState;\r\n return [4 /*yield*/, client.getUser()];\r\n case 2:\r\n user = _a.sent();\r\n onRedirectCallback(appState, user);\r\n return [3 /*break*/, 6];\r\n case 3: return [4 /*yield*/, client.checkSession()];\r\n case 4:\r\n _a.sent();\r\n return [4 /*yield*/, client.getUser()];\r\n case 5:\r\n user = _a.sent();\r\n _a.label = 6;\r\n case 6:\r\n dispatch({ type: 'INITIALISED', user: user });\r\n return [3 /*break*/, 8];\r\n case 7:\r\n error_1 = _a.sent();\r\n dispatch({ type: 'ERROR', error: loginError(error_1) });\r\n return [3 /*break*/, 8];\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n }); })();\r\n }, [client, onRedirectCallback, skipRedirectCallback]);\r\n var loginWithRedirect = useCallback(function (opts) {\r\n deprecateRedirectUri(opts);\r\n return client.loginWithRedirect(opts);\r\n }, [client]);\r\n var loginWithPopup = useCallback(function (options, config) { return __awaiter(void 0, void 0, void 0, function () {\r\n var error_2, user;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n dispatch({ type: 'LOGIN_POPUP_STARTED' });\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, client.loginWithPopup(options, config)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n error_2 = _a.sent();\r\n dispatch({ type: 'ERROR', error: loginError(error_2) });\r\n return [2 /*return*/];\r\n case 4: return [4 /*yield*/, client.getUser()];\r\n case 5:\r\n user = _a.sent();\r\n dispatch({ type: 'LOGIN_POPUP_COMPLETE', user: user });\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); }, [client]);\r\n var logout = useCallback(function (opts) {\r\n if (opts === void 0) { opts = {}; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, client.logout(opts)];\r\n case 1:\r\n _a.sent();\r\n if (opts.openUrl || opts.openUrl === false) {\r\n dispatch({ type: 'LOGOUT' });\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n }, [client]);\r\n var getAccessTokenSilently = useCallback(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function (opts) { return __awaiter(void 0, void 0, void 0, function () {\r\n var token, error_3, _a;\r\n var _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n _c.trys.push([0, 2, 3, 5]);\r\n return [4 /*yield*/, client.getTokenSilently(opts)];\r\n case 1:\r\n token = _c.sent();\r\n return [3 /*break*/, 5];\r\n case 2:\r\n error_3 = _c.sent();\r\n throw tokenError(error_3);\r\n case 3:\r\n _a = dispatch;\r\n _b = {\r\n type: 'GET_ACCESS_TOKEN_COMPLETE'\r\n };\r\n return [4 /*yield*/, client.getUser()];\r\n case 4:\r\n _a.apply(void 0, [(_b.user = _c.sent(),\r\n _b)]);\r\n return [7 /*endfinally*/];\r\n case 5: return [2 /*return*/, token];\r\n }\r\n });\r\n }); }, [client]);\r\n var getAccessTokenWithPopup = useCallback(function (opts, config) { return __awaiter(void 0, void 0, void 0, function () {\r\n var token, error_4, _a;\r\n var _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n _c.trys.push([0, 2, 3, 5]);\r\n return [4 /*yield*/, client.getTokenWithPopup(opts, config)];\r\n case 1:\r\n token = _c.sent();\r\n return [3 /*break*/, 5];\r\n case 2:\r\n error_4 = _c.sent();\r\n throw tokenError(error_4);\r\n case 3:\r\n _a = dispatch;\r\n _b = {\r\n type: 'GET_ACCESS_TOKEN_COMPLETE'\r\n };\r\n return [4 /*yield*/, client.getUser()];\r\n case 4:\r\n _a.apply(void 0, [(_b.user = _c.sent(),\r\n _b)]);\r\n return [7 /*endfinally*/];\r\n case 5: return [2 /*return*/, token];\r\n }\r\n });\r\n }); }, [client]);\r\n var getIdTokenClaims = useCallback(function () { return client.getIdTokenClaims(); }, [client]);\r\n var handleRedirectCallback = useCallback(function (url) { return __awaiter(void 0, void 0, void 0, function () {\r\n var error_5, _a;\r\n var _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n _c.trys.push([0, 2, 3, 5]);\r\n return [4 /*yield*/, client.handleRedirectCallback(url)];\r\n case 1: return [2 /*return*/, _c.sent()];\r\n case 2:\r\n error_5 = _c.sent();\r\n throw tokenError(error_5);\r\n case 3:\r\n _a = dispatch;\r\n _b = {\r\n type: 'HANDLE_REDIRECT_COMPLETE'\r\n };\r\n return [4 /*yield*/, client.getUser()];\r\n case 4:\r\n _a.apply(void 0, [(_b.user = _c.sent(),\r\n _b)]);\r\n return [7 /*endfinally*/];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n }); }, [client]);\r\n var contextValue = useMemo(function () {\r\n return __assign(__assign({}, state), { getAccessTokenSilently: getAccessTokenSilently, getAccessTokenWithPopup: getAccessTokenWithPopup, getIdTokenClaims: getIdTokenClaims, loginWithRedirect: loginWithRedirect, loginWithPopup: loginWithPopup, logout: logout, handleRedirectCallback: handleRedirectCallback });\r\n }, [\r\n state,\r\n getAccessTokenSilently,\r\n getAccessTokenWithPopup,\r\n getIdTokenClaims,\r\n loginWithRedirect,\r\n loginWithPopup,\r\n logout,\r\n handleRedirectCallback,\r\n ]);\r\n return React.createElement(context.Provider, { value: contextValue }, children);\r\n};\n\n/**\r\n * ```js\r\n * const {\r\n * // Auth state:\r\n * error,\r\n * isAuthenticated,\r\n * isLoading,\r\n * user,\r\n * // Auth methods:\r\n * getAccessTokenSilently,\r\n * getAccessTokenWithPopup,\r\n * getIdTokenClaims,\r\n * loginWithRedirect,\r\n * loginWithPopup,\r\n * logout,\r\n * } = useAuth0<TUser>();\r\n * ```\r\n *\r\n * Use the `useAuth0` hook in your components to access the auth state and methods.\r\n *\r\n * TUser is an optional type param to provide a type to the `user` field.\r\n */\r\nvar useAuth0 = function (context) {\r\n if (context === void 0) { context = Auth0Context; }\r\n return useContext(context);\r\n};\n\n/**\r\n * ```jsx\r\n * class MyComponent extends Component {\r\n * render() {\r\n * // Access the auth context from the `auth0` prop\r\n * const { user } = this.props.auth0;\r\n * return <div>Hello {user.name}!</div>\r\n * }\r\n * }\r\n * // Wrap your class component in withAuth0\r\n * export default withAuth0(MyComponent);\r\n * ```\r\n *\r\n * Wrap your class components in this Higher Order Component to give them access to the Auth0Context.\r\n *\r\n * Providing a context as the second argument allows you to configure the Auth0Provider the Auth0Context\r\n * should come from f you have multiple within your application.\r\n */\r\nvar withAuth0 = function (Component, context) {\r\n if (context === void 0) { context = Auth0Context; }\r\n return function WithAuth(props) {\r\n return (React.createElement(context.Consumer, null, function (auth) { return (React.createElement(Component, __assign({}, props, { auth0: auth }))); }));\r\n };\r\n};\n\n/**\r\n * @ignore\r\n */\r\nvar defaultOnRedirecting = function () { return React.createElement(React.Fragment, null); };\r\n/**\r\n* @ignore\r\n*/\r\nvar defaultOnBeforeAuthentication = function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {\r\n return [2 /*return*/];\r\n}); }); };\r\n/**\r\n * @ignore\r\n */\r\nvar defaultReturnTo = function () {\r\n return \"\".concat(window.location.pathname).concat(window.location.search);\r\n};\r\n/**\r\n * ```js\r\n * const MyProtectedComponent = withAuthenticationRequired(MyComponent);\r\n * ```\r\n *\r\n * When you wrap your components in this Higher Order Component and an anonymous user visits your component\r\n * they will be redirected to the login page; after login they will be returned to the page they were redirected from.\r\n */\r\nvar withAuthenticationRequired = function (Component, options) {\r\n if (options === void 0) { options = {}; }\r\n return function WithAuthenticationRequired(props) {\r\n var _this = this;\r\n var _a = options.returnTo, returnTo = _a === void 0 ? defaultReturnTo : _a, _b = options.onRedirecting, onRedirecting = _b === void 0 ? defaultOnRedirecting : _b, _c = options.onBeforeAuthentication, onBeforeAuthentication = _c === void 0 ? defaultOnBeforeAuthentication : _c, loginOptions = options.loginOptions, _d = options.context, context = _d === void 0 ? Auth0Context : _d;\r\n var _e = useAuth0(context), isAuthenticated = _e.isAuthenticated, isLoading = _e.isLoading, loginWithRedirect = _e.loginWithRedirect;\r\n useEffect(function () {\r\n if (isLoading || isAuthenticated) {\r\n return;\r\n }\r\n var opts = __assign(__assign({}, loginOptions), { appState: __assign(__assign({}, (loginOptions && loginOptions.appState)), { returnTo: typeof returnTo === 'function' ? returnTo() : returnTo }) });\r\n (function () { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, onBeforeAuthentication()];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, loginWithRedirect(opts)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); })();\r\n }, [\r\n isLoading,\r\n isAuthenticated,\r\n loginWithRedirect,\r\n onBeforeAuthentication,\r\n loginOptions,\r\n returnTo,\r\n ]);\r\n return isAuthenticated ? React.createElement(Component, __assign({}, props)) : onRedirecting();\r\n };\r\n};\n\nexport { Auth0Context, Auth0Provider, u as AuthenticationError, d as GenericError, P as InMemoryCache, z as LocalStorageCache, m as MfaRequiredError, f as MissingRefreshTokenError, OAuthError, p as PopupCancelledError, h as PopupTimeoutError, l as TimeoutError, ie as User, initialContext, useAuth0, withAuth0, withAuthenticationRequired };\n//# sourceMappingURL=auth0-react.esm.js.map\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({ location: location, action: \"POP\" });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, { key: Date.now() + \"\" });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({ location: location, action: \"PUSH\" });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({ pathname: pathname, search: search.length ? \"?\" + search : search });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = { pathname: pathname, search: search };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexports.globalHistory = globalHistory;\nexports.navigate = navigate;\nexports.createHistory = createHistory;\nexports.createMemorySource = createMemorySource;","\"use strict\";\n\nexports.__esModule = true;\nexports.shallowCompare = exports.validateRedirect = exports.insertParams = exports.resolve = exports.match = exports.pick = exports.startsWith = undefined;\n\nvar _invariant = require(\"invariant\");\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? (0, _invariant2.default)(false, \"<Router> dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : (0, _invariant2.default)(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{ path: path }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// <Link to=\"deeper\"/>\n// // instead of\n// <Link to=`{${props.uri}/deeper}`/>\n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\n\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return { route: route, score: score, index: index };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexports.startsWith = startsWith;\nexports.pick = pick;\nexports.match = match;\nexports.resolve = resolve;\nexports.insertParams = insertParams;\nexports.validateRedirect = validateRedirect;\nexports.shallowCompare = shallowCompare;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport Collapse from '../Collapse';\nimport Paper from '../Paper';\nimport withStyles from '../styles/withStyles';\nimport AccordionContext from './AccordionContext';\nimport useControlled from '../utils/useControlled';\nexport var styles = function styles(theme) {\n var transition = {\n duration: theme.transitions.duration.shortest\n };\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n transition: theme.transitions.create(['margin'], transition),\n '&:before': {\n position: 'absolute',\n left: 0,\n top: -1,\n right: 0,\n height: 1,\n content: '\"\"',\n opacity: 1,\n backgroundColor: theme.palette.divider,\n transition: theme.transitions.create(['opacity', 'background-color'], transition)\n },\n '&:first-child': {\n '&:before': {\n display: 'none'\n }\n },\n '&$expanded': {\n margin: '16px 0',\n '&:first-child': {\n marginTop: 0\n },\n '&:last-child': {\n marginBottom: 0\n },\n '&:before': {\n opacity: 0\n }\n },\n '&$expanded + &': {\n '&:before': {\n display: 'none'\n }\n },\n '&$disabled': {\n backgroundColor: theme.palette.action.disabledBackground\n }\n },\n\n /* Styles applied to the root element if `square={false}`. */\n rounded: {\n borderRadius: 0,\n '&:first-child': {\n borderTopLeftRadius: theme.shape.borderRadius,\n borderTopRightRadius: theme.shape.borderRadius\n },\n '&:last-child': {\n borderBottomLeftRadius: theme.shape.borderRadius,\n borderBottomRightRadius: theme.shape.borderRadius,\n // Fix a rendering issue on Edge\n '@supports (-ms-ime-align: auto)': {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }\n }\n },\n\n /* Styles applied to the root element if `expanded={true}`. */\n expanded: {},\n\n /* Styles applied to the root element if `disabled={true}`. */\n disabled: {}\n };\n};\nvar Accordion = /*#__PURE__*/React.forwardRef(function Accordion(props, ref) {\n var childrenProp = props.children,\n classes = props.classes,\n className = props.className,\n _props$defaultExpande = props.defaultExpanded,\n defaultExpanded = _props$defaultExpande === void 0 ? false : _props$defaultExpande,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n expandedProp = props.expanded,\n onChange = props.onChange,\n _props$square = props.square,\n square = _props$square === void 0 ? false : _props$square,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Collapse : _props$TransitionComp,\n TransitionProps = props.TransitionProps,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"defaultExpanded\", \"disabled\", \"expanded\", \"onChange\", \"square\", \"TransitionComponent\", \"TransitionProps\"]);\n\n var _useControlled = useControlled({\n controlled: expandedProp,\n default: defaultExpanded,\n name: 'Accordion',\n state: 'expanded'\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n expanded = _useControlled2[0],\n setExpandedState = _useControlled2[1];\n\n var handleChange = React.useCallback(function (event) {\n setExpandedState(!expanded);\n\n if (onChange) {\n onChange(event, !expanded);\n }\n }, [expanded, onChange, setExpandedState]);\n\n var _React$Children$toArr = React.Children.toArray(childrenProp),\n _React$Children$toArr2 = _toArray(_React$Children$toArr),\n summary = _React$Children$toArr2[0],\n children = _React$Children$toArr2.slice(1);\n\n var contextValue = React.useMemo(function () {\n return {\n expanded: expanded,\n disabled: disabled,\n toggle: handleChange\n };\n }, [expanded, disabled, handleChange]);\n return /*#__PURE__*/React.createElement(Paper, _extends({\n className: clsx(classes.root, className, expanded && classes.expanded, disabled && classes.disabled, !square && classes.rounded),\n ref: ref,\n square: square\n }, other), /*#__PURE__*/React.createElement(AccordionContext.Provider, {\n value: contextValue\n }, summary), /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n in: expanded,\n timeout: \"auto\"\n }, TransitionProps), /*#__PURE__*/React.createElement(\"div\", {\n \"aria-labelledby\": summary.props.id,\n id: summary.props['aria-controls'],\n role: \"region\"\n }, children)));\n});\nprocess.env.NODE_ENV !== \"production\" ? Accordion.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the accordion.\n */\n children: chainPropTypes(PropTypes.node.isRequired, function (props) {\n var summary = React.Children.toArray(props.children)[0];\n\n if (isFragment(summary)) {\n return new Error(\"Material-UI: The Accordion doesn't accept a Fragment as a child. \" + 'Consider providing an array instead.');\n }\n\n if (! /*#__PURE__*/React.isValidElement(summary)) {\n return new Error('Material-UI: Expected the first child of Accordion to be a valid element.');\n }\n\n return null;\n }),\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, expands the accordion by default.\n */\n defaultExpanded: PropTypes.bool,\n\n /**\n * If `true`, the accordion will be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, expands the accordion, otherwise collapse it.\n * Setting this prop enables control over the accordion.\n */\n expanded: PropTypes.bool,\n\n /**\n * Callback fired when the expand/collapse state is changed.\n *\n * @param {object} event The event source of the callback.\n * @param {boolean} expanded The `expanded` state of the accordion.\n */\n onChange: PropTypes.func,\n\n /**\n * If `true`, rounded corners are disabled.\n */\n square: PropTypes.bool,\n\n /**\n * The component used for the collapse effect.\n * [Follow this guide](/components/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * Props applied to the [`Transition`](http://reactcommunity.org/react-transition-group/transition#Transition-props) element.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiAccordion'\n})(Accordion);","import * as React from 'react';\n/**\n * @ignore - internal component.\n * @type {React.Context<{} | {expanded: boolean, disabled: boolean, toggle: () => void}>}\n */\n\nvar AccordionContext = React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n AccordionContext.displayName = 'AccordionContext';\n}\n\nexport default AccordionContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n padding: theme.spacing(1, 2, 2)\n }\n };\n};\nvar AccordionDetails = /*#__PURE__*/React.forwardRef(function AccordionDetails(props, ref) {\n var classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"classes\", \"className\"]);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionDetails.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the accordion details.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiAccordionDetails'\n})(AccordionDetails);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n\n/* eslint-disable jsx-a11y/aria-role */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport ButtonBase from '../ButtonBase';\nimport IconButton from '../IconButton';\nimport withStyles from '../styles/withStyles';\nimport AccordionContext from '../Accordion/AccordionContext';\nexport var styles = function styles(theme) {\n var transition = {\n duration: theme.transitions.duration.shortest\n };\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n minHeight: 8 * 6,\n transition: theme.transitions.create(['min-height', 'background-color'], transition),\n padding: theme.spacing(0, 2),\n '&:hover:not($disabled)': {\n cursor: 'pointer'\n },\n '&$expanded': {\n minHeight: 64\n },\n '&$focused, &$focusVisible': {\n backgroundColor: theme.palette.action.focus\n },\n '&$disabled': {\n opacity: theme.palette.action.disabledOpacity\n }\n },\n\n /* Pseudo-class applied to the root element, children wrapper element and `IconButton` component if `expanded={true}`. */\n expanded: {},\n\n /* Pseudo-class applied to the ButtonBase root element if the button is keyboard focused. */\n focused: {},\n\n /* Pseudo-class applied to the ButtonBase root element if the button is keyboard focused. */\n focusVisible: {},\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the children wrapper element. */\n content: {\n display: 'flex',\n flexGrow: 1,\n transition: theme.transitions.create(['margin'], transition),\n margin: '12px 0',\n '&$expanded': {\n margin: '20px 0'\n }\n },\n\n /* Styles applied to the `IconButton` component when `expandIcon` is supplied. */\n expandIcon: {\n transform: 'rotate(0deg)',\n transition: theme.transitions.create('transform', transition),\n '&:hover': {\n // Disable the hover effect for the IconButton,\n // because a hover effect should apply to the entire Expand button and\n // not only to the IconButton.\n backgroundColor: 'transparent'\n },\n '&$expanded': {\n transform: 'rotate(180deg)'\n }\n }\n };\n};\nvar AccordionSummary = /*#__PURE__*/React.forwardRef(function AccordionSummary(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n expandIcon = props.expandIcon,\n focusVisibleClassName = props.focusVisibleClassName,\n _props$IconButtonProp = props.IconButtonProps,\n IconButtonProps = _props$IconButtonProp === void 0 ? {} : _props$IconButtonProp,\n onClick = props.onClick,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"expandIcon\", \"focusVisibleClassName\", \"IconButtonProps\", \"onClick\"]);\n\n var _React$useContext = React.useContext(AccordionContext),\n _React$useContext$dis = _React$useContext.disabled,\n disabled = _React$useContext$dis === void 0 ? false : _React$useContext$dis,\n expanded = _React$useContext.expanded,\n toggle = _React$useContext.toggle;\n\n var handleChange = function handleChange(event) {\n if (toggle) {\n toggle(event);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n focusRipple: false,\n disableRipple: true,\n disabled: disabled,\n component: \"div\",\n \"aria-expanded\": expanded,\n className: clsx(classes.root, className, disabled && classes.disabled, expanded && classes.expanded),\n focusVisibleClassName: clsx(classes.focusVisible, classes.focused, focusVisibleClassName),\n onClick: handleChange,\n ref: ref\n }, other), /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(classes.content, expanded && classes.expanded)\n }, children), expandIcon && /*#__PURE__*/React.createElement(IconButton, _extends({\n className: clsx(classes.expandIcon, expanded && classes.expanded),\n edge: \"end\",\n component: \"div\",\n tabIndex: null,\n role: null,\n \"aria-hidden\": true\n }, IconButtonProps), expandIcon));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionSummary.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the accordion summary.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: chainPropTypes(PropTypes.object, function (props) {\n // Guard against when generation of classes is disabled in the stylesheets (`disableGeneration`).\n // For `disableGeneration` we don't have an accurate warning but `disableGeneration` is an advanced use case anyway.\n if (props.classes.focused !== undefined && props.classes.focused.indexOf(' ') !== -1) {\n return new Error(['Material-UI: The `classes.focused` key is deprecated.', 'Use `classes.focusVisible` instead.', 'The name of the pseudo-class was changed for consistency.'].join('\\n'));\n }\n\n return null;\n }),\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The icon to display as the expand indicator.\n */\n expandIcon: PropTypes.node,\n\n /**\n * This prop can help identify which element has keyboard focus.\n * The class name will be applied when the element gains the focus through keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/master/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * Props applied to the `IconButton` element wrapping the expand icon.\n */\n IconButtonProps: PropTypes.object,\n\n /**\n * @ignore\n */\n onClick: PropTypes.func\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiAccordionSummary'\n})(AccordionSummary);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Fade from '../Fade';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n // Improve scrollable dialog support.\n zIndex: -1,\n position: 'fixed',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n right: 0,\n bottom: 0,\n top: 0,\n left: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n WebkitTapHighlightColor: 'transparent'\n },\n\n /* Styles applied to the root element if `invisible={true}`. */\n invisible: {\n backgroundColor: 'transparent'\n }\n};\nvar Backdrop = /*#__PURE__*/React.forwardRef(function Backdrop(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$invisible = props.invisible,\n invisible = _props$invisible === void 0 ? false : _props$invisible,\n open = props.open,\n transitionDuration = props.transitionDuration,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Fade : _props$TransitionComp,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"invisible\", \"open\", \"transitionDuration\", \"TransitionComponent\"]);\n\n return /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n in: open,\n timeout: transitionDuration\n }, other), /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(classes.root, className, invisible && classes.invisible),\n \"aria-hidden\": true,\n ref: ref\n }, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? Backdrop.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the backdrop is invisible.\n * It can be used when rendering a popover or a custom select component.\n */\n invisible: PropTypes.bool,\n\n /**\n * If `true`, the backdrop is open.\n */\n open: PropTypes.bool.isRequired,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiBackdrop'\n})(Backdrop);","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport useEventCallback from '../utils/useEventCallback';\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * @ignore - internal component.\n */\n\nfunction Ripple(props) {\n var classes = props.classes,\n _props$pulsate = props.pulsate,\n pulsate = _props$pulsate === void 0 ? false : _props$pulsate,\n rippleX = props.rippleX,\n rippleY = props.rippleY,\n rippleSize = props.rippleSize,\n inProp = props.in,\n _props$onExited = props.onExited,\n onExited = _props$onExited === void 0 ? function () {} : _props$onExited,\n timeout = props.timeout;\n\n var _React$useState = React.useState(false),\n leaving = _React$useState[0],\n setLeaving = _React$useState[1];\n\n var rippleClassName = clsx(classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n var rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n var childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n var handleExited = useEventCallback(onExited); // Ripple is used for user feedback (e.g. click or press) so we want to apply styles with the highest priority\n\n useEnhancedEffect(function () {\n if (!inProp) {\n // react-transition-group#onExit\n setLeaving(true); // react-transition-group#onExited\n\n var timeoutId = setTimeout(handleExited, timeout);\n return function () {\n clearTimeout(timeoutId);\n };\n }\n\n return undefined;\n }, [handleExited, inProp, timeout]);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: rippleClassName,\n style: rippleStyles\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: childClassName\n }));\n}\n\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Ripple from './Ripple';\nvar DURATION = 550;\nexport var DELAY_RIPPLE = 80;\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n },\n\n /* Styles applied to the internal `Ripple` components `ripple` class. */\n ripple: {\n opacity: 0,\n position: 'absolute'\n },\n\n /* Styles applied to the internal `Ripple` components `rippleVisible` class. */\n rippleVisible: {\n opacity: 0.3,\n transform: 'scale(1)',\n animation: \"$enter \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n\n /* Styles applied to the internal `Ripple` components `ripplePulsate` class. */\n ripplePulsate: {\n animationDuration: \"\".concat(theme.transitions.duration.shorter, \"ms\")\n },\n\n /* Styles applied to the internal `Ripple` components `child` class. */\n child: {\n opacity: 1,\n display: 'block',\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n backgroundColor: 'currentColor'\n },\n\n /* Styles applied to the internal `Ripple` components `childLeaving` class. */\n childLeaving: {\n opacity: 0,\n animation: \"$exit \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n\n /* Styles applied to the internal `Ripple` components `childPulsate` class. */\n childPulsate: {\n position: 'absolute',\n left: 0,\n top: 0,\n animation: \"$pulsate 2500ms \".concat(theme.transitions.easing.easeInOut, \" 200ms infinite\")\n },\n '@keyframes enter': {\n '0%': {\n transform: 'scale(0)',\n opacity: 0.1\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 0.3\n }\n },\n '@keyframes exit': {\n '0%': {\n opacity: 1\n },\n '100%': {\n opacity: 0\n }\n },\n '@keyframes pulsate': {\n '0%': {\n transform: 'scale(1)'\n },\n '50%': {\n transform: 'scale(0.92)'\n },\n '100%': {\n transform: 'scale(1)'\n }\n }\n };\n};\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\n\nvar TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(props, ref) {\n var _props$center = props.center,\n centerProp = _props$center === void 0 ? false : _props$center,\n classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"center\", \"classes\", \"className\"]);\n\n var _React$useState = React.useState([]),\n ripples = _React$useState[0],\n setRipples = _React$useState[1];\n\n var nextKey = React.useRef(0);\n var rippleCallback = React.useRef(null);\n React.useEffect(function () {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]); // Used to filter out mouse emulated events on mobile.\n\n var ignoringMouseDown = React.useRef(false); // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n\n var startTimer = React.useRef(null); // This is the hook called once the previous timeout is ready.\n\n var startTimerCommit = React.useRef(null);\n var container = React.useRef(null);\n React.useEffect(function () {\n return function () {\n clearTimeout(startTimer.current);\n };\n }, []);\n var startCommit = React.useCallback(function (params) {\n var pulsate = params.pulsate,\n rippleX = params.rippleX,\n rippleY = params.rippleY,\n rippleSize = params.rippleSize,\n cb = params.cb;\n setRipples(function (oldRipples) {\n return [].concat(_toConsumableArray(oldRipples), [/*#__PURE__*/React.createElement(Ripple, {\n key: nextKey.current,\n classes: classes,\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n })]);\n });\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n var start = React.useCallback(function () {\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var cb = arguments.length > 2 ? arguments[2] : undefined;\n var _options$pulsate = options.pulsate,\n pulsate = _options$pulsate === void 0 ? false : _options$pulsate,\n _options$center = options.center,\n center = _options$center === void 0 ? centerProp || options.pulsate : _options$center,\n _options$fakeElement = options.fakeElement,\n fakeElement = _options$fakeElement === void 0 ? false : _options$fakeElement;\n\n if (event.type === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n\n if (event.type === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n\n var element = fakeElement ? null : container.current;\n var rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n }; // Get the size of the ripple\n\n var rippleX;\n var rippleY;\n var rippleSize;\n\n if (center || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n var _ref = event.touches ? event.touches[0] : event,\n clientX = _ref.clientX,\n clientY = _ref.clientY;\n\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n\n if (center) {\n rippleSize = Math.sqrt((2 * Math.pow(rect.width, 2) + Math.pow(rect.height, 2)) / 3); // For some reason the animation is broken on Mobile Chrome if the size if even.\n\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n var sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n var sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(Math.pow(sizeX, 2) + Math.pow(sizeY, 2));\n } // Touche devices\n\n\n if (event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = function () {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }; // Delay the execution of the ripple effect.\n\n\n startTimer.current = setTimeout(function () {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n }\n } else {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }\n }, [centerProp, startCommit]);\n var pulsate = React.useCallback(function () {\n start({}, {\n pulsate: true\n });\n }, [start]);\n var stop = React.useCallback(function (event, cb) {\n clearTimeout(startTimer.current); // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n\n if (event.type === 'touchend' && startTimerCommit.current) {\n event.persist();\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.current = setTimeout(function () {\n stop(event, cb);\n });\n return;\n }\n\n startTimerCommit.current = null;\n setRipples(function (oldRipples) {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, []);\n React.useImperativeHandle(ref, function () {\n return {\n pulsate: pulsate,\n start: start,\n stop: stop\n };\n }, [pulsate, start, stop]);\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n className: clsx(classes.root, className),\n ref: container\n }, other), /*#__PURE__*/React.createElement(TransitionGroup, {\n component: null,\n exit: true\n }, ripples));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n flip: false,\n name: 'MuiTouchRipple'\n})( /*#__PURE__*/React.memo(TouchRipple));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef, refType } from '@material-ui/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport deprecatedPropType from '../utils/deprecatedPropType';\nimport withStyles from '../styles/withStyles';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n '-moz-appearance': 'none',\n // Reset\n '-webkit-appearance': 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native <a /> element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n '&$disabled': {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n },\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Pseudo-class applied to the root element if keyboard focused. */\n focusVisible: {}\n};\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\n\nvar ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(props, ref) {\n var action = props.action,\n buttonRefProp = props.buttonRef,\n _props$centerRipple = props.centerRipple,\n centerRipple = _props$centerRipple === void 0 ? false : _props$centerRipple,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n component = _props$component === void 0 ? 'button' : _props$component,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableRipple = props.disableRipple,\n disableRipple = _props$disableRipple === void 0 ? false : _props$disableRipple,\n _props$disableTouchRi = props.disableTouchRipple,\n disableTouchRipple = _props$disableTouchRi === void 0 ? false : _props$disableTouchRi,\n _props$focusRipple = props.focusRipple,\n focusRipple = _props$focusRipple === void 0 ? false : _props$focusRipple,\n focusVisibleClassName = props.focusVisibleClassName,\n onBlur = props.onBlur,\n onClick = props.onClick,\n onFocus = props.onFocus,\n onFocusVisible = props.onFocusVisible,\n onKeyDown = props.onKeyDown,\n onKeyUp = props.onKeyUp,\n onMouseDown = props.onMouseDown,\n onMouseLeave = props.onMouseLeave,\n onMouseUp = props.onMouseUp,\n onTouchEnd = props.onTouchEnd,\n onTouchMove = props.onTouchMove,\n onTouchStart = props.onTouchStart,\n onDragLeave = props.onDragLeave,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n TouchRippleProps = props.TouchRippleProps,\n _props$type = props.type,\n type = _props$type === void 0 ? 'button' : _props$type,\n other = _objectWithoutProperties(props, [\"action\", \"buttonRef\", \"centerRipple\", \"children\", \"classes\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"onBlur\", \"onClick\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"onDragLeave\", \"tabIndex\", \"TouchRippleProps\", \"type\"]);\n\n var buttonRef = React.useRef(null);\n\n function getButtonNode() {\n // #StrictMode ready\n return ReactDOM.findDOMNode(buttonRef.current);\n }\n\n var rippleRef = React.useRef(null);\n\n var _React$useState = React.useState(false),\n focusVisible = _React$useState[0],\n setFocusVisible = _React$useState[1];\n\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n\n var _useIsFocusVisible = useIsFocusVisible(),\n isFocusVisible = _useIsFocusVisible.isFocusVisible,\n onBlurVisible = _useIsFocusVisible.onBlurVisible,\n focusVisibleRef = _useIsFocusVisible.ref;\n\n React.useImperativeHandle(action, function () {\n return {\n focusVisible: function focusVisible() {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n };\n }, []);\n React.useEffect(function () {\n if (focusVisible && focusRipple && !disableRipple) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible]);\n\n function useRippleHandler(rippleAction, eventCallback) {\n var skipRippleAction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : disableTouchRipple;\n return useEventCallback(function (event) {\n if (eventCallback) {\n eventCallback(event);\n }\n\n var ignore = skipRippleAction;\n\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n\n return true;\n });\n }\n\n var handleMouseDown = useRippleHandler('start', onMouseDown);\n var handleDragLeave = useRippleHandler('stop', onDragLeave);\n var handleMouseUp = useRippleHandler('stop', onMouseUp);\n var handleMouseLeave = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n event.preventDefault();\n }\n\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n var handleTouchStart = useRippleHandler('start', onTouchStart);\n var handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n var handleTouchMove = useRippleHandler('stop', onTouchMove);\n var handleBlur = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n onBlurVisible(event);\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n var handleFocus = useEventCallback(function (event) {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n\n if (isFocusVisible(event)) {\n setFocusVisible(true);\n\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n\n if (onFocus) {\n onFocus(event);\n }\n });\n\n var isNonNativeButton = function isNonNativeButton() {\n var button = getButtonNode();\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n /**\n * IE 11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n\n\n var keydownRef = React.useRef(false);\n var handleKeyDown = useEventCallback(function (event) {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n event.persist();\n rippleRef.current.stop(event, function () {\n rippleRef.current.start(event);\n });\n }\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n } // Keyboard accessibility for non interactive elements\n\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n\n if (onClick) {\n onClick(event);\n }\n }\n });\n var handleKeyUp = useEventCallback(function (event) {\n // calling preventDefault in keyUp on a <button> will not dispatch a click event if Space is pressed\n // https://codesandbox.io/s/button-keyup-preventdefault-dn7f0\n if (focusRipple && event.key === ' ' && rippleRef.current && focusVisible && !event.defaultPrevented) {\n keydownRef.current = false;\n event.persist();\n rippleRef.current.stop(event, function () {\n rippleRef.current.pulsate(event);\n });\n }\n\n if (onKeyUp) {\n onKeyUp(event);\n } // Keyboard accessibility for non interactive elements\n\n\n if (onClick && event.target === event.currentTarget && isNonNativeButton() && event.key === ' ' && !event.defaultPrevented) {\n onClick(event);\n }\n });\n var ComponentProp = component;\n\n if (ComponentProp === 'button' && other.href) {\n ComponentProp = 'a';\n }\n\n var buttonProps = {};\n\n if (ComponentProp === 'button') {\n buttonProps.type = type;\n buttonProps.disabled = disabled;\n } else {\n if (ComponentProp !== 'a' || !other.href) {\n buttonProps.role = 'button';\n }\n\n buttonProps['aria-disabled'] = disabled;\n }\n\n var handleUserRef = useForkRef(buttonRefProp, ref);\n var handleOwnRef = useForkRef(focusVisibleRef, buttonRef);\n var handleRef = useForkRef(handleUserRef, handleOwnRef);\n\n var _React$useState2 = React.useState(false),\n mountedState = _React$useState2[0],\n setMountedState = _React$useState2[1];\n\n React.useEffect(function () {\n setMountedState(true);\n }, []);\n var enableTouchRipple = mountedState && !disableRipple && !disabled;\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(function () {\n if (enableTouchRipple && !rippleRef.current) {\n console.error(['Material-UI: The `component` prop provided to ButtonBase is invalid.', 'Please make sure the children prop is rendered in this custom component.'].join('\\n'));\n }\n }, [enableTouchRipple]);\n }\n\n return /*#__PURE__*/React.createElement(ComponentProp, _extends({\n className: clsx(classes.root, className, focusVisible && [classes.focusVisible, focusVisibleClassName], disabled && classes.disabled),\n onBlur: handleBlur,\n onClick: onClick,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n onMouseDown: handleMouseDown,\n onMouseLeave: handleMouseLeave,\n onMouseUp: handleMouseUp,\n onDragLeave: handleDragLeave,\n onTouchEnd: handleTouchEnd,\n onTouchMove: handleTouchMove,\n onTouchStart: handleTouchStart,\n ref: handleRef,\n tabIndex: disabled ? -1 : tabIndex\n }, buttonProps, other), children, enableTouchRipple ?\n /*#__PURE__*/\n\n /* TouchRipple is only needed client-side, x2 boost on the server. */\n React.createElement(TouchRipple, _extends({\n ref: rippleRef,\n center: centerRipple\n }, TouchRippleProps)) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? ButtonBase.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * A ref for imperative actions.\n * It currently only supports `focusVisible()` action.\n */\n action: refType,\n\n /**\n * @ignore\n *\n * Use that prop to pass a ref to the native button component.\n * @deprecated Use `ref` instead.\n */\n buttonRef: deprecatedPropType(refType, 'Use `ref` instead.'),\n\n /**\n * If `true`, the ripples will be centered.\n * They won't start at the cursor interaction position.\n */\n centerRipple: PropTypes.bool,\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: elementTypeAcceptingRef,\n\n /**\n * If `true`, the base button will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect will be disabled.\n *\n * âš ï¸ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `focusVisibleClassName`.\n */\n disableRipple: PropTypes.bool,\n\n /**\n * If `true`, the touch ripple effect will be disabled.\n */\n disableTouchRipple: PropTypes.bool,\n\n /**\n * If `true`, the base button will have a keyboard focus ripple.\n */\n focusRipple: PropTypes.bool,\n\n /**\n * This prop can help identify which element has keyboard focus.\n * The class name will be applied when the element gains the focus through keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/master/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * @ignore\n */\n href: PropTypes.string,\n\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n\n /**\n * @ignore\n */\n onDragLeave: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * Callback fired when the component is focused with a keyboard.\n * We trigger a `onFocus` callback too.\n */\n onFocusVisible: PropTypes.func,\n\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n\n /**\n * @ignore\n */\n onMouseDown: PropTypes.func,\n\n /**\n * @ignore\n */\n onMouseLeave: PropTypes.func,\n\n /**\n * @ignore\n */\n onMouseUp: PropTypes.func,\n\n /**\n * @ignore\n */\n onTouchEnd: PropTypes.func,\n\n /**\n * @ignore\n */\n onTouchMove: PropTypes.func,\n\n /**\n * @ignore\n */\n onTouchStart: PropTypes.func,\n\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Props applied to the `TouchRipple` element.\n */\n TouchRippleProps: PropTypes.object,\n\n /**\n * @ignore\n */\n type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiButtonBase'\n})(ButtonBase);","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport ownerDocument from '../utils/ownerDocument';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport { elementAcceptingRef, exactProp } from '@material-ui/utils';\n\nfunction mapEventPropToEvent(eventProp) {\n return eventProp.substring(2).toLowerCase();\n}\n\nfunction clickedRootScrollbar(event) {\n return document.documentElement.clientWidth < event.clientX || document.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n */\n\n\nfunction ClickAwayListener(props) {\n var children = props.children,\n _props$disableReactTr = props.disableReactTree,\n disableReactTree = _props$disableReactTr === void 0 ? false : _props$disableReactTr,\n _props$mouseEvent = props.mouseEvent,\n mouseEvent = _props$mouseEvent === void 0 ? 'onClick' : _props$mouseEvent,\n onClickAway = props.onClickAway,\n _props$touchEvent = props.touchEvent,\n touchEvent = _props$touchEvent === void 0 ? 'onTouchEnd' : _props$touchEvent;\n var movedRef = React.useRef(false);\n var nodeRef = React.useRef(null);\n var activatedRef = React.useRef(false);\n var syntheticEventRef = React.useRef(false);\n React.useEffect(function () {\n // Ensure that this component is not \"activated\" synchronously.\n // https://github.com/facebook/react/issues/20074\n setTimeout(function () {\n activatedRef.current = true;\n }, 0);\n return function () {\n activatedRef.current = false;\n };\n }, []); // can be removed once we drop support for non ref forwarding class components\n\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n nodeRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRef = useForkRef(children.ref, handleOwnRef); // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviours like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n\n var handleClickAway = useEventCallback(function (event) {\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n var insideReactTree = syntheticEventRef.current;\n syntheticEventRef.current = false; // 1. IE 11 support, which trigger the handleClickAway even after the unbind\n // 2. The child might render null.\n // 3. Behave like a blur listener.\n\n if (!activatedRef.current || !nodeRef.current || clickedRootScrollbar(event)) {\n return;\n } // Do not act if user performed touchmove\n\n\n if (movedRef.current) {\n movedRef.current = false;\n return;\n }\n\n var insideDOM; // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n\n if (event.composedPath) {\n insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;\n } else {\n // TODO v6 remove dead logic https://caniuse.com/#search=composedPath.\n var doc = ownerDocument(nodeRef.current);\n insideDOM = !doc.documentElement.contains(event.target) || nodeRef.current.contains(event.target);\n }\n\n if (!insideDOM && (disableReactTree || !insideReactTree)) {\n onClickAway(event);\n }\n }); // Keep track of mouse/touch events that bubbled up through the portal.\n\n var createHandleSynthetic = function createHandleSynthetic(handlerName) {\n return function (event) {\n syntheticEventRef.current = true;\n var childrenPropsHandler = children.props[handlerName];\n\n if (childrenPropsHandler) {\n childrenPropsHandler(event);\n }\n };\n };\n\n var childrenProps = {\n ref: handleRef\n };\n\n if (touchEvent !== false) {\n childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n }\n\n React.useEffect(function () {\n if (touchEvent !== false) {\n var mappedTouchEvent = mapEventPropToEvent(touchEvent);\n var doc = ownerDocument(nodeRef.current);\n\n var handleTouchMove = function handleTouchMove() {\n movedRef.current = true;\n };\n\n doc.addEventListener(mappedTouchEvent, handleClickAway);\n doc.addEventListener('touchmove', handleTouchMove);\n return function () {\n doc.removeEventListener(mappedTouchEvent, handleClickAway);\n doc.removeEventListener('touchmove', handleTouchMove);\n };\n }\n\n return undefined;\n }, [handleClickAway, touchEvent]);\n\n if (mouseEvent !== false) {\n childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n }\n\n React.useEffect(function () {\n if (mouseEvent !== false) {\n var mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n var doc = ownerDocument(nodeRef.current);\n doc.addEventListener(mappedMouseEvent, handleClickAway);\n return function () {\n doc.removeEventListener(mappedMouseEvent, handleClickAway);\n };\n }\n\n return undefined;\n }, [handleClickAway, mouseEvent]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.cloneElement(children, childrenProps));\n}\n\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The wrapped element.\n */\n children: elementAcceptingRef.isRequired,\n\n /**\n * If `true`, the React tree is ignored and only the DOM tree is considered.\n * This prop changes how portaled elements are handled.\n */\n disableReactTree: PropTypes.bool,\n\n /**\n * The mouse event to listen to. You can disable the listener by providing `false`.\n */\n mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', false]),\n\n /**\n * Callback fired when a \"click away\" event is detected.\n */\n onClickAway: PropTypes.func.isRequired,\n\n /**\n * The touch event to listen to. You can disable the listener by providing `false`.\n */\n touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\n\nexport default ClickAwayListener;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { chainPropTypes } from '@material-ui/utils';\nimport { Transition } from 'react-transition-group';\nimport withStyles from '../styles/withStyles';\nimport { duration } from '../styles/transitions';\nimport deprecatedPropType from '../utils/deprecatedPropType';\nimport { getTransitionProps } from '../transitions/utils';\nimport useTheme from '../styles/useTheme';\nimport { useForkRef } from '../utils';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n height: 0,\n overflow: 'hidden',\n transition: theme.transitions.create('height')\n },\n\n /* Styles applied to the root element when the transition has entered. */\n entered: {\n height: 'auto',\n overflow: 'visible'\n },\n\n /* Styles applied to the root element when the transition has exited and `collapsedSize` != 0px. */\n hidden: {\n visibility: 'hidden'\n },\n\n /* Styles applied to the outer wrapper element. */\n wrapper: {\n // Hack to get children with a negative margin to not falsify the height computation.\n display: 'flex'\n },\n\n /* Styles applied to the inner wrapper element. */\n wrapperInner: {\n width: '100%'\n }\n };\n};\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/components/steppers/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Collapse = /*#__PURE__*/React.forwardRef(function Collapse(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n collapsedHeight = props.collapsedHeight,\n _props$collapsedSize = props.collapsedSize,\n collapsedSizeProp = _props$collapsedSize === void 0 ? '0px' : _props$collapsedSize,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$disableStrictM = props.disableStrictModeCompat,\n disableStrictModeCompat = _props$disableStrictM === void 0 ? false : _props$disableStrictM,\n inProp = props.in,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n style = props.style,\n _props$timeout = props.timeout,\n timeout = _props$timeout === void 0 ? duration.standard : _props$timeout,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Transition : _props$TransitionComp,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"collapsedHeight\", \"collapsedSize\", \"component\", \"disableStrictModeCompat\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"]);\n\n var theme = useTheme();\n var timer = React.useRef();\n var wrapperRef = React.useRef(null);\n var autoTransitionDuration = React.useRef();\n var collapsedSize = typeof (collapsedHeight || collapsedSizeProp) === 'number' ? \"\".concat(collapsedHeight || collapsedSizeProp, \"px\") : collapsedHeight || collapsedSizeProp;\n React.useEffect(function () {\n return function () {\n clearTimeout(timer.current);\n };\n }, []);\n var enableStrictModeCompat = theme.unstable_strictMode && !disableStrictModeCompat;\n var nodeRef = React.useRef(null);\n var handleRef = useForkRef(ref, enableStrictModeCompat ? nodeRef : undefined);\n\n var normalizedTransitionCallback = function normalizedTransitionCallback(callback) {\n return function (nodeOrAppearing, maybeAppearing) {\n if (callback) {\n var _ref = enableStrictModeCompat ? [nodeRef.current, nodeOrAppearing] : [nodeOrAppearing, maybeAppearing],\n _ref2 = _slicedToArray(_ref, 2),\n node = _ref2[0],\n isAppearing = _ref2[1]; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n\n\n if (isAppearing === undefined) {\n callback(node);\n } else {\n callback(node, isAppearing);\n }\n }\n };\n };\n\n var handleEnter = normalizedTransitionCallback(function (node, isAppearing) {\n node.style.height = collapsedSize;\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n var handleEntering = normalizedTransitionCallback(function (node, isAppearing) {\n var wrapperHeight = wrapperRef.current ? wrapperRef.current.clientHeight : 0;\n\n var _getTransitionProps = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'enter'\n }),\n transitionDuration = _getTransitionProps.duration;\n\n if (timeout === 'auto') {\n var duration2 = theme.transitions.getAutoHeightDuration(wrapperHeight);\n node.style.transitionDuration = \"\".concat(duration2, \"ms\");\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : \"\".concat(transitionDuration, \"ms\");\n }\n\n node.style.height = \"\".concat(wrapperHeight, \"px\");\n\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n });\n var handleEntered = normalizedTransitionCallback(function (node, isAppearing) {\n node.style.height = 'auto';\n\n if (onEntered) {\n onEntered(node, isAppearing);\n }\n });\n var handleExit = normalizedTransitionCallback(function (node) {\n var wrapperHeight = wrapperRef.current ? wrapperRef.current.clientHeight : 0;\n node.style.height = \"\".concat(wrapperHeight, \"px\");\n\n if (onExit) {\n onExit(node);\n }\n });\n var handleExited = normalizedTransitionCallback(onExited);\n var handleExiting = normalizedTransitionCallback(function (node) {\n var wrapperHeight = wrapperRef.current ? wrapperRef.current.clientHeight : 0;\n\n var _getTransitionProps2 = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'exit'\n }),\n transitionDuration = _getTransitionProps2.duration;\n\n if (timeout === 'auto') {\n var duration2 = theme.transitions.getAutoHeightDuration(wrapperHeight);\n node.style.transitionDuration = \"\".concat(duration2, \"ms\");\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : \"\".concat(transitionDuration, \"ms\");\n }\n\n node.style.height = collapsedSize;\n\n if (onExiting) {\n onExiting(node);\n }\n });\n\n var addEndListener = function addEndListener(nodeOrNext, maybeNext) {\n var next = enableStrictModeCompat ? nodeOrNext : maybeNext;\n\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n }\n };\n\n return /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n in: inProp,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: addEndListener,\n nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n timeout: timeout === 'auto' ? null : timeout\n }, other), function (state, childProps) {\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, classes.container, className, {\n 'entered': classes.entered,\n 'exited': !inProp && collapsedSize === '0px' && classes.hidden\n }[state]),\n style: _extends({\n minHeight: collapsedSize\n }, style),\n ref: handleRef\n }, childProps), /*#__PURE__*/React.createElement(\"div\", {\n className: classes.wrapper,\n ref: wrapperRef\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classes.wrapperInner\n }, children)));\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content node to be collapsed.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: chainPropTypes(PropTypes.object, function (props) {\n if (props.classes && props.classes.container) {\n throw new Error(['Material-UI: the classes.container key is deprecated.', 'Use `classes.root` instead', 'The name of the pseudo-class was changed for consistency.'].join('\\n'));\n }\n\n return null;\n }),\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The height of the container when collapsed.\n * @deprecated The prop was renamed to support the addition of horizontal orientation, use `collapsedSize` instead.\n */\n collapsedHeight: deprecatedPropType(PropTypes.oneOfType([PropTypes.number, PropTypes.string]), 'The prop was renamed to support the vertical orientation, use `collapsedSize` instead'),\n\n /**\n * The height of the container when collapsed.\n */\n collapsedSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * Enable this prop if you encounter 'Function components cannot be given refs',\n * use `unstable_createStrictModeTheme`,\n * and can't forward the ref in the passed `Component`.\n */\n disableStrictModeCompat: PropTypes.bool,\n\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nCollapse.muiSupportAuto = true;\nexport default withStyles(styles, {\n name: 'MuiCollapse'\n})(Collapse);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Modal from '../Modal';\nimport Backdrop from '../Backdrop';\nimport withStyles from '../styles/withStyles';\nimport Slide from '../Slide';\nimport Paper from '../Paper';\nimport capitalize from '../utils/capitalize';\nimport { duration } from '../styles/transitions';\nimport useTheme from '../styles/useTheme';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {},\n\n /* Styles applied to the root element if `variant=\"permanent or persistent\"`. */\n docked: {\n flex: '0 0 auto'\n },\n\n /* Styles applied to the `Paper` component. */\n paper: {\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n flex: '1 0 auto',\n zIndex: theme.zIndex.drawer,\n WebkitOverflowScrolling: 'touch',\n // Add iOS momentum scrolling.\n // temporary style\n position: 'fixed',\n top: 0,\n // We disable the focus ring for mouse, touch and keyboard users.\n // At some point, it would be better to keep it for keyboard users.\n // :focus-ring CSS pseudo-class will help.\n outline: 0\n },\n\n /* Styles applied to the `Paper` component if `anchor=\"left\"`. */\n paperAnchorLeft: {\n left: 0,\n right: 'auto'\n },\n\n /* Styles applied to the `Paper` component if `anchor=\"right\"`. */\n paperAnchorRight: {\n left: 'auto',\n right: 0\n },\n\n /* Styles applied to the `Paper` component if `anchor=\"top\"`. */\n paperAnchorTop: {\n top: 0,\n left: 0,\n bottom: 'auto',\n right: 0,\n height: 'auto',\n maxHeight: '100%'\n },\n\n /* Styles applied to the `Paper` component if `anchor=\"bottom\"`. */\n paperAnchorBottom: {\n top: 'auto',\n left: 0,\n bottom: 0,\n right: 0,\n height: 'auto',\n maxHeight: '100%'\n },\n\n /* Styles applied to the `Paper` component if `anchor=\"left\"` and `variant` is not \"temporary\". */\n paperAnchorDockedLeft: {\n borderRight: \"1px solid \".concat(theme.palette.divider)\n },\n\n /* Styles applied to the `Paper` component if `anchor=\"top\"` and `variant` is not \"temporary\". */\n paperAnchorDockedTop: {\n borderBottom: \"1px solid \".concat(theme.palette.divider)\n },\n\n /* Styles applied to the `Paper` component if `anchor=\"right\"` and `variant` is not \"temporary\". */\n paperAnchorDockedRight: {\n borderLeft: \"1px solid \".concat(theme.palette.divider)\n },\n\n /* Styles applied to the `Paper` component if `anchor=\"bottom\"` and `variant` is not \"temporary\". */\n paperAnchorDockedBottom: {\n borderTop: \"1px solid \".concat(theme.palette.divider)\n },\n\n /* Styles applied to the `Modal` component. */\n modal: {}\n };\n};\nvar oppositeDirection = {\n left: 'right',\n right: 'left',\n top: 'down',\n bottom: 'up'\n};\nexport function isHorizontal(anchor) {\n return ['left', 'right'].indexOf(anchor) !== -1;\n}\nexport function getAnchor(theme, anchor) {\n return theme.direction === 'rtl' && isHorizontal(anchor) ? oppositeDirection[anchor] : anchor;\n}\nvar defaultTransitionDuration = {\n enter: duration.enteringScreen,\n exit: duration.leavingScreen\n};\n/**\n * The props of the [Modal](/api/modal/) component are available\n * when `variant=\"temporary\"` is set.\n */\n\nvar Drawer = /*#__PURE__*/React.forwardRef(function Drawer(props, ref) {\n var _props$anchor = props.anchor,\n anchorProp = _props$anchor === void 0 ? 'left' : _props$anchor,\n BackdropProps = props.BackdropProps,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$elevation = props.elevation,\n elevation = _props$elevation === void 0 ? 16 : _props$elevation,\n _props$ModalProps = props.ModalProps;\n _props$ModalProps = _props$ModalProps === void 0 ? {} : _props$ModalProps;\n\n var BackdropPropsProp = _props$ModalProps.BackdropProps,\n ModalProps = _objectWithoutProperties(_props$ModalProps, [\"BackdropProps\"]),\n onClose = props.onClose,\n _props$open = props.open,\n open = _props$open === void 0 ? false : _props$open,\n _props$PaperProps = props.PaperProps,\n PaperProps = _props$PaperProps === void 0 ? {} : _props$PaperProps,\n SlideProps = props.SlideProps,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Slide : _props$TransitionComp,\n _props$transitionDura = props.transitionDuration,\n transitionDuration = _props$transitionDura === void 0 ? defaultTransitionDuration : _props$transitionDura,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'temporary' : _props$variant,\n other = _objectWithoutProperties(props, [\"anchor\", \"BackdropProps\", \"children\", \"classes\", \"className\", \"elevation\", \"ModalProps\", \"onClose\", \"open\", \"PaperProps\", \"SlideProps\", \"TransitionComponent\", \"transitionDuration\", \"variant\"]);\n\n var theme = useTheme(); // Let's assume that the Drawer will always be rendered on user space.\n // We use this state is order to skip the appear transition during the\n // initial mount of the component.\n\n var mounted = React.useRef(false);\n React.useEffect(function () {\n mounted.current = true;\n }, []);\n var anchor = getAnchor(theme, anchorProp);\n var drawer = /*#__PURE__*/React.createElement(Paper, _extends({\n elevation: variant === 'temporary' ? elevation : 0,\n square: true\n }, PaperProps, {\n className: clsx(classes.paper, classes[\"paperAnchor\".concat(capitalize(anchor))], PaperProps.className, variant !== 'temporary' && classes[\"paperAnchorDocked\".concat(capitalize(anchor))])\n }), children);\n\n if (variant === 'permanent') {\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, classes.docked, className),\n ref: ref\n }, other), drawer);\n }\n\n var slidingDrawer = /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n in: open,\n direction: oppositeDirection[anchor],\n timeout: transitionDuration,\n appear: mounted.current\n }, SlideProps), drawer);\n\n if (variant === 'persistent') {\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, classes.docked, className),\n ref: ref\n }, other), slidingDrawer);\n } // variant === temporary\n\n\n return /*#__PURE__*/React.createElement(Modal, _extends({\n BackdropProps: _extends({}, BackdropProps, BackdropPropsProp, {\n transitionDuration: transitionDuration\n }),\n BackdropComponent: Backdrop,\n className: clsx(classes.root, classes.modal, className),\n open: open,\n onClose: onClose,\n ref: ref\n }, other, ModalProps), slidingDrawer);\n});\nprocess.env.NODE_ENV !== \"production\" ? Drawer.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Side from which the drawer will appear.\n */\n anchor: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),\n\n /**\n * @ignore\n */\n BackdropProps: PropTypes.object,\n\n /**\n * The contents of the drawer.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The elevation of the drawer.\n */\n elevation: PropTypes.number,\n\n /**\n * Props applied to the [`Modal`](/api/modal/) element.\n */\n ModalProps: PropTypes.object,\n\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {object} event The event source of the callback.\n */\n onClose: PropTypes.func,\n\n /**\n * If `true`, the drawer is open.\n */\n open: PropTypes.bool,\n\n /**\n * Props applied to the [`Paper`](/api/paper/) element.\n */\n PaperProps: PropTypes.object,\n\n /**\n * Props applied to the [`Slide`](/api/slide/) element.\n */\n SlideProps: PropTypes.object,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['permanent', 'persistent', 'temporary'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiDrawer',\n flip: false\n})(Drawer);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { duration } from '../styles/transitions';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nvar styles = {\n entering: {\n opacity: 1\n },\n entered: {\n opacity: 1\n }\n};\nvar defaultTimeout = {\n enter: duration.enteringScreen,\n exit: duration.leavingScreen\n};\n/**\n * The Fade transition is used by the [Modal](/components/modal/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Fade = /*#__PURE__*/React.forwardRef(function Fade(props, ref) {\n var children = props.children,\n _props$disableStrictM = props.disableStrictModeCompat,\n disableStrictModeCompat = _props$disableStrictM === void 0 ? false : _props$disableStrictM,\n inProp = props.in,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n style = props.style,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Transition : _props$TransitionComp,\n _props$timeout = props.timeout,\n timeout = _props$timeout === void 0 ? defaultTimeout : _props$timeout,\n other = _objectWithoutProperties(props, [\"children\", \"disableStrictModeCompat\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"TransitionComponent\", \"timeout\"]);\n\n var theme = useTheme();\n var enableStrictModeCompat = theme.unstable_strictMode && !disableStrictModeCompat;\n var nodeRef = React.useRef(null);\n var foreignRef = useForkRef(children.ref, ref);\n var handleRef = useForkRef(enableStrictModeCompat ? nodeRef : undefined, foreignRef);\n\n var normalizedTransitionCallback = function normalizedTransitionCallback(callback) {\n return function (nodeOrAppearing, maybeAppearing) {\n if (callback) {\n var _ref = enableStrictModeCompat ? [nodeRef.current, nodeOrAppearing] : [nodeOrAppearing, maybeAppearing],\n _ref2 = _slicedToArray(_ref, 2),\n node = _ref2[0],\n isAppearing = _ref2[1]; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n\n\n if (isAppearing === undefined) {\n callback(node);\n } else {\n callback(node, isAppearing);\n }\n }\n };\n };\n\n var handleEntering = normalizedTransitionCallback(onEntering);\n var handleEnter = normalizedTransitionCallback(function (node, isAppearing) {\n reflow(node); // So the animation always start from the start.\n\n var transitionProps = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'enter'\n });\n node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n node.style.transition = theme.transitions.create('opacity', transitionProps);\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n var handleEntered = normalizedTransitionCallback(onEntered);\n var handleExiting = normalizedTransitionCallback(onExiting);\n var handleExit = normalizedTransitionCallback(function (node) {\n var transitionProps = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'exit'\n });\n node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n node.style.transition = theme.transitions.create('opacity', transitionProps);\n\n if (onExit) {\n onExit(node);\n }\n });\n var handleExited = normalizedTransitionCallback(onExited);\n return /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n appear: true,\n in: inProp,\n nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n timeout: timeout\n }, other), function (state, childProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Fade.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * A single child content element.\n */\n children: PropTypes.element,\n\n /**\n * Enable this prop if you encounter 'Function components cannot be given refs',\n * use `unstable_createStrictModeTheme`,\n * and can't forward the ref in the child component.\n */\n disableStrictModeCompat: PropTypes.bool,\n\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default Fade;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\n\nfunction getScale(value) {\n return \"scale(\".concat(value, \", \").concat(Math.pow(value, 2), \")\");\n}\n\nvar styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n/**\n * The Grow transition is used by the [Tooltip](/components/tooltips/) and\n * [Popover](/components/popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n var children = props.children,\n _props$disableStrictM = props.disableStrictModeCompat,\n disableStrictModeCompat = _props$disableStrictM === void 0 ? false : _props$disableStrictM,\n inProp = props.in,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n style = props.style,\n _props$timeout = props.timeout,\n timeout = _props$timeout === void 0 ? 'auto' : _props$timeout,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Transition : _props$TransitionComp,\n other = _objectWithoutProperties(props, [\"children\", \"disableStrictModeCompat\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"]);\n\n var timer = React.useRef();\n var autoTimeout = React.useRef();\n var theme = useTheme();\n var enableStrictModeCompat = theme.unstable_strictMode && !disableStrictModeCompat;\n var nodeRef = React.useRef(null);\n var foreignRef = useForkRef(children.ref, ref);\n var handleRef = useForkRef(enableStrictModeCompat ? nodeRef : undefined, foreignRef);\n\n var normalizedTransitionCallback = function normalizedTransitionCallback(callback) {\n return function (nodeOrAppearing, maybeAppearing) {\n if (callback) {\n var _ref = enableStrictModeCompat ? [nodeRef.current, nodeOrAppearing] : [nodeOrAppearing, maybeAppearing],\n _ref2 = _slicedToArray(_ref, 2),\n node = _ref2[0],\n isAppearing = _ref2[1]; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n\n\n if (isAppearing === undefined) {\n callback(node);\n } else {\n callback(node, isAppearing);\n }\n }\n };\n };\n\n var handleEntering = normalizedTransitionCallback(onEntering);\n var handleEnter = normalizedTransitionCallback(function (node, isAppearing) {\n reflow(node); // So the animation always start from the start.\n\n var _getTransitionProps = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'enter'\n }),\n transitionDuration = _getTransitionProps.duration,\n delay = _getTransitionProps.delay;\n\n var duration;\n\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n\n node.style.transition = [theme.transitions.create('opacity', {\n duration: duration,\n delay: delay\n }), theme.transitions.create('transform', {\n duration: duration * 0.666,\n delay: delay\n })].join(',');\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n var handleEntered = normalizedTransitionCallback(onEntered);\n var handleExiting = normalizedTransitionCallback(onExiting);\n var handleExit = normalizedTransitionCallback(function (node) {\n var _getTransitionProps2 = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'exit'\n }),\n transitionDuration = _getTransitionProps2.duration,\n delay = _getTransitionProps2.delay;\n\n var duration;\n\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n\n node.style.transition = [theme.transitions.create('opacity', {\n duration: duration,\n delay: delay\n }), theme.transitions.create('transform', {\n duration: duration * 0.666,\n delay: delay || duration * 0.333\n })].join(',');\n node.style.opacity = '0';\n node.style.transform = getScale(0.75);\n\n if (onExit) {\n onExit(node);\n }\n });\n var handleExited = normalizedTransitionCallback(onExited);\n\n var addEndListener = function addEndListener(nodeOrNext, maybeNext) {\n var next = enableStrictModeCompat ? nodeOrNext : maybeNext;\n\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTimeout.current || 0);\n }\n };\n\n React.useEffect(function () {\n return function () {\n clearTimeout(timer.current);\n };\n }, []);\n return /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n appear: true,\n in: inProp,\n nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: addEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other), function (state, childProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * A single child content element.\n */\n children: PropTypes.element,\n\n /**\n * Enable this prop if you encounter 'Function components cannot be given refs',\n * use `unstable_createStrictModeTheme`,\n * and can't forward the ref in the child component.\n */\n disableStrictModeCompat: PropTypes.bool,\n\n /**\n * If `true`, show the component; triggers the enter or exit animation.\n */\n in: PropTypes.bool,\n\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport { alpha } from '../styles/colorManipulator';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n textAlign: 'center',\n flex: '0 0 auto',\n fontSize: theme.typography.pxToRem(24),\n padding: 12,\n borderRadius: '50%',\n overflow: 'visible',\n // Explicitly set the default value to solve a bug on IE 11.\n color: theme.palette.action.active,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shortest\n }),\n '&:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&$disabled': {\n backgroundColor: 'transparent',\n color: theme.palette.action.disabled\n }\n },\n\n /* Styles applied to the root element if `edge=\"start\"`. */\n edgeStart: {\n marginLeft: -12,\n '$sizeSmall&': {\n marginLeft: -3\n }\n },\n\n /* Styles applied to the root element if `edge=\"end\"`. */\n edgeEnd: {\n marginRight: -12,\n '$sizeSmall&': {\n marginRight: -3\n }\n },\n\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit'\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: alpha(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if `size=\"small\"`. */\n sizeSmall: {\n padding: 3,\n fontSize: theme.typography.pxToRem(18)\n },\n\n /* Styles applied to the children container element. */\n label: {\n width: '100%',\n display: 'flex',\n alignItems: 'inherit',\n justifyContent: 'inherit'\n }\n };\n};\n/**\n * Refer to the [Icons](/components/icons/) section of the documentation\n * regarding the available icon options.\n */\n\nvar IconButton = /*#__PURE__*/React.forwardRef(function IconButton(props, ref) {\n var _props$edge = props.edge,\n edge = _props$edge === void 0 ? false : _props$edge,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'default' : _props$color,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableFocusRi = props.disableFocusRipple,\n disableFocusRipple = _props$disableFocusRi === void 0 ? false : _props$disableFocusRi,\n _props$size = props.size,\n size = _props$size === void 0 ? 'medium' : _props$size,\n other = _objectWithoutProperties(props, [\"edge\", \"children\", \"classes\", \"className\", \"color\", \"disabled\", \"disableFocusRipple\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n className: clsx(classes.root, className, color !== 'default' && classes[\"color\".concat(capitalize(color))], disabled && classes.disabled, size === \"small\" && classes[\"size\".concat(capitalize(size))], {\n 'start': classes.edgeStart,\n 'end': classes.edgeEnd\n }[edge]),\n centerRipple: true,\n focusRipple: !disableFocusRipple,\n disabled: disabled,\n ref: ref\n }, other), /*#__PURE__*/React.createElement(\"span\", {\n className: classes.label\n }, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? IconButton.propTypes = {\n /**\n * The icon element.\n */\n children: chainPropTypes(PropTypes.node, function (props) {\n var found = React.Children.toArray(props.children).some(function (child) {\n return /*#__PURE__*/React.isValidElement(child) && child.props.onClick;\n });\n\n if (found) {\n return new Error(['Material-UI: You are providing an onClick event listener ' + 'to a child of a button element.', 'Firefox will never trigger the event.', 'You should move the onClick listener to the parent button element.', 'https://github.com/mui-org/material-ui/issues/13957'].join('\\n'));\n }\n\n return null;\n }),\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary']),\n\n /**\n * If `true`, the button will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the keyboard focus ripple will be disabled.\n */\n disableFocusRipple: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect will be disabled.\n */\n disableRipple: PropTypes.bool,\n\n /**\n * If given, uses a negative margin to counteract the padding on one\n * side (this is often helpful for aligning the left or right\n * side of the icon with content above or below, without ruining the border\n * size and shape).\n */\n edge: PropTypes.oneOf(['start', 'end', false]),\n\n /**\n * The size of the button.\n * `small` is equivalent to the dense button styling.\n */\n size: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiIconButton'\n})(IconButton);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport capitalize from '../utils/capitalize';\nimport withStyles from '../styles/withStyles';\nimport { elementTypeAcceptingRef } from '@material-ui/utils';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport useForkRef from '../utils/useForkRef';\nimport Typography from '../Typography';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {},\n\n /* Styles applied to the root element if `underline=\"none\"`. */\n underlineNone: {\n textDecoration: 'none'\n },\n\n /* Styles applied to the root element if `underline=\"hover\"`. */\n underlineHover: {\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline'\n }\n },\n\n /* Styles applied to the root element if `underline=\"always\"`. */\n underlineAlways: {\n textDecoration: 'underline'\n },\n // Same reset as ButtonBase.root\n\n /* Styles applied to the root element if `component=\"button\"`. */\n button: {\n position: 'relative',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n '-moz-appearance': 'none',\n // Reset\n '-webkit-appearance': 'none',\n // Reset\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n '&$focusVisible': {\n outline: 'auto'\n }\n },\n\n /* Pseudo-class applied to the root element if the link is keyboard focused. */\n focusVisible: {}\n};\nvar Link = /*#__PURE__*/React.forwardRef(function Link(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'primary' : _props$color,\n _props$component = props.component,\n component = _props$component === void 0 ? 'a' : _props$component,\n onBlur = props.onBlur,\n onFocus = props.onFocus,\n TypographyClasses = props.TypographyClasses,\n _props$underline = props.underline,\n underline = _props$underline === void 0 ? 'hover' : _props$underline,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'inherit' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"component\", \"onBlur\", \"onFocus\", \"TypographyClasses\", \"underline\", \"variant\"]);\n\n var _useIsFocusVisible = useIsFocusVisible(),\n isFocusVisible = _useIsFocusVisible.isFocusVisible,\n onBlurVisible = _useIsFocusVisible.onBlurVisible,\n focusVisibleRef = _useIsFocusVisible.ref;\n\n var _React$useState = React.useState(false),\n focusVisible = _React$useState[0],\n setFocusVisible = _React$useState[1];\n\n var handlerRef = useForkRef(ref, focusVisibleRef);\n\n var handleBlur = function handleBlur(event) {\n if (focusVisible) {\n onBlurVisible();\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n var handleFocus = function handleFocus(event) {\n if (isFocusVisible(event)) {\n setFocusVisible(true);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n return /*#__PURE__*/React.createElement(Typography, _extends({\n className: clsx(classes.root, classes[\"underline\".concat(capitalize(underline))], className, focusVisible && classes.focusVisible, component === 'button' && classes.button),\n classes: TypographyClasses,\n color: color,\n component: component,\n onBlur: handleBlur,\n onFocus: handleFocus,\n ref: handlerRef,\n variant: variant\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes = {\n /**\n * The content of the link.\n */\n children: PropTypes.node.isRequired,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the link.\n */\n color: PropTypes.oneOf(['initial', 'inherit', 'primary', 'secondary', 'textPrimary', 'textSecondary', 'error']),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: elementTypeAcceptingRef,\n\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * `classes` prop applied to the [`Typography`](/api/typography/) element.\n */\n TypographyClasses: PropTypes.object,\n\n /**\n * Controls when the link should have an underline.\n */\n underline: PropTypes.oneOf(['none', 'hover', 'always']),\n\n /**\n * Applies the theme typography styles.\n */\n variant: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiLink'\n})(Link);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ListContext from './ListContext';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative'\n },\n\n /* Styles applied to the root element if `disablePadding={false}`. */\n padding: {\n paddingTop: 8,\n paddingBottom: 8\n },\n\n /* Styles applied to the root element if dense. */\n dense: {},\n\n /* Styles applied to the root element if a `subheader` is provided. */\n subheader: {\n paddingTop: 0\n }\n};\nvar List = /*#__PURE__*/React.forwardRef(function List(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'ul' : _props$component,\n _props$dense = props.dense,\n dense = _props$dense === void 0 ? false : _props$dense,\n _props$disablePadding = props.disablePadding,\n disablePadding = _props$disablePadding === void 0 ? false : _props$disablePadding,\n subheader = props.subheader,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"]);\n\n var context = React.useMemo(function () {\n return {\n dense: dense\n };\n }, [dense]);\n return /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, dense && classes.dense, !disablePadding && classes.padding, subheader && classes.subheader),\n ref: ref\n }, other), subheader, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes = {\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input will be used for\n * the list and list items.\n * The prop is available to descendant components as the `dense` context.\n */\n dense: PropTypes.bool,\n\n /**\n * If `true`, vertical padding will be removed from the list.\n */\n disablePadding: PropTypes.bool,\n\n /**\n * The content of the subheader, normally `ListSubheader`.\n */\n subheader: PropTypes.node\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiList'\n})(List);","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar ListContext = React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ListContext.displayName = 'ListContext';\n}\n\nexport default ListContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport ButtonBase from '../ButtonBase';\nimport isMuiElement from '../utils/isMuiElement';\nimport useForkRef from '../utils/useForkRef';\nimport ListContext from '../List/ListContext';\nimport * as ReactDOM from 'react-dom';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the (normally root) `component` element. May be wrapped by a `container`. */\n root: {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n position: 'relative',\n textDecoration: 'none',\n width: '100%',\n boxSizing: 'border-box',\n textAlign: 'left',\n paddingTop: 8,\n paddingBottom: 8,\n '&$focusVisible': {\n backgroundColor: theme.palette.action.selected\n },\n '&$selected, &$selected:hover': {\n backgroundColor: theme.palette.action.selected\n },\n '&$disabled': {\n opacity: 0.5\n }\n },\n\n /* Styles applied to the `container` element if `children` includes `ListItemSecondaryAction`. */\n container: {\n position: 'relative'\n },\n\n /* Pseudo-class applied to the `component`'s `focusVisibleClassName` prop if `button={true}`. */\n focusVisible: {},\n\n /* Styles applied to the `component` element if dense. */\n dense: {\n paddingTop: 4,\n paddingBottom: 4\n },\n\n /* Styles applied to the `component` element if `alignItems=\"flex-start\"`. */\n alignItemsFlexStart: {\n alignItems: 'flex-start'\n },\n\n /* Pseudo-class applied to the inner `component` element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the inner `component` element if `divider={true}`. */\n divider: {\n borderBottom: \"1px solid \".concat(theme.palette.divider),\n backgroundClip: 'padding-box'\n },\n\n /* Styles applied to the inner `component` element if `disableGutters={false}`. */\n gutters: {\n paddingLeft: 16,\n paddingRight: 16\n },\n\n /* Styles applied to the inner `component` element if `button={true}`. */\n button: {\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shortest\n }),\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: theme.palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Styles applied to the `component` element if `children` includes `ListItemSecondaryAction`. */\n secondaryAction: {\n // Add some space to avoid collision as `ListItemSecondaryAction`\n // is absolutely positioned.\n paddingRight: 48\n },\n\n /* Pseudo-class applied to the root element if `selected={true}`. */\n selected: {}\n };\n};\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\n\nvar ListItem = /*#__PURE__*/React.forwardRef(function ListItem(props, ref) {\n var _props$alignItems = props.alignItems,\n alignItems = _props$alignItems === void 0 ? 'center' : _props$alignItems,\n _props$autoFocus = props.autoFocus,\n autoFocus = _props$autoFocus === void 0 ? false : _props$autoFocus,\n _props$button = props.button,\n button = _props$button === void 0 ? false : _props$button,\n childrenProp = props.children,\n classes = props.classes,\n className = props.className,\n componentProp = props.component,\n _props$ContainerCompo = props.ContainerComponent,\n ContainerComponent = _props$ContainerCompo === void 0 ? 'li' : _props$ContainerCompo,\n _props$ContainerProps = props.ContainerProps;\n _props$ContainerProps = _props$ContainerProps === void 0 ? {} : _props$ContainerProps;\n\n var ContainerClassName = _props$ContainerProps.className,\n ContainerProps = _objectWithoutProperties(_props$ContainerProps, [\"className\"]),\n _props$dense = props.dense,\n dense = _props$dense === void 0 ? false : _props$dense,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableGutters = props.disableGutters,\n disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters,\n _props$divider = props.divider,\n divider = _props$divider === void 0 ? false : _props$divider,\n focusVisibleClassName = props.focusVisibleClassName,\n _props$selected = props.selected,\n selected = _props$selected === void 0 ? false : _props$selected,\n other = _objectWithoutProperties(props, [\"alignItems\", \"autoFocus\", \"button\", \"children\", \"classes\", \"className\", \"component\", \"ContainerComponent\", \"ContainerProps\", \"dense\", \"disabled\", \"disableGutters\", \"divider\", \"focusVisibleClassName\", \"selected\"]);\n\n var context = React.useContext(ListContext);\n var childContext = {\n dense: dense || context.dense || false,\n alignItems: alignItems\n };\n var listItemRef = React.useRef(null);\n useEnhancedEffect(function () {\n if (autoFocus) {\n if (listItemRef.current) {\n listItemRef.current.focus();\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Material-UI: Unable to set focus to a ListItem whose component has not been rendered.');\n }\n }\n }, [autoFocus]);\n var children = React.Children.toArray(childrenProp);\n var hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n listItemRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRef = useForkRef(handleOwnRef, ref);\n\n var componentProps = _extends({\n className: clsx(classes.root, className, childContext.dense && classes.dense, !disableGutters && classes.gutters, divider && classes.divider, disabled && classes.disabled, button && classes.button, alignItems !== \"center\" && classes.alignItemsFlexStart, hasSecondaryAction && classes.secondaryAction, selected && classes.selected),\n disabled: disabled\n }, other);\n\n var Component = componentProp || 'li';\n\n if (button) {\n componentProps.component = componentProp || 'div';\n componentProps.focusVisibleClassName = clsx(classes.focusVisible, focusVisibleClassName);\n Component = ButtonBase;\n }\n\n if (hasSecondaryAction) {\n // Use div by default.\n Component = !componentProps.component && !componentProp ? 'div' : Component; // Avoid nesting of li > li.\n\n if (ContainerComponent === 'li') {\n if (Component === 'li') {\n Component = 'div';\n } else if (componentProps.component === 'li') {\n componentProps.component = 'div';\n }\n }\n\n return /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: childContext\n }, /*#__PURE__*/React.createElement(ContainerComponent, _extends({\n className: clsx(classes.container, ContainerClassName),\n ref: handleRef\n }, ContainerProps), /*#__PURE__*/React.createElement(Component, componentProps, children), children.pop()));\n }\n\n return /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: childContext\n }, /*#__PURE__*/React.createElement(Component, _extends({\n ref: handleRef\n }, componentProps), children));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.propTypes = {\n /**\n * Defines the `align-items` style property.\n */\n alignItems: PropTypes.oneOf(['flex-start', 'center']),\n\n /**\n * If `true`, the list item will be focused during the first mount.\n * Focus will also be triggered if the value changes from false to true.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * If `true`, the list item will be a button (using `ButtonBase`). Props intended\n * for `ButtonBase` can then be applied to `ListItem`.\n */\n button: PropTypes.bool,\n\n /**\n * The content of the component. If a `ListItemSecondaryAction` is used it must\n * be the last child.\n */\n children: chainPropTypes(PropTypes.node, function (props) {\n var children = React.Children.toArray(props.children); // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n\n var secondaryActionIndex = -1;\n\n for (var i = children.length - 1; i >= 0; i -= 1) {\n var child = children[i];\n\n if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n secondaryActionIndex = i;\n break;\n }\n } // is ListItemSecondaryAction the last child of ListItem\n\n\n if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n return new Error('Material-UI: You used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n }\n\n return null;\n }),\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n * By default, it's a `li` when `button` is `false` and a `div` when `button` is `true`.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * The container component used when a `ListItemSecondaryAction` is the last child.\n */\n ContainerComponent: PropTypes.elementType,\n\n /**\n * Props applied to the container component if used.\n */\n ContainerProps: PropTypes.object,\n\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input will be used.\n */\n dense: PropTypes.bool,\n\n /**\n * If `true`, the list item will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the left and right padding is removed.\n */\n disableGutters: PropTypes.bool,\n\n /**\n * If `true`, a 1px light border is added to the bottom of the list item.\n */\n divider: PropTypes.bool,\n\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * Use to apply selected styling.\n */\n selected: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiListItem'\n})(ListItem);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow'; // Is a vertical scrollbar displayed?\n\nfunction isOverflowing(container) {\n var doc = ownerDocument(container);\n\n if (doc.body === container) {\n return ownerWindow(doc).innerWidth > doc.documentElement.clientWidth;\n }\n\n return container.scrollHeight > container.clientHeight;\n}\n\nexport function ariaHidden(node, show) {\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\n\nfunction getPaddingRight(node) {\n return parseInt(window.getComputedStyle(node)['padding-right'], 10) || 0;\n}\n\nfunction ariaHiddenSiblings(container, mountNode, currentNode) {\n var nodesToExclude = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n var show = arguments.length > 4 ? arguments[4] : undefined;\n var blacklist = [mountNode, currentNode].concat(_toConsumableArray(nodesToExclude));\n var blacklistTagNames = ['TEMPLATE', 'SCRIPT', 'STYLE'];\n [].forEach.call(container.children, function (node) {\n if (node.nodeType === 1 && blacklist.indexOf(node) === -1 && blacklistTagNames.indexOf(node.tagName) === -1) {\n ariaHidden(node, show);\n }\n });\n}\n\nfunction findIndexOf(containerInfo, callback) {\n var idx = -1;\n containerInfo.some(function (item, index) {\n if (callback(item)) {\n idx = index;\n return true;\n }\n\n return false;\n });\n return idx;\n}\n\nfunction handleContainer(containerInfo, props) {\n var restoreStyle = [];\n var restorePaddings = [];\n var container = containerInfo.container;\n var fixedNodes;\n\n if (!props.disableScrollLock) {\n if (isOverflowing(container)) {\n // Compute the size before applying overflow hidden to avoid any scroll jumps.\n var scrollbarSize = getScrollbarSize();\n restoreStyle.push({\n value: container.style.paddingRight,\n key: 'padding-right',\n el: container\n }); // Use computed style, here to get the real padding to add our scrollbar width.\n\n container.style['padding-right'] = \"\".concat(getPaddingRight(container) + scrollbarSize, \"px\"); // .mui-fixed is a global helper.\n\n fixedNodes = ownerDocument(container).querySelectorAll('.mui-fixed');\n [].forEach.call(fixedNodes, function (node) {\n restorePaddings.push(node.style.paddingRight);\n node.style.paddingRight = \"\".concat(getPaddingRight(node) + scrollbarSize, \"px\");\n });\n } // Improve Gatsby support\n // https://css-tricks.com/snippets/css/force-vertical-scrollbar/\n\n\n var parent = container.parentElement;\n var scrollContainer = parent.nodeName === 'HTML' && window.getComputedStyle(parent)['overflow-y'] === 'scroll' ? parent : container; // Block the scroll even if no scrollbar is visible to account for mobile keyboard\n // screensize shrink.\n\n restoreStyle.push({\n value: scrollContainer.style.overflow,\n key: 'overflow',\n el: scrollContainer\n });\n scrollContainer.style.overflow = 'hidden';\n }\n\n var restore = function restore() {\n if (fixedNodes) {\n [].forEach.call(fixedNodes, function (node, i) {\n if (restorePaddings[i]) {\n node.style.paddingRight = restorePaddings[i];\n } else {\n node.style.removeProperty('padding-right');\n }\n });\n }\n\n restoreStyle.forEach(function (_ref) {\n var value = _ref.value,\n el = _ref.el,\n key = _ref.key;\n\n if (value) {\n el.style.setProperty(key, value);\n } else {\n el.style.removeProperty(key);\n }\n });\n };\n\n return restore;\n}\n\nfunction getHiddenSiblings(container) {\n var hiddenSiblings = [];\n [].forEach.call(container.children, function (node) {\n if (node.getAttribute && node.getAttribute('aria-hidden') === 'true') {\n hiddenSiblings.push(node);\n }\n });\n return hiddenSiblings;\n}\n/**\n * @ignore - do not document.\n *\n * Proper state management for containers and the modals in those containers.\n * Simplified, but inspired by react-overlay's ModalManager class.\n * Used by the Modal to ensure proper styling of containers.\n */\n\n\nvar ModalManager = /*#__PURE__*/function () {\n function ModalManager() {\n _classCallCheck(this, ModalManager);\n\n // this.modals[modalIndex] = modal\n this.modals = []; // this.containers[containerIndex] = {\n // modals: [],\n // container,\n // restore: null,\n // }\n\n this.containers = [];\n }\n\n _createClass(ModalManager, [{\n key: \"add\",\n value: function add(modal, container) {\n var modalIndex = this.modals.indexOf(modal);\n\n if (modalIndex !== -1) {\n return modalIndex;\n }\n\n modalIndex = this.modals.length;\n this.modals.push(modal); // If the modal we are adding is already in the DOM.\n\n if (modal.modalRef) {\n ariaHidden(modal.modalRef, false);\n }\n\n var hiddenSiblingNodes = getHiddenSiblings(container);\n ariaHiddenSiblings(container, modal.mountNode, modal.modalRef, hiddenSiblingNodes, true);\n var containerIndex = findIndexOf(this.containers, function (item) {\n return item.container === container;\n });\n\n if (containerIndex !== -1) {\n this.containers[containerIndex].modals.push(modal);\n return modalIndex;\n }\n\n this.containers.push({\n modals: [modal],\n container: container,\n restore: null,\n hiddenSiblingNodes: hiddenSiblingNodes\n });\n return modalIndex;\n }\n }, {\n key: \"mount\",\n value: function mount(modal, props) {\n var containerIndex = findIndexOf(this.containers, function (item) {\n return item.modals.indexOf(modal) !== -1;\n });\n var containerInfo = this.containers[containerIndex];\n\n if (!containerInfo.restore) {\n containerInfo.restore = handleContainer(containerInfo, props);\n }\n }\n }, {\n key: \"remove\",\n value: function remove(modal) {\n var modalIndex = this.modals.indexOf(modal);\n\n if (modalIndex === -1) {\n return modalIndex;\n }\n\n var containerIndex = findIndexOf(this.containers, function (item) {\n return item.modals.indexOf(modal) !== -1;\n });\n var containerInfo = this.containers[containerIndex];\n containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1);\n this.modals.splice(modalIndex, 1); // If that was the last modal in a container, clean up the container.\n\n if (containerInfo.modals.length === 0) {\n // The modal might be closed before it had the chance to be mounted in the DOM.\n if (containerInfo.restore) {\n containerInfo.restore();\n }\n\n if (modal.modalRef) {\n // In case the modal wasn't in the DOM yet.\n ariaHidden(modal.modalRef, true);\n }\n\n ariaHiddenSiblings(containerInfo.container, modal.mountNode, modal.modalRef, containerInfo.hiddenSiblingNodes, false);\n this.containers.splice(containerIndex, 1);\n } else {\n // Otherwise make sure the next top modal is visible to a screen reader.\n var nextTop = containerInfo.modals[containerInfo.modals.length - 1]; // as soon as a modal is adding its modalRef is undefined. it can't set\n // aria-hidden because the dom element doesn't exist either\n // when modal was unmounted before modalRef gets null\n\n if (nextTop.modalRef) {\n ariaHidden(nextTop.modalRef, false);\n }\n }\n\n return modalIndex;\n }\n }, {\n key: \"isTopModal\",\n value: function isTopModal(modal) {\n return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal;\n }\n }]);\n\n return ModalManager;\n}();\n\nexport { ModalManager as default };","/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex, camelcase */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport ownerDocument from '../utils/ownerDocument';\nimport useForkRef from '../utils/useForkRef';\nimport { exactProp } from '@material-ui/utils';\n/**\n * Utility component that locks focus inside the component.\n */\n\nfunction Unstable_TrapFocus(props) {\n var children = props.children,\n _props$disableAutoFoc = props.disableAutoFocus,\n disableAutoFocus = _props$disableAutoFoc === void 0 ? false : _props$disableAutoFoc,\n _props$disableEnforce = props.disableEnforceFocus,\n disableEnforceFocus = _props$disableEnforce === void 0 ? false : _props$disableEnforce,\n _props$disableRestore = props.disableRestoreFocus,\n disableRestoreFocus = _props$disableRestore === void 0 ? false : _props$disableRestore,\n getDoc = props.getDoc,\n isEnabled = props.isEnabled,\n open = props.open;\n var ignoreNextEnforceFocus = React.useRef();\n var sentinelStart = React.useRef(null);\n var sentinelEnd = React.useRef(null);\n var nodeToRestore = React.useRef();\n var rootRef = React.useRef(null); // can be removed once we drop support for non ref forwarding class components\n\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n rootRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRef = useForkRef(children.ref, handleOwnRef);\n var prevOpenRef = React.useRef();\n React.useEffect(function () {\n prevOpenRef.current = open;\n }, [open]);\n\n if (!prevOpenRef.current && open && typeof window !== 'undefined') {\n // WARNING: Potentially unsafe in concurrent mode.\n // The way the read on `nodeToRestore` is setup could make this actually safe.\n // Say we render `open={false}` -> `open={true}` but never commit.\n // We have now written a state that wasn't committed. But no committed effect\n // will read this wrong value. We only read from `nodeToRestore` in effects\n // that were committed on `open={true}`\n // WARNING: Prevents the instance from being garbage collected. Should only\n // hold a weak ref.\n nodeToRestore.current = getDoc().activeElement;\n }\n\n React.useEffect(function () {\n if (!open) {\n return;\n }\n\n var doc = ownerDocument(rootRef.current); // We might render an empty child.\n\n if (!disableAutoFocus && rootRef.current && !rootRef.current.contains(doc.activeElement)) {\n if (!rootRef.current.hasAttribute('tabIndex')) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(['Material-UI: The modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to \"-1\".'].join('\\n'));\n }\n\n rootRef.current.setAttribute('tabIndex', -1);\n }\n\n rootRef.current.focus();\n }\n\n var contain = function contain() {\n var rootElement = rootRef.current; // Cleanup functions are executed lazily in React 17.\n // Contain can be called between the component being unmounted and its cleanup function being run.\n\n if (rootElement === null) {\n return;\n }\n\n if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {\n ignoreNextEnforceFocus.current = false;\n return;\n }\n\n if (rootRef.current && !rootRef.current.contains(doc.activeElement)) {\n rootRef.current.focus();\n }\n };\n\n var loopFocus = function loopFocus(event) {\n // 9 = Tab\n if (disableEnforceFocus || !isEnabled() || event.keyCode !== 9) {\n return;\n } // Make sure the next tab starts from the right place.\n\n\n if (doc.activeElement === rootRef.current) {\n // We need to ignore the next contain as\n // it will try to move the focus back to the rootRef element.\n ignoreNextEnforceFocus.current = true;\n\n if (event.shiftKey) {\n sentinelEnd.current.focus();\n } else {\n sentinelStart.current.focus();\n }\n }\n };\n\n doc.addEventListener('focus', contain, true);\n doc.addEventListener('keydown', loopFocus, true); // With Edge, Safari and Firefox, no focus related events are fired when the focused area stops being a focused area\n // e.g. https://bugzilla.mozilla.org/show_bug.cgi?id=559561.\n //\n // The whatwg spec defines how the browser should behave but does not explicitly mention any events:\n // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.\n\n var interval = setInterval(function () {\n contain();\n }, 50);\n return function () {\n clearInterval(interval);\n doc.removeEventListener('focus', contain, true);\n doc.removeEventListener('keydown', loopFocus, true); // restoreLastFocus()\n\n if (!disableRestoreFocus) {\n // In IE 11 it is possible for document.activeElement to be null resulting\n // in nodeToRestore.current being null.\n // Not all elements in IE 11 have a focus method.\n // Once IE 11 support is dropped the focus() call can be unconditional.\n if (nodeToRestore.current && nodeToRestore.current.focus) {\n nodeToRestore.current.focus();\n }\n\n nodeToRestore.current = null;\n }\n };\n }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelStart,\n \"data-test\": \"sentinelStart\"\n }), /*#__PURE__*/React.cloneElement(children, {\n ref: handleRef\n }), /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelEnd,\n \"data-test\": \"sentinelEnd\"\n }));\n}\n\nprocess.env.NODE_ENV !== \"production\" ? Unstable_TrapFocus.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * A single child content element.\n */\n children: PropTypes.node,\n\n /**\n * If `true`, the trap focus will not automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes.\n * This also works correctly with any trap focus children that have the `disableAutoFocus` prop.\n *\n * Generally this should never be set to `true` as it makes the trap focus less\n * accessible to assistive technologies, like screen readers.\n */\n disableAutoFocus: PropTypes.bool,\n\n /**\n * If `true`, the trap focus will not prevent focus from leaving the trap focus while open.\n *\n * Generally this should never be set to `true` as it makes the trap focus less\n * accessible to assistive technologies, like screen readers.\n */\n disableEnforceFocus: PropTypes.bool,\n\n /**\n * If `true`, the trap focus will not restore focus to previously focused element once\n * trap focus is hidden.\n */\n disableRestoreFocus: PropTypes.bool,\n\n /**\n * Return the document to consider.\n * We use it to implement the restore focus between different browser documents.\n */\n getDoc: PropTypes.func.isRequired,\n\n /**\n * Do we still want to enforce the focus?\n * This prop helps nesting TrapFocus elements.\n */\n isEnabled: PropTypes.func.isRequired,\n\n /**\n * If `true`, focus will be locked.\n */\n open: PropTypes.bool.isRequired\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Unstable_TrapFocus['propTypes' + ''] = exactProp(Unstable_TrapFocus.propTypes);\n}\n\nexport default Unstable_TrapFocus;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n zIndex: -1,\n position: 'fixed',\n right: 0,\n bottom: 0,\n top: 0,\n left: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n WebkitTapHighlightColor: 'transparent'\n },\n\n /* Styles applied to the root element if `invisible={true}`. */\n invisible: {\n backgroundColor: 'transparent'\n }\n};\n/**\n * @ignore - internal component.\n */\n\nvar SimpleBackdrop = /*#__PURE__*/React.forwardRef(function SimpleBackdrop(props, ref) {\n var _props$invisible = props.invisible,\n invisible = _props$invisible === void 0 ? false : _props$invisible,\n open = props.open,\n other = _objectWithoutProperties(props, [\"invisible\", \"open\"]);\n\n return open ? /*#__PURE__*/React.createElement(\"div\", _extends({\n \"aria-hidden\": true,\n ref: ref\n }, other, {\n style: _extends({}, styles.root, invisible ? styles.invisible : {}, other.style)\n })) : null;\n});\nprocess.env.NODE_ENV !== \"production\" ? SimpleBackdrop.propTypes = {\n /**\n * If `true`, the backdrop is invisible.\n * It can be used when rendering a popover or a custom select component.\n */\n invisible: PropTypes.bool,\n\n /**\n * If `true`, the backdrop is open.\n */\n open: PropTypes.bool.isRequired\n} : void 0;\nexport default SimpleBackdrop;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { getThemeProps, useTheme } from '@material-ui/styles';\nimport { elementAcceptingRef, HTMLElementType } from '@material-ui/utils';\nimport deprecatedPropType from '../utils/deprecatedPropType';\nimport ownerDocument from '../utils/ownerDocument';\nimport Portal from '../Portal';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport zIndex from '../styles/zIndex';\nimport ModalManager, { ariaHidden } from './ModalManager';\nimport TrapFocus from '../Unstable_TrapFocus';\nimport SimpleBackdrop from './SimpleBackdrop';\n\nfunction getContainer(container) {\n container = typeof container === 'function' ? container() : container;\n return ReactDOM.findDOMNode(container);\n}\n\nfunction getHasTransition(props) {\n return props.children ? props.children.props.hasOwnProperty('in') : false;\n} // A modal manager used to track and manage the state of open Modals.\n// Modals don't open on the server so this won't conflict with concurrent requests.\n\n\nvar defaultManager = new ModalManager();\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'fixed',\n zIndex: theme.zIndex.modal,\n right: 0,\n bottom: 0,\n top: 0,\n left: 0\n },\n\n /* Styles applied to the root element if the `Modal` has exited. */\n hidden: {\n visibility: 'hidden'\n }\n };\n};\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * - [Dialog](/api/dialog/)\n * - [Drawer](/api/drawer/)\n * - [Menu](/api/menu/)\n * - [Popover](/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n */\n\nvar Modal = /*#__PURE__*/React.forwardRef(function Modal(inProps, ref) {\n var theme = useTheme();\n var props = getThemeProps({\n name: 'MuiModal',\n props: _extends({}, inProps),\n theme: theme\n });\n\n var _props$BackdropCompon = props.BackdropComponent,\n BackdropComponent = _props$BackdropCompon === void 0 ? SimpleBackdrop : _props$BackdropCompon,\n BackdropProps = props.BackdropProps,\n children = props.children,\n _props$closeAfterTran = props.closeAfterTransition,\n closeAfterTransition = _props$closeAfterTran === void 0 ? false : _props$closeAfterTran,\n container = props.container,\n _props$disableAutoFoc = props.disableAutoFocus,\n disableAutoFocus = _props$disableAutoFoc === void 0 ? false : _props$disableAutoFoc,\n _props$disableBackdro = props.disableBackdropClick,\n disableBackdropClick = _props$disableBackdro === void 0 ? false : _props$disableBackdro,\n _props$disableEnforce = props.disableEnforceFocus,\n disableEnforceFocus = _props$disableEnforce === void 0 ? false : _props$disableEnforce,\n _props$disableEscapeK = props.disableEscapeKeyDown,\n disableEscapeKeyDown = _props$disableEscapeK === void 0 ? false : _props$disableEscapeK,\n _props$disablePortal = props.disablePortal,\n disablePortal = _props$disablePortal === void 0 ? false : _props$disablePortal,\n _props$disableRestore = props.disableRestoreFocus,\n disableRestoreFocus = _props$disableRestore === void 0 ? false : _props$disableRestore,\n _props$disableScrollL = props.disableScrollLock,\n disableScrollLock = _props$disableScrollL === void 0 ? false : _props$disableScrollL,\n _props$hideBackdrop = props.hideBackdrop,\n hideBackdrop = _props$hideBackdrop === void 0 ? false : _props$hideBackdrop,\n _props$keepMounted = props.keepMounted,\n keepMounted = _props$keepMounted === void 0 ? false : _props$keepMounted,\n _props$manager = props.manager,\n manager = _props$manager === void 0 ? defaultManager : _props$manager,\n onBackdropClick = props.onBackdropClick,\n onClose = props.onClose,\n onEscapeKeyDown = props.onEscapeKeyDown,\n onRendered = props.onRendered,\n open = props.open,\n other = _objectWithoutProperties(props, [\"BackdropComponent\", \"BackdropProps\", \"children\", \"closeAfterTransition\", \"container\", \"disableAutoFocus\", \"disableBackdropClick\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disablePortal\", \"disableRestoreFocus\", \"disableScrollLock\", \"hideBackdrop\", \"keepMounted\", \"manager\", \"onBackdropClick\", \"onClose\", \"onEscapeKeyDown\", \"onRendered\", \"open\"]);\n\n var _React$useState = React.useState(true),\n exited = _React$useState[0],\n setExited = _React$useState[1];\n\n var modal = React.useRef({});\n var mountNodeRef = React.useRef(null);\n var modalRef = React.useRef(null);\n var handleRef = useForkRef(modalRef, ref);\n var hasTransition = getHasTransition(props);\n\n var getDoc = function getDoc() {\n return ownerDocument(mountNodeRef.current);\n };\n\n var getModal = function getModal() {\n modal.current.modalRef = modalRef.current;\n modal.current.mountNode = mountNodeRef.current;\n return modal.current;\n };\n\n var handleMounted = function handleMounted() {\n manager.mount(getModal(), {\n disableScrollLock: disableScrollLock\n }); // Fix a bug on Chrome where the scroll isn't initially 0.\n\n modalRef.current.scrollTop = 0;\n };\n\n var handleOpen = useEventCallback(function () {\n var resolvedContainer = getContainer(container) || getDoc().body;\n manager.add(getModal(), resolvedContainer); // The element was already mounted.\n\n if (modalRef.current) {\n handleMounted();\n }\n });\n var isTopModal = React.useCallback(function () {\n return manager.isTopModal(getModal());\n }, [manager]);\n var handlePortalRef = useEventCallback(function (node) {\n mountNodeRef.current = node;\n\n if (!node) {\n return;\n }\n\n if (onRendered) {\n onRendered();\n }\n\n if (open && isTopModal()) {\n handleMounted();\n } else {\n ariaHidden(modalRef.current, true);\n }\n });\n var handleClose = React.useCallback(function () {\n manager.remove(getModal());\n }, [manager]);\n React.useEffect(function () {\n return function () {\n handleClose();\n };\n }, [handleClose]);\n React.useEffect(function () {\n if (open) {\n handleOpen();\n } else if (!hasTransition || !closeAfterTransition) {\n handleClose();\n }\n }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);\n\n if (!keepMounted && !open && (!hasTransition || exited)) {\n return null;\n }\n\n var handleEnter = function handleEnter() {\n setExited(false);\n };\n\n var handleExited = function handleExited() {\n setExited(true);\n\n if (closeAfterTransition) {\n handleClose();\n }\n };\n\n var handleBackdropClick = function handleBackdropClick(event) {\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (onBackdropClick) {\n onBackdropClick(event);\n }\n\n if (!disableBackdropClick && onClose) {\n onClose(event, 'backdropClick');\n }\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviours like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n if (event.key !== 'Escape' || !isTopModal()) {\n return;\n }\n\n if (onEscapeKeyDown) {\n onEscapeKeyDown(event);\n }\n\n if (!disableEscapeKeyDown) {\n // Swallow the event, in case someone is listening for the escape key on the body.\n event.stopPropagation();\n\n if (onClose) {\n onClose(event, 'escapeKeyDown');\n }\n }\n };\n\n var inlineStyle = styles(theme || {\n zIndex: zIndex\n });\n var childProps = {};\n\n if (children.props.tabIndex === undefined) {\n childProps.tabIndex = children.props.tabIndex || '-1';\n } // It's a Transition like component\n\n\n if (hasTransition) {\n childProps.onEnter = createChainedFunction(handleEnter, children.props.onEnter);\n childProps.onExited = createChainedFunction(handleExited, children.props.onExited);\n }\n\n return /*#__PURE__*/React.createElement(Portal, {\n ref: handlePortalRef,\n container: container,\n disablePortal: disablePortal\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: handleRef,\n onKeyDown: handleKeyDown,\n role: \"presentation\"\n }, other, {\n style: _extends({}, inlineStyle.root, !open && exited ? inlineStyle.hidden : {}, other.style)\n }), hideBackdrop ? null : /*#__PURE__*/React.createElement(BackdropComponent, _extends({\n open: open,\n onClick: handleBackdropClick\n }, BackdropProps)), /*#__PURE__*/React.createElement(TrapFocus, {\n disableEnforceFocus: disableEnforceFocus,\n disableAutoFocus: disableAutoFocus,\n disableRestoreFocus: disableRestoreFocus,\n getDoc: getDoc,\n isEnabled: isTopModal,\n open: open\n }, /*#__PURE__*/React.cloneElement(children, childProps))));\n});\nprocess.env.NODE_ENV !== \"production\" ? Modal.propTypes = {\n /**\n * A backdrop component. This prop enables custom backdrop rendering.\n */\n BackdropComponent: PropTypes.elementType,\n\n /**\n * Props applied to the [`Backdrop`](/api/backdrop/) element.\n */\n BackdropProps: PropTypes.object,\n\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n\n /**\n * When set to true the Modal waits until a nested Transition is completed before closing.\n */\n closeAfterTransition: PropTypes.bool,\n\n /**\n * A HTML element, component instance, or function that returns either.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([HTMLElementType, PropTypes.instanceOf(React.Component), PropTypes.func]),\n\n /**\n * If `true`, the modal will not automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes.\n * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n *\n * Generally this should never be set to `true` as it makes the modal less\n * accessible to assistive technologies, like screen readers.\n */\n disableAutoFocus: PropTypes.bool,\n\n /**\n * If `true`, clicking the backdrop will not fire `onClose`.\n */\n disableBackdropClick: deprecatedPropType(PropTypes.bool, 'Use the onClose prop with the `reason` argument to filter the `backdropClick` events.'),\n\n /**\n * If `true`, the modal will not prevent focus from leaving the modal while open.\n *\n * Generally this should never be set to `true` as it makes the modal less\n * accessible to assistive technologies, like screen readers.\n */\n disableEnforceFocus: PropTypes.bool,\n\n /**\n * If `true`, hitting escape will not fire `onClose`.\n */\n disableEscapeKeyDown: PropTypes.bool,\n\n /**\n * Disable the portal behavior.\n * The children stay within it's parent DOM hierarchy.\n */\n disablePortal: PropTypes.bool,\n\n /**\n * If `true`, the modal will not restore focus to previously focused element once\n * modal is hidden.\n */\n disableRestoreFocus: PropTypes.bool,\n\n /**\n * Disable the scroll lock behavior.\n */\n disableScrollLock: PropTypes.bool,\n\n /**\n * If `true`, the backdrop is not rendered.\n */\n hideBackdrop: PropTypes.bool,\n\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Modal.\n */\n keepMounted: PropTypes.bool,\n\n /**\n * @ignore\n */\n manager: PropTypes.object,\n\n /**\n * Callback fired when the backdrop is clicked.\n */\n onBackdropClick: deprecatedPropType(PropTypes.func, 'Use the onClose prop with the `reason` argument to handle the `backdropClick` events.'),\n\n /**\n * Callback fired when the component requests to be closed.\n * The `reason` parameter can optionally be used to control the response to `onClose`.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n */\n onClose: PropTypes.func,\n\n /**\n * Callback fired when the escape key is pressed,\n * `disableEscapeKeyDown` is false and the modal is in focus.\n */\n onEscapeKeyDown: deprecatedPropType(PropTypes.func, 'Use the onClose prop with the `reason` argument to handle the `escapeKeyDown` events.'),\n\n /**\n * Callback fired once the children has been mounted into the `container`.\n * It signals that the `open={true}` prop took effect.\n *\n * This prop will be removed in v5, the ref can be used instead.\n */\n onRendered: deprecatedPropType(PropTypes.func, 'Use the ref instead.'),\n\n /**\n * If `true`, the modal is open.\n */\n open: PropTypes.bool.isRequired\n} : void 0;\nexport default Modal;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n var elevations = {};\n theme.shadows.forEach(function (shadow, index) {\n elevations[\"elevation\".concat(index)] = {\n boxShadow: shadow\n };\n });\n return _extends({\n /* Styles applied to the root element. */\n root: {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n transition: theme.transitions.create('box-shadow')\n },\n\n /* Styles applied to the root element if `square={false}`. */\n rounded: {\n borderRadius: theme.shape.borderRadius\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"`. */\n outlined: {\n border: \"1px solid \".concat(theme.palette.divider)\n }\n }, elevations);\n};\nvar Paper = /*#__PURE__*/React.forwardRef(function Paper(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$square = props.square,\n square = _props$square === void 0 ? false : _props$square,\n _props$elevation = props.elevation,\n elevation = _props$elevation === void 0 ? 1 : _props$elevation,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'elevation' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"square\", \"elevation\", \"variant\"]);\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, variant === 'outlined' ? classes.outlined : classes[\"elevation\".concat(elevation)], !square && classes.rounded),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Paper.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * Shadow depth, corresponds to `dp` in the spec.\n * It accepts values between 0 and 24 inclusive.\n */\n elevation: chainPropTypes(PropTypes.number, function (props) {\n var classes = props.classes,\n elevation = props.elevation; // in case `withStyles` fails to inject we don't need this warning\n\n if (classes === undefined) {\n return null;\n }\n\n if (elevation != null && classes[\"elevation\".concat(elevation)] === undefined) {\n return new Error(\"Material-UI: This elevation `\".concat(elevation, \"` is not implemented.\"));\n }\n\n return null;\n }),\n\n /**\n * If `true`, rounded corners are disabled.\n */\n square: PropTypes.bool,\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['elevation', 'outlined'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiPaper'\n})(Paper);","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType } from '@material-ui/utils';\nimport deprecatedPropType from '../utils/deprecatedPropType';\nimport setRef from '../utils/setRef';\nimport useForkRef from '../utils/useForkRef';\n\nfunction getContainer(container) {\n container = typeof container === 'function' ? container() : container; // #StrictMode ready\n\n return ReactDOM.findDOMNode(container);\n}\n\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n */\n\nvar Portal = /*#__PURE__*/React.forwardRef(function Portal(props, ref) {\n var children = props.children,\n container = props.container,\n _props$disablePortal = props.disablePortal,\n disablePortal = _props$disablePortal === void 0 ? false : _props$disablePortal,\n onRendered = props.onRendered;\n\n var _React$useState = React.useState(null),\n mountNode = _React$useState[0],\n setMountNode = _React$useState[1];\n\n var handleRef = useForkRef( /*#__PURE__*/React.isValidElement(children) ? children.ref : null, ref);\n useEnhancedEffect(function () {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n useEnhancedEffect(function () {\n if (mountNode && !disablePortal) {\n setRef(ref, mountNode);\n return function () {\n setRef(ref, null);\n };\n }\n\n return undefined;\n }, [ref, mountNode, disablePortal]);\n useEnhancedEffect(function () {\n if (onRendered && (mountNode || disablePortal)) {\n onRendered();\n }\n }, [onRendered, mountNode, disablePortal]);\n\n if (disablePortal) {\n if ( /*#__PURE__*/React.isValidElement(children)) {\n return /*#__PURE__*/React.cloneElement(children, {\n ref: handleRef\n });\n }\n\n return children;\n }\n\n return mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode;\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The children to render into the `container`.\n */\n children: PropTypes.node,\n\n /**\n * A HTML element, component instance, or function that returns either.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([HTMLElementType, PropTypes.instanceOf(React.Component), PropTypes.func]),\n\n /**\n * Disable the portal behavior.\n * The children stay within it's parent DOM hierarchy.\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Callback fired once the children has been mounted into the `container`.\n *\n * This prop will be removed in v5, the ref can be used instead.\n * @deprecated Use the ref instead.\n */\n onRendered: deprecatedPropType(PropTypes.func, 'Use the ref instead.')\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\n\nexport default Portal;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport debounce from '../utils/debounce';\nimport { Transition } from 'react-transition-group';\nimport { elementAcceptingRef } from '@material-ui/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useTheme from '../styles/useTheme';\nimport { duration } from '../styles/transitions';\nimport { reflow, getTransitionProps } from '../transitions/utils'; // Translate the node so he can't be seen on the screen.\n// Later, we gonna translate back the node to his original location\n// with `none`.`\n\nfunction getTranslateValue(direction, node) {\n var rect = node.getBoundingClientRect();\n var transform;\n\n if (node.fakeTransform) {\n transform = node.fakeTransform;\n } else {\n var computedStyle = window.getComputedStyle(node);\n transform = computedStyle.getPropertyValue('-webkit-transform') || computedStyle.getPropertyValue('transform');\n }\n\n var offsetX = 0;\n var offsetY = 0;\n\n if (transform && transform !== 'none' && typeof transform === 'string') {\n var transformValues = transform.split('(')[1].split(')')[0].split(',');\n offsetX = parseInt(transformValues[4], 10);\n offsetY = parseInt(transformValues[5], 10);\n }\n\n if (direction === 'left') {\n return \"translateX(\".concat(window.innerWidth, \"px) translateX(\").concat(offsetX - rect.left, \"px)\");\n }\n\n if (direction === 'right') {\n return \"translateX(-\".concat(rect.left + rect.width - offsetX, \"px)\");\n }\n\n if (direction === 'up') {\n return \"translateY(\".concat(window.innerHeight, \"px) translateY(\").concat(offsetY - rect.top, \"px)\");\n } // direction === 'down'\n\n\n return \"translateY(-\".concat(rect.top + rect.height - offsetY, \"px)\");\n}\n\nexport function setTranslateValue(direction, node) {\n var transform = getTranslateValue(direction, node);\n\n if (transform) {\n node.style.webkitTransform = transform;\n node.style.transform = transform;\n }\n}\nvar defaultTimeout = {\n enter: duration.enteringScreen,\n exit: duration.leavingScreen\n};\n/**\n * The Slide transition is used by the [Drawer](/components/drawers/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Slide = /*#__PURE__*/React.forwardRef(function Slide(props, ref) {\n var children = props.children,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? 'down' : _props$direction,\n inProp = props.in,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n style = props.style,\n _props$timeout = props.timeout,\n timeout = _props$timeout === void 0 ? defaultTimeout : _props$timeout,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Transition : _props$TransitionComp,\n other = _objectWithoutProperties(props, [\"children\", \"direction\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"]);\n\n var theme = useTheme();\n var childrenRef = React.useRef(null);\n /**\n * used in cloneElement(children, { ref: handleRef })\n */\n\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n childrenRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRefIntermediary = useForkRef(children.ref, handleOwnRef);\n var handleRef = useForkRef(handleRefIntermediary, ref);\n\n var normalizedTransitionCallback = function normalizedTransitionCallback(callback) {\n return function (isAppearing) {\n if (callback) {\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (isAppearing === undefined) {\n callback(childrenRef.current);\n } else {\n callback(childrenRef.current, isAppearing);\n }\n }\n };\n };\n\n var handleEnter = normalizedTransitionCallback(function (node, isAppearing) {\n setTranslateValue(direction, node);\n reflow(node);\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n var handleEntering = normalizedTransitionCallback(function (node, isAppearing) {\n var transitionProps = getTransitionProps({\n timeout: timeout,\n style: style\n }, {\n mode: 'enter'\n });\n node.style.webkitTransition = theme.transitions.create('-webkit-transform', _extends({}, transitionProps, {\n easing: theme.transitions.easing.easeOut\n }));\n node.style.transition = theme.transitions.create('transform', _extends({}, transitionProps, {\n easing: theme.transitions.easing.easeOut\n }));\n node.style.webkitTransform = 'none';\n node.style.transform = 'none';\n\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n });\n var handleEntered = normalizedTransitionCallback(onEntered);\n var handleExiting = normalizedTransitionCallback(onExiting);\n var handleExit = normalizedTransitionCallback(function (node) {\n var transitionProps = getTransitionProps({\n timeout: timeout,\n style: style\n }, {\n mode: 'exit'\n });\n node.style.webkitTransition = theme.transitions.create('-webkit-transform', _extends({}, transitionProps, {\n easing: theme.transitions.easing.sharp\n }));\n node.style.transition = theme.transitions.create('transform', _extends({}, transitionProps, {\n easing: theme.transitions.easing.sharp\n }));\n setTranslateValue(direction, node);\n\n if (onExit) {\n onExit(node);\n }\n });\n var handleExited = normalizedTransitionCallback(function (node) {\n // No need for transitions when the component is hidden\n node.style.webkitTransition = '';\n node.style.transition = '';\n\n if (onExited) {\n onExited(node);\n }\n });\n var updatePosition = React.useCallback(function () {\n if (childrenRef.current) {\n setTranslateValue(direction, childrenRef.current);\n }\n }, [direction]);\n React.useEffect(function () {\n // Skip configuration where the position is screen size invariant.\n if (inProp || direction === 'down' || direction === 'right') {\n return undefined;\n }\n\n var handleResize = debounce(function () {\n if (childrenRef.current) {\n setTranslateValue(direction, childrenRef.current);\n }\n });\n window.addEventListener('resize', handleResize);\n return function () {\n handleResize.clear();\n window.removeEventListener('resize', handleResize);\n };\n }, [direction, inProp]);\n React.useEffect(function () {\n if (!inProp) {\n // We need to update the position of the drawer when the direction change and\n // when it's hidden.\n updatePosition();\n }\n }, [inProp, updatePosition]);\n return /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n nodeRef: childrenRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n appear: true,\n in: inProp,\n timeout: timeout\n }, other), function (state, childProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n ref: handleRef,\n style: _extends({\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, style, children.props.style)\n }, childProps));\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Slide.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * A single child content element.\n */\n children: elementAcceptingRef,\n\n /**\n * Direction the child node will enter from.\n */\n direction: PropTypes.oneOf(['down', 'left', 'right', 'up']),\n\n /**\n * If `true`, show the component; triggers the enter or exit animation.\n */\n in: PropTypes.bool,\n\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default Slide;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center'\n },\n\n /* Styles applied to the root element if `disableGutters={false}`. */\n gutters: _defineProperty({\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2)\n }, theme.breakpoints.up('sm'), {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3)\n }),\n\n /* Styles applied to the root element if `variant=\"regular\"`. */\n regular: theme.mixins.toolbar,\n\n /* Styles applied to the root element if `variant=\"dense\"`. */\n dense: {\n minHeight: 48\n }\n };\n};\nvar Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$disableGutters = props.disableGutters,\n disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'regular' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"disableGutters\", \"variant\"]);\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, classes[variant], className, !disableGutters && classes.gutters),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes = {\n /**\n * Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * If `true`, disables gutter padding.\n */\n disableGutters: PropTypes.bool,\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['regular', 'dense'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiToolbar'\n})(Toolbar);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n margin: 0\n },\n\n /* Styles applied to the root element if `variant=\"body2\"`. */\n body2: theme.typography.body2,\n\n /* Styles applied to the root element if `variant=\"body1\"`. */\n body1: theme.typography.body1,\n\n /* Styles applied to the root element if `variant=\"caption\"`. */\n caption: theme.typography.caption,\n\n /* Styles applied to the root element if `variant=\"button\"`. */\n button: theme.typography.button,\n\n /* Styles applied to the root element if `variant=\"h1\"`. */\n h1: theme.typography.h1,\n\n /* Styles applied to the root element if `variant=\"h2\"`. */\n h2: theme.typography.h2,\n\n /* Styles applied to the root element if `variant=\"h3\"`. */\n h3: theme.typography.h3,\n\n /* Styles applied to the root element if `variant=\"h4\"`. */\n h4: theme.typography.h4,\n\n /* Styles applied to the root element if `variant=\"h5\"`. */\n h5: theme.typography.h5,\n\n /* Styles applied to the root element if `variant=\"h6\"`. */\n h6: theme.typography.h6,\n\n /* Styles applied to the root element if `variant=\"subtitle1\"`. */\n subtitle1: theme.typography.subtitle1,\n\n /* Styles applied to the root element if `variant=\"subtitle2\"`. */\n subtitle2: theme.typography.subtitle2,\n\n /* Styles applied to the root element if `variant=\"overline\"`. */\n overline: theme.typography.overline,\n\n /* Styles applied to the root element if `variant=\"srOnly\"`. Only accessible to screen readers. */\n srOnly: {\n position: 'absolute',\n height: 1,\n width: 1,\n overflow: 'hidden'\n },\n\n /* Styles applied to the root element if `align=\"left\"`. */\n alignLeft: {\n textAlign: 'left'\n },\n\n /* Styles applied to the root element if `align=\"center\"`. */\n alignCenter: {\n textAlign: 'center'\n },\n\n /* Styles applied to the root element if `align=\"right\"`. */\n alignRight: {\n textAlign: 'right'\n },\n\n /* Styles applied to the root element if `align=\"justify\"`. */\n alignJustify: {\n textAlign: 'justify'\n },\n\n /* Styles applied to the root element if `nowrap={true}`. */\n noWrap: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n },\n\n /* Styles applied to the root element if `gutterBottom={true}`. */\n gutterBottom: {\n marginBottom: '0.35em'\n },\n\n /* Styles applied to the root element if `paragraph={true}`. */\n paragraph: {\n marginBottom: 16\n },\n\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit'\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the root element if `color=\"textPrimary\"`. */\n colorTextPrimary: {\n color: theme.palette.text.primary\n },\n\n /* Styles applied to the root element if `color=\"textSecondary\"`. */\n colorTextSecondary: {\n color: theme.palette.text.secondary\n },\n\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n\n /* Styles applied to the root element if `display=\"inline\"`. */\n displayInline: {\n display: 'inline'\n },\n\n /* Styles applied to the root element if `display=\"block\"`. */\n displayBlock: {\n display: 'block'\n }\n };\n};\nvar defaultVariantMapping = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n subtitle1: 'h6',\n subtitle2: 'h6',\n body1: 'p',\n body2: 'p'\n};\nvar Typography = /*#__PURE__*/React.forwardRef(function Typography(props, ref) {\n var _props$align = props.align,\n align = _props$align === void 0 ? 'inherit' : _props$align,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'initial' : _props$color,\n component = props.component,\n _props$display = props.display,\n display = _props$display === void 0 ? 'initial' : _props$display,\n _props$gutterBottom = props.gutterBottom,\n gutterBottom = _props$gutterBottom === void 0 ? false : _props$gutterBottom,\n _props$noWrap = props.noWrap,\n noWrap = _props$noWrap === void 0 ? false : _props$noWrap,\n _props$paragraph = props.paragraph,\n paragraph = _props$paragraph === void 0 ? false : _props$paragraph,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'body1' : _props$variant,\n _props$variantMapping = props.variantMapping,\n variantMapping = _props$variantMapping === void 0 ? defaultVariantMapping : _props$variantMapping,\n other = _objectWithoutProperties(props, [\"align\", \"classes\", \"className\", \"color\", \"component\", \"display\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"]);\n\n var Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, variant !== 'inherit' && classes[variant], color !== 'initial' && classes[\"color\".concat(capitalize(color))], noWrap && classes.noWrap, gutterBottom && classes.gutterBottom, paragraph && classes.paragraph, align !== 'inherit' && classes[\"align\".concat(capitalize(align))], display !== 'initial' && classes[\"display\".concat(capitalize(display))]),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Typography.propTypes = {\n /**\n * Set the text-align on the component.\n */\n align: PropTypes.oneOf(['inherit', 'left', 'center', 'right', 'justify']),\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['initial', 'inherit', 'primary', 'secondary', 'textPrimary', 'textSecondary', 'error']),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n * Overrides the behavior of the `variantMapping` prop.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * Controls the display type\n */\n display: PropTypes.oneOf(['initial', 'block', 'inline']),\n\n /**\n * If `true`, the text will have a bottom margin.\n */\n gutterBottom: PropTypes.bool,\n\n /**\n * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n *\n * Note that text overflow can only happen with block or inline-block level elements\n * (the element needs to have a width in order to overflow).\n */\n noWrap: PropTypes.bool,\n\n /**\n * If `true`, the text will have a bottom margin.\n */\n paragraph: PropTypes.bool,\n\n /**\n * Applies the theme typography styles.\n */\n variant: PropTypes.oneOf(['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'caption', 'button', 'overline', 'srOnly', 'inherit']),\n\n /**\n * The component maps the variant prop to a range of different HTML element types.\n * For instance, subtitle1 to `<h6>`.\n * If you wish to change that mapping, you can provide your own.\n * Alternatively, you can use the `component` prop.\n */\n variantMapping: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTypography'\n})(Typography);","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n\n/* eslint-disable no-use-before-define */\n\n/**\n * Returns a number whose value is limited to the given range.\n *\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(\"Material-UI: The value provided \".concat(value, \" is out of range [\").concat(min, \", \").concat(max, \"].\"));\n }\n }\n\n return Math.min(Math.max(min, value), max);\n}\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n *\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\n\n\nexport function hexToRgb(color) {\n color = color.substr(1);\n var re = new RegExp(\".{1,\".concat(color.length >= 6 ? 2 : 1, \"}\"), 'g');\n var colors = color.match(re);\n\n if (colors && colors[0].length === 1) {\n colors = colors.map(function (n) {\n return n + n;\n });\n }\n\n return colors ? \"rgb\".concat(colors.length === 4 ? 'a' : '', \"(\").concat(colors.map(function (n, index) {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', '), \")\") : '';\n}\n\nfunction intToHex(int) {\n var hex = int.toString(16);\n return hex.length === 1 ? \"0\".concat(hex) : hex;\n}\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n *\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\n\n\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n\n var _decomposeColor = decomposeColor(color),\n values = _decomposeColor.values;\n\n return \"#\".concat(values.map(function (n) {\n return intToHex(n);\n }).join(''));\n}\n/**\n * Converts a color from hsl format to rgb format.\n *\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\n\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n var _color = color,\n values = _color.values;\n var h = values[0];\n var s = values[1] / 100;\n var l = values[2] / 100;\n var a = s * Math.min(l, 1 - l);\n\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n\n var type = 'rgb';\n var rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n\n return recomposeColor({\n type: type,\n values: rgb\n });\n}\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\n\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n\n var marker = color.indexOf('(');\n var type = color.substring(0, marker);\n\n if (['rgb', 'rgba', 'hsl', 'hsla'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: Unsupported `\".concat(color, \"` color.\\nWe support the following formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla().\") : _formatMuiErrorMessage(3, color));\n }\n\n var values = color.substring(marker + 1, color.length - 1).split(',');\n values = values.map(function (value) {\n return parseFloat(value);\n });\n return {\n type: type,\n values: values\n };\n}\n/**\n * Converts a color object with type and values to a string.\n *\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\n\nexport function recomposeColor(color) {\n var type = color.type;\n var values = color.values;\n\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map(function (n, i) {\n return i < 3 ? parseInt(n, 10) : n;\n });\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = \"\".concat(values[1], \"%\");\n values[2] = \"\".concat(values[2], \"%\");\n }\n\n return \"\".concat(type, \"(\").concat(values.join(', '), \")\");\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\n\nexport function getContrastRatio(foreground, background) {\n var lumA = getLuminance(foreground);\n var lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\n\nexport function getLuminance(color) {\n color = decomposeColor(color);\n var rgb = color.type === 'hsl' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(function (val) {\n val /= 255; // normalized\n\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n }); // Truncate at 3 digits\n\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function emphasize(color) {\n var coefficient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15;\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nvar warnedOnce = false;\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0 -1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n *\n * @deprecated\n * Use `import { alpha } from '@material-ui/core/styles'` instead.\n */\n\nexport function fade(color, value) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['Material-UI: The `fade` color utility was renamed to `alpha` to better describe its functionality.', '', \"You should use `import { alpha } from '@material-ui/core/styles'`\"].join('\\n'));\n }\n }\n\n return alpha(color, value);\n}\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha value is overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0-1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clamp(value);\n\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n\n color.values[3] = value;\n return recomposeColor(color);\n}\n/**\n * Darkens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n\n return recomposeColor(color);\n}\n/**\n * Lightens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n }\n\n return recomposeColor(color);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport var keys = ['xs', 'sm', 'md', 'lg', 'xl']; // Keep in mind that @media is inclusive by the CSS specification.\n\nexport default function createBreakpoints(breakpoints) {\n var _breakpoints$values = breakpoints.values,\n values = _breakpoints$values === void 0 ? {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n } : _breakpoints$values,\n _breakpoints$unit = breakpoints.unit,\n unit = _breakpoints$unit === void 0 ? 'px' : _breakpoints$unit,\n _breakpoints$step = breakpoints.step,\n step = _breakpoints$step === void 0 ? 5 : _breakpoints$step,\n other = _objectWithoutProperties(breakpoints, [\"values\", \"unit\", \"step\"]);\n\n function up(key) {\n var value = typeof values[key] === 'number' ? values[key] : key;\n return \"@media (min-width:\".concat(value).concat(unit, \")\");\n }\n\n function down(key) {\n var endIndex = keys.indexOf(key) + 1;\n var upperbound = values[keys[endIndex]];\n\n if (endIndex === keys.length) {\n // xl down applies to all sizes\n return up('xs');\n }\n\n var value = typeof upperbound === 'number' && endIndex > 0 ? upperbound : key;\n return \"@media (max-width:\".concat(value - step / 100).concat(unit, \")\");\n }\n\n function between(start, end) {\n var endIndex = keys.indexOf(end);\n\n if (endIndex === keys.length - 1) {\n return up(start);\n }\n\n return \"@media (min-width:\".concat(typeof values[start] === 'number' ? values[start] : start).concat(unit, \") and \") + \"(max-width:\".concat((endIndex !== -1 && typeof values[keys[endIndex + 1]] === 'number' ? values[keys[endIndex + 1]] : end) - step / 100).concat(unit, \")\");\n }\n\n function only(key) {\n return between(key, key);\n }\n\n var warnedOnce = false;\n\n function width(key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.warn([\"Material-UI: The `theme.breakpoints.width` utility is deprecated because it's redundant.\", 'Use the `theme.breakpoints.values` instead.'].join('\\n'));\n }\n }\n\n return values[key];\n }\n\n return _extends({\n keys: keys,\n values: values,\n up: up,\n down: down,\n between: between,\n only: only,\n width: width\n }, other);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, spacing, mixins) {\n var _toolbar;\n\n return _extends({\n gutters: function gutters() {\n var styles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.warn(['Material-UI: theme.mixins.gutters() is deprecated.', 'You can use the source of the mixin directly:', \"\\n paddingLeft: theme.spacing(2),\\n paddingRight: theme.spacing(2),\\n [theme.breakpoints.up('sm')]: {\\n paddingLeft: theme.spacing(3),\\n paddingRight: theme.spacing(3),\\n },\\n \"].join('\\n'));\n return _extends({\n paddingLeft: spacing(2),\n paddingRight: spacing(2)\n }, styles, _defineProperty({}, breakpoints.up('sm'), _extends({\n paddingLeft: spacing(3),\n paddingRight: spacing(3)\n }, styles[breakpoints.up('sm')])));\n },\n toolbar: (_toolbar = {\n minHeight: 56\n }, _defineProperty(_toolbar, \"\".concat(breakpoints.up('xs'), \" and (orientation: landscape)\"), {\n minHeight: 48\n }), _defineProperty(_toolbar, breakpoints.up('sm'), {\n minHeight: 64\n }), _toolbar)\n }, mixins);\n}","var common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","var grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#d5d5d5',\n A200: '#aaaaaa',\n A400: '#303030',\n A700: '#616161'\n};\nexport default grey;","var indigo = {\n 50: '#e8eaf6',\n 100: '#c5cae9',\n 200: '#9fa8da',\n 300: '#7986cb',\n 400: '#5c6bc0',\n 500: '#3f51b5',\n 600: '#3949ab',\n 700: '#303f9f',\n 800: '#283593',\n 900: '#1a237e',\n A100: '#8c9eff',\n A200: '#536dfe',\n A400: '#3d5afe',\n A700: '#304ffe'\n};\nexport default indigo;","var pink = {\n 50: '#fce4ec',\n 100: '#f8bbd0',\n 200: '#f48fb1',\n 300: '#f06292',\n 400: '#ec407a',\n 500: '#e91e63',\n 600: '#d81b60',\n 700: '#c2185b',\n 800: '#ad1457',\n 900: '#880e4f',\n A100: '#ff80ab',\n A200: '#ff4081',\n A400: '#f50057',\n A700: '#c51162'\n};\nexport default pink;","var red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","var orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","var blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","var green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\nimport { deepmerge } from '@material-ui/utils';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport indigo from '../colors/indigo';\nimport pink from '../colors/pink';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport green from '../colors/green';\nimport { darken, getContrastRatio, lighten } from './colorManipulator';\nexport var light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.54)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)',\n // Text hints.\n hint: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: grey[50]\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport var dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n hint: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: grey[800],\n default: '#303030'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\n\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n var tonalOffsetLight = tonalOffset.light || tonalOffset;\n var tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\n\nexport default function createPalette(palette) {\n var _palette$primary = palette.primary,\n primary = _palette$primary === void 0 ? {\n light: indigo[300],\n main: indigo[500],\n dark: indigo[700]\n } : _palette$primary,\n _palette$secondary = palette.secondary,\n secondary = _palette$secondary === void 0 ? {\n light: pink.A200,\n main: pink.A400,\n dark: pink.A700\n } : _palette$secondary,\n _palette$error = palette.error,\n error = _palette$error === void 0 ? {\n light: red[300],\n main: red[500],\n dark: red[700]\n } : _palette$error,\n _palette$warning = palette.warning,\n warning = _palette$warning === void 0 ? {\n light: orange[300],\n main: orange[500],\n dark: orange[700]\n } : _palette$warning,\n _palette$info = palette.info,\n info = _palette$info === void 0 ? {\n light: blue[300],\n main: blue[500],\n dark: blue[700]\n } : _palette$info,\n _palette$success = palette.success,\n success = _palette$success === void 0 ? {\n light: green[300],\n main: green[500],\n dark: green[700]\n } : _palette$success,\n _palette$type = palette.type,\n type = _palette$type === void 0 ? 'light' : _palette$type,\n _palette$contrastThre = palette.contrastThreshold,\n contrastThreshold = _palette$contrastThre === void 0 ? 3 : _palette$contrastThre,\n _palette$tonalOffset = palette.tonalOffset,\n tonalOffset = _palette$tonalOffset === void 0 ? 0.2 : _palette$tonalOffset,\n other = _objectWithoutProperties(palette, [\"primary\", \"secondary\", \"error\", \"warning\", \"info\", \"success\", \"type\", \"contrastThreshold\", \"tonalOffset\"]); // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n\n\n function getContrastText(background) {\n var contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n\n if (process.env.NODE_ENV !== 'production') {\n var contrast = getContrastRatio(background, contrastText);\n\n if (contrast < 3) {\n console.error([\"Material-UI: The contrast ratio of \".concat(contrast, \":1 for \").concat(contrastText, \" on \").concat(background), 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n\n return contrastText;\n }\n\n var augmentColor = function augmentColor(color) {\n var mainShade = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n var lightShade = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;\n var darkShade = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 700;\n color = _extends({}, color);\n\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n\n if (!color.main) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\nThe color object needs to have a `main` property or a `\".concat(mainShade, \"` property.\") : _formatMuiErrorMessage(4, mainShade));\n }\n\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\n`color.main` should be a string, but `\".concat(JSON.stringify(color.main), \"` was provided instead.\\n\\nDid you intend to use one of the following approaches?\\n\\nimport {\\xA0green } from \\\"@material-ui/core/colors\\\";\\n\\nconst theme1 = createTheme({ palette: {\\n primary: green,\\n} });\\n\\nconst theme2 = createTheme({ palette: {\\n primary: { main: green[500] },\\n} });\") : _formatMuiErrorMessage(5, JSON.stringify(color.main)));\n }\n\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n\n return color;\n };\n\n var types = {\n dark: dark,\n light: light\n };\n\n if (process.env.NODE_ENV !== 'production') {\n if (!types[type]) {\n console.error(\"Material-UI: The palette type `\".concat(type, \"` is not supported.\"));\n }\n }\n\n var paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: common,\n // The palette type, can be light or dark.\n type: type,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor(primary),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor(secondary, 'A400', 'A200', 'A700'),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor(error),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor(warning),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor(info),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor(success),\n // The grey colors.\n grey: grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold: contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText: getContrastText,\n // Generate a rich color object.\n augmentColor: augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset: tonalOffset\n }, types[type]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\n\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\n\nvar warnedOnce = false;\n\nfunction roundWithDeprecationWarning(value) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n console.warn(['Material-UI: The `theme.typography.round` helper is deprecated.', 'Head to https://mui.com/r/migration-v4/#theme for a migration path.'].join('\\n'));\n warnedOnce = true;\n }\n }\n\n return round(value);\n}\n\nvar caseAllCaps = {\n textTransform: 'uppercase'\n};\nvar defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n/**\n * @see @link{https://material.io/design/typography/the-type-system.html}\n * @see @link{https://material.io/design/typography/understanding-typography.html}\n */\n\nexport default function createTypography(palette, typography) {\n var _ref = typeof typography === 'function' ? typography(palette) : typography,\n _ref$fontFamily = _ref.fontFamily,\n fontFamily = _ref$fontFamily === void 0 ? defaultFontFamily : _ref$fontFamily,\n _ref$fontSize = _ref.fontSize,\n fontSize = _ref$fontSize === void 0 ? 14 : _ref$fontSize,\n _ref$fontWeightLight = _ref.fontWeightLight,\n fontWeightLight = _ref$fontWeightLight === void 0 ? 300 : _ref$fontWeightLight,\n _ref$fontWeightRegula = _ref.fontWeightRegular,\n fontWeightRegular = _ref$fontWeightRegula === void 0 ? 400 : _ref$fontWeightRegula,\n _ref$fontWeightMedium = _ref.fontWeightMedium,\n fontWeightMedium = _ref$fontWeightMedium === void 0 ? 500 : _ref$fontWeightMedium,\n _ref$fontWeightBold = _ref.fontWeightBold,\n fontWeightBold = _ref$fontWeightBold === void 0 ? 700 : _ref$fontWeightBold,\n _ref$htmlFontSize = _ref.htmlFontSize,\n htmlFontSize = _ref$htmlFontSize === void 0 ? 16 : _ref$htmlFontSize,\n allVariants = _ref.allVariants,\n pxToRem2 = _ref.pxToRem,\n other = _objectWithoutProperties(_ref, [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('Material-UI: `fontSize` is required to be a number.');\n }\n\n if (typeof htmlFontSize !== 'number') {\n console.error('Material-UI: `htmlFontSize` is required to be a number.');\n }\n }\n\n var coef = fontSize / 14;\n\n var pxToRem = pxToRem2 || function (size) {\n return \"\".concat(size / htmlFontSize * coef, \"rem\");\n };\n\n var buildVariant = function buildVariant(fontWeight, size, lineHeight, letterSpacing, casing) {\n return _extends({\n fontFamily: fontFamily,\n fontWeight: fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight: lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: \"\".concat(round(letterSpacing / size), \"em\")\n } : {}, casing, allVariants);\n };\n\n var variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps)\n };\n return deepmerge(_extends({\n htmlFontSize: htmlFontSize,\n pxToRem: pxToRem,\n round: roundWithDeprecationWarning,\n // TODO v5: remove\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontWeightLight: fontWeightLight,\n fontWeightRegular: fontWeightRegular,\n fontWeightMedium: fontWeightMedium,\n fontWeightBold: fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n\n });\n}","var shadowKeyUmbraOpacity = 0.2;\nvar shadowKeyPenumbraOpacity = 0.14;\nvar shadowAmbientShadowOpacity = 0.12;\n\nfunction createShadow() {\n return [\"\".concat(arguments.length <= 0 ? undefined : arguments[0], \"px \").concat(arguments.length <= 1 ? undefined : arguments[1], \"px \").concat(arguments.length <= 2 ? undefined : arguments[2], \"px \").concat(arguments.length <= 3 ? undefined : arguments[3], \"px rgba(0,0,0,\").concat(shadowKeyUmbraOpacity, \")\"), \"\".concat(arguments.length <= 4 ? undefined : arguments[4], \"px \").concat(arguments.length <= 5 ? undefined : arguments[5], \"px \").concat(arguments.length <= 6 ? undefined : arguments[6], \"px \").concat(arguments.length <= 7 ? undefined : arguments[7], \"px rgba(0,0,0,\").concat(shadowKeyPenumbraOpacity, \")\"), \"\".concat(arguments.length <= 8 ? undefined : arguments[8], \"px \").concat(arguments.length <= 9 ? undefined : arguments[9], \"px \").concat(arguments.length <= 10 ? undefined : arguments[10], \"px \").concat(arguments.length <= 11 ? undefined : arguments[11], \"px rgba(0,0,0,\").concat(shadowAmbientShadowOpacity, \")\")].join(',');\n} // Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\n\n\nvar shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","var shape = {\n borderRadius: 4\n};\nexport default shape;","import { createUnarySpacing } from '@material-ui/system';\nvar warnOnce;\nexport default function createSpacing() {\n var spacingInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8;\n\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n } // Material Design layouts are visually balanced. Most measurements align to an 8dp grid applied, which aligns both spacing and the overall layout.\n // Smaller components, such as icons and type, can align to a 4dp grid.\n // https://material.io/design/layout/understanding-layout.html#usage\n\n\n var transform = createUnarySpacing({\n spacing: spacingInput\n });\n\n var spacing = function spacing() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!(args.length <= 4)) {\n console.error(\"Material-UI: Too many arguments provided, expected between 0 and 4, got \".concat(args.length));\n }\n }\n\n if (args.length === 0) {\n return transform(1);\n }\n\n if (args.length === 1) {\n return transform(args[0]);\n }\n\n return args.map(function (argument) {\n if (typeof argument === 'string') {\n return argument;\n }\n\n var output = transform(argument);\n return typeof output === 'number' ? \"\".concat(output, \"px\") : output;\n }).join(' ');\n }; // Backward compatibility, to remove in v5.\n\n\n Object.defineProperty(spacing, 'unit', {\n get: function get() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnOnce || process.env.NODE_ENV === 'test') {\n console.error(['Material-UI: theme.spacing.unit usage has been deprecated.', 'It will be removed in v5.', 'You can replace `theme.spacing.unit * y` with `theme.spacing(y)`.', '', 'You can use the `https://github.com/mui-org/material-ui/tree/master/packages/material-ui-codemod/README.md#theme-spacing-api` migration helper to make the process smoother.'].join('\\n'));\n }\n\n warnOnce = true;\n }\n\n return spacingInput;\n }\n });\n spacing.mui = true;\n return spacing;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\nimport createBreakpoints from './createBreakpoints';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport transitions from './transitions';\nimport zIndex from './zIndex';\n\nfunction createTheme() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _options$breakpoints = options.breakpoints,\n breakpointsInput = _options$breakpoints === void 0 ? {} : _options$breakpoints,\n _options$mixins = options.mixins,\n mixinsInput = _options$mixins === void 0 ? {} : _options$mixins,\n _options$palette = options.palette,\n paletteInput = _options$palette === void 0 ? {} : _options$palette,\n spacingInput = options.spacing,\n _options$typography = options.typography,\n typographyInput = _options$typography === void 0 ? {} : _options$typography,\n other = _objectWithoutProperties(options, [\"breakpoints\", \"mixins\", \"palette\", \"spacing\", \"typography\"]);\n\n var palette = createPalette(paletteInput);\n var breakpoints = createBreakpoints(breakpointsInput);\n var spacing = createSpacing(spacingInput);\n var muiTheme = deepmerge({\n breakpoints: breakpoints,\n direction: 'ltr',\n mixins: createMixins(breakpoints, spacing, mixinsInput),\n overrides: {},\n // Inject custom styles\n palette: palette,\n props: {},\n // Provide default props\n shadows: shadows,\n typography: createTypography(palette, typographyInput),\n spacing: spacing,\n shape: shape,\n transitions: transitions,\n zIndex: zIndex\n }, other);\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n muiTheme = args.reduce(function (acc, argument) {\n return deepmerge(acc, argument);\n }, muiTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n var pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected'];\n\n var traverse = function traverse(node, parentKey) {\n var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var key; // eslint-disable-next-line guard-for-in, no-restricted-syntax\n\n for (key in node) {\n var child = node[key];\n\n if (depth === 1) {\n if (key.indexOf('Mui') === 0 && child) {\n traverse(child, key, depth + 1);\n }\n } else if (pseudoClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `\".concat(parentKey, \"` component increases \") + \"the CSS specificity of the `\".concat(key, \"` internal state.\"), 'You can not override it like this: ', JSON.stringify(node, null, 2), '', 'Instead, you need to use the $ruleName syntax:', JSON.stringify({\n root: _defineProperty({}, \"&$\".concat(key), child)\n }, null, 2), '', 'https://mui.com/r/pseudo-classes-guide'].join('\\n'));\n } // Remove the style to prevent global conflicts.\n\n\n node[key] = {};\n }\n }\n };\n\n traverse(muiTheme.overrides);\n }\n\n return muiTheme;\n}\n\nvar warnedOnce = false;\nexport function createMuiTheme() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['Material-UI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@material-ui/core/styles'`\"].join('\\n'));\n }\n }\n\n return createTheme.apply(void 0, arguments);\n}\nexport default createTheme;","import createTheme from './createTheme';\nvar defaultTheme = createTheme();\nexport default defaultTheme;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport var easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\n\nexport var duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\n\nfunction formatMs(milliseconds) {\n return \"\".concat(Math.round(milliseconds), \"ms\");\n}\n/**\n * @param {string|Array} props\n * @param {object} param\n * @param {string} param.prop\n * @param {number} param.duration\n * @param {string} param.easing\n * @param {number} param.delay\n */\n\n\nexport default {\n easing: easing,\n duration: duration,\n create: function create() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['all'];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _options$duration = options.duration,\n durationOption = _options$duration === void 0 ? duration.standard : _options$duration,\n _options$easing = options.easing,\n easingOption = _options$easing === void 0 ? easing.easeInOut : _options$easing,\n _options$delay = options.delay,\n delay = _options$delay === void 0 ? 0 : _options$delay,\n other = _objectWithoutProperties(options, [\"duration\", \"easing\", \"delay\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n\n var isNumber = function isNumber(value) {\n return !isNaN(parseFloat(value));\n };\n\n if (!isString(props) && !Array.isArray(props)) {\n console.error('Material-UI: Argument \"props\" must be a string or Array.');\n }\n\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(\"Material-UI: Argument \\\"duration\\\" must be a number or a string but found \".concat(durationOption, \".\"));\n }\n\n if (!isString(easingOption)) {\n console.error('Material-UI: Argument \"easing\" must be a string.');\n }\n\n if (!isNumber(delay) && !isString(delay)) {\n console.error('Material-UI: Argument \"delay\" must be a number or a string.');\n }\n\n if (Object.keys(other).length !== 0) {\n console.error(\"Material-UI: Unrecognized argument(s) [\".concat(Object.keys(other).join(','), \"].\"));\n }\n }\n\n return (Array.isArray(props) ? props : [props]).map(function (animatedProp) {\n return \"\".concat(animatedProp, \" \").concat(typeof durationOption === 'string' ? durationOption : formatMs(durationOption), \" \").concat(easingOption, \" \").concat(typeof delay === 'string' ? delay : formatMs(delay));\n }).join(',');\n },\n getAutoHeightDuration: function getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n\n var constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n\n return Math.round((4 + 15 * Math.pow(constant, 0.25) + constant / 5) * 10);\n }\n};","import { useTheme as useThemeWithoutDefault } from '@material-ui/styles';\nimport React from 'react';\nimport defaultTheme from './defaultTheme';\nexport default function useTheme() {\n var theme = useThemeWithoutDefault() || defaultTheme;\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n\n return theme;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { withStyles as withStylesWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\n\nfunction withStyles(stylesOrCreator, options) {\n return withStylesWithoutDefault(stylesOrCreator, _extends({\n defaultTheme: defaultTheme\n }, options));\n}\n\nexport default withStyles;","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nvar zIndex = {\n mobileStepper: 1000,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","export var reflow = function reflow(node) {\n return node.scrollTop;\n};\nexport function getTransitionProps(props, options) {\n var timeout = props.timeout,\n _props$style = props.style,\n style = _props$style === void 0 ? {} : _props$style;\n return {\n duration: style.transitionDuration || typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n delay: style.transitionDelay\n };\n}","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word a the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: capitalize(string) expects a string argument.\" : _formatMuiErrorMessage(7));\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nexport default function createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.reduce(function (acc, func) {\n if (func == null) {\n return acc;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof func !== 'function') {\n console.error('Material-UI: Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n }\n\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, function () {});\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n fill: 'currentColor',\n flexShrink: 0,\n fontSize: theme.typography.pxToRem(24),\n transition: theme.transitions.create('fill', {\n duration: theme.transitions.duration.shorter\n })\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the root element if `color=\"action\"`. */\n colorAction: {\n color: theme.palette.action.active\n },\n\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n\n /* Styles applied to the root element if `color=\"disabled\"`. */\n colorDisabled: {\n color: theme.palette.action.disabled\n },\n\n /* Styles applied to the root element if `fontSize=\"inherit\"`. */\n fontSizeInherit: {\n fontSize: 'inherit'\n },\n\n /* Styles applied to the root element if `fontSize=\"small\"`. */\n fontSizeSmall: {\n fontSize: theme.typography.pxToRem(20)\n },\n\n /* Styles applied to the root element if `fontSize=\"large\"`. */\n fontSizeLarge: {\n fontSize: theme.typography.pxToRem(35)\n }\n };\n};\nvar SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'inherit' : _props$color,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'svg' : _props$component,\n _props$fontSize = props.fontSize,\n fontSize = _props$fontSize === void 0 ? 'medium' : _props$fontSize,\n htmlColor = props.htmlColor,\n titleAccess = props.titleAccess,\n _props$viewBox = props.viewBox,\n viewBox = _props$viewBox === void 0 ? '0 0 24 24' : _props$viewBox,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"titleAccess\", \"viewBox\"]);\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, color !== 'inherit' && classes[\"color\".concat(capitalize(color))], fontSize !== 'default' && fontSize !== 'medium' && classes[\"fontSize\".concat(capitalize(fontSize))]),\n focusable: \"false\",\n viewBox: viewBox,\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, other), children, titleAccess ? /*#__PURE__*/React.createElement(\"title\", null, titleAccess) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n */\n color: PropTypes.oneOf(['action', 'disabled', 'error', 'inherit', 'primary', 'secondary']),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n */\n fontSize: chainPropTypes(PropTypes.oneOf(['default', 'inherit', 'large', 'medium', 'small']), function (props) {\n var fontSize = props.fontSize;\n\n if (fontSize === 'default') {\n throw new Error('Material-UI: `fontSize=\"default\"` is deprecated. Use `fontSize=\"medium\"` instead.');\n }\n\n return null;\n }),\n\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this property.\n */\n shapeRendering: PropTypes.string,\n\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default withStyles(styles, {\n name: 'MuiSvgIcon'\n})(SvgIcon);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport SvgIcon from '../SvgIcon';\n/**\n * Private module reserved for @material-ui/x packages.\n */\n\nexport default function createSvgIcon(path, displayName) {\n var Component = function Component(props, ref) {\n return /*#__PURE__*/React.createElement(SvgIcon, _extends({\n ref: ref\n }, props), path);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = \"\".concat(displayName, \"Icon\");\n }\n\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func) {\n var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 166;\n var timeout;\n\n function debounced() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // eslint-disable-next-line consistent-this\n var that = this;\n\n var later = function later() {\n func.apply(that, args);\n };\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n\n debounced.clear = function () {\n clearTimeout(timeout);\n };\n\n return debounced;\n}","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/3ffe3a5d82f6f561b82ff78d82b32a7d14aed558/js/src/modal.js#L512-L519\nexport default function getScrollbarSize() {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.width = '99px';\n scrollDiv.style.height = '99px';\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarSize;\n}","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return function () {\n return null;\n };\n }\n\n return function (props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (typeof props[propName] !== 'undefined') {\n return new Error(\"The \".concat(location, \" `\").concat(propFullNameSafe, \"` of \") + \"`\".concat(componentNameSafe, \"` is deprecated. \").concat(reason));\n }\n\n return null;\n };\n}","export default function requirePropFactory(componentNameInError) {\n if (process.env.NODE_ENV === 'production') {\n return function () {\n return null;\n };\n }\n\n var requireProp = function requireProp(requiredProp) {\n return function (props, propName, componentName, location, propFullName) {\n var propFullNameSafe = propFullName || propName;\n\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(\"The prop `\".concat(propFullNameSafe, \"` of \") + \"`\".concat(componentNameInError, \"` must be used on `\").concat(requiredProp, \"`.\"));\n }\n\n return null;\n };\n };\n\n return requireProp;\n}","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n\n var propFullNameSafe = propFullName || propName;\n\n if (typeof props[propName] !== 'undefined') {\n return new Error(\"The prop `\".concat(propFullNameSafe, \"` is not supported. Please remove it.\"));\n }\n\n return null;\n}","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from './ownerDocument';\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc.defaultView || window;\n}","// TODO v5: consider to make it private\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","import * as React from 'react';\n/**\n * Private module reserved for @material-ui/x packages.\n */\n\nexport default function useId(idOverride) {\n var _React$useState = React.useState(idOverride),\n defaultId = _React$useState[0],\n setDefaultId = _React$useState[1];\n\n var id = idOverride || defaultId;\n React.useEffect(function () {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the random value for client-side rendering only.\n // We can't use it server-side.\n setDefaultId(\"mui-\".concat(Math.round(Math.random() * 1e5)));\n }\n }, [defaultId]);\n return id;\n}","/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled(_ref) {\n var controlled = _ref.controlled,\n defaultProp = _ref.default,\n name = _ref.name,\n _ref$state = _ref.state,\n state = _ref$state === void 0 ? 'value' : _ref$state;\n\n var _React$useRef = React.useRef(controlled !== undefined),\n isControlled = _React$useRef.current;\n\n var _React$useState = React.useState(defaultProp),\n valueState = _React$useState[0],\n setValue = _React$useState[1];\n\n var value = isControlled ? controlled : valueState;\n\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(function () {\n if (isControlled !== (controlled !== undefined)) {\n console.error([\"Material-UI: A component is changing the \".concat(isControlled ? '' : 'un', \"controlled \").concat(state, \" state of \").concat(name, \" to be \").concat(isControlled ? 'un' : '', \"controlled.\"), 'Elements should not switch from uncontrolled to controlled (or vice versa).', \"Decide between using a controlled or uncontrolled \".concat(name, \" \") + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render, it's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [controlled]);\n\n var _React$useRef2 = React.useRef(defaultProp),\n defaultValue = _React$useRef2.current;\n\n React.useEffect(function () {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([\"Material-UI: A component is changing the default \".concat(state, \" state of an uncontrolled \").concat(name, \" after being initialized. \") + \"To suppress this warning opt to use a controlled \".concat(name, \".\")].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n\n var setValueIfUncontrolled = React.useCallback(function (newValue) {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","import * as React from 'react';\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n *\n * @param {function} fn\n */\n\nexport default function useEventCallback(fn) {\n var ref = React.useRef(fn);\n useEnhancedEffect(function () {\n ref.current = fn;\n });\n return React.useCallback(function () {\n return (0, ref.current).apply(void 0, arguments);\n }, []);\n}","import * as React from 'react';\nimport setRef from './setRef';\nexport default function useForkRef(refA, refB) {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior\n */\n return React.useMemo(function () {\n if (refA == null && refB == null) {\n return null;\n }\n\n return function (refValue) {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}","// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nvar hadKeyboardEvent = true;\nvar hadFocusVisibleRecently = false;\nvar hadFocusVisibleRecentlyTimeout = null;\nvar inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @return {boolean}\n */\n\nfunction focusTriggersKeyboardModality(node) {\n var type = node.type,\n tagName = node.tagName;\n\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n\n if (node.isContentEditable) {\n return true;\n }\n\n return false;\n}\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\n\n\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n\n hadKeyboardEvent = true;\n}\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\n\n\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\n\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\n\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nfunction isFocusVisible(event) {\n var target = event.target;\n\n try {\n return target.matches(':focus-visible');\n } catch (error) {} // browsers not implementing :focus-visible will throw a SyntaxError\n // we use our own heuristic for those browsers\n // rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n // no need for validFocusTarget check. the user does that by attaching it to\n // focusable events only\n\n\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\n/**\n * Should be called if a blur event is fired on a focus-visible element\n */\n\n\nfunction handleBlurVisible() {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function () {\n hadFocusVisibleRecently = false;\n }, 100);\n}\n\nexport default function useIsFocusVisible() {\n var ref = React.useCallback(function (instance) {\n var node = ReactDOM.findDOMNode(instance);\n\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(isFocusVisible);\n }\n\n return {\n isFocusVisible: isFocusVisible,\n onBlurVisible: handleBlurVisible,\n ref: ref\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n}), 'Check');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'KeyboardArrowLeft');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'KeyboardArrowRight');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\"\n}), 'ReportProblemOutlined');\n\nexports.default = _default;","import * as React from 'react';\nimport createSvgIcon from './utils/createSvgIcon';\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM17.99 9l-1.41-1.42-6.59 6.59-2.58-2.57-1.42 1.41 4 3.99z\"\n}), 'CheckBoxOutlined');","import * as React from 'react';\nimport createSvgIcon from './utils/createSvgIcon';\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _utils.createSvgIcon;\n }\n});\n\nvar _utils = require(\"@material-ui/core/utils\");","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nimport createGenerateClassName from '../createGenerateClassName';\nimport { create } from 'jss';\nimport jssPreset from '../jssPreset'; // Default JSS instance.\n\nvar jss = create(jssPreset()); // Use a singleton or the provided one by the context.\n//\n// The counter-based approach doesn't tolerate any mistake.\n// It's much safer to use the same counter everywhere.\n\nvar generateClassName = createGenerateClassName(); // Exported for test purposes\n\nexport var sheetsManager = new Map();\nvar defaultOptions = {\n disableGeneration: false,\n generateClassName: generateClassName,\n jss: jss,\n sheetsCache: null,\n sheetsManager: sheetsManager,\n sheetsRegistry: null\n};\nexport var StylesContext = React.createContext(defaultOptions);\n\nif (process.env.NODE_ENV !== 'production') {\n StylesContext.displayName = 'StylesContext';\n}\n\nvar injectFirstNode;\nexport default function StylesProvider(props) {\n var children = props.children,\n _props$injectFirst = props.injectFirst,\n injectFirst = _props$injectFirst === void 0 ? false : _props$injectFirst,\n _props$disableGenerat = props.disableGeneration,\n disableGeneration = _props$disableGenerat === void 0 ? false : _props$disableGenerat,\n localOptions = _objectWithoutProperties(props, [\"children\", \"injectFirst\", \"disableGeneration\"]);\n\n var outerOptions = React.useContext(StylesContext);\n\n var context = _extends({}, outerOptions, {\n disableGeneration: disableGeneration\n }, localOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof window === 'undefined' && !context.sheetsManager) {\n console.error('Material-UI: You need to use the ServerStyleSheets API when rendering on the server.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (context.jss.options.insertionPoint && injectFirst) {\n console.error('Material-UI: You cannot use a custom insertionPoint and <StylesContext injectFirst> at the same time.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (injectFirst && localOptions.jss) {\n console.error('Material-UI: You cannot use the jss and injectFirst props at the same time.');\n }\n }\n\n if (!context.jss.options.insertionPoint && injectFirst && typeof window !== 'undefined') {\n if (!injectFirstNode) {\n var head = document.head;\n injectFirstNode = document.createComment('mui-inject-first');\n head.insertBefore(injectFirstNode, head.firstChild);\n }\n\n context.jss = create({\n plugins: jssPreset().plugins,\n insertionPoint: injectFirstNode\n });\n }\n\n return /*#__PURE__*/React.createElement(StylesContext.Provider, {\n value: context\n }, children);\n}\nprocess.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node.isRequired,\n\n /**\n * You can disable the generation of the styles with this option.\n * It can be useful when traversing the React tree outside of the HTML\n * rendering step on the server.\n * Let's say you are using react-apollo to extract all\n * the queries made by the interface server-side - you can significantly speed up the traversal with this prop.\n */\n disableGeneration: PropTypes.bool,\n\n /**\n * JSS's class name generator.\n */\n generateClassName: PropTypes.func,\n\n /**\n * By default, the styles are injected last in the <head> element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override Material-UI's styles, set this prop.\n */\n injectFirst: PropTypes.bool,\n\n /**\n * JSS's instance.\n */\n jss: PropTypes.object,\n\n /**\n * @ignore\n */\n serverGenerateClassName: PropTypes.func,\n\n /**\n * @ignore\n *\n * Beta feature.\n *\n * Cache for the sheets.\n */\n sheetsCache: PropTypes.object,\n\n /**\n * @ignore\n *\n * The sheetsManager is used to deduplicate style sheet injection in the page.\n * It's deduplicating using the (theme, styles) couple.\n * On the server, you should provide a new instance for each request.\n */\n sheetsManager: PropTypes.object,\n\n /**\n * @ignore\n *\n * Collect the sheets.\n */\n sheetsRegistry: PropTypes.object\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = exactProp(StylesProvider.propTypes) : void 0;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nimport ThemeContext from '../useTheme/ThemeContext';\nimport useTheme from '../useTheme';\nimport nested from './nested'; // To support composition of theme.\n\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n if (typeof localTheme === 'function') {\n var mergedTheme = localTheme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!mergedTheme) {\n console.error(['Material-UI: You should return an object from your theme function, i.e.', '<ThemeProvider theme={() => ({})} />'].join('\\n'));\n }\n }\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, localTheme);\n}\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\n\n\nfunction ThemeProvider(props) {\n var children = props.children,\n localTheme = props.theme;\n var outerTheme = useTheme();\n\n if (process.env.NODE_ENV !== 'production') {\n if (outerTheme === null && typeof localTheme === 'function') {\n console.error(['Material-UI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n\n var theme = React.useMemo(function () {\n var output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n\n if (output != null) {\n output[nested] = outerTheme !== null;\n }\n\n return output;\n }, [localTheme, outerTheme]);\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, children);\n}\n\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node.isRequired,\n\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\n\nexport default ThemeProvider;","var hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","import nested from '../ThemeProvider/nested';\n/**\n * This is the list of the style rule name we use as drop in replacement for the built-in\n * pseudo classes (:checked, :disabled, :focused, etc.).\n *\n * Why do they exist in the first place?\n * These classes are used at a specificity of 2.\n * It allows them to override previously definied styles as well as\n * being untouched by simple user overrides.\n */\n\nvar pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected']; // Returns a function which generates unique class names based on counters.\n// When new generator function is created, rule counter is reset.\n// We need to reset the rule counter for SSR for each request.\n//\n// It's inspired by\n// https://github.com/cssinjs/jss/blob/4e6a05dd3f7b6572fdd3ab216861d9e446c20331/src/utils/createGenerateClassName.js\n\nexport default function createGenerateClassName() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$disableGloba = options.disableGlobal,\n disableGlobal = _options$disableGloba === void 0 ? false : _options$disableGloba,\n _options$productionPr = options.productionPrefix,\n productionPrefix = _options$productionPr === void 0 ? 'jss' : _options$productionPr,\n _options$seed = options.seed,\n seed = _options$seed === void 0 ? '' : _options$seed;\n var seedPrefix = seed === '' ? '' : \"\".concat(seed, \"-\");\n var ruleCounter = 0;\n\n var getNextCounterId = function getNextCounterId() {\n ruleCounter += 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (ruleCounter >= 1e10) {\n console.warn(['Material-UI: You might have a memory leak.', 'The ruleCounter is not supposed to grow that much.'].join(''));\n }\n }\n\n return ruleCounter;\n };\n\n return function (rule, styleSheet) {\n var name = styleSheet.options.name; // Is a global static MUI style?\n\n if (name && name.indexOf('Mui') === 0 && !styleSheet.options.link && !disableGlobal) {\n // We can use a shorthand class name, we never use the keys to style the components.\n if (pseudoClasses.indexOf(rule.key) !== -1) {\n return \"Mui-\".concat(rule.key);\n }\n\n var prefix = \"\".concat(seedPrefix).concat(name, \"-\").concat(rule.key);\n\n if (!styleSheet.options.theme[nested] || seed !== '') {\n return prefix;\n }\n\n return \"\".concat(prefix, \"-\").concat(getNextCounterId());\n }\n\n if (process.env.NODE_ENV === 'production') {\n return \"\".concat(seedPrefix).concat(productionPrefix).concat(getNextCounterId());\n }\n\n var suffix = \"\".concat(rule.key, \"-\").concat(getNextCounterId()); // Help with debuggability.\n\n if (styleSheet.options.classNamePrefix) {\n return \"\".concat(seedPrefix).concat(styleSheet.options.classNamePrefix, \"-\").concat(suffix);\n }\n\n return \"\".concat(seedPrefix).concat(suffix);\n };\n}","/* eslint-disable no-restricted-syntax */\nexport default function getThemeProps(params) {\n var theme = params.theme,\n name = params.name,\n props = params.props;\n\n if (!theme || !theme.props || !theme.props[name]) {\n return props;\n } // Resolve default props, code borrow from React source.\n // https://github.com/facebook/react/blob/15a8f031838a553e41c0b66eb1bcf1da8448104d/packages/react/src/ReactElement.js#L221\n\n\n var defaultProps = theme.props[name];\n var propName;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n\n return props;\n}","export default function createStyles(styles) {\n return styles;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport React from 'react';\nimport { SheetsRegistry } from 'jss';\nimport StylesProvider from '../StylesProvider';\nimport createGenerateClassName from '../createGenerateClassName';\n\nvar ServerStyleSheets = /*#__PURE__*/function () {\n function ServerStyleSheets() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, ServerStyleSheets);\n\n this.options = options;\n }\n\n _createClass(ServerStyleSheets, [{\n key: \"collect\",\n value: function collect(children) {\n // This is needed in order to deduplicate the injection of CSS in the page.\n var sheetsManager = new Map(); // This is needed in order to inject the critical CSS.\n\n this.sheetsRegistry = new SheetsRegistry(); // A new class name generator\n\n var generateClassName = createGenerateClassName();\n return /*#__PURE__*/React.createElement(StylesProvider, _extends({\n sheetsManager: sheetsManager,\n serverGenerateClassName: generateClassName,\n sheetsRegistry: this.sheetsRegistry\n }, this.options), children);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.sheetsRegistry ? this.sheetsRegistry.toString() : '';\n }\n }, {\n key: \"getStyleElement\",\n value: function getStyleElement(props) {\n return /*#__PURE__*/React.createElement('style', _extends({\n id: 'jss-server-side',\n key: 'jss-server-side',\n dangerouslySetInnerHTML: {\n __html: this.toString()\n }\n }, props));\n }\n }]);\n\n return ServerStyleSheets;\n}();\n\nexport { ServerStyleSheets as default };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport useTheme from '../useTheme';\nexport function withThemeCreator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaultTheme = options.defaultTheme;\n\n var withTheme = function withTheme(Component) {\n if (process.env.NODE_ENV !== 'production') {\n if (Component === undefined) {\n throw new Error(['You are calling withTheme(Component) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n }\n\n var WithTheme = /*#__PURE__*/React.forwardRef(function WithTheme(props, ref) {\n var innerRef = props.innerRef,\n other = _objectWithoutProperties(props, [\"innerRef\"]);\n\n var theme = useTheme() || defaultTheme;\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: innerRef || ref\n }, other));\n });\n process.env.NODE_ENV !== \"production\" ? WithTheme.propTypes = {\n /**\n * Use that prop to pass a ref to the decorated component.\n * @deprecated\n */\n innerRef: chainPropTypes(PropTypes.oneOfType([PropTypes.func, PropTypes.object]), function (props) {\n if (props.innerRef == null) {\n return null;\n }\n\n return new Error('Material-UI: The `innerRef` prop is deprecated and will be removed in v5. ' + 'Refs are now automatically forwarded to the inner component.');\n })\n } : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n WithTheme.displayName = \"WithTheme(\".concat(getDisplayName(Component), \")\");\n }\n\n hoistNonReactStatics(WithTheme, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // Exposed for test purposes.\n WithTheme.Naked = Component;\n }\n\n return WithTheme;\n };\n\n return withTheme;\n} // Provide the theme object as a prop to the input component.\n// It's an alternative API to useTheme().\n// We encourage the usage of useTheme() where possible.\n\nvar withTheme = withThemeCreator();\nexport default withTheme;","import warning from 'tiny-warning';\nimport { createRule } from 'jss';\n\nvar now = Date.now();\nvar fnValuesNs = \"fnValues\" + now;\nvar fnRuleNs = \"fnStyle\" + ++now;\n\nvar functionPlugin = function functionPlugin() {\n return {\n onCreateRule: function onCreateRule(name, decl, options) {\n if (typeof decl !== 'function') return null;\n var rule = createRule(name, {}, options);\n rule[fnRuleNs] = decl;\n return rule;\n },\n onProcessStyle: function onProcessStyle(style, rule) {\n // We need to extract function values from the declaration, so that we can keep core unaware of them.\n // We need to do that only once.\n // We don't need to extract functions on each style update, since this can happen only once.\n // We don't support function values inside of function rules.\n if (fnValuesNs in rule || fnRuleNs in rule) return style;\n var fnValues = {};\n\n for (var prop in style) {\n var value = style[prop];\n if (typeof value !== 'function') continue;\n delete style[prop];\n fnValues[prop] = value;\n }\n\n rule[fnValuesNs] = fnValues;\n return style;\n },\n onUpdate: function onUpdate(data, rule, sheet, options) {\n var styleRule = rule;\n var fnRule = styleRule[fnRuleNs]; // If we have a style function, the entire rule is dynamic and style object\n // will be returned from that function.\n\n if (fnRule) {\n // Empty object will remove all currently defined props\n // in case function rule returns a falsy value.\n styleRule.style = fnRule(data) || {};\n\n if (process.env.NODE_ENV === 'development') {\n for (var prop in styleRule.style) {\n if (typeof styleRule.style[prop] === 'function') {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Function values inside function rules are not supported.') : void 0;\n break;\n }\n }\n }\n }\n\n var fnValues = styleRule[fnValuesNs]; // If we have a fn values map, it is a rule with function values.\n\n if (fnValues) {\n for (var _prop in fnValues) {\n styleRule.prop(_prop, fnValues[_prop](data), options);\n }\n }\n }\n };\n};\n\nexport default functionPlugin;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { RuleList } from 'jss';\n\nvar at = '@global';\nvar atPrefix = '@global ';\n\nvar GlobalContainerRule =\n/*#__PURE__*/\nfunction () {\n function GlobalContainerRule(key, styles, options) {\n this.type = 'global';\n this.at = at;\n this.isProcessed = false;\n this.key = key;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var selector in styles) {\n this.rules.add(selector, styles[selector]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = GlobalContainerRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (rule) this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Replace rule, run plugins.\n */\n ;\n\n _proto.replaceRule = function replaceRule(name, style, options) {\n var newRule = this.rules.replace(name, style, options);\n if (newRule) this.options.jss.plugins.onProcessRule(newRule);\n return newRule;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n\n return GlobalContainerRule;\n}();\n\nvar GlobalPrefixedRule =\n/*#__PURE__*/\nfunction () {\n function GlobalPrefixedRule(key, style, options) {\n this.type = 'global';\n this.at = at;\n this.isProcessed = false;\n this.key = key;\n this.options = options;\n var selector = key.substr(atPrefix.length);\n this.rule = options.jss.createRule(selector, style, _extends({}, options, {\n parent: this\n }));\n }\n\n var _proto2 = GlobalPrefixedRule.prototype;\n\n _proto2.toString = function toString(options) {\n return this.rule ? this.rule.toString(options) : '';\n };\n\n return GlobalPrefixedRule;\n}();\n\nvar separatorRegExp = /\\s*,\\s*/g;\n\nfunction addScope(selector, scope) {\n var parts = selector.split(separatorRegExp);\n var scoped = '';\n\n for (var i = 0; i < parts.length; i++) {\n scoped += scope + \" \" + parts[i].trim();\n if (parts[i + 1]) scoped += ', ';\n }\n\n return scoped;\n}\n\nfunction handleNestedGlobalContainerRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n var rules = style ? style[at] : null;\n if (!rules) return;\n\n for (var name in rules) {\n sheet.addRule(name, rules[name], _extends({}, options, {\n selector: addScope(name, rule.selector)\n }));\n }\n\n delete style[at];\n}\n\nfunction handlePrefixedGlobalRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n\n for (var prop in style) {\n if (prop[0] !== '@' || prop.substr(0, at.length) !== at) continue;\n var selector = addScope(prop.substr(at.length), rule.selector);\n sheet.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n delete style[prop];\n }\n}\n/**\n * Convert nested rules to separate, remove them from original styles.\n */\n\n\nfunction jssGlobal() {\n function onCreateRule(name, styles, options) {\n if (!name) return null;\n\n if (name === at) {\n return new GlobalContainerRule(name, styles, options);\n }\n\n if (name[0] === '@' && name.substr(0, atPrefix.length) === atPrefix) {\n return new GlobalPrefixedRule(name, styles, options);\n }\n\n var parent = options.parent;\n\n if (parent) {\n if (parent.type === 'global' || parent.options.parent && parent.options.parent.type === 'global') {\n options.scoped = false;\n }\n }\n\n if (!options.selector && options.scoped === false) {\n options.selector = name;\n }\n\n return null;\n }\n\n function onProcessRule(rule, sheet) {\n if (rule.type !== 'style' || !sheet) return;\n handleNestedGlobalContainerRule(rule, sheet);\n handlePrefixedGlobalRule(rule, sheet);\n }\n\n return {\n onCreateRule: onCreateRule,\n onProcessRule: onProcessRule\n };\n}\n\nexport default jssGlobal;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport warning from 'tiny-warning';\n\nvar separatorRegExp = /\\s*,\\s*/g;\nvar parentRegExp = /&/g;\nvar refRegExp = /\\$([\\w-]+)/g;\n/**\n * Convert nested rules to separate, remove them from original styles.\n */\n\nfunction jssNested() {\n // Get a function to be used for $ref replacement.\n function getReplaceRef(container, sheet) {\n return function (match, key) {\n var rule = container.getRule(key) || sheet && sheet.getRule(key);\n\n if (rule) {\n return rule.selector;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Could not find the referenced rule \\\"\" + key + \"\\\" in \\\"\" + (container.options.meta || container.toString()) + \"\\\".\") : void 0;\n return key;\n };\n }\n\n function replaceParentRefs(nestedProp, parentProp) {\n var parentSelectors = parentProp.split(separatorRegExp);\n var nestedSelectors = nestedProp.split(separatorRegExp);\n var result = '';\n\n for (var i = 0; i < parentSelectors.length; i++) {\n var parent = parentSelectors[i];\n\n for (var j = 0; j < nestedSelectors.length; j++) {\n var nested = nestedSelectors[j];\n if (result) result += ', '; // Replace all & by the parent or prefix & with the parent.\n\n result += nested.indexOf('&') !== -1 ? nested.replace(parentRegExp, parent) : parent + \" \" + nested;\n }\n }\n\n return result;\n }\n\n function getOptions(rule, container, prevOptions) {\n // Options has been already created, now we only increase index.\n if (prevOptions) return _extends({}, prevOptions, {\n index: prevOptions.index + 1\n });\n var nestingLevel = rule.options.nestingLevel;\n nestingLevel = nestingLevel === undefined ? 1 : nestingLevel + 1;\n\n var options = _extends({}, rule.options, {\n nestingLevel: nestingLevel,\n index: container.indexOf(rule) + 1 // We don't need the parent name to be set options for chlid.\n\n });\n\n delete options.name;\n return options;\n }\n\n function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style') return style;\n var styleRule = rule;\n var container = styleRule.options.parent;\n var options;\n var replaceRef;\n\n for (var prop in style) {\n var isNested = prop.indexOf('&') !== -1;\n var isNestedConditional = prop[0] === '@';\n if (!isNested && !isNestedConditional) continue;\n options = getOptions(styleRule, container, options);\n\n if (isNested) {\n var selector = replaceParentRefs(prop, styleRule.selector); // Lazily create the ref replacer function just once for\n // all nested rules within the sheet.\n\n if (!replaceRef) replaceRef = getReplaceRef(container, sheet); // Replace all $refs.\n\n selector = selector.replace(refRegExp, replaceRef);\n var name = styleRule.key + \"-\" + prop;\n\n if ('replaceRule' in container) {\n // for backward compatibility\n container.replaceRule(name, style[prop], _extends({}, options, {\n selector: selector\n }));\n } else {\n container.addRule(name, style[prop], _extends({}, options, {\n selector: selector\n }));\n }\n } else if (isNestedConditional) {\n // Place conditional right after the parent rule to ensure right ordering.\n container.addRule(prop, {}, options).addRule(styleRule.key, style[prop], {\n selector: styleRule.selector\n });\n }\n\n delete style[prop];\n }\n\n return style;\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssNested;\n","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","import hyphenate from 'hyphenate-style-name';\n\n/**\n * Convert camel cased property names to dash separated.\n */\n\nfunction convertCase(style) {\n var converted = {};\n\n for (var prop in style) {\n var key = prop.indexOf('--') === 0 ? prop : hyphenate(prop);\n converted[key] = style[prop];\n }\n\n if (style.fallbacks) {\n if (Array.isArray(style.fallbacks)) converted.fallbacks = style.fallbacks.map(convertCase);else converted.fallbacks = convertCase(style.fallbacks);\n }\n\n return converted;\n}\n/**\n * Allow camel cased property names by converting them back to dasherized.\n */\n\n\nfunction camelCase() {\n function onProcessStyle(style) {\n if (Array.isArray(style)) {\n // Handle rules like @font-face, which can have multiple styles in an array\n for (var index = 0; index < style.length; index++) {\n style[index] = convertCase(style[index]);\n }\n\n return style;\n }\n\n return convertCase(style);\n }\n\n function onChangeValue(value, prop, rule) {\n if (prop.indexOf('--') === 0) {\n return value;\n }\n\n var hyphenatedProp = hyphenate(prop); // There was no camel case in place\n\n if (prop === hyphenatedProp) return value;\n rule.prop(hyphenatedProp, value); // Core will ignore that property value we set the proper one above.\n\n return null;\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default camelCase;\n","import { hasCSSTOMSupport } from 'jss';\n\nvar px = hasCSSTOMSupport && CSS ? CSS.px : 'px';\nvar ms = hasCSSTOMSupport && CSS ? CSS.ms : 'ms';\nvar percent = hasCSSTOMSupport && CSS ? CSS.percent : '%';\n/**\n * Generated jss-plugin-default-unit CSS property units\n */\n\nvar defaultUnits = {\n // Animation properties\n 'animation-delay': ms,\n 'animation-duration': ms,\n // Background properties\n 'background-position': px,\n 'background-position-x': px,\n 'background-position-y': px,\n 'background-size': px,\n // Border Properties\n border: px,\n 'border-bottom': px,\n 'border-bottom-left-radius': px,\n 'border-bottom-right-radius': px,\n 'border-bottom-width': px,\n 'border-left': px,\n 'border-left-width': px,\n 'border-radius': px,\n 'border-right': px,\n 'border-right-width': px,\n 'border-top': px,\n 'border-top-left-radius': px,\n 'border-top-right-radius': px,\n 'border-top-width': px,\n 'border-width': px,\n 'border-block': px,\n 'border-block-end': px,\n 'border-block-end-width': px,\n 'border-block-start': px,\n 'border-block-start-width': px,\n 'border-block-width': px,\n 'border-inline': px,\n 'border-inline-end': px,\n 'border-inline-end-width': px,\n 'border-inline-start': px,\n 'border-inline-start-width': px,\n 'border-inline-width': px,\n 'border-start-start-radius': px,\n 'border-start-end-radius': px,\n 'border-end-start-radius': px,\n 'border-end-end-radius': px,\n // Margin properties\n margin: px,\n 'margin-bottom': px,\n 'margin-left': px,\n 'margin-right': px,\n 'margin-top': px,\n 'margin-block': px,\n 'margin-block-end': px,\n 'margin-block-start': px,\n 'margin-inline': px,\n 'margin-inline-end': px,\n 'margin-inline-start': px,\n // Padding properties\n padding: px,\n 'padding-bottom': px,\n 'padding-left': px,\n 'padding-right': px,\n 'padding-top': px,\n 'padding-block': px,\n 'padding-block-end': px,\n 'padding-block-start': px,\n 'padding-inline': px,\n 'padding-inline-end': px,\n 'padding-inline-start': px,\n // Mask properties\n 'mask-position-x': px,\n 'mask-position-y': px,\n 'mask-size': px,\n // Width and height properties\n height: px,\n width: px,\n 'min-height': px,\n 'max-height': px,\n 'min-width': px,\n 'max-width': px,\n // Position properties\n bottom: px,\n left: px,\n top: px,\n right: px,\n inset: px,\n 'inset-block': px,\n 'inset-block-end': px,\n 'inset-block-start': px,\n 'inset-inline': px,\n 'inset-inline-end': px,\n 'inset-inline-start': px,\n // Shadow properties\n 'box-shadow': px,\n 'text-shadow': px,\n // Column properties\n 'column-gap': px,\n 'column-rule': px,\n 'column-rule-width': px,\n 'column-width': px,\n // Font and text properties\n 'font-size': px,\n 'font-size-delta': px,\n 'letter-spacing': px,\n 'text-decoration-thickness': px,\n 'text-indent': px,\n 'text-stroke': px,\n 'text-stroke-width': px,\n 'word-spacing': px,\n // Motion properties\n motion: px,\n 'motion-offset': px,\n // Outline properties\n outline: px,\n 'outline-offset': px,\n 'outline-width': px,\n // Perspective properties\n perspective: px,\n 'perspective-origin-x': percent,\n 'perspective-origin-y': percent,\n // Transform properties\n 'transform-origin': percent,\n 'transform-origin-x': percent,\n 'transform-origin-y': percent,\n 'transform-origin-z': percent,\n // Transition properties\n 'transition-delay': ms,\n 'transition-duration': ms,\n // Alignment properties\n 'vertical-align': px,\n 'flex-basis': px,\n // Some random properties\n 'shape-margin': px,\n size: px,\n gap: px,\n // Grid properties\n grid: px,\n 'grid-gap': px,\n 'row-gap': px,\n 'grid-row-gap': px,\n 'grid-column-gap': px,\n 'grid-template-rows': px,\n 'grid-template-columns': px,\n 'grid-auto-rows': px,\n 'grid-auto-columns': px,\n // Not existing properties.\n // Used to avoid issues with jss-plugin-expand integration.\n 'box-shadow-x': px,\n 'box-shadow-y': px,\n 'box-shadow-blur': px,\n 'box-shadow-spread': px,\n 'font-line-height': px,\n 'text-shadow-x': px,\n 'text-shadow-y': px,\n 'text-shadow-blur': px\n};\n\n/**\n * Clones the object and adds a camel cased property version.\n */\n\nfunction addCamelCasedVersion(obj) {\n var regExp = /(-[a-z])/g;\n\n var replace = function replace(str) {\n return str[1].toUpperCase();\n };\n\n var newObj = {};\n\n for (var key in obj) {\n newObj[key] = obj[key];\n newObj[key.replace(regExp, replace)] = obj[key];\n }\n\n return newObj;\n}\n\nvar units = addCamelCasedVersion(defaultUnits);\n/**\n * Recursive deep style passing function\n */\n\nfunction iterate(prop, value, options) {\n if (value == null) return value;\n\n if (Array.isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n value[i] = iterate(prop, value[i], options);\n }\n } else if (typeof value === 'object') {\n if (prop === 'fallbacks') {\n for (var innerProp in value) {\n value[innerProp] = iterate(innerProp, value[innerProp], options);\n }\n } else {\n for (var _innerProp in value) {\n value[_innerProp] = iterate(prop + \"-\" + _innerProp, value[_innerProp], options);\n }\n } // eslint-disable-next-line no-restricted-globals\n\n } else if (typeof value === 'number' && isNaN(value) === false) {\n var unit = options[prop] || units[prop]; // Add the unit if available, except for the special case of 0px.\n\n if (unit && !(value === 0 && unit === px)) {\n return typeof unit === 'function' ? unit(value).toString() : \"\" + value + unit;\n }\n\n return value.toString();\n }\n\n return value;\n}\n/**\n * Add unit to numeric values.\n */\n\n\nfunction defaultUnit(options) {\n if (options === void 0) {\n options = {};\n }\n\n var camelCasedOptions = addCamelCasedVersion(options);\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n\n for (var prop in style) {\n style[prop] = iterate(prop, style[prop], camelCasedOptions);\n }\n\n return style;\n }\n\n function onChangeValue(value, prop) {\n return iterate(prop, value, camelCasedOptions);\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default defaultUnit;\n","import isInBrowser from 'is-in-browser';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\n\n// Export javascript style and css style vendor prefixes.\nvar js = '';\nvar css = '';\nvar vendor = '';\nvar browser = '';\nvar isTouch = isInBrowser && 'ontouchstart' in document.documentElement; // We should not do anything if required serverside.\n\nif (isInBrowser) {\n // Order matters. We need to check Webkit the last one because\n // other vendors use to add Webkit prefixes to some properties\n var jsCssMap = {\n Moz: '-moz-',\n ms: '-ms-',\n O: '-o-',\n Webkit: '-webkit-'\n };\n\n var _document$createEleme = document.createElement('p'),\n style = _document$createEleme.style;\n\n var testProp = 'Transform';\n\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n js = key;\n css = jsCssMap[key];\n break;\n }\n } // Correctly detect the Edge browser.\n\n\n if (js === 'Webkit' && 'msHyphens' in style) {\n js = 'ms';\n css = jsCssMap.ms;\n browser = 'edge';\n } // Correctly detect the Safari browser.\n\n\n if (js === 'Webkit' && '-apple-trailing-word' in style) {\n vendor = 'apple';\n }\n}\n/**\n * Vendor prefix string for the current browser.\n *\n * @type {{js: String, css: String, vendor: String, browser: String}}\n * @api public\n */\n\n\nvar prefix = {\n js: js,\n css: css,\n vendor: vendor,\n browser: browser,\n isTouch: isTouch\n};\n\n/**\n * Test if a keyframe at-rule should be prefixed or not\n *\n * @param {String} vendor prefix string for the current browser.\n * @return {String}\n * @api public\n */\n\nfunction supportedKeyframes(key) {\n // Keyframes is already prefixed. e.g. key = '@-webkit-keyframes a'\n if (key[1] === '-') return key; // No need to prefix IE/Edge. Older browsers will ignore unsupported rules.\n // https://caniuse.com/#search=keyframes\n\n if (prefix.js === 'ms') return key;\n return \"@\" + prefix.css + \"keyframes\" + key.substr(10);\n}\n\n// https://caniuse.com/#search=appearance\n\nvar appearence = {\n noPrefill: ['appearance'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'appearance') return false;\n if (prefix.js === 'ms') return \"-webkit-\" + prop;\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=color-adjust\n\nvar colorAdjust = {\n noPrefill: ['color-adjust'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'color-adjust') return false;\n if (prefix.js === 'Webkit') return prefix.css + \"print-\" + prop;\n return prop;\n }\n};\n\nvar regExp = /[-\\s]+(.)?/g;\n/**\n * Replaces the letter with the capital letter\n *\n * @param {String} match\n * @param {String} c\n * @return {String}\n * @api private\n */\n\nfunction toUpper(match, c) {\n return c ? c.toUpperCase() : '';\n}\n/**\n * Convert dash separated strings to camel-cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\n\nfunction camelize(str) {\n return str.replace(regExp, toUpper);\n}\n\n/**\n * Convert dash separated strings to pascal cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction pascalize(str) {\n return camelize(\"-\" + str);\n}\n\n// but we can use a longhand property instead.\n// https://caniuse.com/#search=mask\n\nvar mask = {\n noPrefill: ['mask'],\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^mask/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var longhand = 'mask-image';\n\n if (camelize(longhand) in style) {\n return prop;\n }\n\n if (prefix.js + pascalize(longhand) in style) {\n return prefix.css + prop;\n }\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=text-orientation\n\nvar textOrientation = {\n noPrefill: ['text-orientation'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'text-orientation') return false;\n\n if (prefix.vendor === 'apple' && !prefix.isTouch) {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=transform\n\nvar transform = {\n noPrefill: ['transform'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transform') return false;\n\n if (options.transform) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=transition\n\nvar transition = {\n noPrefill: ['transition'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transition') return false;\n\n if (options.transition) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=writing-mode\n\nvar writingMode = {\n noPrefill: ['writing-mode'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'writing-mode') return false;\n\n if (prefix.js === 'Webkit' || prefix.js === 'ms' && prefix.browser !== 'edge') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=user-select\n\nvar userSelect = {\n noPrefill: ['user-select'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'user-select') return false;\n\n if (prefix.js === 'Moz' || prefix.js === 'ms' || prefix.vendor === 'apple') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=multicolumn\n// https://github.com/postcss/autoprefixer/issues/491\n// https://github.com/postcss/autoprefixer/issues/177\n\nvar breakPropsOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^break-/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var jsProp = \"WebkitColumn\" + pascalize(prop);\n return jsProp in style ? prefix.css + \"column-\" + prop : false;\n }\n\n if (prefix.js === 'Moz') {\n var _jsProp = \"page\" + pascalize(prop);\n\n return _jsProp in style ? \"page-\" + prop : false;\n }\n\n return false;\n }\n};\n\n// See https://github.com/postcss/autoprefixer/issues/324.\n\nvar inlineLogicalOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^(border|margin|padding)-inline/.test(prop)) return false;\n if (prefix.js === 'Moz') return prop;\n var newProp = prop.replace('-inline', '');\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\n\n// Camelization is required because we can't test using.\n// CSS syntax for e.g. in FF.\n\nvar unprefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n return camelize(prop) in style ? prop : false;\n }\n};\n\nvar prefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n var pascalized = pascalize(prop); // Return custom CSS variable without prefixing.\n\n if (prop[0] === '-') return prop; // Return already prefixed value without prefixing.\n\n if (prop[0] === '-' && prop[1] === '-') return prop;\n if (prefix.js + pascalized in style) return prefix.css + prop; // Try webkit fallback.\n\n if (prefix.js !== 'Webkit' && \"Webkit\" + pascalized in style) return \"-webkit-\" + prop;\n return false;\n }\n};\n\n// https://caniuse.com/#search=scroll-snap\n\nvar scrollSnap = {\n supportedProperty: function supportedProperty(prop) {\n if (prop.substring(0, 11) !== 'scroll-snap') return false;\n\n if (prefix.js === 'ms') {\n return \"\" + prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=overscroll-behavior\n\nvar overscrollBehavior = {\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'overscroll-behavior') return false;\n\n if (prefix.js === 'ms') {\n return prefix.css + \"scroll-chaining\";\n }\n\n return prop;\n }\n};\n\nvar propMap = {\n 'flex-grow': 'flex-positive',\n 'flex-shrink': 'flex-negative',\n 'flex-basis': 'flex-preferred-size',\n 'justify-content': 'flex-pack',\n order: 'flex-order',\n 'align-items': 'flex-align',\n 'align-content': 'flex-line-pack' // 'align-self' is handled by 'align-self' plugin.\n\n}; // Support old flex spec from 2012.\n\nvar flex2012 = {\n supportedProperty: function supportedProperty(prop, style) {\n var newProp = propMap[prop];\n if (!newProp) return false;\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\n\nvar propMap$1 = {\n flex: 'box-flex',\n 'flex-grow': 'box-flex',\n 'flex-direction': ['box-orient', 'box-direction'],\n order: 'box-ordinal-group',\n 'align-items': 'box-align',\n 'flex-flow': ['box-orient', 'box-direction'],\n 'justify-content': 'box-pack'\n};\nvar propKeys = Object.keys(propMap$1);\n\nvar prefixCss = function prefixCss(p) {\n return prefix.css + p;\n}; // Support old flex spec from 2009.\n\n\nvar flex2009 = {\n supportedProperty: function supportedProperty(prop, style, _ref) {\n var multiple = _ref.multiple;\n\n if (propKeys.indexOf(prop) > -1) {\n var newProp = propMap$1[prop];\n\n if (!Array.isArray(newProp)) {\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n\n if (!multiple) return false;\n\n for (var i = 0; i < newProp.length; i++) {\n if (!(prefix.js + pascalize(newProp[0]) in style)) {\n return false;\n }\n }\n\n return newProp.map(prefixCss);\n }\n\n return false;\n }\n};\n\n// plugins = [\n// ...plugins,\n// breakPropsOld,\n// inlineLogicalOld,\n// unprefixed,\n// prefixed,\n// scrollSnap,\n// flex2012,\n// flex2009\n// ]\n// Plugins without 'noPrefill' value, going last.\n// 'flex-*' plugins should be at the bottom.\n// 'flex2009' going after 'flex2012'.\n// 'prefixed' going after 'unprefixed'\n\nvar plugins = [appearence, colorAdjust, mask, textOrientation, transform, transition, writingMode, userSelect, breakPropsOld, inlineLogicalOld, unprefixed, prefixed, scrollSnap, overscrollBehavior, flex2012, flex2009];\nvar propertyDetectors = plugins.filter(function (p) {\n return p.supportedProperty;\n}).map(function (p) {\n return p.supportedProperty;\n});\nvar noPrefill = plugins.filter(function (p) {\n return p.noPrefill;\n}).reduce(function (a, p) {\n a.push.apply(a, _toConsumableArray(p.noPrefill));\n return a;\n}, []);\n\nvar el;\nvar cache = {};\n\nif (isInBrowser) {\n el = document.createElement('p'); // We test every property on vendor prefix requirement.\n // Once tested, result is cached. It gives us up to 70% perf boost.\n // http://jsperf.com/element-style-object-access-vs-plain-object\n //\n // Prefill cache with known css properties to reduce amount of\n // properties we need to feature test at runtime.\n // http://davidwalsh.name/vendor-prefix\n\n var computed = window.getComputedStyle(document.documentElement, '');\n\n for (var key$1 in computed) {\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(key$1)) cache[computed[key$1]] = computed[key$1];\n } // Properties that cannot be correctly detected using the\n // cache prefill method.\n\n\n noPrefill.forEach(function (x) {\n return delete cache[x];\n });\n}\n/**\n * Test if a property is supported, returns supported property with vendor\n * prefix if required. Returns `false` if not supported.\n *\n * @param {String} prop dash separated\n * @param {Object} [options]\n * @return {String|Boolean}\n * @api public\n */\n\n\nfunction supportedProperty(prop, options) {\n if (options === void 0) {\n options = {};\n }\n\n // For server-side rendering.\n if (!el) return prop; // Remove cache for benchmark tests or return property from the cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache[prop] != null) {\n return cache[prop];\n } // Check if 'transition' or 'transform' natively supported in browser.\n\n\n if (prop === 'transition' || prop === 'transform') {\n options[prop] = prop in el.style;\n } // Find a plugin for current prefix property.\n\n\n for (var i = 0; i < propertyDetectors.length; i++) {\n cache[prop] = propertyDetectors[i](prop, el.style, options); // Break loop, if value found.\n\n if (cache[prop]) break;\n } // Reset styles for current property.\n // Firefox can even throw an error for invalid properties, e.g., \"0\".\n\n\n try {\n el.style[prop] = '';\n } catch (err) {\n return false;\n }\n\n return cache[prop];\n}\n\nvar cache$1 = {};\nvar transitionProperties = {\n transition: 1,\n 'transition-property': 1,\n '-webkit-transition': 1,\n '-webkit-transition-property': 1\n};\nvar transPropsRegExp = /(^\\s*[\\w-]+)|, (\\s*[\\w-]+)(?![^()]*\\))/g;\nvar el$1;\n/**\n * Returns prefixed value transition/transform if needed.\n *\n * @param {String} match\n * @param {String} p1\n * @param {String} p2\n * @return {String}\n * @api private\n */\n\nfunction prefixTransitionCallback(match, p1, p2) {\n if (p1 === 'var') return 'var';\n if (p1 === 'all') return 'all';\n if (p2 === 'all') return ', all';\n var prefixedValue = p1 ? supportedProperty(p1) : \", \" + supportedProperty(p2);\n if (!prefixedValue) return p1 || p2;\n return prefixedValue;\n}\n\nif (isInBrowser) el$1 = document.createElement('p');\n/**\n * Returns prefixed value if needed. Returns `false` if value is not supported.\n *\n * @param {String} property\n * @param {String} value\n * @return {String|Boolean}\n * @api public\n */\n\nfunction supportedValue(property, value) {\n // For server-side rendering.\n var prefixedValue = value;\n if (!el$1 || property === 'content') return value; // It is a string or a number as a string like '1'.\n // We want only prefixable values here.\n // eslint-disable-next-line no-restricted-globals\n\n if (typeof prefixedValue !== 'string' || !isNaN(parseInt(prefixedValue, 10))) {\n return prefixedValue;\n } // Create cache key for current value.\n\n\n var cacheKey = property + prefixedValue; // Remove cache for benchmark tests or return value from cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache$1[cacheKey] != null) {\n return cache$1[cacheKey];\n } // IE can even throw an error in some cases, for e.g. style.content = 'bar'.\n\n\n try {\n // Test value as it is.\n el$1.style[property] = prefixedValue;\n } catch (err) {\n // Return false if value not supported.\n cache$1[cacheKey] = false;\n return false;\n } // If 'transition' or 'transition-property' property.\n\n\n if (transitionProperties[property]) {\n prefixedValue = prefixedValue.replace(transPropsRegExp, prefixTransitionCallback);\n } else if (el$1.style[property] === '') {\n // Value with a vendor prefix.\n prefixedValue = prefix.css + prefixedValue; // Hardcode test to convert \"flex\" to \"-ms-flexbox\" for IE10.\n\n if (prefixedValue === '-ms-flex') el$1.style[property] = '-ms-flexbox'; // Test prefixed value.\n\n el$1.style[property] = prefixedValue; // Return false if value not supported.\n\n if (el$1.style[property] === '') {\n cache$1[cacheKey] = false;\n return false;\n }\n } // Reset styles for current property.\n\n\n el$1.style[property] = ''; // Write current value to cache.\n\n cache$1[cacheKey] = prefixedValue;\n return cache$1[cacheKey];\n}\n\nexport { prefix, supportedKeyframes, supportedProperty, supportedValue };\n","import { supportedKeyframes, supportedValue, supportedProperty } from 'css-vendor';\nimport { toCssValue } from 'jss';\n\n/**\n * Add vendor prefix to a property name when needed.\n */\n\nfunction jssVendorPrefixer() {\n function onProcessRule(rule) {\n if (rule.type === 'keyframes') {\n var atRule = rule;\n atRule.at = supportedKeyframes(atRule.at);\n }\n }\n\n function prefixStyle(style) {\n for (var prop in style) {\n var value = style[prop];\n\n if (prop === 'fallbacks' && Array.isArray(value)) {\n style[prop] = value.map(prefixStyle);\n continue;\n }\n\n var changeProp = false;\n var supportedProp = supportedProperty(prop);\n if (supportedProp && supportedProp !== prop) changeProp = true;\n var changeValue = false;\n var supportedValue$1 = supportedValue(supportedProp, toCssValue(value));\n if (supportedValue$1 && supportedValue$1 !== value) changeValue = true;\n\n if (changeProp || changeValue) {\n if (changeProp) delete style[prop];\n style[supportedProp || prop] = supportedValue$1 || value;\n }\n }\n\n return style;\n }\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n return prefixStyle(style);\n }\n\n function onChangeValue(value, prop) {\n return supportedValue(prop, toCssValue(value)) || value;\n }\n\n return {\n onProcessRule: onProcessRule,\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default jssVendorPrefixer;\n","/**\n * Sort props by length.\n */\nfunction jssPropsSort() {\n var sort = function sort(prop0, prop1) {\n if (prop0.length === prop1.length) {\n return prop0 > prop1 ? 1 : -1;\n }\n\n return prop0.length - prop1.length;\n };\n\n return {\n onProcessStyle: function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n var newStyle = {};\n var props = Object.keys(style).sort(sort);\n\n for (var i = 0; i < props.length; i++) {\n newStyle[props[i]] = style[props[i]];\n }\n\n return newStyle;\n }\n };\n}\n\nexport default jssPropsSort;\n","import functions from 'jss-plugin-rule-value-function';\nimport global from 'jss-plugin-global';\nimport nested from 'jss-plugin-nested';\nimport camelCase from 'jss-plugin-camel-case';\nimport defaultUnit from 'jss-plugin-default-unit';\nimport vendorPrefixer from 'jss-plugin-vendor-prefixer';\nimport propsSort from 'jss-plugin-props-sort'; // Subset of jss-preset-default with only the plugins the Material-UI components are using.\n\nexport default function jssPreset() {\n return {\n plugins: [functions(), global(), nested(), camelCase(), defaultUnit(), // Disable the vendor prefixer server-side, it does nothing.\n // This way, we can get a performance boost.\n // In the documentation, we are using `autoprefixer` to solve this problem.\n typeof window === 'undefined' ? null : vendorPrefixer(), propsSort()]\n };\n}","// Used https://github.com/thinkloop/multi-key-cache as inspiration\nvar multiKeyStore = {\n set: function set(cache, key1, key2, value) {\n var subCache = cache.get(key1);\n\n if (!subCache) {\n subCache = new Map();\n cache.set(key1, subCache);\n }\n\n subCache.set(key2, value);\n },\n get: function get(cache, key1, key2) {\n var subCache = cache.get(key1);\n return subCache ? subCache.get(key2) : undefined;\n },\n delete: function _delete(cache, key1, key2) {\n var subCache = cache.get(key1);\n subCache.delete(key2);\n }\n};\nexport default multiKeyStore;","/* eslint-disable import/prefer-default-export */\n// Global index counter to preserve source order.\n// We create the style sheet during the creation of the component,\n// children are handled after the parents, so the order of style elements would be parent->child.\n// It is a problem though when a parent passes a className\n// which needs to override any child's styles.\n// StyleSheet of the child has a higher specificity, because of the source order.\n// So our solution is to render sheets them in the reverse order child->sheet, so\n// that parent has a higher specificity.\nvar indexCounter = -1e9;\nexport function increment() {\n indexCounter += 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (indexCounter >= 0) {\n console.warn(['Material-UI: You might have a memory leak.', 'The indexCounter is not supposed to grow that much.'].join('\\n'));\n }\n }\n\n return indexCounter;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { deepmerge } from '@material-ui/utils';\nimport noopTheme from './noopTheme';\nexport default function getStylesCreator(stylesOrCreator) {\n var themingEnabled = typeof stylesOrCreator === 'function';\n\n if (process.env.NODE_ENV !== 'production') {\n if (_typeof(stylesOrCreator) !== 'object' && !themingEnabled) {\n console.error(['Material-UI: The `styles` argument provided is invalid.', 'You need to provide a function generating the styles or a styles object.'].join('\\n'));\n }\n }\n\n return {\n create: function create(theme, name) {\n var styles;\n\n try {\n styles = themingEnabled ? stylesOrCreator(theme) : stylesOrCreator;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n if (themingEnabled === true && theme === noopTheme) {\n // TODO: prepend error message/name instead\n console.error(['Material-UI: The `styles` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n }\n }\n\n throw err;\n }\n\n if (!name || !theme.overrides || !theme.overrides[name]) {\n return styles;\n }\n\n var overrides = theme.overrides[name];\n\n var stylesWithOverrides = _extends({}, styles);\n\n Object.keys(overrides).forEach(function (key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!stylesWithOverrides[key]) {\n console.warn(['Material-UI: You are trying to override a style that does not exist.', \"Fix the `\".concat(key, \"` key of `theme.overrides.\").concat(name, \"`.\")].join('\\n'));\n }\n }\n\n stylesWithOverrides[key] = deepmerge(stylesWithOverrides[key], overrides[key]);\n });\n return stylesWithOverrides;\n },\n options: {}\n };\n}","// We use the same empty object to ref count the styles that don't need a theme object.\nvar noopTheme = {};\nexport default noopTheme;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { getDynamicStyles } from 'jss';\nimport mergeClasses from '../mergeClasses';\nimport multiKeyStore from './multiKeyStore';\nimport useTheme from '../useTheme';\nimport { StylesContext } from '../StylesProvider';\nimport { increment } from './indexCounter';\nimport getStylesCreator from '../getStylesCreator';\nimport noopTheme from '../getStylesCreator/noopTheme';\n\nfunction getClasses(_ref, classes, Component) {\n var state = _ref.state,\n stylesOptions = _ref.stylesOptions;\n\n if (stylesOptions.disableGeneration) {\n return classes || {};\n }\n\n if (!state.cacheClasses) {\n state.cacheClasses = {\n // Cache for the finalized classes value.\n value: null,\n // Cache for the last used classes prop pointer.\n lastProp: null,\n // Cache for the last used rendered classes pointer.\n lastJSS: {}\n };\n } // Tracks if either the rendered classes or classes prop has changed,\n // requiring the generation of a new finalized classes object.\n\n\n var generate = false;\n\n if (state.classes !== state.cacheClasses.lastJSS) {\n state.cacheClasses.lastJSS = state.classes;\n generate = true;\n }\n\n if (classes !== state.cacheClasses.lastProp) {\n state.cacheClasses.lastProp = classes;\n generate = true;\n }\n\n if (generate) {\n state.cacheClasses.value = mergeClasses({\n baseClasses: state.cacheClasses.lastJSS,\n newClasses: classes,\n Component: Component\n });\n }\n\n return state.cacheClasses.value;\n}\n\nfunction attach(_ref2, props) {\n var state = _ref2.state,\n theme = _ref2.theme,\n stylesOptions = _ref2.stylesOptions,\n stylesCreator = _ref2.stylesCreator,\n name = _ref2.name;\n\n if (stylesOptions.disableGeneration) {\n return;\n }\n\n var sheetManager = multiKeyStore.get(stylesOptions.sheetsManager, stylesCreator, theme);\n\n if (!sheetManager) {\n sheetManager = {\n refs: 0,\n staticSheet: null,\n dynamicStyles: null\n };\n multiKeyStore.set(stylesOptions.sheetsManager, stylesCreator, theme, sheetManager);\n }\n\n var options = _extends({}, stylesCreator.options, stylesOptions, {\n theme: theme,\n flip: typeof stylesOptions.flip === 'boolean' ? stylesOptions.flip : theme.direction === 'rtl'\n });\n\n options.generateId = options.serverGenerateClassName || options.generateClassName;\n var sheetsRegistry = stylesOptions.sheetsRegistry;\n\n if (sheetManager.refs === 0) {\n var staticSheet;\n\n if (stylesOptions.sheetsCache) {\n staticSheet = multiKeyStore.get(stylesOptions.sheetsCache, stylesCreator, theme);\n }\n\n var styles = stylesCreator.create(theme, name);\n\n if (!staticSheet) {\n staticSheet = stylesOptions.jss.createStyleSheet(styles, _extends({\n link: false\n }, options));\n staticSheet.attach();\n\n if (stylesOptions.sheetsCache) {\n multiKeyStore.set(stylesOptions.sheetsCache, stylesCreator, theme, staticSheet);\n }\n }\n\n if (sheetsRegistry) {\n sheetsRegistry.add(staticSheet);\n }\n\n sheetManager.staticSheet = staticSheet;\n sheetManager.dynamicStyles = getDynamicStyles(styles);\n }\n\n if (sheetManager.dynamicStyles) {\n var dynamicSheet = stylesOptions.jss.createStyleSheet(sheetManager.dynamicStyles, _extends({\n link: true\n }, options));\n dynamicSheet.update(props);\n dynamicSheet.attach();\n state.dynamicSheet = dynamicSheet;\n state.classes = mergeClasses({\n baseClasses: sheetManager.staticSheet.classes,\n newClasses: dynamicSheet.classes\n });\n\n if (sheetsRegistry) {\n sheetsRegistry.add(dynamicSheet);\n }\n } else {\n state.classes = sheetManager.staticSheet.classes;\n }\n\n sheetManager.refs += 1;\n}\n\nfunction update(_ref3, props) {\n var state = _ref3.state;\n\n if (state.dynamicSheet) {\n state.dynamicSheet.update(props);\n }\n}\n\nfunction detach(_ref4) {\n var state = _ref4.state,\n theme = _ref4.theme,\n stylesOptions = _ref4.stylesOptions,\n stylesCreator = _ref4.stylesCreator;\n\n if (stylesOptions.disableGeneration) {\n return;\n }\n\n var sheetManager = multiKeyStore.get(stylesOptions.sheetsManager, stylesCreator, theme);\n sheetManager.refs -= 1;\n var sheetsRegistry = stylesOptions.sheetsRegistry;\n\n if (sheetManager.refs === 0) {\n multiKeyStore.delete(stylesOptions.sheetsManager, stylesCreator, theme);\n stylesOptions.jss.removeStyleSheet(sheetManager.staticSheet);\n\n if (sheetsRegistry) {\n sheetsRegistry.remove(sheetManager.staticSheet);\n }\n }\n\n if (state.dynamicSheet) {\n stylesOptions.jss.removeStyleSheet(state.dynamicSheet);\n\n if (sheetsRegistry) {\n sheetsRegistry.remove(state.dynamicSheet);\n }\n }\n}\n\nfunction useSynchronousEffect(func, values) {\n var key = React.useRef([]);\n var output; // Store \"generation\" key. Just returns a new object every time\n\n var currentKey = React.useMemo(function () {\n return {};\n }, values); // eslint-disable-line react-hooks/exhaustive-deps\n // \"the first render\", or \"memo dropped the value\"\n\n if (key.current !== currentKey) {\n key.current = currentKey;\n output = func();\n }\n\n React.useEffect(function () {\n return function () {\n if (output) {\n output();\n }\n };\n }, [currentKey] // eslint-disable-line react-hooks/exhaustive-deps\n );\n}\n\nexport default function makeStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var name = options.name,\n classNamePrefixOption = options.classNamePrefix,\n Component = options.Component,\n _options$defaultTheme = options.defaultTheme,\n defaultTheme = _options$defaultTheme === void 0 ? noopTheme : _options$defaultTheme,\n stylesOptions2 = _objectWithoutProperties(options, [\"name\", \"classNamePrefix\", \"Component\", \"defaultTheme\"]);\n\n var stylesCreator = getStylesCreator(stylesOrCreator);\n var classNamePrefix = name || classNamePrefixOption || 'makeStyles';\n stylesCreator.options = {\n index: increment(),\n name: name,\n meta: classNamePrefix,\n classNamePrefix: classNamePrefix\n };\n\n var useStyles = function useStyles() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var theme = useTheme() || defaultTheme;\n\n var stylesOptions = _extends({}, React.useContext(StylesContext), stylesOptions2);\n\n var instance = React.useRef();\n var shouldUpdate = React.useRef();\n useSynchronousEffect(function () {\n var current = {\n name: name,\n state: {},\n stylesCreator: stylesCreator,\n stylesOptions: stylesOptions,\n theme: theme\n };\n attach(current, props);\n shouldUpdate.current = false;\n instance.current = current;\n return function () {\n detach(current);\n };\n }, [theme, stylesCreator]);\n React.useEffect(function () {\n if (shouldUpdate.current) {\n update(instance.current, props);\n }\n\n shouldUpdate.current = true;\n });\n var classes = getClasses(instance.current, props.classes, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(classes);\n }\n\n return classes;\n };\n\n return useStyles;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getDisplayName } from '@material-ui/utils';\nexport default function mergeClasses() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var baseClasses = options.baseClasses,\n newClasses = options.newClasses,\n Component = options.Component;\n\n if (!newClasses) {\n return baseClasses;\n }\n\n var nextClasses = _extends({}, baseClasses);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof newClasses === 'string') {\n console.error([\"Material-UI: The value `\".concat(newClasses, \"` \") + \"provided to the classes prop of \".concat(getDisplayName(Component), \" is incorrect.\"), 'You might want to use the className prop instead.'].join('\\n'));\n return baseClasses;\n }\n }\n\n Object.keys(newClasses).forEach(function (key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!baseClasses[key] && newClasses[key]) {\n console.error([\"Material-UI: The key `\".concat(key, \"` \") + \"provided to the classes prop is not implemented in \".concat(getDisplayName(Component), \".\"), \"You can only override one of the following: \".concat(Object.keys(baseClasses).join(','), \".\")].join('\\n'));\n }\n\n if (newClasses[key] && typeof newClasses[key] !== 'string') {\n console.error([\"Material-UI: The key `\".concat(key, \"` \") + \"provided to the classes prop is not valid for \".concat(getDisplayName(Component), \".\"), \"You need to provide a non empty string instead of: \".concat(newClasses[key], \".\")].join('\\n'));\n }\n }\n\n if (newClasses[key]) {\n nextClasses[key] = \"\".concat(baseClasses[key], \" \").concat(newClasses[key]);\n }\n });\n return nextClasses;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport makeStyles from '../makeStyles';\n\nfunction omit(input, fields) {\n var output = {};\n Object.keys(input).forEach(function (prop) {\n if (fields.indexOf(prop) === -1) {\n output[prop] = input[prop];\n }\n });\n return output;\n} // styled-components's API removes the mapping between components and styles.\n// Using components as a low-level styling construct can be simpler.\n\n\nexport default function styled(Component) {\n var componentCreator = function componentCreator(style) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var name = options.name,\n stylesOptions = _objectWithoutProperties(options, [\"name\"]);\n\n if (process.env.NODE_ENV !== 'production' && Component === undefined) {\n throw new Error(['You are calling styled(Component)(style) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n\n var classNamePrefix = name;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n // Provide a better DX outside production.\n var displayName = getDisplayName(Component);\n\n if (displayName !== undefined) {\n classNamePrefix = displayName;\n }\n }\n }\n\n var stylesOrCreator = typeof style === 'function' ? function (theme) {\n return {\n root: function root(props) {\n return style(_extends({\n theme: theme\n }, props));\n }\n };\n } : {\n root: style\n };\n var useStyles = makeStyles(stylesOrCreator, _extends({\n Component: Component,\n name: name || Component.displayName,\n classNamePrefix: classNamePrefix\n }, stylesOptions));\n var filterProps;\n var propTypes = {};\n\n if (style.filterProps) {\n filterProps = style.filterProps;\n delete style.filterProps;\n }\n /* eslint-disable react/forbid-foreign-prop-types */\n\n\n if (style.propTypes) {\n propTypes = style.propTypes;\n delete style.propTypes;\n }\n /* eslint-enable react/forbid-foreign-prop-types */\n\n\n var StyledComponent = /*#__PURE__*/React.forwardRef(function StyledComponent(props, ref) {\n var children = props.children,\n classNameProp = props.className,\n clone = props.clone,\n ComponentProp = props.component,\n other = _objectWithoutProperties(props, [\"children\", \"className\", \"clone\", \"component\"]);\n\n var classes = useStyles(props);\n var className = clsx(classes.root, classNameProp);\n var spread = other;\n\n if (filterProps) {\n spread = omit(spread, filterProps);\n }\n\n if (clone) {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n className: clsx(children.props.className, className)\n }, spread));\n }\n\n if (typeof children === 'function') {\n return children(_extends({\n className: className\n }, spread));\n }\n\n var FinalComponent = ComponentProp || Component;\n return /*#__PURE__*/React.createElement(FinalComponent, _extends({\n ref: ref,\n className: className\n }, spread), children);\n });\n process.env.NODE_ENV !== \"production\" ? StyledComponent.propTypes = _extends({\n /**\n * A render function or node.\n */\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the component will recycle it's children HTML element.\n * It's using `React.cloneElement` internally.\n *\n * This prop will be deprecated and removed in v5\n */\n clone: chainPropTypes(PropTypes.bool, function (props) {\n if (props.clone && props.component) {\n return new Error('You can not use the clone and component prop at the same time.');\n }\n\n return null;\n }),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType\n }, propTypes) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n StyledComponent.displayName = \"Styled(\".concat(classNamePrefix, \")\");\n }\n\n hoistNonReactStatics(StyledComponent, Component);\n return StyledComponent;\n };\n\n return componentCreator;\n}","import React from 'react';\nvar ThemeContext = React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\n\nexport default ThemeContext;","import React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n var theme = React.useContext(ThemeContext);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n\n return theme;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport makeStyles from '../makeStyles';\nimport getThemeProps from '../getThemeProps';\nimport useTheme from '../useTheme'; // Link a style sheet with a component.\n// It does not modify the component passed to it;\n// instead, it returns a new component, with a `classes` property.\n\nvar withStyles = function withStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function (Component) {\n var defaultTheme = options.defaultTheme,\n _options$withTheme = options.withTheme,\n withTheme = _options$withTheme === void 0 ? false : _options$withTheme,\n name = options.name,\n stylesOptions = _objectWithoutProperties(options, [\"defaultTheme\", \"withTheme\", \"name\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (Component === undefined) {\n throw new Error(['You are calling withStyles(styles)(Component) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n }\n\n var classNamePrefix = name;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n // Provide a better DX outside production.\n var displayName = getDisplayName(Component);\n\n if (displayName !== undefined) {\n classNamePrefix = displayName;\n }\n }\n }\n\n var useStyles = makeStyles(stylesOrCreator, _extends({\n defaultTheme: defaultTheme,\n Component: Component,\n name: name || Component.displayName,\n classNamePrefix: classNamePrefix\n }, stylesOptions));\n var WithStyles = /*#__PURE__*/React.forwardRef(function WithStyles(props, ref) {\n var classesProp = props.classes,\n innerRef = props.innerRef,\n other = _objectWithoutProperties(props, [\"classes\", \"innerRef\"]); // The wrapper receives only user supplied props, which could be a subset of\n // the actual props Component might receive due to merging with defaultProps.\n // So copying it here would give us the same result in the wrapper as well.\n\n\n var classes = useStyles(_extends({}, Component.defaultProps, props));\n var theme;\n var more = other;\n\n if (typeof name === 'string' || withTheme) {\n // name and withTheme are invariant in the outer scope\n // eslint-disable-next-line react-hooks/rules-of-hooks\n theme = useTheme() || defaultTheme;\n\n if (name) {\n more = getThemeProps({\n theme: theme,\n name: name,\n props: other\n });\n } // Provide the theme to the wrapped component.\n // So we don't have to use the `withTheme()` Higher-order Component.\n\n\n if (withTheme && !more.theme) {\n more.theme = theme;\n }\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: innerRef || ref,\n classes: classes\n }, more));\n });\n process.env.NODE_ENV !== \"production\" ? WithStyles.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * Use that prop to pass a ref to the decorated component.\n * @deprecated\n */\n innerRef: chainPropTypes(PropTypes.oneOfType([PropTypes.func, PropTypes.object]), function (props) {\n if (props.innerRef == null) {\n return null;\n }\n\n return null; // return new Error(\n // 'Material-UI: The `innerRef` prop is deprecated and will be removed in v5. ' +\n // 'Refs are now automatically forwarded to the inner component.',\n // );\n })\n } : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n WithStyles.displayName = \"WithStyles(\".concat(getDisplayName(Component), \")\");\n }\n\n hoistNonReactStatics(WithStyles, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // Exposed for test purposes.\n WithStyles.Naked = Component;\n WithStyles.options = options;\n WithStyles.useStyles = useStyles;\n }\n\n return WithStyles;\n };\n};\n\nexport default withStyles;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport PropTypes from 'prop-types';\nimport merge from './merge'; // The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\n\nvar values = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n};\nvar defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: function up(key) {\n return \"@media (min-width:\".concat(values[key], \"px)\");\n }\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n if (process.env.NODE_ENV !== 'production') {\n if (!props.theme) {\n console.error('Material-UI: You are calling a style function without a theme value.');\n }\n }\n\n if (Array.isArray(propValue)) {\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n return propValue.reduce(function (acc, item, index) {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n\n if (_typeof(propValue) === 'object') {\n var _themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n\n return Object.keys(propValue).reduce(function (acc, breakpoint) {\n acc[_themeBreakpoints.up(breakpoint)] = styleFromPropValue(propValue[breakpoint]);\n return acc;\n }, {});\n }\n\n var output = styleFromPropValue(propValue);\n return output;\n}\n\nfunction breakpoints(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var base = styleFunction(props);\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n var extended = themeBreakpoints.keys.reduce(function (acc, key) {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme: props.theme\n }, props[key]));\n }\n\n return acc;\n }, null);\n return merge(base, extended);\n };\n\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\n\nexport default breakpoints;","import { deepmerge } from '@material-ui/utils';\n\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n\n });\n}\n\nexport default merge;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport merge from './merge';\nimport memoize from './memoize';\nvar properties = {\n m: 'margin',\n p: 'padding'\n};\nvar directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nvar aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n}; // memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\n\nvar getCssProperties = memoize(function (prop) {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n\n var _prop$split = prop.split(''),\n _prop$split2 = _slicedToArray(_prop$split, 2),\n a = _prop$split2[0],\n b = _prop$split2[1];\n\n var property = properties[a];\n var direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(function (dir) {\n return property + dir;\n }) : [property + direction];\n});\nvar spacingKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY'];\nexport function createUnarySpacing(theme) {\n var themeSpacing = theme.spacing || 8;\n\n if (typeof themeSpacing === 'number') {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(\"Material-UI: Expected spacing argument to be a number, got \".concat(abs, \".\"));\n }\n }\n\n return themeSpacing * abs;\n };\n }\n\n if (Array.isArray(themeSpacing)) {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (abs > themeSpacing.length - 1) {\n console.error([\"Material-UI: The value provided (\".concat(abs, \") overflows.\"), \"The supported values are: \".concat(JSON.stringify(themeSpacing), \".\"), \"\".concat(abs, \" > \").concat(themeSpacing.length - 1, \", you need to add the missing values.\")].join('\\n'));\n }\n }\n\n return themeSpacing[abs];\n };\n }\n\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `theme.spacing` value (\".concat(themeSpacing, \") is invalid.\"), 'It should be a number, an array or a function.'].join('\\n'));\n }\n\n return function () {\n return undefined;\n };\n}\n\nfunction getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n\n var abs = Math.abs(propValue);\n var transformed = transformer(abs);\n\n if (propValue >= 0) {\n return transformed;\n }\n\n if (typeof transformed === 'number') {\n return -transformed;\n }\n\n return \"-\".concat(transformed);\n}\n\nfunction getStyleFromPropValue(cssProperties, transformer) {\n return function (propValue) {\n return cssProperties.reduce(function (acc, cssProperty) {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n };\n}\n\nfunction spacing(props) {\n var theme = props.theme;\n var transformer = createUnarySpacing(theme);\n return Object.keys(props).map(function (prop) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (spacingKeys.indexOf(prop) === -1) {\n return null;\n }\n\n var cssProperties = getCssProperties(prop);\n var styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n var propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n }).reduce(merge, {});\n}\n\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce(function (obj, key) {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n\n return cache[arg];\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function isPlainObject(item) {\n return item && _typeof(item) === 'object' && item.constructor === Object;\n}\nexport default function deepmerge(target, source) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n clone: true\n };\n var output = options.clone ? _extends({}, target) : target;\n\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(function (key) {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n\n if (isPlainObject(source[key]) && key in target) {\n output[key] = deepmerge(target[key], source[key], options);\n } else {\n output[key] = source[key];\n }\n });\n }\n\n return output;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@material-ui/utils/macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe iff we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n\n /* eslint-disable prefer-template */\n var url = 'https://mui.com/production-error/?code=' + code;\n\n for (var i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n\n return 'Minified Material-UI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","module.exports = {\n \"version\": \"0.24.0\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(';')\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var index = pair.indexOf('=')\n\n // skip things that don't look like key=value\n if (index < 0) {\n continue;\n }\n\n var key = pair.substring(0, index).trim()\n\n // only assign once\n if (undefined == obj[key]) {\n var val = pair.substring(index + 1, pair.length).trim()\n\n // quoted values\n if (val[0] === '\"') {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.applyTrailingSlashOption = void 0;\n\n// TODO(v5): Remove legacy setting and default to \"always\"\nconst applyTrailingSlashOption = (input, option = `legacy`) => {\n const hasHtmlSuffix = input.endsWith(`.html`);\n const hasXmlSuffix = input.endsWith(`.xml`);\n const hasPdfSuffix = input.endsWith(`.pdf`);\n if (input === `/`) return input;\n\n if (hasHtmlSuffix || hasXmlSuffix || hasPdfSuffix) {\n option = `never`;\n }\n\n if (option === `always`) {\n return input.endsWith(`/`) ? input : `${input}/`;\n }\n\n if (option === `never`) {\n return input.endsWith(`/`) ? input.slice(0, -1) : input;\n }\n\n return input;\n};\n\nexports.applyTrailingSlashOption = applyTrailingSlashOption;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nexports.ScrollContext = _scrollHandler.ScrollHandler;\n\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\n\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sessionStorage = require(\"./session-storage\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\n\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n\n function ScrollHandler() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n } // Hack to allow accessing this._stateStorage.\n\n\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n\n return _this;\n }\n\n var _proto = ScrollHandler.prototype;\n\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n\n this._isTicking = false;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n } else if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n\n return ScrollHandler;\n}(React.Component);\n\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n\n var _proto = SessionStorage.prototype;\n\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n\n return 0;\n }\n };\n\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n\n return SessionStorage;\n}();\n\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _react = require(\"react\");\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","\"use strict\";\n\nmodule.exports = Object.assign;\n//# sourceMappingURL=object-assign.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.onInitialClientRender = void 0;\n\nvar _gatsbyScript = require(\"gatsby-script\");\n\nvar _injectPartytownSnippet = require(\"./utils/inject-partytown-snippet\");\n\n// Makes sure off-main-thread scripts are loaded in `gatsby develop`\nconst onInitialClientRender = () => {\n if (process.env.NODE_ENV !== `development`) {\n return;\n }\n\n (0, _injectPartytownSnippet.injectPartytownSnippet)(_gatsbyScript.collectedScriptsByPage.get(window.location.pathname)); // Clear scripts after we've used them to avoid leaky behavior\n\n _gatsbyScript.collectedScriptsByPage.delete(window.location.pathname);\n}; // Client-side navigation (CSR, e.g. Gatsby Link navigations) are broken upstream in Partytown.\n// We need an official API from Partytown for handling re-configuration and on-demand script loading.\n// Until then, `off-main-thread` scripts load only on server-side navigation (SSR).\n// See https://github.com/BuilderIO/partytown/issues/74 for more details.\n\n\nexports.onInitialClientRender = onInitialClientRender;\n//# sourceMappingURL=gatsby-browser.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.getForwards = getForwards;\n\nfunction getForwards(collectedScripts) {\n return collectedScripts === null || collectedScripts === void 0 ? void 0 : collectedScripts.flatMap(script => (script === null || script === void 0 ? void 0 : script.forward) || []);\n}\n//# sourceMappingURL=get-forwards.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.injectPartytownSnippet = injectPartytownSnippet;\n\nvar _integration = require(\"@builder.io/partytown/integration\");\n\nvar _getForwards = require(\"./get-forwards\");\n\n// Adapted from https://github.com/BuilderIO/partytown/blob/main/src/react/snippet.tsx to only include CSR logic\nfunction injectPartytownSnippet(collectedScripts) {\n if (!collectedScripts.length) {\n return;\n }\n\n const existingSnippet = document.querySelector(`script[data-partytown]`);\n const existingSandbox = document.querySelector(`iframe[src*=\"~partytown/partytown-sandbox-sw\"]`);\n\n if (existingSnippet) {\n existingSnippet.remove();\n }\n\n if (existingSandbox) {\n existingSandbox.remove();\n }\n\n const forwards = (0, _getForwards.getForwards)(collectedScripts);\n const snippet = document.createElement(`script`);\n snippet.dataset.partytown = ``;\n snippet.innerHTML = (0, _integration.partytownSnippet)({\n forward: forwards\n });\n document.head.appendChild(snippet);\n}\n//# sourceMappingURL=inject-partytown-snippet.js.map","exports.components = {\n \"component---src-templates-advanced-page-template-index-js\": () => import(\"./../../../src/templates/AdvancedPageTemplate/index.js\" /* webpackChunkName: \"component---src-templates-advanced-page-template-index-js\" */),\n \"component---src-templates-article-page-template-index-js\": () => import(\"./../../../src/templates/ArticlePageTemplate/index.js\" /* webpackChunkName: \"component---src-templates-article-page-template-index-js\" */),\n \"component---src-templates-brand-page-template-index-js\": () => import(\"./../../../src/templates/BrandPageTemplate/index.js\" /* webpackChunkName: \"component---src-templates-brand-page-template-index-js\" */),\n \"component---src-templates-category-page-template-index-js\": () => import(\"./../../../src/templates/CategoryPageTemplate/index.js\" /* webpackChunkName: \"component---src-templates-category-page-template-index-js\" */),\n \"component---src-templates-landing-page-template-index-js\": () => import(\"./../../../src/templates/LandingPageTemplate/index.js\" /* webpackChunkName: \"component---src-templates-landing-page-template-index-js\" */),\n \"component---src-templates-product-page-template-index-js\": () => import(\"./../../../src/templates/ProductPageTemplate/index.js\" /* webpackChunkName: \"component---src-templates-product-page-template-index-js\" */),\n \"component---src-templates-recipe-page-template-index-js\": () => import(\"./../../../src/templates/RecipePageTemplate/index.js\" /* webpackChunkName: \"component---src-templates-recipe-page-template-index-js\" */)\n}\n\n","module.exports = [{\n plugin: require('../plugins/gatsby-plugin-primary-theme/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../plugins/gatsby-plugin-root-and-page-wrapper/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-material-ui/gatsby-browser.js'),\n options: {\"plugins\":[],\"disableAutoprefixing\":true},\n },{\n plugin: require('../plugins/gatsby-plugin-cookie-information/gatsby-browser.js'),\n options: {\"plugins\":[],\"defaultLanguage\":\"fi\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"Viinimaa\",\"short_name\":\"Viinimaa\",\"start_url\":\"/\",\"background_color\":\"#ffffff\",\"theme_color\":\"#1b1d36\",\"icon\":\"src/images/viinimaa/favicon.png\",\"include_favicon\":false,\"display\":\"standalone\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"cacheDigest\":\"20533fd84b5b7ecdbb13eda9295be328\"},\n },{\n plugin: require('../node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js'),\n options: {\"plugins\":[]},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","module.exports = null","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","export default pathAndSearch => {\n if (pathAndSearch === undefined) {\n return pathAndSearch\n }\n let [path, search = ``] = pathAndSearch.split(`?`)\n if (search) {\n search = `?` + search\n }\n\n if (path === `/`) {\n return `/` + search\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1) + search\n }\n return path + search\n}\n","import { pick } from \"@gatsbyjs/reach-router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n let newRawPathname = rawPathname\n const queryIndex = rawPathname.indexOf(`?`)\n\n if (queryIndex !== -1) {\n const [path, qs] = rawPathname.split(`?`)\n newRawPathname = `${path}?${encodeURIComponent(qs)}`\n }\n\n const pathname = decodeURIComponent(newRawPathname)\n\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(\n pathname,\n decodeURIComponent(__BASE_PATH__)\n )\n // Remove any hashfragment\n .split(`#`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n const redirect = maybeGetBrowserRedirect(rawPathname)\n if (redirect) {\n return findPath(redirect.toPath)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst StaticQueryContext = React.createContext({})\nlet StaticQueryServerContext = null\nif (React.createServerContext) {\n StaticQueryServerContext = React.createServerContext(`StaticQuery`, {})\n}\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n <React.Fragment>\n {finalData && render(finalData)}\n {!finalData && <div>Loading (StaticQuery)</div>}\n </React.Fragment>\n )\n}\n\n// TODO(v5): Remove completely\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n <StaticQueryContext.Consumer>\n {staticQueryData => (\n <StaticQueryDataRenderer\n data={data}\n query={query}\n render={render || children}\n staticQueryData={staticQueryData}\n />\n )}\n </StaticQueryContext.Consumer>\n )\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n // TODO(v5): Remove since we require React >= 18\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n let context\n\n // Can we get a better check here?\n if (\n StaticQueryServerContext &&\n Object.keys(StaticQueryServerContext._currentValue).length\n ) {\n context = React.useContext(StaticQueryServerContext)\n } else {\n context = React.useContext(StaticQueryContext)\n }\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nexport {\n StaticQuery,\n StaticQueryContext,\n useStaticQuery,\n StaticQueryServerContext,\n}\n","import loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport { default as PageRenderer } from \"./public-page-renderer\"\nexport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nexport {\n default as Link,\n withPrefix,\n withAssetPrefix,\n navigate,\n parsePath,\n} from \"gatsby-link\"\n\nexport { graphql, prefetchPathname }\nexport {\n StaticQuery,\n StaticQueryContext,\n useStaticQuery,\n StaticQueryServerContext,\n} from \"./static-query\"\n\nexport * from \"gatsby-script\"\n","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import { createFromReadableStream } from \"react-server-dom-webpack\"\nimport prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = rawPath => {\n const [path, maybeSearch] = rawPath.split(`?`)\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json${\n maybeSearch ? `?${maybeSearch}` : ``\n }`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise(resolve => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\n// Regex that matches common search crawlers\nconst BOT_REGEX = /bot|crawler|spider|crawling/i\n\nconst toPageResources = (pageData, component = null, head) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n getServerDataError: pageData.getServerDataError,\n }\n\n return {\n component,\n head,\n json: pageData.result,\n page,\n }\n}\n\nfunction waitForResponse(response) {\n return new Promise(resolve => {\n try {\n const result = response.readRoot()\n resolve(result)\n } catch (err) {\n if (\n Object.hasOwnProperty.call(err, `_response`) &&\n Object.hasOwnProperty.call(err, `_status`)\n ) {\n setTimeout(() => {\n waitForResponse(response).then(resolve)\n }, 200)\n } else {\n throw err\n }\n }\n })\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.partialHydrationDb = new Map()\n this.isPrefetchQueueRunning = false\n this.prefetchQueued = []\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n const maybeSearch = pagePath.split(`?`)[1]\n if (maybeSearch && !jsonPayload.path.includes(maybeSearch)) {\n jsonPayload.path += `?${maybeSearch}`\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n fetchPartialHydrationJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath).replace(`.json`, `-rsc.json`)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: responseText,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.partialHydrationDb.has(pagePath)) {\n const pageData = this.partialHydrationDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPartialHydrationJson({ pagePath }).then(pageData => {\n this.partialHydrationDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return {\n error: page.error,\n status: page.status,\n }\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n let inFlightPromise\n if (global.hasPartialHydration) {\n inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n this.loadPartialHydrationJson(pagePath),\n ]).then(([appData, { payload: pageData }, result]) => {\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n const finalResult = {}\n\n // In develop we have separate chunks for template and Head components\n // to enable HMR (fast refresh requires single exports).\n // In production we have shared chunk with both exports. Double loadComponent here\n // will be deduped by webpack runtime resulting in single request and single module\n // being loaded for both `component` and `head`.\n const componentChunkPromise = this.loadComponent(\n pageData.componentChunkName,\n `head`\n ).then(head => {\n finalResult.createdAt = new Date()\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: appData\n ? appData.webpackCompilationHash\n : ``,\n })\n\n const pageResources = toPageResources(pageData, null, head)\n\n if (result.payload && typeof result.payload === `string`) {\n pageResources.partialHydration = result.payload\n\n const readableStream = new ReadableStream({\n start(controller) {\n const te = new TextEncoder()\n controller.enqueue(te.encode(result.payload))\n },\n pull(controller) {\n // close on next read when queue is empty\n controller.close()\n },\n cancel() {},\n })\n\n return waitForResponse(\n createFromReadableStream(readableStream)\n ).then(result => {\n pageResources.partialHydration = result\n\n return pageResources\n })\n }\n\n // undefined if final result is an error\n return pageResources\n })\n\n // Necessary for head component\n const staticQueryBatchPromise = Promise.all(\n (pageData.staticQueryHashes || []).map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromise, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = {\n ...pageResources,\n staticQueryResults: staticQueryResults,\n }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n } else {\n inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]).then(allData => {\n const result = allData[1]\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = result.payload\n const { componentChunkName, staticQueryHashes = [] } = pageData\n\n const finalResult = {}\n\n // In develop we have separate chunks for template and Head components\n // to enable HMR (fast refresh requires single exports).\n // In production we have shared chunk with both exports. Double loadComponent here\n // will be deduped by webpack runtime resulting in single request and single module\n // being loaded for both `component` and `head`.\n const componentChunkPromise = Promise.all([\n this.loadComponent(componentChunkName),\n this.loadComponent(componentChunkName, `head`),\n ]).then(([component, head]) => {\n finalResult.createdAt = new Date()\n let pageResources\n if (!component || component instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = component\n } else {\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: allData[0]\n ? allData[0].webpackCompilationHash\n : ``,\n })\n pageResources = toPageResources(pageData, component, head)\n }\n // undefined if final result is an error\n return pageResources\n })\n\n const staticQueryBatchPromise = Promise.all(\n staticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromise, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n }\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Don't prefetch if this is a crawler bot\n if (navigator.userAgent && BOT_REGEX.test(navigator.userAgent)) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return {\n then: resolve => resolve(false),\n abort: () => {},\n }\n }\n if (this.prefetchTriggered.has(pagePath)) {\n return {\n then: resolve => resolve(true),\n abort: () => {},\n }\n }\n\n const defer = {\n resolve: null,\n reject: null,\n promise: null,\n }\n defer.promise = new Promise((resolve, reject) => {\n defer.resolve = resolve\n defer.reject = reject\n })\n this.prefetchQueued.push([pagePath, defer])\n const abortC = new AbortController()\n abortC.signal.addEventListener(`abort`, () => {\n const index = this.prefetchQueued.findIndex(([p]) => p === pagePath)\n // remove from the queue\n if (index !== -1) {\n this.prefetchQueued.splice(index, 1)\n }\n })\n\n if (!this.isPrefetchQueueRunning) {\n this.isPrefetchQueueRunning = true\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n }\n\n return {\n then: (resolve, reject) => defer.promise.then(resolve, reject),\n abort: abortC.abort.bind(abortC),\n }\n }\n\n _processNextPrefetchBatch() {\n const idleCallback = window.requestIdleCallback || (cb => setTimeout(cb, 0))\n\n idleCallback(() => {\n const toPrefetch = this.prefetchQueued.splice(0, 4)\n const prefetches = Promise.all(\n toPrefetch.map(([pagePath, dPromise]) => {\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return dPromise.resolve(false)\n }\n\n return this.doPrefetch(findPath(pagePath)).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n\n dPromise.resolve(true)\n })\n })\n )\n\n if (this.prefetchQueued.length) {\n prefetches.then(() => {\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n })\n } else {\n this.isPrefetchQueueRunning = false\n }\n })\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n\n if (global.hasPartialHydration) {\n return Promise.all([\n prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n ),\n prefetchHelper(pageDataUrl.replace(`.json`, `-rsc.json`), {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPartialHydrationJson(pagePath)\n ),\n ])\n } else {\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths, pageData) {\n const loadComponent = (chunkName, exportType = `components`) => {\n if (!global.hasPartialHydration) {\n exportType = `components`\n }\n\n if (!asyncRequires[exportType][chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name \"${chunkName}\"`\n )\n }\n\n return (\n asyncRequires[exportType][chunkName]()\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n\n if (pageData) {\n this.pageDataDb.set(findPath(pageData.path), {\n pagePath: pageData.path,\n payload: pageData,\n status: `success`,\n })\n }\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n console.log({ result })\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n return super.loadPartialHydrationJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n","import { useEffect } from \"react\"\n\n/*\n * Calls callback in an effect and renders children\n */\nexport function FireCallbackInEffect({ children, callback }) {\n useEffect(() => {\n callback()\n })\n\n return children\n}\n","export const VALID_NODE_NAMES = [\n `link`,\n `meta`,\n `style`,\n `title`,\n `base`,\n `noscript`,\n `script`,\n]\n","import { VALID_NODE_NAMES } from \"./constants\"\n\n/**\n * Filter the props coming from a page down to just the ones that are relevant for head.\n * This e.g. filters out properties that are undefined during SSR.\n */\nexport function filterHeadProps(input) {\n return {\n location: {\n pathname: input.location.pathname,\n },\n params: input.params,\n data: input.data || {},\n pageContext: input.pageContext,\n }\n}\n\n/**\n * Throw error if Head export is not a valid\n */\nexport function headExportValidator(head) {\n if (typeof head !== `function`)\n throw new Error(\n `Expected \"Head\" export to be a function got \"${typeof head}\".`\n )\n}\n\n/**\n * Warn once for same messsage\n */\nlet warnOnce = _ => {}\nif (process.env.NODE_ENV !== `production`) {\n const warnings = new Set()\n warnOnce = msg => {\n if (!warnings.has(msg)) {\n console.warn(msg)\n }\n warnings.add(msg)\n }\n}\n\n/**\n * Warn for invalid tags in head.\n * @param {string} tagName\n */\nexport function warnForInvalidTags(tagName) {\n if (process.env.NODE_ENV !== `production`) {\n const warning = `<${tagName}> is not a valid head element. Please use one of the following: ${VALID_NODE_NAMES.join(\n `, `\n )}`\n\n warnOnce(warning)\n }\n}\n\n/**\n * When a `nonce` is present on an element, browsers such as Chrome and Firefox strip it out of the\n * actual HTML attributes for security reasons *when the element is added to the document*. Thus,\n * given two equivalent elements that have nonces, `Element,isEqualNode()` will return false if one\n * of those elements gets added to the document. Although the `element.nonce` property will be the\n * same for both elements, the one that was added to the document will return an empty string for\n * its nonce HTML attribute value.\n *\n * This custom `isEqualNode()` function therefore removes the nonce value from the `newTag` before\n * comparing it to `oldTag`, restoring it afterwards.\n *\n * For more information, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1211471#c12\n */\nexport function isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(`nonce`)\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(`nonce`)) {\n const cloneTag = newTag.cloneNode(true)\n cloneTag.setAttribute(`nonce`, ``)\n cloneTag.nonce = nonce\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag)\n }\n }\n\n return oldTag.isEqualNode(newTag)\n}\n\nexport function diffNodes({ oldNodes, newNodes, onStale, onNew }) {\n for (const existingHeadElement of oldNodes) {\n const indexInNewNodes = newNodes.findIndex(e =>\n isEqualNode(e, existingHeadElement)\n )\n\n if (indexInNewNodes === -1) {\n onStale(existingHeadElement)\n } else {\n // this node is re-created as-is, so we keep old node, and remove it from list of new nodes (as we handled it already here)\n newNodes.splice(indexInNewNodes, 1)\n }\n }\n\n // remaing new nodes didn't have matching old node, so need to be added\n for (const newNode of newNodes) {\n onNew(newNode)\n }\n}\n","import React from \"react\"\nimport { useEffect } from \"react\"\nimport { StaticQueryContext } from \"gatsby\"\nimport { LocationProvider } from \"@gatsbyjs/reach-router\"\nimport { reactDOMUtils } from \"../react-dom-utils\"\nimport { FireCallbackInEffect } from \"./components/fire-callback-in-effect\"\nimport { VALID_NODE_NAMES } from \"./constants\"\nimport {\n headExportValidator,\n filterHeadProps,\n warnForInvalidTags,\n diffNodes,\n} from \"./utils\"\n\nconst hiddenRoot = document.createElement(`div`)\n\nconst removePrevHeadElements = () => {\n const prevHeadNodes = document.querySelectorAll(`[data-gatsby-head]`)\n\n for (const node of prevHeadNodes) {\n node.parentNode.removeChild(node)\n }\n}\n\nconst onHeadRendered = () => {\n const validHeadNodes = []\n\n const seenIds = new Map()\n for (const node of hiddenRoot.childNodes) {\n const nodeName = node.nodeName.toLowerCase()\n const id = node.attributes?.id?.value\n\n if (!VALID_NODE_NAMES.includes(nodeName)) {\n warnForInvalidTags(nodeName)\n } else {\n let clonedNode = node.cloneNode(true)\n clonedNode.setAttribute(`data-gatsby-head`, true)\n\n // Create an element for scripts to make script work\n if (clonedNode.nodeName.toLowerCase() === `script`) {\n const script = document.createElement(`script`)\n for (const attr of clonedNode.attributes) {\n script.setAttribute(attr.name, attr.value)\n }\n script.innerHTML = clonedNode.innerHTML\n clonedNode = script\n }\n\n if (id) {\n if (!seenIds.has(id)) {\n validHeadNodes.push(clonedNode)\n seenIds.set(id, validHeadNodes.length - 1)\n } else {\n const indexOfPreviouslyInsertedNode = seenIds.get(id)\n validHeadNodes[indexOfPreviouslyInsertedNode].parentNode?.removeChild(\n validHeadNodes[indexOfPreviouslyInsertedNode]\n )\n validHeadNodes[indexOfPreviouslyInsertedNode] = clonedNode\n }\n } else {\n validHeadNodes.push(clonedNode)\n }\n }\n }\n\n const existingHeadElements = document.querySelectorAll(`[data-gatsby-head]`)\n\n if (existingHeadElements.length === 0) {\n document.head.append(...validHeadNodes)\n return\n }\n\n const newHeadNodes = []\n diffNodes({\n oldNodes: existingHeadElements,\n newNodes: validHeadNodes,\n onStale: node => node.parentNode.removeChild(node),\n onNew: node => newHeadNodes.push(node),\n })\n\n document.head.append(...newHeadNodes)\n}\n\nif (process.env.BUILD_STAGE === `develop`) {\n // We set up observer to be able to regenerate <head> after react-refresh\n // updates our hidden element.\n const observer = new MutationObserver(onHeadRendered)\n observer.observe(hiddenRoot, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n })\n}\n\nexport function headHandlerForBrowser({\n pageComponent,\n staticQueryResults,\n pageComponentProps,\n}) {\n useEffect(() => {\n if (pageComponent?.Head) {\n headExportValidator(pageComponent.Head)\n\n const { render } = reactDOMUtils()\n\n const Head = pageComponent.Head\n\n render(\n // just a hack to call the callback after react has done first render\n // Note: In dev, we call onHeadRendered twice( in FireCallbackInEffect and after mutualution observer dectects initail render into hiddenRoot) this is for hot reloading\n // In Prod we only call onHeadRendered in FireCallbackInEffect to render to head\n <FireCallbackInEffect callback={onHeadRendered}>\n <StaticQueryContext.Provider value={staticQueryResults}>\n <LocationProvider>\n <Head {...filterHeadProps(pageComponentProps)} />\n </LocationProvider>\n </StaticQueryContext.Provider>\n </FireCallbackInEffect>,\n hiddenRoot\n )\n }\n\n return () => {\n removePrevHeadElements()\n }\n })\n}\n","import React, { Suspense, createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\nimport { headHandlerForBrowser } from \"./head/head-export-handler-for-browser\"\n\n// Renders page\nfunction PageRenderer(props) {\n const pageComponentProps = {\n ...props,\n params: {\n ...grabMatchParams(props.location.pathname),\n ...props.pageResources.json.pageContext.__params,\n },\n }\n\n const preferDefault = m => (m && m.default) || m\n\n let pageElement\n if (props.pageResources.partialHydration) {\n pageElement = props.pageResources.partialHydration\n } else {\n pageElement = createElement(preferDefault(props.pageResources.component), {\n ...pageComponentProps,\n key: props.path || props.pageResources.page.path,\n })\n }\n\n const pageComponent = props.pageResources.head\n\n headHandlerForBrowser({\n pageComponent,\n staticQueryResults: props.pageResources.staticQueryResults,\n pageComponentProps,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n {\n element: pageElement,\n props: pageComponentProps,\n },\n pageElement,\n ({ result }) => {\n return { element: result, props: pageComponentProps }\n }\n ).pop()\n\n return wrappedPage\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport { navigate as reachNavigate } from \"@gatsbyjs/reach-router\"\nimport { globalHistory } from \"@gatsbyjs/reach-router/lib/history\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n if (/loading chunk \\d* failed./i.test(event.reason)) {\n if (nextRoute) {\n window.location.pathname = nextRoute\n }\n }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n nextRoute = location.pathname\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname + search).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname + search + hash\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return <div {...RouteAnnouncerProps} ref={this.announcementRef}></div>\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n <React.Fragment>\n {this.props.children}\n <RouteAnnouncer location={location} />\n </React.Fragment>\n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname + location.search, {\n withErrorDetails: true,\n }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(\n location.pathname + location.search,\n {\n withErrorDetails: true,\n }\n )\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"gatsby\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\nimport { reactDOMUtils } from \"./react-dom-utils\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nconst { render, hydrate } = reactDOMUtils()\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\nconst reloadStorageKey = `gatsby-reload-compilation-hash-match`\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n <BaseContext.Provider\n value={{\n baseuri: `/`,\n basepath: `/`,\n }}\n >\n <PageRenderer {...props} />\n </BaseContext.Provider>\n )\n\n const DataContext = React.createContext({})\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n <Location>\n {({ location }) => (\n <EnsureResources location={location}>\n {({ pageResources, location }) => {\n if (pageResources.partialHydration) {\n return (\n <DataContext.Provider value={{ pageResources, location }}>\n {children}\n </DataContext.Provider>\n )\n } else {\n const staticQueryResults = getStaticQueryResults()\n return (\n <StaticQueryContext.Provider value={staticQueryResults}>\n <DataContext.Provider value={{ pageResources, location }}>\n {children}\n </DataContext.Provider>\n </StaticQueryContext.Provider>\n )\n }\n }}\n </EnsureResources>\n )}\n </Location>\n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n <DataContext.Consumer>\n {({ pageResources, location }) => (\n <RouteUpdates location={location}>\n <ScrollContext\n location={location}\n shouldUpdateScroll={shouldUpdateScroll}\n >\n <Router\n basepath={__BASE_PATH__}\n location={location}\n id=\"gatsby-focus-wrapper\"\n >\n <RouteHandler\n path={\n pageResources.page.path === `/404.html` ||\n pageResources.page.path === `/500.html`\n ? stripPrefix(location.pathname, __BASE_PATH__)\n : encodeURI(\n (\n pageResources.page.matchPath ||\n pageResources.page.path\n ).split(`?`)[0]\n )\n }\n {...this.props}\n location={location}\n pageResources={pageResources}\n {...pageResources.json}\n />\n </Router>\n </ScrollContext>\n </RouteUpdates>\n )}\n </DataContext.Consumer>\n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). SSR\n // page paths might include search params, while SSG and DSG won't.\n // If page path include search params we also compare query params.\n // But only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !==\n browserLoc.pathname + (pagePath.includes(`?`) ? browserLoc.search : ``) &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath.match(/^\\/(404|500)(\\/?|.html)$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(\n __BASE_PATH__ +\n pagePath +\n (!pagePath.includes(`?`) ? browserLoc.search : ``) +\n browserLoc.hash,\n {\n replace: true,\n }\n )\n }\n\n // It's possible that sessionStorage can throw an exception if access is not granted, see https://github.com/gatsbyjs/gatsby/issues/34512\n const getSessionStorage = () => {\n try {\n return sessionStorage\n } catch {\n return null\n }\n }\n\n publicLoader.loadPage(browserLoc.pathname + browserLoc.search).then(page => {\n const sessionStorage = getSessionStorage()\n\n if (\n page?.page?.webpackCompilationHash &&\n page.page.webpackCompilationHash !== window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n // We have not matching html + js (inlined `window.___webpackCompilationHash`)\n // with our data (coming from `app-data.json` file). This can cause issues such as\n // errors trying to load static queries (as list of static queries is inside `page-data`\n // which might not match to currently loaded `.js` scripts).\n // We are making attempt to reload if hashes don't match, but we also have to handle case\n // when reload doesn't fix it (possibly broken deploy) so we don't end up in infinite reload loop\n if (sessionStorage) {\n const isReloaded = sessionStorage.getItem(reloadStorageKey) === `1`\n\n if (!isReloaded) {\n sessionStorage.setItem(reloadStorageKey, `1`)\n window.location.reload(true)\n return\n }\n }\n }\n\n if (sessionStorage) {\n sessionStorage.removeItem(reloadStorageKey)\n }\n\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: <LocationHandler /> },\n <LocationHandler />,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n if (performance.mark) {\n performance.mark(`onInitialClientRender`)\n }\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return <GatsbyRoot>{SiteRoot}</GatsbyRoot>\n }\n\n const focusEl = document.getElementById(`gatsby-focus-wrapper`)\n\n // Client only pages have any empty body so we just do a normal\n // render to avoid React complaining about hydration mis-matches.\n let defaultRenderer = render\n if (focusEl && focusEl.children.length) {\n defaultRenderer = hydrate\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n defaultRenderer\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n renderer(<App />, rootElement)\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n\n return\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","/* global HAS_REACT_18 */\n\nconst map = new WeakMap()\n\n/**\n * Since react 18, render and hydrate moved to react-dom/client\n * returns correct hydrate and render function based on installed react-dom version\n */\n\nexport function reactDOMUtils() {\n let render\n let hydrate\n\n if (HAS_REACT_18) {\n const reactDomClient = require(`react-dom/client`)\n\n render = (Component, el) => {\n let root = map.get(el)\n if (!root) {\n map.set(el, (root = reactDomClient.createRoot(el)))\n }\n root.render(Component)\n }\n\n hydrate = (Component, el) => reactDomClient.hydrateRoot(el, Component)\n } else {\n const reactDomClient = require(`react-dom`)\n render = reactDomClient.render\n hydrate = reactDomClient.hydrate\n }\n\n return { render, hydrate }\n}\n","exports.polyfill = Component => Component\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\nimport { withPrefix } from \"gatsby\";\nimport getManifestForPathname from \"./get-manifest-pathname\"; // when we don't have localisation in our manifest, we tree shake everything away\n\nexport const onRouteUpdate = function onRouteUpdate({\n location\n}, pluginOptions) {\n if (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n const {\n localize\n } = pluginOptions;\n const manifestFilename = getManifestForPathname(location.pathname, localize, true);\n const manifestEl = document.head.querySelector(`link[rel=\"manifest\"]`);\n\n if (manifestEl) {\n manifestEl.setAttribute(`href`, withPrefix(manifestFilename));\n }\n }\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _gatsby = require(\"gatsby\");\n\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @param {boolean} shouldPrependPathPrefix\n * @return string\n */\nvar _default = (pathname, localizedManifests, shouldPrependPathPrefix = false) => {\n const defaultFilename = `manifest.webmanifest`;\n\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n\n const localizedManifest = localizedManifests.find(app => {\n let startUrl = app.start_url;\n\n if (shouldPrependPathPrefix) {\n startUrl = (0, _gatsby.withPrefix)(startUrl);\n }\n\n return pathname.startsWith(startUrl);\n });\n\n if (!localizedManifest) {\n return defaultFilename;\n }\n\n return `manifest_${localizedManifest.lang}.webmanifest`;\n};\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.wrapRootElement = exports.onInitialClientRender = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _styles = require(\"@material-ui/styles\");\n\nvar _materialUiPluginCacheEndpoint = _interopRequireDefault(require(\"material-ui-plugin-cache-endpoint\"));\n\nvar _utils = require(\"./utils\");\n\nvar onInitialClientRender = function onInitialClientRender() {\n if (process.env.BUILD_STAGE === \"develop\") {\n return;\n } // Remove the server-side injected CSS.\n\n\n var jssStyles = document.querySelector(\"#jss-server-side\");\n\n if (jssStyles) {\n jssStyles.parentNode.removeChild(jssStyles);\n }\n};\n\nexports.onInitialClientRender = onInitialClientRender;\n\nvar wrapRootElement = function wrapRootElement(_ref, pluginOptions) {\n var element = _ref.element;\n\n if ((0, _utils.hasEntries)(_materialUiPluginCacheEndpoint.default) && pluginOptions.stylesProvider) {\n throw new Error(\"You specified both pathToStylesProvider and stylesProvider in gatsby-config.js. Remove one of them.\");\n }\n\n var stylesProvider = (0, _utils.hasEntries)(_materialUiPluginCacheEndpoint.default) ? _materialUiPluginCacheEndpoint.default : pluginOptions.stylesProvider;\n\n if (!stylesProvider) {\n return element;\n }\n\n return /*#__PURE__*/_react.default.createElement(_styles.StylesProvider, stylesProvider, element);\n};\n\nexports.wrapRootElement = wrapRootElement;","\"use strict\";\n\nexports.__esModule = true;\nexports.hasEntries = hasEntries;\n\nfunction hasEntries(object) {\n if (!object) return false;\n return Object.entries(object).length > 0;\n}","/* eslint-disable import/no-extraneous-dependencies */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Helmet } from 'react-helmet';\n\nimport './styles.css';\n\nexport default function CookieInformation({ children, culture }) {\n return (\n <>\n <Helmet>\n <script\n id=\"CookieConsent\"\n src=\"https://policy.app.cookieinformation.com/uc.js\"\n data-culture={culture.toUpperCase()}\n type=\"text/javascript\"\n data-gcm-enabled=\"false\"\n async\n />\n </Helmet>\n {children}\n </>\n );\n}\n\nCookieInformation.propTypes = {\n children: PropTypes.node,\n culture: PropTypes.string,\n};\n\nCookieInformation.defaultProps = {\n children: null,\n culture: 'EN',\n};\n","/**\n * Returns language from path by looking from the beginning of the string\n * @param {string} pathName path of the page\n * @param {string} defaultLanguage default language to use if path is invalid (defaults to 'en')\n * @returns language found form path name\n */\nexport default function getLanguageFromPathName(pathName, defaultLanguage = 'en') {\n if (!pathName || typeof pathName !== 'string' || pathName.length === 0) {\n return defaultLanguage;\n }\n const startIndex = pathName.indexOf('/');\n if (startIndex === -1) {\n return defaultLanguage;\n }\n let endIndex = pathName.indexOf('/', startIndex + 1);\n if (endIndex === -1) {\n endIndex = pathName.length;\n }\n const lang = pathName.slice(startIndex + 1, endIndex);\n if (lang.length !== 2) {\n // Language code must be 2 letter code\n return defaultLanguage;\n }\n return lang;\n}\n","/* eslint-disable import/no-extraneous-dependencies */\n\nimport React from 'react';\n\nimport CookieInformation from './CookieInformation';\nimport getLanguageFromPathName from './utils';\n\nexport const wrapPageElement = ({ element, props }, pluginOptions) => {\n if (process.env.NODE_ENV === 'production' || pluginOptions.includeInDevelopment) {\n const { location } = props;\n const { pathname } = location;\n const { defaultLanguage } = pluginOptions;\n return (\n <CookieInformation culture={getLanguageFromPathName(pathname, defaultLanguage)}>{element}</CookieInformation>\n );\n }\n return element;\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '../styles/withStyles';\nimport { exactProp } from '@material-ui/utils';\nexport var html = {\n WebkitFontSmoothing: 'antialiased',\n // Antialiasing.\n MozOsxFontSmoothing: 'grayscale',\n // Antialiasing.\n // Change from `box-sizing: content-box` so that `width`\n // is not affected by `padding` or `border`.\n boxSizing: 'border-box'\n};\nexport var body = function body(theme) {\n return _extends({\n color: theme.palette.text.primary\n }, theme.typography.body2, {\n backgroundColor: theme.palette.background.default,\n '@media print': {\n // Save printer ink.\n backgroundColor: theme.palette.common.white\n }\n });\n};\nexport var styles = function styles(theme) {\n return {\n '@global': {\n html: html,\n '*, *::before, *::after': {\n boxSizing: 'inherit'\n },\n 'strong, b': {\n fontWeight: theme.typography.fontWeightBold\n },\n body: _extends({\n margin: 0\n }, body(theme), {\n // Add support for document.body.requestFullScreen().\n // Other elements, if background transparent, are not supported.\n '&::backdrop': {\n backgroundColor: theme.palette.background.default\n }\n })\n }\n };\n};\n/**\n * Kickstart an elegant, consistent, and simple baseline to build upon.\n */\n\nfunction CssBaseline(props) {\n /* eslint-disable no-unused-vars */\n var _props$children = props.children,\n children = _props$children === void 0 ? null : _props$children,\n classes = props.classes;\n /* eslint-enable no-unused-vars */\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n}\n\nprocess.env.NODE_ENV !== \"production\" ? CssBaseline.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * You can wrap a node.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n CssBaseline['propTypes' + ''] = exactProp(CssBaseline.propTypes);\n}\n\nexport default withStyles(styles, {\n name: 'MuiCssBaseline'\n})(CssBaseline);","import React from 'react';\nimport { createTheme } from '@material-ui/core/styles';\nimport { CheckBoxOutlined } from '@material-ui/icons';\nimport { viinimaaNavigationBreakpoint } from '../../constants';\n\nimport '../../fonts/PlayfairDisplay/PlayfairDisplay.css';\n\nexport const colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n whiteTransparent: 'rgba(255, 255, 255, 0.9)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(244, 245, 246)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n darkerGray: 'rgb(129, 129, 129)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(164, 200, 225)',\n lightBlueTransparent: 'rgba(164, 200, 225, 0.9)',\n lighterBlue: 'rgb(234, 243, 249)',\n green: 'rgb(139, 181, 80)',\n lightGreen: 'rgb(176, 219, 116)',\n lightGreenTransparent: 'rgba(176, 219, 116, 0.9)',\n lighterGreen: 'rgb(241, 246, 236)',\n yellow: 'rgb(222, 184, 59)',\n lightYellow: 'rgb(233, 225, 134)',\n lighterYellow: 'rgb(255, 246, 233)',\n lightYellowTransparent: 'rgba(233, 225, 134, 0.9)',\n lighterYellow2: '#fff6e9',\n\n red: 'rgb(161, 21, 60)',\n darkRed: ' rgb(117, 13, 13)',\n lightRed: 'rgb(249, 234, 236)',\n\n darkOrange: '#ba8142',\n brightBlue: '#43847c',\n brightyellow: '#ffd700',\n\n brightGreen: '#6c8551',\n brightBrown: '#86482c',\n\n pink: 'rgb(208, 1, 110)',\n darkBrown: '#6D3332',\n brightOrange: '#FF4F01',\n lightPurple: '#685BC7',\n lightPink: 'rgb(221, 169, 191)',\n\n primaryBlue: '#1B1D36',\n primaryPurple: '#7b3e92',\n};\n\nconst theme = createTheme({});\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\nconst primaryTheme = createTheme({\n breakpoints: {\n values: breakPoints,\n },\n mixins: {\n toolbar: {\n minHeight: '70px',\n },\n },\n typography: {\n fontFamily: 'proxima-nova, sans-serif',\n fontWeightLight: '300',\n fontWeightRegular: '400',\n fontWeightMedium: '500',\n fontWeightBold: '700',\n h1: {\n fontFamily: '\"Playfair Display\", serif',\n fontSize: '1.75rem',\n fontWeight: '700',\n lineHeight: '1.19',\n marginBottom: '1rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '2.625rem',\n },\n },\n h2: {\n fontFamily: '\"Playfair Display\", serif',\n fontSize: '1.375rem',\n fontWeight: '700',\n lineHeight: 'normal',\n marginBottom: '1rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '1.5rem',\n },\n },\n h3: {\n fontFamily: '\"Playfair Display\", serif',\n fontSize: '1.125rem',\n fontWeight: '700',\n lineHeight: 'normal',\n marginBottom: '1rem',\n },\n h4: {\n fontFamily: '\"Playfair Display\", serif',\n fontSize: '1rem',\n fontWeight: '700',\n lineHeight: 'normal',\n marginBottom: '1rem',\n },\n h5: {\n fontFamily: '\"Playfair Display\", serif',\n fontSize: '1rem',\n fontWeight: '700',\n lineHeight: 'normal',\n marginBottom: '1rem',\n },\n h6: {\n fontFamily: '\"proxima-nova\", sans-serif',\n fontSize: '1rem',\n fontWeight: '400',\n lineHeight: 'normal',\n marginBottom: '1rem',\n },\n caption: {\n fontSize: 'inherit',\n fontStyle: 'italic',\n lineHeight: '1.5',\n },\n overline: {\n fontSize: '0.75rem',\n fontWeight: '700',\n },\n body1: {\n fontFamily: 'proxima-nova, sans-serif',\n fontSize: '0.938rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '1rem',\n },\n },\n body2: {\n fontFamily: 'proxima-nova, sans-serif',\n fontSize: '0.75rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '0.875rem',\n },\n },\n navigationLink: {\n fontSize: '1rem',\n fontFamily: 'proxima-nova, sans-serif',\n fontWeight: 'bold',\n color: colors.black,\n },\n descriptionRow: {\n fontSize: 'initial',\n },\n },\n palette: {\n common: {\n black: colors.black,\n white: colors.white,\n gray: colors.gray,\n lightGray: colors.lightGray,\n lighterGray: colors.lighterGray,\n mediumGray: colors.mediumGray,\n darkGray: colors.darkGray,\n blue: colors.blue,\n lightBlue: colors.lightBlue,\n red: colors.red,\n darkRed: colors.darkRed,\n green: colors.green,\n lightGreen: colors.lightGreen,\n },\n primary: {\n main: colors.black,\n contrastText: colors.white50,\n },\n secondary: {\n main: colors.darkGray,\n light: colors.lightYellow,\n },\n text: {\n primary: colors.darkGray,\n secondary: colors.white,\n light: colors.white,\n },\n background: {\n default: colors.white,\n breadcrumbs: colors.lightGray,\n linkBlock: colors.lightGray,\n defaultColumn: 'transparent',\n defaultRow: 'transparent',\n },\n error: {\n main: colors.red,\n light: colors.lightRed,\n },\n success: {\n main: colors.green,\n light: colors.lighterGreen,\n },\n warning: {\n main: colors.brightOrange,\n light: colors.lighterYellow,\n },\n info: {\n main: colors.blue,\n light: colors.lighterBlue,\n },\n headingFontFamily: { fontFamily: '\"Playfair Display\", serif' },\n divider: colors.lightGray,\n category: {\n outlined: {\n background: colors.lightGray,\n text: colors.primaryPurple,\n },\n text: colors.mediumGray,\n hoverText: colors.primaryPurple,\n },\n footer: {\n border: {\n color: colors.primaryBlue,\n width: '3px',\n },\n divider: colors.green,\n text: colors.black,\n background: colors.white,\n logoBarBackground: colors.lightGray,\n padding: {\n bottom: '50px',\n },\n columns: {\n list: null,\n },\n texts: null,\n },\n header: {\n text: colors.black,\n background: colors.white,\n border: {\n bottomWidth: '3px',\n style: 'solid',\n color: colors.primaryBlue,\n },\n minHeight: '64px',\n paddingYDesktop: '24px',\n paddingTop: '0',\n backgroundDesktop: colors.primaryBlue,\n borderBottomColor: colors.primaryBlue,\n navigation: {\n activeLink: colors.primaryPurple,\n activeLinkBorder: `4px solid ${colors.primaryPurple}`,\n hoverText: colors.primaryPurple,\n subMenuBackground: colors.lighterGray,\n subMenuBulletPoints: colors.primaryPurple,\n },\n icons: {\n color: null,\n backgroundColor: 'transparent',\n },\n },\n search: {\n quickSearch: {\n inputContainer: {\n backgroundColor: colors.white,\n [theme.breakpoints.up('sm')]: {\n backgroundColor: colors.primaryBlue,\n },\n },\n hideButton: {\n color: colors.white,\n },\n },\n },\n mobileNavigation: {\n text: colors.black,\n icon: colors.primaryPurple,\n xIconBackground: colors.lighterGray,\n logoBarBottomBorder: colors.primaryBlue,\n navigationElementBorder: colors.lighterGray,\n subNavigationTitleBackground: colors.primaryBlue,\n subNavigationTitleColor: colors.primaryPurple,\n },\n productPage: {\n informationBackground: colors.lighterGray,\n tasteProfiles: {\n orange: colors.darkOrange,\n yellow: colors.brightyellow,\n green: colors.brightGreen,\n brown: colors.brightBrown,\n blue: colors.brightBlue,\n\n pink: colors.pink,\n darkBrown: colors.darkBrown,\n brightOrange: colors.brightOrange,\n purple: colors.lightPurple,\n lightPink: colors.lightPink,\n },\n mainInfo: {\n accordion: {\n color: colors.primaryPurple,\n information: {\n detailesKey: colors.darkerGray,\n },\n },\n mediaPrint: {\n accordionSummary: {\n display: 'none',\n },\n accordion: {\n backgroundColor: colors.lighterGray,\n },\n accordionDescriptions: {\n maxWidth: '100%',\n paddingRight: '16px',\n },\n accordionAttributes: {\n padding: '0 8px',\n position: 'absolute',\n right: '0',\n top: '380px',\n width: '45%',\n border: 'solid 1px lightgrey',\n },\n informationRow: {\n key: {\n color: colors.black,\n paddingRight: '8px',\n textTransform: 'none',\n },\n value: {},\n },\n },\n },\n productInfo: {\n mediaPrint: {\n price: {\n display: 'none',\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'row-reverse',\n },\n imageSide: {\n justifyContent: 'center',\n alignContent: 'flex-start',\n flexWrap: 'wrap',\n flexBasis: '45%',\n maxWidth: '45%',\n },\n informations: {\n position: 'static',\n top: 'auto',\n left: 'auto',\n maxWidth: '55%',\n flexBasis: '55%',\n },\n basicInformation: {\n minHeight: '0px',\n maxWidth: '100%',\n },\n },\n },\n review: {\n articlePadding: theme.spacing(0, 2, 0, 2),\n background: colors.lighterGray,\n divider: colors.darkerGray,\n },\n labelBackground: colors.primaryPurple,\n },\n quote: {\n text: colors.primaryPurple,\n fontSize: '19px',\n },\n button: {\n fontWeight: 'bold',\n textTransform: 'uppercase',\n [theme.breakpoints.up(breakPoints.md)]: {\n padding: '15px 10px 15px 10px',\n },\n },\n memoryListButton: {\n badge: {\n backgroundColor: colors.primaryPurple,\n color: colors.white,\n fontWeight: 'bold',\n },\n actionButton: {\n addToList: {\n border: `solid 1px ${colors.primaryPurple}`,\n color: colors.primaryPurple,\n },\n removefromList: {\n border: `solid 1px ${colors.red}`,\n color: colors.red,\n },\n inList: {\n backgroundColor: colors.primaryPurple,\n color: colors.white,\n '&:hover': {\n color: colors.primaryPurple,\n '@media (hover: none)': {\n backgroundColor: colors.primaryPurple,\n color: colors.white,\n },\n },\n },\n },\n },\n link: {\n link: colors.primaryPurple,\n active: colors.primaryPurple,\n hover: colors.primaryPurple,\n },\n pageTemplates: {\n landingPage: {\n paddingTop: theme.spacing(20),\n\n [theme.breakpoints.up(viinimaaNavigationBreakpoint.Breakpoint)]: {\n paddingTop: theme.spacing(11),\n },\n },\n otherPageTemplates: {\n paddingTop: theme.spacing(20),\n [theme.breakpoints.up(viinimaaNavigationBreakpoint.Breakpoint)]: {\n paddingTop: theme.spacing(15),\n },\n },\n },\n custobarSubscriptionForm: {\n background: colors.primaryPurple,\n hover: {\n background: colors.lightGreen,\n },\n disabled: {\n background: colors.green,\n },\n },\n siteNotifications: {\n backgroundColor: colors.lighterYellow2,\n color: '#ffa31c',\n padding: theme.spacing(2.5),\n margin: theme.spacing(-3, 0, 4, 0),\n [theme.breakpoints.up(viinimaaNavigationBreakpoint.Breakpoint)]: {\n margin: theme.spacing(-1, 0, 4, 0),\n },\n },\n monopolyPrice: {\n fontFamily: 'proxima-nova, sans-serif',\n reducedPriceColor: colors.red,\n },\n },\n accordion: {\n backgroundColor: colors.white,\n color: colors.primaryPurple,\n border: '',\n expandIcon: {\n hover: {\n backgroundColor: colors.gray,\n },\n },\n },\n languageSelector: {\n border: {\n color: colors.black,\n width: '2px',\n },\n margin: '0',\n },\n linkBlockModule: {\n imageWrapper: {\n maxWidth: '35%',\n },\n textWrapper: {\n maxWidth: '65%',\n },\n },\n table: {\n border: `solid 1px ${colors.black}`,\n borderRadius: 0,\n head: {\n backgroundColor: colors.black,\n color: colors.white,\n },\n row: {\n even: {\n backgroundColor: theme.palette.action.hover,\n },\n },\n },\n listElementCard: {\n content: {},\n },\n slider: {\n arrowBotton: {},\n },\n hr: {},\n\n imageSpotLink: {\n innerDot: {},\n },\n event: {\n root: {},\n day: {},\n month: {},\n name: {},\n shortDescription: {},\n icon: {},\n },\n\n overrides: {\n MuiAccordion: {\n root: {\n '&.Mui-expanded': {\n margin: 0,\n },\n },\n },\n MuiAccordionSummary: {\n root: {\n '&.Mui-expanded': {\n backgroundColor: colors.primaryPurple,\n color: colors.white,\n minHeight: 'unset',\n },\n },\n expandIcon: {\n '&.Mui-expanded': {\n color: colors.white,\n },\n },\n content: {\n '&.Mui-expanded': {\n margin: '12px 0',\n },\n },\n },\n MuiAppBar: {\n root: {\n boxShadow: 'none',\n backgroundColor: 'transparent',\n },\n colorPrimary: {\n color: colors.black,\n backgroundColor: colors.white,\n },\n },\n MuiToolbar: {\n regular: {},\n dense: {\n color: colors.white,\n },\n },\n MuiDrawer: {\n root: {\n width: '350px',\n flexShrink: 0,\n },\n paper: {\n width: '350px',\n color: colors.black,\n backgroundColor: colors.white,\n },\n },\n MuiLink: {\n root: {\n color: colors.primaryPurple,\n },\n },\n MuiDialog: {\n paper: {\n margin: '5px',\n },\n },\n MuiButton: {\n root: {\n textTransform: 'inherit',\n borderRadius: '0px',\n padding: '18px 20px',\n fontSize: '1rem',\n minWidth: '0',\n },\n sizeSmall: {\n padding: '9px 18px',\n borderRadius: '0px',\n fontSize: '0.8125rem',\n },\n containedPrimary: {\n boxShadow: 'none',\n border: '2px solid transparent',\n backgroundColor: colors.primaryPurple,\n color: colors.white,\n '&:hover': {\n backgroundColor: colors.white,\n border: `2px solid ${colors.primaryPurple}`,\n boxShadow: 'none',\n color: colors.primaryPurple,\n '@media (hover: none)': {\n backgroundColor: colors.white,\n },\n },\n '&$disabled': {\n color: colors.black,\n opacity: 0.7,\n },\n },\n outlinedPrimary: {\n border: `2px solid ${colors.primaryPurple}`,\n color: colors.primaryPurple,\n '&:hover': {\n backgroundColor: colors.primaryPurple,\n border: `2px solid transparent`,\n color: colors.white,\n '@media (hover: none)': {\n backgroundColor: colors.primaryPurple,\n },\n },\n },\n },\n MuiBreadcrumbs: {\n root: {\n color: colors.darkGray,\n },\n separator: {\n fontSize: '1.5rem',\n marginLeft: '16px',\n marginRight: '16px',\n },\n },\n MuiDialogContent: {\n root: {\n padding: '8px 8px',\n [theme.breakpoints.up('sm')]: {\n padding: '8px 24px',\n },\n },\n },\n MuiInputBase: {\n root: {\n border: '1px solid',\n borderColor: colors.gray,\n overflow: 'hidden',\n backgroundColor: colors.lightGray,\n '&:hover:not($disabled)': {\n borderColor: colors.gray,\n },\n '& > svg': {\n color: colors.gray,\n },\n '&$focused': {\n boxShadow: '0 2px 6px 0 rgba(0, 0, 0, 0.24)',\n borderColor: colors.primaryPurple,\n '&:hover:not($disabled)': {\n borderColor: colors.primaryPurple,\n },\n },\n '&$error:not($focused)': {\n borderColor: theme.palette.error.main,\n '&:hover:not($disabled)': {\n borderColor: theme.palette.error.main,\n },\n },\n '&$disabled': {\n backgroundColor: colors.lightGray,\n },\n },\n adornedStart: {\n paddingLeft: '0.5rem',\n },\n adornedEnd: {\n paddingRight: '0.5rem',\n },\n input: {\n fontSize: '1rem',\n padding: '0.625rem 1rem',\n '&:not(:first-child)': {\n paddingLeft: '0.5rem',\n },\n '&:not(:last-child)': {\n paddingRight: '0.5rem',\n },\n '&::placeholder': {\n fontStyle: 'italic',\n },\n },\n },\n MuiInputLabel: {\n root: {\n textTransform: 'uppercase',\n marginLeft: '0.75rem',\n },\n shrink: {\n marginTop: '-8px',\n transform: 'translate(0, 1.5px) scale(1)',\n },\n },\n MuiFormLabel: {\n root: {\n color: colors.darkGray,\n '&$error': {\n color: colors.darkRed,\n },\n },\n asterisk: {\n '&$error': {\n color: colors.darkRed,\n },\n },\n },\n MuiFormHelperText: {\n root: {\n color: colors.darkGray,\n marginLeft: '0.75rem',\n '&$error': {\n color: colors.darkRed,\n },\n },\n },\n\n MuiCheckbox: {\n root: {\n color: colors.primaryPurple,\n '&$checked': {\n color: colors.primaryPurple,\n },\n },\n },\n MuiRadio: {\n root: {\n color: colors.primaryPurple,\n '&$checked': {\n color: colors.primaryPurple,\n },\n },\n },\n MuiFormControl: {\n root: {\n marginBottom: theme.spacing(2),\n },\n },\n MuiTypography: {\n root: {\n '& > li::Marker': {\n color: colors.primaryPurple,\n },\n },\n },\n MuiList: {\n root: {\n listStyle: 'square',\n '& > li::Marker': {\n color: colors.primaryPurple,\n },\n },\n },\n MuiCollapse: {\n hidden: {\n '@media print': {\n visibility: 'visible',\n height: 'auto',\n },\n },\n },\n MuiPaginationItem: {\n textPrimary: {\n '&.Mui-selected': {\n backgroundColor: colors.primaryPurple,\n color: colors.white,\n fontWeight: 'bold',\n },\n },\n },\n\n MuiSlider: {\n thumb: {\n color: colors.primaryPurple,\n '&:after': {\n display: 'none',\n },\n },\n track: {\n color: colors.primaryPurple,\n },\n },\n PrivateValueLabel: {\n circle: {\n borderRadius: '50%',\n },\n label: {\n color: colors.white,\n fontWeight: 'bold',\n },\n offset: {\n top: 0,\n },\n },\n },\n props: {\n MuiAppBar: {\n color: 'primary',\n },\n MuiIconButton: {\n color: 'primary',\n },\n MuiButton: {\n color: 'primary',\n variant: 'contained',\n },\n MuiLink: {\n variant: 'body1',\n },\n MuiContainer: {\n disableGutters: false,\n },\n MuiBreadcrumbs: {\n separator: '›',\n },\n MuiInput: {\n disableUnderline: true,\n },\n MuiInputLabel: {\n shrink: true,\n },\n MuiCheckbox: {\n checkedIcon: <CheckBoxOutlined />,\n },\n },\n});\n\nexport default primaryTheme;\n","import '../../fonts/bibendum/MyFontsWebfontsKit.css';\n\nconst colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(244, 245, 246)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(209, 231, 236)',\n darkBlue: 'rgb(113, 134, 140)',\n green: 'rgb(116, 165, 74)',\n lightGreen: 'rgb(232, 236, 226)',\n darkGreen: 'rgb(136,144,129)',\n darkPurple: 'rgb(66,44,64)',\n lightPurple: 'rgb(180, 156, 185)',\n red: 'rgb(200, 49, 69)',\n lighterRed: ' rgb(222, 194, 194)',\n darkRed: ' rgb(95, 39, 39)',\n darkBrown: 'rgb(95,66,64)',\n darkerBrown: 'rgb(71, 64, 64)',\n lightBrown: 'rgb(229,222,217)',\n lightYellow: 'rgb(255, 246, 233)',\n\n brightOrange: '#e68532',\n brightBlue: '#3b91a4',\n brightYellow: '#ffd700',\n brightGreen: '#7b9f34',\n brightBrown: '#86482c',\n};\n\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\n\nconst brandColors = {\n forest: '#2A5135',\n petrolium: '#034244',\n fire: '#FF4713',\n pink: '#E88697',\n lightpink: '#d4817d',\n};\n\nconst textColors = {\n bodyText: '#333333',\n headingColor: '#333333',\n mutedText: '#7D7D7D',\n disabledText: '#B9B9B9',\n lightText: colors.white,\n};\nconst textFontFamilies = {\n fontTypography: '\"AlmarenaLight\", sans-serif',\n fontBody1: '\"AlmarenaLight\", sans-serif',\n fontBody2: '\"AlmarenaLight\", sans-serif',\n fontHeadings: '\"AlmarenaLight\", serif',\n fontBotton: 'AlmarenaLight, sans-serif',\n};\nconst textFontSizesMobile = {\n fontSizeLeadText: '1.125rem',\n fontSizeTypography: '0.938rem',\n fontSizeButton: '0.875rem',\n fontSizeBody1: '0.938rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '2rem',\n fontSizeH2: '1.5rem',\n fontSizeH3: '1.188rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontSizesDesktop = {\n fontSizeLeadText: '1.188rem',\n fontSizeTypography: '1rem',\n fontSizeButton: '1rem',\n fontSizeBody1: '1rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '3.375rem',\n fontSizeH2: '2.25rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.125rem',\n};\n\nconst textFontWeight = {\n typography: 'normal',\n button: '600',\n body1: 'normal',\n body2: 'normal',\n h1: '500',\n h2: '500',\n h3: '500',\n h4: '500',\n};\n\nconst textLineHeightsMobile = {\n lineHeightLeadText: '1.58',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.5',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst textLineHeightsDesktop = {\n lineHeightLeadText: '1.5',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.47',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst typography = {\n h1: {\n marginBottom: '2.5rem',\n },\n h2: {\n marginBottom: '1.75rem',\n textTransform: 'none',\n },\n h3: {\n marginBottom: '1rem',\n },\n h4: {\n marginBottom: '1rem',\n },\n h5: {\n marginBottom: '1rem',\n },\n h6: {\n marginBottom: '1rem',\n },\n};\n\nconst pageTemplates = {\n landingPage: {\n mobile: {\n paddingTop: 5, // => value x 8px\n },\n desktop: {\n paddingTop: 7, // => value x 8px\n },\n },\n otherPageTemplates: {\n mobile: {\n paddingTop: 5, // => value x 8px\n },\n desktop: {\n paddingTop: 7, // => value x 8px\n },\n },\n};\n\nconst linkColors = {\n link: '#2A5135',\n linkHover: '#14341D',\n linkPressed: '#031B0A',\n};\n\nconst iconColors = {\n iconColor: '#333333',\n};\nconst hr = {};\n\nconst backgroundColors = {\n paper: colors.white,\n grayLight: '#F0F0F0F0',\n grayMid: '#A9AEB2',\n grayDark: '#373737',\n overlay: 'rgba(51,51,51,0.5)',\n};\n\nconst formColors = {\n inputBorder: '#B4B4B4',\n inputBackground: '#F0F0F0',\n inputActiveBackground: '#F0F0F0',\n inputActiveBorder: '#034244',\n inputBorderRadius: '0',\n};\n\nconst primaryButtonColors = {\n primaryButtonBackground: '#2A5135',\n primaryButtonBackgroundGradient: 'none',\n primaryButtonHoveredBackground: '#14341D',\n primaryButtonPressedBackground: '#031B0A',\n primaryButtonDisabledBackground: 'rgba(20,52,29,0.4)',\n primaryButtonContents: '#FFFFFF',\n};\nconst secondaryButtonColors = {\n secondaryButtonBackground: '#2A5135',\n secondaryButtonHoveredBackground: '#14341D',\n secondaryButtonPressedBackground: '#031B0A',\n secondaryButtonDisabledBackground: 'rgba(20,52,29,0.4)',\n secondaryButtonContents: '#FFFFFF',\n};\n\nconst outlinedButtonColors = {\n outlinedButton: '#034244',\n outlinedButtonHovered: '#fff',\n outlinedButtonPressed: '#011C1D',\n outlinedButtonDisabled: 'rgba(2,48,50,0.4)',\n outlinedButtonHoveredBackground: '#034244',\n};\n\nconst buttonSettings = {\n buttonPaddingDesktop: '12px 18px 12px 18px',\n buttonPaddingMobile: '10px 14px 10px 14px',\n borderRadius: '0',\n textTransform: 'inherit',\n};\n\nconst notificationColors = {\n infoBackground: '#E2F1FF',\n successBackground: '#E9FAEE',\n warningBackground: '#FFF1E0',\n errorBackground: '#FFECF4',\n\n infoContents: '#4F8BC2',\n successContents: '#236637',\n warningContents: '#BD7D2E',\n errorContents: '#BD175D',\n};\n\nconst header = {\n text: colors.forest,\n background: colors.white,\n minHeight: '72px',\n paddingYDesktop: '60px',\n navigation: {\n activeLink: textColors.bodyText,\n activeLinkBorder: 'none',\n hoverText: colors.pink,\n subMenuBackground: colors.white,\n subMenuBulletPoints: colors.white,\n },\n border: {\n style: 'solid',\n bottomWidth: '3px',\n },\n icons: {\n color: colors.white,\n backgroundColor: colors.black,\n },\n};\n\nconst footer = {\n border: {\n color: colors.darkerBrown,\n width: '3px',\n },\n divider: colors.darkerBrown,\n text: colors.white,\n background: colors.darkerBrown,\n logoBarBackground: colors.lightGray,\n padding: {\n bottom: '50px',\n },\n};\n\nconst accordion = {\n backgroundColor: brandColors.forest,\n borderRadius: 0,\n color: colors.white,\n titleFontSize: '1.125rem',\n hover: {\n backgroundColor: brandColors.forest,\n color: colors.white,\n },\n expandIcon: {\n backgroundColor: 'inherit',\n hover: {\n backgroundColor: 'inherit',\n },\n },\n padding: {\n left: '16px',\n right: '12px',\n },\n};\n\nconst languageSelector = {\n border: {\n color: formColors.inputBorder,\n width: '2px',\n },\n margin: '0',\n};\n\nconst table = {\n border: `solid 1px ${brandColors.forest}`,\n borderRadius: 0,\n head: {\n backgroundColor: brandColors.forest,\n color: colors.white,\n },\n row: {\n even: {\n backgroundColor: colors.white,\n },\n },\n cell: {\n border: `solid 1px ${brandColors.forest}`,\n },\n};\n\nconst category = {\n outlined: {\n background: brandColors.forest,\n text: colors.white,\n },\n text: brandColors.forest,\n hoverText: brandColors.lightpink,\n};\n\nconst mobileNavigation = {\n text: colors.darkBrown,\n icon: colors.darkBrown,\n xIconBackground: colors.lightBrown,\n logoBarBottomBorder: colors.darkBlue,\n navigationElementBorder: colors.lightGray,\n subNavigationTitleBackground: colors.lightGreen,\n subNavigationTitleColor: colors.darkBlue,\n drawer: {\n paper: {\n backgroundColors: backgroundColors.paper,\n widthDesktop: '350px',\n },\n },\n};\n\nexport const bibendumPrimaryTheme = {\n colors,\n breakPoints,\n brandColors,\n textColors,\n textFontFamilies,\n textFontSizesMobile,\n textFontSizesDesktop,\n textFontWeight,\n textLineHeightsMobile,\n textLineHeightsDesktop,\n typography,\n pageTemplates,\n linkColors,\n iconColors,\n backgroundColors,\n formColors,\n primaryButtonColors,\n secondaryButtonColors,\n outlinedButtonColors,\n buttonSettings,\n notificationColors,\n header,\n footer,\n accordion,\n languageSelector,\n table,\n category,\n mobileNavigation,\n hr,\n};\n","const colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(244, 245, 246)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(180, 180, 180)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(209, 231, 236)',\n darkBlue: 'rgb(113, 134, 140)',\n green: 'rgb(116, 165, 74)',\n lightGreen: 'rgb(232, 236, 226)',\n darkGreen: 'rgb(136,144,129)',\n darkPurple: 'rgb(66,44,64)',\n lightPurple: 'rgb(180, 156, 185)',\n red: 'rgb(184, 73, 56)',\n lighterRed: ' rgb(222, 194, 194)',\n darkRed: ' rgb(95, 39, 39)',\n darkBrown: 'rgb(95,66,64)',\n darkerBrown: 'rgb(71, 64, 64)',\n lightBrown: 'rgb(229,222,217)',\n lightYellow: 'rgb(255, 246, 233)',\n\n brightOrange: '#e68532',\n brightBlue: '#3b91a4',\n brightYellow: '#ffd700',\n brightGreen: '#7b9f34',\n brightBrown: '#86482c',\n};\n\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\n\nconst brandColors = {\n darkPurple: '#52222c',\n yellow: '#da974e',\n green: '#305440',\n red: '#B84938',\n brown: '#E4DBD0',\n lightGray: '#EBEDE6',\n};\n\nconst textColors = {\n bodyText: '#000000',\n headingColor: brandColors.darkPurple,\n mutedText: '#7D7D7D',\n disabledText: '#B9B9B9',\n lightText: colors.white,\n};\nconst textFontFamilies = {\n fontTypography: \"'Jost', sans-serif\",\n fontBody1: \"'Jost', sans-serif\",\n fontBody2: \"'Jost', sans-serif\",\n fontHeadings: \"'Playfair Display', serif\",\n fontBotton: \"'Jost', sans-serif\",\n};\nconst textFontSizesMobile = {\n fontSizeLeadText: '1.125rem',\n fontSizeTypography: '0.938rem',\n fontSizeButton: '0.813rem',\n fontSizeBody1: '0.938rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '2.5rem',\n fontSizeH2: '1.625rem',\n fontSizeH3: '1.188rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontSizesDesktop = {\n fontSizeLeadText: '1.188rem',\n fontSizeTypography: '1rem',\n fontSizeButton: '0.938rem',\n fontSizeBody1: '1rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '4rem',\n fontSizeH2: '2.625rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontWeight = {\n typography: 'normal',\n button: '600',\n body1: 'normal',\n body2: 'normal',\n h1: 'bold',\n h2: 'bold',\n h3: 'bold',\n h4: 'bold',\n};\nconst textLineHeightsMobile = {\n lineHeightLeadText: '1.5',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.47',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst textLineHeightsDesktop = {\n lineHeightLeadText: '1.58',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.5',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst typography = {\n h1: {\n marginBottom: '2.5rem',\n },\n h2: {\n marginBottom: '1.75rem',\n textTransform: 'none',\n },\n h3: {\n marginBottom: '1rem',\n },\n h4: {\n marginBottom: '1rem',\n },\n h5: {\n marginBottom: '1rem',\n },\n h6: {\n marginBottom: '1rem',\n },\n};\n\nconst pageTemplates = {\n landingPage: {\n mobile: {\n paddingTop: 0, // => value x 8px\n },\n desktop: {\n paddingTop: 0, // => value x 8px\n },\n },\n otherPageTemplates: {\n mobile: {\n paddingTop: 0, // => value x 8px\n },\n desktop: {\n paddingTop: 0, // => value x 8px\n },\n },\n};\n\nconst linkColors = {\n link: '#DA974E',\n linkHover: '#AA6A24',\n linkPressed: '#653808',\n};\n\nconst iconColors = {\n iconColor: '#333333',\n};\nconst hr = {};\n\nconst backgroundColors = {\n paper: '#F8F6F3',\n grayLight: '#F0F0F0F0',\n grayMid: '#A9AEB2',\n grayDark: '#373737',\n overlay: 'rgba(51,51,51,0.5)',\n};\n\nconst formColors = {\n inputBorder: '#B4B4B4',\n inputActiveBackground: '#F0F0F0',\n inputBackground: '#F0F0F0',\n inputActiveBorder: '#710EDB',\n inputBorderRadius: '0',\n};\n\nconst primaryButtonColors = {\n primaryButtonBackground: '#305440',\n primaryButtonBackgroundGradient: 'none',\n primaryButtonHoveredBackground: '#1d402d',\n primaryButtonPressedBackground: '#072314',\n primaryButtonDisabledBackground: 'rgba(29, 64, 45, 0.4)',\n primaryButtonContents: '#FFFFFF',\n};\n\nconst secondaryButtonColors = {\n secondaryButtonBackground: '#e4dbd0',\n secondaryButtonHoveredbackground: '#fff1e0',\n secondaryButtonPressedbackground: '#dccdba',\n secondaryButtonDisabledbackground: 'rgba(84, 59, 112, 0.4)',\n secondaryButtonContents: '#52222c',\n};\n\nconst outlinedButtonColors = {\n outlinedButton: '#52222c',\n outlinedButtonHovered: '#fff',\n outlinedButtonPressed: '#1a0409',\n outlinedButtonDisabled: 'rgba(48, 15, 22, 0.4)',\n outlinedButtonContents: '#52222c',\n outlinedButtonHoveredBackground: '#52222c',\n};\n\nconst buttonSettings = {\n buttonPaddingDesktop: '16px 24px 16px 24px',\n buttonPaddingMobile: '12px 18px 12px 18px',\n borderRadius: 0,\n textTransform: 'inherit',\n};\n\nconst notificationColors = {\n infoBackground: '#E2F1FF',\n successBackground: '#d8fde7',\n warningBackground: '#fff1ce',\n errorBackground: '#ffe3e8',\n\n infoContents: '#4f8bc2',\n successContents: '#399f62',\n warningContents: '#cb8600',\n errorContents: '#c81233',\n};\n\nconst header = {\n text: colors.darkPurple,\n background: 'transparent',\n minHeight: '80px',\n paddingYDesktop: '60px',\n navigation: {\n activeLink: textColors.bodyText,\n activeLinkBorder: 'none',\n hoverText: colors.yellow,\n subMenuBackground: colors.white,\n subMenuBulletPoints: colors.white,\n },\n border: {\n bottomWidth: '3px',\n style: 'none',\n },\n icons: {\n color: colors.white,\n backgroundColor: colors.black,\n },\n backgroundGradient: {\n background: 'linear-gradient(0deg, rgba(255,255,255,0) 0%, rgba(47,47,47,0.50) 0%)',\n },\n};\n\nconst footer = {\n border: {\n color: brandColors.lightGray,\n width: '3px',\n },\n divider: colors.darkerBrown,\n text: colors.white,\n background: brandColors.lightGray,\n logoBarBackground: brandColors.lightGray,\n padding: {\n bottom: '50px',\n },\n};\n\nconst accordion = {\n backgroundColor: brandColors.brown,\n borderRadius: 0,\n color: brandColors.darkPurple,\n titleFontSize: '1.125rem',\n hover: {\n backgroundColor: brandColors.brown,\n color: linkColors.linkHover,\n },\n expandIcon: {\n backgroundColor: 'inherit',\n hover: {\n backgroundColor: 'inherit',\n },\n },\n padding: {\n left: '16px',\n right: '12px',\n },\n};\n\nconst languageSelector = {\n color: 'white',\n border: {\n color: formColors.inputBorder,\n width: '2px',\n },\n margin: '0',\n};\n\nconst table = {\n border: `solid 1px ${brandColors.darkPurple}`,\n borderRadius: 0,\n head: {\n backgroundColor: brandColors.darkPurple,\n color: colors.white,\n },\n row: {\n even: {\n backgroundColor: colors.white,\n },\n },\n cell: {\n border: `solid 1px ${brandColors.darkPurple}`,\n },\n};\n\nconst category = {\n outlined: {\n background: brandColors.brown,\n text: brandColors.darkPurple,\n },\n text: brandColors.darkPurple,\n hoverText: brandColors.brown,\n};\n\nconst mobileNavigation = {\n text: colors.darkBrown,\n icon: colors.darkBrown,\n xIconBackground: colors.lightBrown,\n logoBarBottomBorder: colors.darkBlue,\n navigationElementBorder: colors.lightGray,\n subNavigationTitleBackground: colors.lightGreen,\n subNavigationTitleColor: colors.darkBlue,\n drawer: {\n paper: {\n backgroundColors: backgroundColors.paper,\n widthDesktop: '350px',\n },\n },\n};\n\nexport const philipsonSoderbergPrimaryTheme = {\n colors,\n breakPoints,\n brandColors,\n textColors,\n textFontFamilies,\n textFontSizesMobile,\n textFontSizesDesktop,\n textFontWeight,\n textLineHeightsMobile,\n textLineHeightsDesktop,\n typography,\n pageTemplates,\n linkColors,\n iconColors,\n backgroundColors,\n formColors,\n primaryButtonColors,\n secondaryButtonColors,\n outlinedButtonColors,\n buttonSettings,\n notificationColors,\n header,\n footer,\n accordion,\n languageSelector,\n table,\n category,\n mobileNavigation,\n hr,\n};\n","import '../../fonts/Gotham/fontface.css';\n\nconst colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(244, 245, 246)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(209, 231, 236)',\n darkBlue: 'rgb(113, 134, 140)',\n green: 'rgb(116, 165, 74)',\n lightGreen: 'rgb(232, 236, 226)',\n darkGreen: 'rgb(136,144,129)',\n darkPurple: 'rgb(66,44,64)',\n lightPurple: 'rgb(180, 156, 185)',\n red: 'rgb(200, 49, 69)',\n lighterRed: ' rgb(222, 194, 194)',\n darkRed: ' rgb(95, 39, 39)',\n darkBrown: 'rgb(95,66,64)',\n darkerBrown: 'rgb(71, 64, 64)',\n lightBrown: 'rgb(229,222,217)',\n lightYellow: 'rgb(255, 246, 233)',\n\n brightOrange: '#e68532',\n brightBlue: '#3b91a4',\n brightYellow: '#ffd700',\n brightGreen: '#7b9f34',\n brightBrown: '#86482c',\n};\n\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\n\nconst brandColors = {\n tamarillo: '#891114',\n pirateGold: '#C78600',\n};\n\nconst textColors = {\n bodyText: '#000000',\n mutedText: '#7D7D7D',\n disabledText: '#B9B9B9',\n lightText: colors.white,\n};\nconst textFontFamilies = {\n fontTypography: 'Gotham, sans-serif',\n fontBody1: 'Gotham, sans-serif',\n fontBody2: 'Gotham, sans-serif',\n fontHeadings: 'Gotham, sans-serif',\n fontBotton: 'Gotham, sans-serif',\n};\n\nconst textFontSizesMobile = {\n fontSizeLeadText: '1.125rem',\n fontSizeTypography: '0.938rem',\n fontSizeButton: '0.875rem',\n fontSizeBody1: '0.938rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '1.875rem',\n fontSizeH2: '1.5rem',\n fontSizeH3: '1.188rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontSizesDesktop = {\n fontSizeLeadText: '1.188rem',\n fontSizeTypography: '1rem',\n fontSizeButton: '1rem',\n fontSizeBody1: '1rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '2.75rem',\n fontSizeH2: '2rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontWeight = {\n typography: 'normal',\n button: '600',\n body1: 'normal',\n body2: 'normal',\n h1: '500',\n h2: '500',\n h3: '500',\n h4: '500',\n};\nconst textLineHeightsMobile = {\n lineHeightLeadText: '1.5',\n lineHeightQuote: '1.47',\n lineHeightBody1: '1.47',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst textLineHeightsDesktop = {\n lineHeightLeadText: '1.58',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.5',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst typography = {\n h1: {\n marginBottom: '2.5rem',\n },\n h2: {\n marginBottom: '1.75rem',\n textTransform: 'none',\n },\n h3: {\n marginBottom: '1rem',\n },\n h4: {\n marginBottom: '1rem',\n },\n h5: {\n marginBottom: '1rem',\n },\n h6: {\n marginBottom: '1rem',\n },\n};\n\nconst pageTemplates = {\n landingPage: {\n mobile: {\n paddingTop: 5, // => value x 8px\n },\n desktop: {\n paddingTop: 7, // => value x 8px\n },\n },\n otherPageTemplates: {\n mobile: {\n paddingTop: 14, // => value x 8px\n },\n desktop: {\n paddingTop: 15, // => value x 8px\n },\n },\n};\n\nconst linkColors = {\n link: '#A16B00',\n linkHover: '#895B00',\n linkPressed: '#684500',\n};\n\nconst iconColors = {\n iconColor: '#000000',\n};\nconst hr = {};\n\nconst backgroundColors = {\n paper: '#F8F6F3',\n grayLight: '#F0F0F0F0',\n grayDark: '#373737',\n goldLight: '#F1E8E2',\n overlay: 'rgba(51,51,51,0.5)',\n};\n\nconst formColors = {\n inputBorder: '#B4B4B4',\n inputBackground: '#F0F0F0',\n inputActiveBackground: '#F0F0F0',\n inputActiveBorder: '#C78600',\n inputBorderRadius: '0',\n};\n\nconst primaryButtonColors = {\n primaryButtonBackground: '#A16B00',\n primaryButtonBackgroundGradient: 'none',\n primaryButtonHoveredBackground: '#895B00',\n primaryButtonPressedBackground: '#684500',\n primaryButtonDisabledBackground: 'rgba(70, 58, 35, 0.4)',\n primaryButtonContents: '#FFFFFF',\n};\nconst secondaryButtonColors = {\n secondaryButtonBackground: '#A16B00',\n secondaryButtonHoveredBackground: '#895B00',\n secondaryButtonPressedBackground: '#684500',\n secondaryButtonDisabledBackground: 'rgba(70, 58, 35, 0.4)',\n secondaryButtonContents: '#FFFFFF',\n};\n\nconst outlinedButtonColors = {\n outlinedButton: '#A16B00',\n outlinedButtonHovered: '#fff',\n outlinedButtonPressed: '#684500',\n outlinedButtonDisabled: 'rgba(46, 24, 25, 0.4)',\n outlinedButtonHoveredBackground: '#A16B00',\n};\n\nconst buttonSettings = {\n buttonPaddingDesktop: '8px 14px',\n buttonPaddingMobile: '12px 20px',\n borderRadius: '4px',\n textTransform: 'inherit',\n};\n\nconst notificationColors = {\n infoBackground: '#E7EEF8',\n successBackground: '#E9F8EA',\n warningBackground: '#FDF2E9',\n errorBackground: '#F6E6E6',\n\n infoContents: '#3D68A8',\n successContents: '#218E2C',\n warningContents: '#E8770E',\n errorContents: '#D71717',\n};\n\nconst header = {\n text: colors.pirateGold,\n background: colors.white,\n minHeight: '72px',\n paddingYDesktop: '60px',\n navigation: {\n activeLink: linkColors.linkPressed,\n activeLinkBorder: 'none',\n hoverText: linkColors.linkHover,\n subMenuBackground: colors.white,\n subMenuBulletPoints: colors.white,\n },\n border: {\n bottomWidth: '3px',\n style: 'solid',\n },\n icons: {\n color: colors.white,\n backgroundColor: colors.black,\n },\n};\n\nconst footer = {\n border: {\n color: 'transparent',\n width: '3px',\n },\n divider: brandColors.tamarillo,\n text: colors.white,\n background: brandColors.tamarillo,\n logoBarBackground: brandColors.tamarillo,\n padding: {\n bottom: '50px',\n },\n};\n\nconst accordion = {\n backgroundColor: backgroundColors.grayLight,\n borderRadius: '12px',\n color: linkColors.link,\n flexDirection: 'row',\n titleFontSize: '1.125rem',\n hover: {\n backgroundColor: colors.white,\n color: linkColors.hover,\n },\n expandIcon: {\n backgroundColor: 'inherit',\n hover: {\n backgroundColor: 'inherit',\n },\n },\n padding: {\n left: '12px',\n right: '8px',\n },\n};\n\nconst languageSelector = {\n color: colors.black,\n border: {\n color: formColors.inputBorder,\n width: '2px',\n },\n margin: '0',\n};\n\nconst table = {\n border: `solid 1px ${brandColors.pirateGold}`,\n borderRadius: '4px',\n head: {\n backgroundColor: brandColors.pirateGold,\n color: colors.white,\n },\n row: {\n even: {\n backgroundColor: colors.white,\n },\n },\n cell: {\n border: `solid 1px ${brandColors.pirateGold}`,\n },\n};\n\nconst category = {\n outlined: {\n background: backgroundColors.grayLight,\n text: linkColors.link,\n },\n text: linkColors.link,\n hoverText: linkColors.linkHover,\n};\n\nconst mobileNavigation = {\n text: colors.darkerBrown,\n icon: textColors.bodyText,\n xIconBackground: colors.lightBrown,\n logoBarBottomBorder: colors.darkBlue,\n navigationElementBorder: colors.lightGray,\n subNavigationTitleBackground: brandColors.tamarillo,\n subNavigationTitleColor: colors.white,\n drawer: {\n paper: {\n backgroundColors: backgroundColors.paper,\n widthDesktop: '350px',\n },\n },\n};\n\nexport const blossaPrimaryTheme = {\n colors,\n breakPoints,\n brandColors,\n textColors,\n textFontFamilies,\n textFontSizesMobile,\n textFontSizesDesktop,\n textFontWeight,\n textLineHeightsMobile,\n textLineHeightsDesktop,\n typography,\n pageTemplates,\n linkColors,\n iconColors,\n backgroundColors,\n formColors,\n primaryButtonColors,\n secondaryButtonColors,\n outlinedButtonColors,\n buttonSettings,\n notificationColors,\n header,\n footer,\n accordion,\n languageSelector,\n table,\n category,\n mobileNavigation,\n hr,\n};\n","const colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(244, 245, 246)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(209, 231, 236)',\n darkBlue: 'rgb(113, 134, 140)',\n green: 'rgb(116, 165, 74)',\n lightGreen: 'rgb(232, 236, 226)',\n darkGreen: 'rgb(136,144,129)',\n darkPurple: 'rgb(66,44,64)',\n lightPurple: 'rgb(180, 156, 185)',\n red: 'rgb(200, 49, 69)',\n lighterRed: ' rgb(222, 194, 194)',\n darkRed: ' rgb(95, 39, 39)',\n darkBrown: 'rgb(95,66,64)',\n darkerBrown: 'rgb(71, 64, 64)',\n lightBrown: 'rgb(229,222,217)',\n lightYellow: 'rgb(255, 246, 233)',\n\n brightOrange: '#e68532',\n brightBlue: '#3b91a4',\n brightYellow: '#ffd700',\n brightGreen: '#7b9f34',\n brightBrown: '#86482c',\n};\n\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\n\nconst brandColors = {\n black: '#0f0f0f',\n white: '#ffffff',\n};\n\nconst textColors = {\n bodyText: '#ffffff',\n mutedText: '#7D7D7D',\n disabledText: '#B9B9B9',\n lightText: colors.white,\n};\n\nconst textFontFamilies = {\n fontTypography: 'MercuryDisplay, sans-serif',\n fontBody1: 'MercuryDisplay, sans-serif',\n fontBody2: 'MercuryDisplay, sans-serif',\n fontHeadings: 'TradeGothic, sans-serif',\n fontBotton: 'MercuryDisplay, sans-serif',\n};\n\nconst textFontSizesMobile = {\n fontSizeLeadText: '1.125rem',\n fontSizeTypography: '0.938rem',\n fontSizeButton: '0.875rem',\n fontSizeBody1: '0.938rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '1.875rem',\n fontSizeH2: '1.5rem',\n fontSizeH3: '1.188rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontSizesDesktop = {\n fontSizeLeadText: '1.188rem',\n fontSizeTypography: '1rem',\n fontSizeButton: '1rem',\n fontSizeBody1: '1rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '2.75rem',\n fontSizeH2: '2rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontWeight = {\n typography: 'normal',\n button: '600',\n body1: 'normal',\n body2: 'normal',\n h1: '500',\n h2: '500',\n h3: '500',\n h4: '500',\n};\nconst textLineHeightsMobile = {\n lineHeightLeadText: '1.5',\n lineHeightQuote: '1.47',\n lineHeightBody1: '1.47',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst textLineHeightsDesktop = {\n lineHeightLeadText: '1.58',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.5',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst typography = {\n h1: {\n marginBottom: '2.5rem',\n },\n h2: {\n marginBottom: '1.75rem',\n textTransform: 'none',\n },\n h3: {\n marginBottom: '1rem',\n },\n h4: {\n marginBottom: '1rem',\n },\n h5: {\n marginBottom: '1rem',\n },\n h6: {\n marginBottom: '1rem',\n },\n};\n\nconst pageTemplates = {\n landingPage: {\n mobile: {\n paddingTop: 5, // => value x 8px\n },\n desktop: {\n paddingTop: 7, // => value x 8px\n },\n },\n otherPageTemplates: {\n mobile: {\n paddingTop: 14, // => value x 8px\n },\n desktop: {\n paddingTop: 15, // => value x 8px\n },\n },\n};\n\nconst linkColors = {\n link: '#ffadad',\n linkHover: '#bd8080',\n linkPressed: '#bd8080',\n};\n\nconst iconColors = {\n iconColor: '#ffffff',\n};\n\nconst hr = {};\n\nconst backgroundColors = {\n paper: '#0f0f0f',\n grayLight: '#F0F0F0F0',\n grayDark: '#373737',\n goldLight: '#F1E8E2',\n overlay: 'rgba(50,50,50,0.7)',\n};\n\nconst formColors = {\n inputBorder: '#B4B4B4',\n inputBackground: '#F0F0F0',\n inputActiveBackground: '#F0F0F0',\n inputActiveBorder: '#ffadad',\n inputBorderRadius: '0',\n};\n\nconst primaryButtonColors = {\n primaryButtonBackground: '#F0F0F0',\n primaryButtonBackgroundGradient: 'none',\n primaryButtonHoveredBackground: '#ffadad',\n primaryButtonPressedBackground: '#ffadad',\n primaryButtonDisabledBackground: 'rgba(247, 101, 101, 0.4)',\n primaryButtonContents: '#0f0f0f',\n};\nconst secondaryButtonColors = {\n secondaryButtonBackground: '#ffadad',\n secondaryButtonHoveredBackground: '#bd8080',\n secondaryButtonPressedBackground: '#bd8080',\n secondaryButtonDisabledBackground: 'rgba(247, 101, 101, 0.4)',\n secondaryButtonContents: '#0f0f0f',\n};\n\nconst outlinedButtonColors = {\n outlinedButton: '#ffadad',\n outlinedButtonHovered: brandColors.black,\n outlinedButtonPressed: '#ffadad',\n outlinedButtonDisabled: 'rgba(247, 101, 101, 0.4)',\n outlinedButtonHoveredBackground: brandColors.black,\n};\n\nconst buttonSettings = {\n buttonPaddingDesktop: '8px 14px',\n buttonPaddingMobile: '12px 20px',\n borderRadius: '4px',\n textTransform: 'inherit',\n};\n\nconst notificationColors = {\n infoBackground: '#E7EEF8',\n successBackground: '#E9F8EA',\n warningBackground: '#FDF2E9',\n errorBackground: '#F6E6E6',\n\n infoContents: '#3D68A8',\n successContents: '#218E2C',\n warningContents: '#E8770E',\n errorContents: '#D71717',\n};\n\nconst header = {\n text: colors.pirateGold,\n background: brandColors.black,\n minHeight: '72px',\n paddingYDesktop: '60px',\n navigation: {\n activeLink: linkColors.linkPressed,\n activeLinkBorder: 'none',\n hoverText: linkColors.linkHover,\n subMenuBackground: colors.white,\n subMenuBulletPoints: colors.white,\n },\n border: {\n style: 'solid',\n bottomWidth: '3px',\n },\n icons: {\n color: colors.white,\n backgroundColor: colors.black,\n },\n};\n\nconst footer = {\n border: {\n color: 'transparent',\n width: '3px',\n },\n divider: brandColors.black,\n text: colors.white,\n background: brandColors.black,\n logoBarBackground: brandColors.black,\n padding: {\n bottom: '50px',\n },\n};\n\nconst accordion = {\n backgroundColor: backgroundColors.grayDark,\n borderRadius: '12px',\n color: brandColors.white,\n flexDirection: 'row',\n titleFontSize: '1.125rem',\n hover: {\n backgroundColor: backgroundColors.overlay,\n color: brandColors.white,\n },\n expandIcon: {\n backgroundColor: 'inherit',\n hover: {\n backgroundColor: 'inherit',\n },\n },\n padding: {\n left: '12px',\n right: '8px',\n },\n};\n\nconst languageSelector = {\n border: {\n color: formColors.inputBorder,\n width: '2px',\n },\n margin: '0',\n};\n\nconst table = {\n border: `solid 1px ${brandColors.white}`,\n borderRadius: '4px',\n head: {\n backgroundColor: backgroundColors.overlay,\n color: colors.white,\n },\n row: {\n backgroundColor: backgroundColors.grayDark,\n even: {\n backgroundColor: backgroundColors.grayDark,\n },\n },\n cell: {\n border: `solid 1px ${brandColors.white}`,\n },\n};\n\nconst category = {\n outlined: {\n background: backgroundColors.grayLight,\n text: linkColors.link,\n },\n text: linkColors.link,\n hoverText: linkColors.linkHover,\n};\n\nconst mobileNavigation = {\n text: linkColors.link,\n icon: textColors.bodyText,\n xIconBackground: backgroundColors.grayDark,\n logoBarBottomBorder: backgroundColors.grayDark,\n navigationElementBorder: backgroundColors.grayDark,\n subNavigationTitleBackground: backgroundColors.grayDark,\n subNavigationTitleColor: colors.white,\n drawer: {\n paper: {\n backgroundColors: backgroundColors.paper,\n widthDesktop: '350px',\n },\n },\n};\n\nexport const valhallaPrimaryTheme = {\n colors,\n breakPoints,\n brandColors,\n textColors,\n textFontFamilies,\n textFontSizesMobile,\n textFontSizesDesktop,\n textFontWeight,\n textLineHeightsMobile,\n textLineHeightsDesktop,\n typography,\n pageTemplates,\n linkColors,\n iconColors,\n backgroundColors,\n formColors,\n primaryButtonColors,\n secondaryButtonColors,\n outlinedButtonColors,\n buttonSettings,\n notificationColors,\n header,\n footer,\n accordion,\n languageSelector,\n table,\n category,\n mobileNavigation,\n hr,\n};\n","export default __webpack_public_path__ + \"static/Gammeldansk-bg-e108ca50d8cd636ec10e5803683c3228.jpg\";","import '../../fonts/LLBrown/fontface.css';\n\nimport BackgroundImage from '../../images/gammeldansk/Gammeldansk-bg.jpg';\n\nconst colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(244, 245, 246)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(209, 231, 236)',\n darkBlue: 'rgb(113, 134, 140)',\n green: 'rgb(116, 165, 74)',\n lightGreen: 'rgb(232, 236, 226)',\n darkGreen: 'rgb(136,144,129)',\n darkPurple: 'rgb(66,44,64)',\n lightPurple: 'rgb(180, 156, 185)',\n red: 'rgb(200, 49, 69)',\n lighterRed: ' rgb(222, 194, 194)',\n darkRed: ' rgb(95, 39, 39)',\n darkBrown: 'rgb(95,66,64)',\n darkerBrown: 'rgb(71, 64, 64)',\n lightBrown: 'rgb(229,222,217)',\n lightYellow: 'rgb(255, 246, 233)',\n\n brightOrange: '#e68532',\n brightBlue: '#3b91a4',\n brightYellow: '#ffd700',\n brightGreen: '#7b9f34',\n brightBrown: '#86482c',\n};\n\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\n\nconst textFontFamilies = {\n fontTypography: 'LL Brown, sans-serif',\n fontBody1: 'LL Brown, sans-serif',\n fontBody2: 'LL Brown, sans-serif',\n fontHeadings: 'LL Brown, sans-serif',\n};\n\nconst textFontSizesMobile = {\n fontSizeLeadText: '1.125rem',\n fontSizeTypography: '0.938rem',\n fontSizeButton: '0.875rem',\n fontSizeBody1: '0.938rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '2.625rem',\n fontSizeH2: '1.75rem',\n fontSizeH3: '1.188rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontSizesDesktop = {\n fontSizeLeadText: '1.188rem',\n fontSizeTypography: '1rem',\n fontSizeButton: '1rem',\n fontSizeBody1: '1rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '4rem',\n fontSizeH2: '2.5rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontWeight = {\n typography: 'normal',\n button: '600',\n body1: 'normal',\n body2: 'normal',\n h1: '700',\n h2: '700',\n h3: '700',\n h4: '700',\n};\nconst textLineHeightsMobile = {\n lineHeightLeadText: '1.5',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.5',\n lineHeightBody2: '1.47',\n lineHeightHeadings: 'normal',\n};\n\nconst textLineHeightsDesktop = {\n lineHeightLeadText: '1.58',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.5',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst typography = {\n h1: {\n marginBottom: '2.5rem',\n },\n h2: {\n marginBottom: '1.75rem',\n textTransform: 'uppercase',\n },\n h3: {\n marginBottom: '1rem',\n },\n h4: {\n marginBottom: '1rem',\n },\n h5: {\n marginBottom: '1rem',\n },\n h6: {\n marginBottom: '1rem',\n },\n};\n\nconst pageTemplates = {\n landingPage: {\n mobile: {\n paddingTop: 24.875, // => value x 8px\n },\n desktop: {\n paddingTop: 24.875, // => value x 8px\n },\n },\n otherPageTemplates: {\n mobile: {\n paddingTop: 30, // => value x 8px\n },\n desktop: {\n paddingTop: 29, // => value x 8px\n },\n },\n};\n\nconst brandColors = {\n primary: '#FFE190',\n accent: '#F5F422',\n};\n\nconst textColors = {\n bodyText: '#000000',\n headingColor: '#9f161a',\n mutedText: '#7D7D7D',\n disabledText: '#B9B9B9',\n lightText: colors.white,\n};\n\nconst linkColors = {\n link: '#9f161a',\n linkHover: '#611717',\n linkPressed: '#611717',\n};\n\nconst iconColors = {\n iconColor: '#210101',\n};\n\nconst backgroundColors = {\n paper: '#f3f1eb',\n grayLight: '#f3f1eb',\n grayDark: '#373737',\n goldLight: '#F1E8E2',\n overlay: 'rgba(51,51,51,0.5)',\n};\n\nconst formColors = {\n inputBorder: '#B4B4B4',\n inputBackground: '#7d7d7d',\n inputActiveBackground: '#ffffff',\n inputActiveBorder: '#210101',\n};\n\nconst primaryButtonColors = {\n primaryButtonBackground: '#210101',\n primaryButtonBackgroundGradient: 'radial-gradient(circle at 50% 50%, #611717, #210101 75%)',\n primaryButtonHoveredBackground: '#210101',\n primaryButtonPressedBackground: '#210101',\n primaryButtonDisabledBackground: '#9d9191',\n primaryButtonContents: '#FFFFFF',\n};\nconst secondaryButtonColors = {\n secondaryButtonBackground: '#611717',\n secondaryButtonHoveredBackground: '#210101',\n secondaryButtonPressedBackground: '#210101',\n secondaryButtonDisabledBackground: '9d9191',\n secondaryButtonContents: '#FFFFFF',\n};\n\nconst outlinedButtonColors = {\n outlinedButton: '#611717',\n outlinedButtonHovered: '#210101',\n outlinedButtonPressed: '#210101',\n outlinedButtonDisabled: '#9d9191',\n outlinedButtonHoveredBackground: '#611717',\n};\n\nconst buttonSettings = {\n buttonPaddingDesktop: '12px 24px',\n buttonPaddingMobile: '8px 16px',\n borderRadius: '0',\n textTransform: 'inherit',\n};\n\nconst notificationColors = {\n infoBackground: '#E7EEF8',\n successBackground: '#E9F8EA',\n warningBackground: '#FDF2E9',\n errorBackground: '#F6E6E6',\n\n infoContents: '#3D68A8',\n successContents: '#218E2C',\n warningContents: '#E8770E',\n errorContents: '#D71717',\n};\n\nconst header = {\n text: '#210101',\n background: `${brandColors.primary} url(${BackgroundImage}) repeat`,\n minHeight: '199px',\n paddingYDesktop: '80px',\n paddingYMobile: '80px',\n navigation: {\n activeLink: linkColors.linkPressed,\n activeLinkBorder: 'none',\n hoverText: linkColors.linkHover,\n subMenuBackground: colors.white,\n subMenuBulletPoints: colors.white,\n },\n border: {\n bottomWidth: '0',\n style: 'none',\n },\n icons: {\n color: colors.white,\n backgroundColor: colors.black,\n },\n};\n\nconst footer = {\n border: {\n color: 'transparent',\n width: '3px',\n },\n divider: brandColors.accent,\n text: textColors.bodyText,\n background: `${brandColors.primary} url(${BackgroundImage}) repeat`,\n logoBarBackground: brandColors.primary,\n padding: {\n bottom: '50px',\n },\n};\n\nconst accordion = {\n backgroundColor: backgroundColors.grayLight,\n borderRadius: '12px',\n color: linkColors.link,\n flexDirection: 'row',\n titleFontSize: '1.125rem',\n hover: {\n backgroundColor: colors.white,\n color: linkColors.linkHover,\n },\n expandIcon: {\n backgroundColor: 'inherit',\n hover: {\n backgroundColor: 'inherit',\n },\n },\n padding: {\n left: '12px',\n right: '8px',\n },\n};\n\nconst languageSelector = {\n border: {\n color: colors.black,\n width: '1px',\n },\n margin: '0 30px 0 0',\n};\n\nconst table = {\n border: `solid 1px ${brandColors.accent}`,\n borderRadius: '4px',\n head: {\n backgroundColor: brandColors.primary,\n color: textColors.bodyText,\n },\n row: {\n even: {\n backgroundColor: colors.white,\n },\n },\n cell: {\n border: `solid 1px ${brandColors.primaryDark}`,\n },\n};\n\nconst category = {\n outlined: {\n background: backgroundColors.grayLight,\n text: linkColors.link,\n },\n text: linkColors.link,\n hoverText: linkColors.linkHover,\n};\n\nconst mobileNavigation = {\n text: textColors.bodyText,\n icon: textColors.bodyText,\n xIconBackground: colors.lightBrown,\n logoBarBottomBorder: brandColors.primary,\n navigationElementBorder: colors.lightGray,\n subNavigationTitleBackground: brandColors.primary,\n subNavigationTitleColor: textColors.bodyText,\n drawer: {\n paper: {\n backgroundColors: backgroundColors.paper,\n widthDesktop: '350px',\n },\n },\n};\n\nexport const gammeldanskPrimaryTheme = {\n colors,\n breakPoints,\n brandColors,\n textColors,\n textFontFamilies,\n textFontSizesMobile,\n textFontSizesDesktop,\n textFontWeight,\n textLineHeightsMobile,\n textLineHeightsDesktop,\n typography,\n pageTemplates,\n linkColors,\n iconColors,\n backgroundColors,\n formColors,\n primaryButtonColors,\n secondaryButtonColors,\n outlinedButtonColors,\n buttonSettings,\n notificationColors,\n header,\n footer,\n accordion,\n languageSelector,\n table,\n category,\n mobileNavigation,\n};\n","import '../../fonts/Gotham/fontface.css';\n\nconst colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(244, 245, 246)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(209, 231, 236)',\n darkBlue: 'rgb(113, 134, 140)',\n green: 'rgb(116, 165, 74)',\n lightGreen: 'rgb(232, 236, 226)',\n darkGreen: 'rgb(136,144,129)',\n darkPurple: 'rgb(66,44,64)',\n lightPurple: 'rgb(180, 156, 185)',\n red: 'rgb(200, 49, 69)',\n lighterRed: ' rgb(222, 194, 194)',\n darkRed: ' rgb(95, 39, 39)',\n darkBrown: 'rgb(95,66,64)',\n darkerBrown: 'rgb(71, 64, 64)',\n lightBrown: 'rgb(229,222,217)',\n lightYellow: 'rgb(255, 246, 233)',\n\n brightOrange: '#e68532',\n brightBlue: '#3b91a4',\n brightYellow: '#ffd700',\n brightGreen: '#7b9f34',\n brightBrown: '#86482c',\n};\n\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\n\nconst brandColors = {\n primaryDark: '#1e1f20',\n primaryLight: '#fffef8',\n};\n\nconst textColors = {\n bodyText: brandColors.primaryDark,\n mutedText: '#7D7D7D',\n disabledText: '#B9B9B9',\n lightText: colors.white,\n};\nconst textFontFamilies = {\n fontTypography: 'Lato, sans-serif',\n fontBody1: 'Lato, sans-serif',\n fontBody2: 'Lato, sans-serif',\n fontHeadings: 'Laca, sans-serif',\n fontBotton: 'Lato, sans-serif',\n};\n\nconst textFontSizesMobile = {\n fontSizeLeadText: '1.125rem',\n fontSizeTypography: '0.938rem',\n fontSizeButton: '0.875rem',\n fontSizeBody1: '0.938rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '2.75rem',\n fontSizeH2: '2rem',\n fontSizeH3: '1.375rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontSizesDesktop = {\n fontSizeLeadText: '1.188rem',\n fontSizeTypography: '1rem',\n fontSizeButton: '1rem',\n fontSizeBody1: '1rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '4rem',\n fontSizeH2: '3rem',\n fontSizeH3: '1.625rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontWeight = {\n typography: 'normal',\n button: '600',\n body1: 'normal',\n body2: 'normal',\n h1: '600',\n h2: '600',\n h3: '600',\n h4: '600',\n};\nconst textLineHeightsMobile = {\n lineHeightLeadText: '1.5',\n lineHeightQuote: '1.47',\n lineHeightBody1: '1.47',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst textLineHeightsDesktop = {\n lineHeightLeadText: '1.58',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.5',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst typography = {\n h1: {\n marginBottom: '2.5rem',\n },\n h2: {\n marginBottom: '1.75rem',\n textTransform: 'none',\n },\n h3: {\n marginBottom: '1rem',\n },\n h4: {\n marginBottom: '1rem',\n },\n h5: {\n marginBottom: '1rem',\n },\n h6: {\n marginBottom: '1rem',\n },\n};\n\nconst textMargins = {\n textMarginBottomH1: '2.5rem',\n};\n\nconst pageTemplates = {\n landingPage: {\n mobile: {\n paddingTop: 0, // => value x 8px\n },\n desktop: {\n paddingTop: 0, // => value x 8px\n },\n },\n otherPageTemplates: {\n mobile: {\n paddingTop: 0, // => value x 8px\n },\n desktop: {\n paddingTop: 0, // => value x 8px\n },\n },\n};\n\nconst linkColors = {\n link: '#4a3724',\n linkHover: '#644629',\n linkPressed: '#644629',\n};\n\nconst iconColors = {\n iconColor: '#333333',\n};\nconst hr = {\n height: '2px',\n color: '#9898a0',\n backgroundColor: '#9898a0',\n};\n\nconst backgroundColors = {\n paper: '#fffef8',\n grayLight: '#f0f0f0',\n grayDark: '#373737',\n goldLight: '#F1E8E2',\n overlay: 'rgba(51,51,51,0.5)',\n};\n\nconst formColors = {\n inputBorder: '#9898a0',\n inputBackground: '#F0F0F0',\n inputActiveBorder: '#210101',\n inputBorderRadius: '12px', // should be added to gammeldansk brank\n};\n\nconst primaryButtonColors = {\n primaryButtonBackground: brandColors.primaryDark,\n primaryButtonHoveredBackground: '#0e0e0f',\n primaryButtonPressedBackground: '#0e0e0f',\n primaryButtonDisabledBackground: '#9898a0',\n primaryButtonContents: '#FFFFFF',\n};\n\nconst secondaryButtonColors = {\n secondaryButtonBackground: brandColors.primaryDark,\n secondaryButtonHoveredBackground: '#0e0e0f',\n secondaryButtonPressedBackground: '#0e0e0f',\n secondaryButtonDisabledBackground: '#9898a0',\n secondaryButtonContents: '#FFFFFF',\n};\n\nconst outlinedButtonColors = {\n outlinedButton: brandColors.primaryDark,\n outlinedButtonHovered: '#0e0e0f',\n outlinedButtonPressed: '#0e0e0f',\n outlinedButtonDisabled: '#9898a0',\n outlinedButtonHoveredBackground: brandColors.primaryDark,\n};\n\nconst buttonSettings = {\n buttonPaddingDesktop: '12px 24px',\n buttonPaddingMobile: '8px 16px',\n borderRadius: '0',\n textTransform: 'inherit',\n};\n\nconst notificationColors = {\n infoBackground: '#E7EEF8',\n successBackground: '#E9F8EA',\n warningBackground: '#FDF2E9',\n errorBackground: '#F6E6E6',\n\n infoContents: '#3D68A8',\n successContents: '#218E2C',\n warningContents: '#E8770E',\n errorContents: '#D71717',\n};\n\nconst header = {\n text: brandColors.primaryDark,\n background: colors.white,\n border: {\n style: 'none',\n bottomWidth: '0',\n },\n minHeight: '72px',\n paddingYDesktop: '60px',\n navigation: {\n activeLink: linkColors.linkPressed,\n activeLinkBorder: 'none',\n hoverText: linkColors.linkHover,\n subMenuBackground: colors.white,\n subMenuBulletPoints: colors.white,\n },\n icons: {\n color: colors.white,\n backgroundColor: colors.black,\n },\n};\n\nconst footer = {\n border: {\n color: 'transparent',\n width: '3px',\n },\n divider: brandColors.primaryLight,\n text: '#f0f0f0',\n background: brandColors.primaryDark,\n logoBarBackground: brandColors.primaryDark,\n padding: {\n bottom: '50px',\n },\n};\n\nconst accordion = {\n backgroundColor: backgroundColors.grayLight,\n borderRadius: '12px',\n color: linkColors.link,\n flexDirection: 'row',\n hover: {\n backgroundColor: brandColors.primaryLight,\n color: linkColors.hover,\n },\n expandIcon: {\n backgroundColor: 'inherit',\n hover: {\n backgroundColor: 'inherit',\n },\n },\n padding: {\n left: '12px',\n right: '8px',\n },\n};\n\nconst languageSelector = {\n border: {\n color: formColors.inputBorder,\n width: '2px',\n },\n margin: '0',\n};\n\nconst table = {\n border: `solid 1px ${brandColors.primaryDark}`,\n borderRadius: '4px',\n head: {\n backgroundColor: brandColors.primaryDark,\n color: colors.white,\n },\n row: {\n even: {\n backgroundColor: colors.white,\n },\n },\n cell: {\n border: `solid 1px ${brandColors.primaryDark}`,\n },\n};\n\nconst category = {\n outlined: {\n background: backgroundColors.grayLight,\n text: linkColors.link,\n },\n text: linkColors.link,\n hoverText: linkColors.linkHover,\n};\n\nconst mobileNavigation = {\n text: colors.darkerBrown,\n icon: textColors.bodyText,\n xIconBackground: colors.lightBrown,\n logoBarBottomBorder: colors.darkBlue,\n navigationElementBorder: colors.lightGray,\n subNavigationTitleBackground: brandColors.primaryLight,\n subNavigationTitleColor: colors.white,\n drawer: {\n paper: {\n backgroundColors: backgroundColors.paper,\n widthDesktop: '350px',\n },\n },\n};\n\nexport const wennercoPrimaryTheme = {\n colors,\n breakPoints,\n brandColors,\n textColors,\n textFontFamilies,\n textFontSizesMobile,\n textFontSizesDesktop,\n textFontWeight,\n textLineHeightsMobile,\n textLineHeightsDesktop,\n textMargins,\n pageTemplates,\n linkColors,\n iconColors,\n backgroundColors,\n formColors,\n primaryButtonColors,\n secondaryButtonColors,\n outlinedButtonColors,\n buttonSettings,\n notificationColors,\n header,\n footer,\n accordion,\n table,\n category,\n mobileNavigation,\n hr,\n typography,\n languageSelector,\n};\n","import '../../fonts/koskenkorva/fontface.css';\n\nconst colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(244, 245, 246)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(209, 231, 236)',\n darkBlue: 'rgb(113, 134, 140)',\n green: 'rgb(116, 165, 74)',\n lightGreen: 'rgb(232, 236, 226)',\n darkGreen: 'rgb(136,144,129)',\n darkPurple: 'rgb(66,44,64)',\n lightPurple: 'rgb(180, 156, 185)',\n red: 'rgb(200, 49, 69)',\n lighterRed: ' rgb(222, 194, 194)',\n darkRed: ' rgb(95, 39, 39)',\n darkBrown: 'rgb(95,66,64)',\n darkerBrown: 'rgb(71, 64, 64)',\n lightBrown: 'rgb(229,222,217)',\n lightYellow: 'rgb(255, 246, 233)',\n\n brightOrange: '#e68532',\n brightBlue: '#3b91a4',\n brightYellow: '#ffd700',\n brightGreen: '#7b9f34',\n brightBrown: '#86482c',\n};\n\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\n\nconst brandColors = {\n primaryColor: '#222222',\n golden: '#d68d00',\n brown: '#51332a',\n darkGreen: '#546122',\n};\n\nconst textColors = {\n bodyText: '#333333',\n headingColor: '#333333',\n mutedText: '#625856',\n disabledText: '#B9B9B9',\n lightText: colors.white,\n};\nconst textFontFamilies = {\n fontTypography: '\"Archer-Medium\", sans-serif',\n fontBody1: '\"Archer-Medium\", sans-serif',\n fontBody2: '\"Archer-Medium\", sans-serif',\n fontHeadings: '\"HeroicCondensed-Bold\", serif',\n fontBotton: '\"Archer-Medium\", serif',\n};\nconst textFontSizesMobile = {\n fontSizeLeadText: '1.125rem',\n fontSizeTypography: '0.938rem',\n fontSizeButton: '0.875rem',\n fontSizeBody1: '0.938rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '2.5rem',\n fontSizeH2: '1.75rem',\n fontSizeH3: '1.188rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontSizesDesktop = {\n fontSizeLeadText: '1.188rem',\n fontSizeTypography: '1rem',\n fontSizeButton: '1rem',\n fontSizeBody1: '1rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '3.375rem',\n fontSizeH2: '2.5rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.125rem',\n};\n\nconst textFontWeight = {\n typography: '500',\n button: '600',\n body1: '500',\n body2: '500',\n h1: 'bold',\n h2: 'bold',\n h3: 'bold',\n h4: 'bold',\n};\n\nconst textLineHeightsMobile = {\n lineHeightLeadText: '1.5',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.47',\n lineHeightBody2: '1.54',\n lineHeightHeadings: '1.1',\n};\n\nconst textLineHeightsDesktop = {\n lineHeightLeadText: '1.58',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.5',\n lineHeightBody2: '1.54',\n lineHeightHeadings: '1.11',\n};\n\nconst typography = {\n h1: {\n marginBottom: '2.5rem',\n textTransform: 'uppercase',\n },\n h2: {\n marginBottom: '1.75rem',\n textTransform: 'uppercase',\n },\n h3: {\n marginBottom: '1rem',\n textTransform: 'uppercase',\n },\n h4: {\n marginBottom: '1rem',\n textTransform: 'uppercase',\n },\n h5: {\n marginBottom: '1rem',\n textTransform: 'uppercase',\n },\n h6: {\n marginBottom: '1rem',\n textTransform: 'uppercase',\n },\n};\n\nconst pageTemplates = {\n landingPage: {\n mobile: {\n paddingTop: 0, // => value x 8px\n },\n desktop: {\n paddingTop: 0, // => value x 8px\n },\n },\n otherPageTemplates: {\n mobile: {\n paddingTop: 0, // => value x 8px\n },\n desktop: {\n paddingTop: 0, // => value x 8px\n },\n },\n};\n\nconst linkColors = {\n link: '#ab6700',\n linkHover: '#773f0c',\n linkPressed: '#773f0c',\n};\n\nconst iconColors = {\n iconColor: '#333333',\n};\nconst hr = {\n backgroundColor: '#dcca9b',\n};\n\nconst backgroundColors = {\n paper: colors.white,\n grayLight: '#f0f0f0',\n grayDark: '#373737',\n lightBeige: '#fffdee',\n darkBrown: '#51332a',\n overlay: 'rgba(51,51,51,0.5)',\n};\n\nconst formColors = {\n inputBorder: '#dcca9b',\n inputBackground: '#fffdee',\n inputActiveBackground: '#fffdee',\n inputActiveBorder: '#d68d00',\n inputBorderRadius: '0',\n};\n\nconst primaryButtonColors = {\n primaryButtonBackground: '#ab6700',\n primaryButtonBackgroundGradient: 'none',\n primaryButtonHoveredBackground: '#773f0c',\n primaryButtonPressedBackground: '#773f0c',\n primaryButtonDisabledBackground: 'rgba(169,150,141,0.4)',\n primaryButtonContents: '#FFFFFF',\n};\nconst secondaryButtonColors = {\n secondaryButtonBackground: '#f0f0f0',\n secondaryButtonHoveredBackground: '#dfdfdf',\n secondaryButtonPressedBackground: '#c2c2c2',\n secondaryButtonDisabledBackground: '#f0f0f0',\n secondaryButtonContents: '#FFFFFF',\n};\n\nconst outlinedButtonColors = {\n outlinedButton: '#ab6700',\n outlinedButtonHovered: '#773f0c',\n outlinedButtonPressed: '#773f0c',\n outlinedButtonDisabled: '#a0968d',\n outlinedButtonHoveredBackground: 'transparent',\n};\n\nconst buttonSettings = {\n buttonPaddingDesktop: '12px 14px 12px 14px',\n buttonPaddingMobile: '8px 10px 8px 10px',\n borderRadius: '9px',\n textTransform: 'none',\n};\n\nconst notificationColors = {\n infoBackground: '#ecf1f8',\n successBackground: '#f9ffeb',\n warningBackground: '#fef3e8',\n errorBackground: '#fde9e9',\n\n infoContents: '#3d68a8',\n successContents: '#7fa728',\n warningContents: '#e8770e',\n errorContents: '#d71717',\n\n borderRadius: '8px',\n};\n\nconst header = {\n text: brandColors.primaryColor,\n background: 'transparent',\n minHeight: '120px',\n paddingYDesktop: '60px',\n navigation: {\n activeLink: linkColors.link,\n activeLinkBorder: 'none',\n hoverText: linkColors.linkHover,\n subMenuBackground: '#fffdee',\n subMenuBulletPoints: brandColors.golden,\n },\n border: {\n style: 'none',\n bottomWidth: '0',\n },\n icons: {\n color: textColors.bodyText,\n backgroundColor: 'transparent',\n },\n};\n\nconst footer = {\n border: {\n color: brandColors.darkGreen,\n width: '3px',\n },\n divider: brandColors.darkGreen,\n text: colors.white,\n background: brandColors.darkGreen,\n logoBarBackground: brandColors.darkGreen,\n padding: {\n bottom: '50px',\n },\n};\n\nconst accordion = {\n backgroundColor: backgroundColors.grayLight,\n borderRadius: '12px',\n color: linkColors.link,\n titleFontSize: '1.125rem',\n hover: {\n backgroundColor: '#ffffff',\n color: linkColors.linkHover,\n },\n expandIcon: {\n backgroundColor: 'inherit',\n hover: {\n backgroundColor: 'inherit',\n },\n },\n padding: {\n left: '16px',\n right: '12px',\n },\n};\n\nconst languageSelector = {\n color: '#333333',\n border: {\n color: formColors.inputBorder,\n width: '2px',\n },\n margin: '0',\n};\n\nconst linkBlockModule = {\n center: {\n textAlign: 'center',\n '& > p, h1, h2, h3, h4, h5, a, div': {\n textAlign: 'center',\n },\n },\n};\n\nconst table = {\n border: `solid 1px ${brandColors.primaryColor}`,\n borderRadius: '12px',\n head: {\n backgroundColor: brandColors.primaryColor,\n color: colors.white,\n },\n row: {\n even: {\n backgroundColor: colors.white,\n },\n },\n cell: {\n border: `solid 1px ${formColors.inputBorder}`,\n },\n};\n\nconst category = {\n outlined: {\n background: brandColors.primaryColor,\n text: colors.white,\n },\n text: linkColors.link,\n hoverText: linkColors.linkHover,\n};\n\nconst mobileNavigation = {\n text: colors.white,\n icon: colors.white,\n xIconBackground: primaryButtonColors.primaryButtonBackground,\n xIconBackgroundHover: primaryButtonColors.primaryButtonHoveredBackground,\n logoBarBottomBorder: 'transparent',\n navigationElementBorder: brandColors.golden,\n subNavigationTitleBackground: brandColors.primaryColor,\n subNavigationTitleColor: colors.white,\n drawer: {\n paper: {\n backgroundColors: brandColors.primaryColor,\n widthDesktop: '350px',\n },\n },\n};\n\nconst imageSpotLink = {\n innerDot: {\n color: brandColors.golden,\n },\n};\nconst slider = {\n arrowBotton: {\n borderRadius: '50%',\n },\n};\n\nexport const koskenkorvaPrimaryTheme = {\n colors,\n breakPoints,\n brandColors,\n textColors,\n textFontFamilies,\n textFontSizesMobile,\n textFontSizesDesktop,\n textFontWeight,\n textLineHeightsMobile,\n textLineHeightsDesktop,\n typography,\n pageTemplates,\n linkColors,\n iconColors,\n backgroundColors,\n formColors,\n primaryButtonColors,\n secondaryButtonColors,\n outlinedButtonColors,\n buttonSettings,\n notificationColors,\n header,\n footer,\n accordion,\n languageSelector,\n linkBlockModule,\n table,\n category,\n mobileNavigation,\n hr,\n imageSpotLink,\n slider,\n};\n","import '../../fonts/Knockout/fontface.css';\nimport '../../fonts/CallunaSans/fontface.css';\n\nconst colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(244, 245, 246)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(209, 231, 236)',\n darkBlue: 'rgb(113, 134, 140)',\n green: 'rgb(116, 165, 74)',\n lightGreen: 'rgb(232, 236, 226)',\n darkGreen: 'rgb(136,144,129)',\n darkPurple: 'rgb(66,44,64)',\n lightPurple: 'rgb(180, 156, 185)',\n red: 'rgb(200, 49, 69)',\n lighterRed: ' rgb(222, 194, 194)',\n darkRed: ' rgb(95, 39, 39)',\n darkBrown: 'rgb(95,66,64)',\n darkerBrown: 'rgb(71, 64, 64)',\n lightBrown: 'rgb(229,222,217)',\n lightYellow: 'rgb(255, 246, 233)',\n\n brightOrange: '#e68532',\n brightBlue: '#3b91a4',\n brightYellow: '#ffd700',\n brightGreen: '#7b9f34',\n brightBrown: '#86482c',\n};\n\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\n\nconst brandColors = {\n primaryColor: '#c61a27',\n secondaryColor: '#ebc15b',\n};\n\nconst textColors = {\n bodyText: '#333333',\n mutedText: '#7D7D7D',\n disabledText: '#B9B9B9',\n lightText: colors.white,\n};\n\nconst textFontFamilies = {\n fontTypography: 'CallunaSans, sans-serif',\n fontBody1: 'CallunaSans, sans-serif',\n fontBody2: 'CallunaSans, sans-serif',\n fontHeadings: 'Knockout, sans-serif',\n fontButton: 'CallunaSans, sans-serif',\n};\n\nconst textFontSizesMobile = {\n fontSizeLeadText: '1.125rem',\n fontSizeTypography: '0.938rem',\n fontSizeButton: '0.875rem',\n fontSizeBody1: '0.938rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '2rem',\n fontSizeH2: '1.5rem',\n fontSizeH3: '1.188rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontSizesDesktop = {\n fontSizeLeadText: '1.188rem',\n fontSizeTypography: '1rem',\n fontSizeButton: '1rem',\n fontSizeBody1: '1rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '3.375rem',\n fontSizeH2: '2.25rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontWeight = {\n typography: 'normal',\n button: 'normal',\n body1: 'normal',\n body2: 'normal',\n h1: 'normal',\n h2: 'normal',\n h3: 'normal',\n h4: 'normal',\n};\nconst textLineHeightsMobile = {\n lineHeightLeadText: '1.5',\n lineHeightQuote: '1.47',\n lineHeightBody1: '1.47',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst textLineHeightsDesktop = {\n lineHeightLeadText: '1.58',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.5',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst textMargins = {\n textMarginBottomH1: '2.5rem',\n};\nconst typography = {\n h1: {\n marginBottom: '2.5rem',\n },\n h2: {\n marginBottom: '1.75rem',\n textTransform: 'none',\n },\n h3: {\n marginBottom: '1rem',\n },\n h4: {\n marginBottom: '1rem',\n },\n h5: {\n marginBottom: '1rem',\n },\n h6: {\n marginBottom: '1rem',\n },\n};\n\nconst pageTemplates = {\n landingPage: {\n mobile: {\n paddingTop: 0, // => value x 8px\n },\n desktop: {\n paddingTop: 0, // => value x 8px\n },\n },\n otherPageTemplates: {\n mobile: {\n paddingTop: 19, // => value x 8px\n },\n desktop: {\n paddingTop: 19, // => value x 8px\n },\n },\n};\n\nconst linkColors = {\n link: '#c61a27',\n linkHover: '#a7131e',\n linkPressed: '#a7131e',\n};\n\nconst iconColors = {\n iconColor: '#000000',\n};\nconst hr = {\n height: '2px',\n color: '#9898a0',\n backgroundColor: '#9898a0',\n};\n\nconst backgroundColors = {\n paper: '#ffff',\n grayLight: '#f0f0f0',\n grayDark: '#222221',\n beigeLight: '#fbf3e9',\n overlay: 'rgba(51,51,51,0.5)',\n};\n\nconst formColors = {\n inputBorder: '#c9c9c9',\n inputBackground: '#f0f0f0',\n inputActiveBorder: brandColors.secondaryColor,\n inputBorderRadius: '12px', // should be added to gammeldansk brank\n};\n\nconst primaryButtonColors = {\n primaryButtonBackground: '#f5d688',\n primaryButtonHoveredBackground: brandColors.secondaryColor,\n primaryButtonPressedBackground: brandColors.secondaryColor,\n primaryButtonDisabledBackground: '#b5afa1',\n primaryButtonContents: '#000000',\n};\n\nconst secondaryButtonColors = {\n secondaryButtonBackground: '#f5d688',\n secondaryButtonHoveredBackground: brandColors.secondaryColor,\n secondaryButtonPressedBackground: brandColors.secondaryColor,\n secondaryButtonDisabledBackground: '#b5afa1',\n secondaryButtonContents: '#000000',\n};\n\nconst outlinedButtonColors = {\n outlinedButton: brandColors.secondaryColor,\n outlinedButtonHovered: '#72550e',\n outlinedButtonPressed: '#72550e',\n outlinedButtonDisabled: '#9a968c',\n outlinedButtonHoveredBackground: brandColors.secondaryColor,\n};\n\nconst buttonSettings = {\n buttonPaddingDesktop: '12px 14px',\n buttonPaddingMobile: '8px 10px',\n borderRadius: '25px',\n textTransform: 'inherit',\n};\n\nconst notificationColors = {\n infoBackground: '#ecf1f8',\n successBackground: '#e6f9e8',\n warningBackground: '#fef3e8',\n errorBackground: '#fde9e9',\n\n infoContents: '#3d68a8',\n successContents: '#218e2c',\n warningContents: '#e8770e',\n errorContents: '#d71717',\n};\n\nconst header = {\n text: linkColors.link,\n background: 'transparent',\n minHeight: '125px',\n paddingYDesktop: '60px',\n navigation: {\n activeLink: '#f5d688',\n activeLinkBorder: 'none',\n hoverText: linkColors.linkHover,\n subMenuBackground: colors.white,\n subMenuBulletPoints: brandColors.primaryColor,\n },\n icons: {\n color: colors.white,\n backgroundColor: colors.black,\n },\n};\n\nconst footer = {\n border: {\n color: 'transparent',\n width: '3px',\n },\n divider: backgroundColors.grayLight,\n text: '#222221',\n background: backgroundColors.beigeLight,\n logoBarBackground: backgroundColors.beigeLight,\n padding: {\n bottom: '50px',\n },\n};\n\nconst accordion = {\n backgroundColor: backgroundColors.grayLight,\n borderRadius: '12px',\n color: linkColors.link,\n flexDirection: 'row',\n border: 'none',\n hover: {\n border: `none`,\n color: linkColors.linkHover,\n },\n expandIcon: {\n backgroundColor: 'inherit',\n hover: {\n backgroundColor: 'inherit',\n color: linkColors.linkHover,\n },\n },\n padding: {\n left: '16px',\n right: '12px',\n },\n};\n\nconst languageSelector = {\n border: {\n color: formColors.inputBorder,\n width: '2px',\n },\n margin: '0',\n};\n\nconst table = {\n border: `solid 1px ${brandColors.secondaryColor}`,\n borderRadius: '4px',\n head: {\n backgroundColor: brandColors.secondaryColor,\n color: colors.white,\n },\n row: {\n even: {\n backgroundColor: colors.white,\n },\n },\n cell: {\n border: `solid 1px ${formColors.inputBorder}`,\n },\n};\n\nconst category = {\n outlined: {\n background: backgroundColors.grayLight,\n text: linkColors.link,\n },\n text: linkColors.link,\n hoverText: linkColors.linkHover,\n};\n\nconst mobileNavigation = {\n text: colors.white,\n icon: '#ffffff',\n xIconBackground: primaryButtonColors.primaryButtonBackground,\n logoBarBottomBorder: brandColors.primaryColor,\n navigationElementBorder: '#fbf3e9',\n subNavigationTitleBackground: '#f5d688',\n subNavigationTitleColor: brandColors.primaryColor,\n drawer: {\n paper: {\n backgroundColors: '#C24F37',\n widthDesktop: '350px',\n },\n },\n};\n\nexport const opAndersonPrimaryTheme = {\n colors,\n breakPoints,\n brandColors,\n textColors,\n textFontFamilies,\n textFontSizesMobile,\n textFontSizesDesktop,\n textFontWeight,\n textLineHeightsMobile,\n textLineHeightsDesktop,\n textMargins,\n linkColors,\n iconColors,\n backgroundColors,\n formColors,\n primaryButtonColors,\n secondaryButtonColors,\n outlinedButtonColors,\n buttonSettings,\n notificationColors,\n header,\n footer,\n accordion,\n table,\n category,\n mobileNavigation,\n hr,\n typography,\n pageTemplates,\n languageSelector,\n};\n","const colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(244, 245, 246)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(209, 231, 236)',\n darkBlue: 'rgb(113, 134, 140)',\n green: 'rgb(116, 165, 74)',\n lightGreen: 'rgb(232, 236, 226)',\n darkGreen: 'rgb(136,144,129)',\n darkPurple: 'rgb(66,44,64)',\n lightPurple: 'rgb(180, 156, 185)',\n red: 'rgb(200, 49, 69)',\n lighterRed: ' rgb(222, 194, 194)',\n darkRed: ' rgb(95, 39, 39)',\n darkBrown: 'rgb(95,66,64)',\n darkerBrown: 'rgb(71, 64, 64)',\n lightBrown: 'rgb(229,222,217)',\n lightYellow: 'rgb(255, 246, 233)',\n\n brightOrange: '#e68532',\n brightBlue: '#3b91a4',\n brightYellow: '#ffd700',\n brightGreen: '#7b9f34',\n brightBrown: '#86482c',\n};\n\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\n\nconst brandColors = {\n primary: '#4bb9e6',\n secondary: '#2e7795',\n};\n\nconst textColors = {\n bodyText: '#000000',\n bodyTextWhite: '#ffffff',\n mutedText: '#7D7D7D',\n disabledText: '#B9B9B9',\n lightText: colors.white,\n};\n\nconst textFontFamilies = {\n fontTypography: 'sweet-sans-pro, serif',\n fontBody1: 'sweet-sans-pro, serif',\n fontBody2: 'sweet-sans-pro, serif',\n fontHeadings: 'adobe-caslon-pro, sans-serif',\n fontBotton: 'adobe-caslon-pro, sans-serif',\n};\n\nconst textFontSizesMobile = {\n fontSizeLeadText: '1.188rem',\n fontSizeTypography: '1rem',\n fontSizeButton: '0.875rem',\n fontSizeBody1: '1rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '2rem',\n fontSizeH2: '1.5rem',\n fontSizeH3: '1.188rem',\n fontSizeH4: '1.125rem',\n};\n\nconst textFontSizesDesktop = {\n fontSizeLeadText: '1.25rem',\n fontSizeTypography: '1.063rem',\n fontSizeButton: '1rem',\n fontSizeBody1: '1.063rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '3.375rem',\n fontSizeH2: '2.25rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.125rem',\n};\n\nconst textFontWeight = {\n typography: 'normal',\n button: '500',\n body1: 'normal',\n body2: 'normal',\n h1: '500',\n h2: '500',\n h3: '500',\n h4: '500',\n};\n\nconst textLineHeightsMobile = {\n lineHeightLeadText: '1.47',\n lineHeightQuote: '1.47',\n lineHeightBody1: '1.47',\n lineHeightBody2: '1.5',\n lineHeightHeadings: '1.13',\n};\n\nconst textLineHeightsDesktop = {\n lineHeightLeadText: '1.5',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.5',\n lineHeightBody2: '1.53',\n lineHeightHeadings: '1.17',\n};\n\nconst typography = {\n h1: {\n marginBottom: '2.5rem',\n },\n h2: {\n marginBottom: '1.75rem',\n textTransform: 'none',\n },\n h3: {\n marginBottom: '1rem',\n },\n h4: {\n marginBottom: '1rem',\n },\n h5: {\n marginBottom: '1rem',\n },\n h6: {\n marginBottom: '1rem',\n },\n};\n\nconst pageTemplates = {\n landingPage: {\n mobile: {\n paddingTop: 0, // => value x 8px\n },\n desktop: {\n paddingTop: 0, // => value x 8px\n },\n },\n otherPageTemplates: {\n mobile: {\n paddingTop: 40, // => value x 8px\n },\n desktop: {\n paddingTop: 40, // => value x 8px\n },\n },\n};\n\nconst linkColors = {\n link: '#2e7795',\n linkHover: '#245d75',\n linkPressed: '#245d75',\n};\n\nconst iconColors = {\n iconColor: '#000000',\n};\n\nconst hr = {};\n\nconst backgroundColors = {\n paper: '#F8F6F3',\n grayLight: '#F0F0F0F0',\n grayDark: '#001928',\n blueLight: '#edf5f8',\n overlay: 'rgba(51,51,51,0.5)',\n};\n\nconst formColors = {\n inputBorder: '#B4B4B4',\n inputBackground: '#F0F0F0',\n inputActiveBorder: '#418caa',\n};\n\nconst primaryButtonColors = {\n primaryButtonBackground: '#2e7795',\n primaryButtonHoveredBackground: '#418caa',\n primaryButtonPressedBackground: '#418caa',\n primaryButtonDisabledBackground: '#808e94',\n primaryButtonContents: '#FFFFFF',\n};\n\nconst secondaryButtonColors = {\n secondaryButtonBackground: '#f0f0f0',\n secondaryButtonHoveredBackground: '#edf5f8',\n secondaryButtonPressedBackground: '#edf5f8',\n secondaryButtonDisabledBackground: '#f0f0f0',\n secondaryButtonContents: '#2e7795',\n secondaryButtonHoveredContents: '#245d75',\n secondaryButtonPressedContents: '#245d75',\n secondaryButtonDisabledContents: '#808e94',\n};\n\nconst outlinedButtonColors = {\n outlinedButton: '#2e7795',\n outlinedButtonHovered: '#ffffff',\n outlinedButtonPressed: '#245d75',\n outlinedButtonDisabled: '#808e94',\n outlinedButtonHoveredBackground: '#2e7795',\n};\n\nconst notificationColors = {\n infoBackground: '#ecf1f8',\n successBackground: '#e6f9e8',\n warningBackground: '#fef3e8',\n errorBackground: '#fde9e9',\n\n infoContents: '#3d68a8',\n successContents: '#218e2c',\n warningContents: '#e8770e',\n errorContents: '#d71717',\n};\n\nconst buttonSettings = {\n buttonPaddingDesktop: '12px 14px 12px 14px',\n buttonPaddingMobile: '14px 10px 8px 10px',\n borderRadius: '0',\n textTransform: 'inherit',\n};\n\nconst header = {\n text: colors.white,\n background: backgroundColors.grayDark,\n minHeight: '280px',\n paddingYDesktop: '60px',\n navigation: {\n activeLink: brandColors.primary,\n activeLinkBorder: 'none',\n hoverText: linkColors.linkHover,\n subMenuBackground: colors.white,\n subMenuBulletPoints: colors.white,\n },\n border: {\n style: 'none',\n bottomWidth: 0,\n },\n icons: {\n color: colors.white,\n backgroundColor: colors.black,\n },\n};\n\nconst footer = {\n border: {\n color: 'transparent',\n width: '3px',\n },\n divider: brandColors.primary,\n text: colors.white,\n background: backgroundColors.grayDark,\n logoBarBackground: backgroundColors.grayDark,\n padding: {\n bottom: '50px',\n },\n};\n\nconst accordion = {\n backgroundColor: backgroundColors.grayLight,\n borderRadius: '12px',\n color: linkColors.link,\n flexDirection: 'row',\n hover: {\n backgroundColor: colors.white,\n color: linkColors.hover,\n },\n expandIcon: {\n backgroundColor: 'inherit',\n hover: {\n backgroundColor: 'inherit',\n },\n },\n padding: {\n left: '12px',\n right: '9px',\n },\n};\nconst languageSelector = {\n color: colors.white,\n border: {\n color: formColors.inputBorder,\n width: '2px',\n },\n margin: '0',\n};\n\nconst linkBlockModule = {\n center: {\n textAlign: 'center',\n '& > p, h1, h2, h3, h4, h5, a, div': {\n textAlign: 'center',\n },\n },\n};\n\nconst table = {\n border: 'none',\n borderRadius: 0,\n head: {\n backgroundColor: backgroundColors.grayDark,\n color: colors.white,\n },\n row: {\n backgroundColor: colors.white,\n even: {\n backgroundColor: colors.white,\n },\n },\n cell: {\n border: `solid 1px ${formColors.inputBorder}`,\n },\n};\n\nconst category = {\n outlined: {\n background: backgroundColors.grayLight,\n text: linkColors.link,\n },\n text: linkColors.link,\n hoverText: linkColors.linkHover,\n};\n\nconst mobileNavigation = {\n text: colors.white,\n icon: colors.white,\n xIconBackground: backgroundColors.grayDark,\n logoBarBottomBorder: colors.darkBlue,\n navigationElementBorder: brandColors.primary,\n subNavigationTitleBackground: brandColors.secondary,\n subNavigationTitleColor: colors.white,\n drawer: {\n paper: {\n backgroundColors: backgroundColors.grayDark,\n widthDesktop: '480px',\n },\n },\n};\n\nconst listElementCard = {\n content: {\n backgroundColor: 'white',\n padding: '24px',\n height: '100%',\n },\n};\n\nexport const skagerrakPrimaryTheme = {\n colors,\n breakPoints,\n brandColors,\n textColors,\n textFontFamilies,\n textFontSizesMobile,\n textFontSizesDesktop,\n textFontWeight,\n textLineHeightsMobile,\n textLineHeightsDesktop,\n typography,\n pageTemplates,\n linkColors,\n iconColors,\n backgroundColors,\n formColors,\n primaryButtonColors,\n secondaryButtonColors,\n outlinedButtonColors,\n buttonSettings,\n notificationColors,\n header,\n footer,\n accordion,\n languageSelector,\n linkBlockModule,\n table,\n category,\n mobileNavigation,\n listElementCard,\n hr,\n};\n","const colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(244, 245, 246)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(209, 231, 236)',\n darkBlue: 'rgb(113, 134, 140)',\n green: 'rgb(116, 165, 74)',\n lightGreen: 'rgb(232, 236, 226)',\n darkGreen: 'rgb(136,144,129)',\n darkPurple: 'rgb(66,44,64)',\n lightPurple: 'rgb(180, 156, 185)',\n red: 'rgb(200, 49, 69)',\n lighterRed: ' rgb(222, 194, 194)',\n darkRed: ' rgb(95, 39, 39)',\n darkBrown: 'rgb(95,66,64)',\n darkerBrown: 'rgb(71, 64, 64)',\n lightBrown: 'rgb(229,222,217)',\n lightYellow: 'rgb(255, 246, 233)',\n\n brightOrange: '#e68532',\n brightBlue: '#3b91a4',\n brightYellow: '#ffd700',\n brightGreen: '#7b9f34',\n brightBrown: '#86482c',\n};\n\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\n\nconst brandColors = {\n primaryColor: '#2e0a2b',\n secondaryColor: '#91775e',\n violet: '#2e0a2b',\n brown: '#ae9379',\n beige: '#eeeddb',\n gray: '#9c9da0',\n};\n\nconst textColors = {\n bodyText: brandColors.violet,\n mutedText: '#7D7D7D',\n disabledText: '#B9B9B9',\n lightText: colors.white,\n};\nconst textFontFamilies = {\n fontTypography: 'poppins, sans-serif',\n fontBody1: 'poppins, sans-serif',\n fontBody2: 'poppins, sans-serif',\n fontHeadings: 'bely-display, sans-serif',\n fontButton: 'bely-display, sans-serif',\n};\n\nconst textFontSizesMobile = {\n fontSizeLeadText: '1.125rem',\n fontSizeTypography: '0.938rem',\n fontSizeButton: '0.875rem',\n fontSizeBody1: '0.938rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '2rem',\n fontSizeH2: '1.5rem',\n fontSizeH3: '1.188rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontSizesDesktop = {\n fontSizeLeadText: '1.188rem',\n fontSizeTypography: '1rem',\n fontSizeButton: '1rem',\n fontSizeBody1: '1rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '2.9rem',\n fontSizeH2: '2rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontWeight = {\n typography: 'normal',\n button: 'normal',\n body1: 'normal',\n body2: 'normal',\n h1: 'normal',\n h2: 'normal',\n h3: 'normal',\n h4: 'normal',\n};\nconst textLineHeightsMobile = {\n lineHeightLeadText: '1.5',\n lineHeightQuote: '1.47',\n lineHeightBody1: '1.47',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst textLineHeightsDesktop = {\n lineHeightLeadText: '1.58',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.5',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst textMargins = {\n textMarginBottomH1: '2.5rem',\n};\nconst typography = {\n h1: {\n marginBottom: '2.5rem',\n },\n h2: {\n marginBottom: '1.75rem',\n textTransform: 'none',\n },\n h3: {\n marginBottom: '1rem',\n },\n h4: {\n marginBottom: '1rem',\n },\n h5: {\n marginBottom: '1rem',\n },\n h6: {\n marginBottom: '1rem',\n },\n};\n\nconst pageTemplates = {\n landingPage: {\n mobile: {\n paddingTop: 0, // => value x 8px\n },\n desktop: {\n paddingTop: 0, // => value x 8px\n },\n },\n otherPageTemplates: {\n mobile: {\n paddingTop: 22, // => value x 8px\n },\n desktop: {\n paddingTop: 22, // => value x 8px\n },\n },\n};\n\nconst linkColors = {\n link: brandColors.brown,\n linkHover: '#91775e',\n linkPressed: '#91775e',\n};\n\nconst iconColors = {\n iconColor: brandColors.violet,\n};\nconst hr = {\n height: '2px',\n color: '#ae9379',\n backgroundColor: '#ae9379',\n};\n\nconst backgroundColors = {\n paper: '#ffff',\n grayLight: '#f0f0f0',\n grayDark: '#222221',\n beigeLight: '#fbf3e9',\n overlay: 'rgba(51,51,51,0.5)',\n};\n\nconst formColors = {\n inputBorder: '#c9c9c9',\n inputBackground: '#f0f0f0',\n inputActiveBorder: brandColors.brown,\n inputBorderRadius: '0', // should be added to gammeldansk brank\n};\n\nconst primaryButtonColors = {\n primaryButtonBackground: brandColors.brown,\n primaryButtonHoveredBackground: brandColors.secondaryColor,\n primaryButtonPressedBackground: brandColors.secondaryColor,\n primaryButtonDisabledBackground: '#b5afa1',\n primaryButtonContents: brandColors.beige,\n};\n\nconst secondaryButtonColors = {\n secondaryButtonBackground: brandColors.brown,\n secondaryButtonHoveredBackground: brandColors.secondaryColor,\n secondaryButtonPressedBackground: brandColors.secondaryColor,\n secondaryButtonDisabledBackground: '#b5afa1',\n secondaryButtonContents: brandColors.beige,\n};\n\nconst outlinedButtonColors = {\n outlinedButton: brandColors.brown,\n outlinedButtonHovered: brandColors.secondaryColor,\n outlinedButtonPressed: brandColors.secondaryColor,\n outlinedButtonDisabled: '#9a968c',\n outlinedButtonHoveredBackground: brandColors.brown,\n};\n\nconst buttonSettings = {\n buttonPaddingDesktop: '16px 14px 12px 14px',\n buttonPaddingMobile: '12px 10px 8px 10px',\n borderRadius: '0',\n textTransform: 'inherit',\n};\n\nconst notificationColors = {\n infoBackground: '#ecf1f8',\n successBackground: '#e6f9e8',\n warningBackground: '#fef3e8',\n errorBackground: '#fde9e9',\n\n infoContents: '#3d68a8',\n successContents: '#218e2c',\n warningContents: '#e8770e',\n errorContents: '#d71717',\n};\n\nconst header = {\n text: linkColors.link,\n background: 'transparent',\n minHeight: '176px',\n paddingYDesktop: '60px',\n navigation: {\n activeLink: brandColors.secondaryColor,\n activeLinkBorder: 'none',\n hoverText: linkColors.linkHover,\n subMenuBackground: colors.white,\n subMenuBulletPoints: brandColors.primaryColor,\n },\n icons: {\n color: brandColors.violet,\n backgroundColor: 'transparent',\n },\n};\n\nconst footer = {\n border: {\n color: 'transparent',\n width: '3px',\n },\n divider: '#ffffff',\n text: '#ffffff',\n background: brandColors.brown,\n logoBarBackground: brandColors.brown,\n padding: {\n bottom: '50px',\n },\n};\n\nconst accordion = {\n backgroundColor: backgroundColors.grayLight,\n borderRadius: '0',\n color: linkColors.link,\n flexDirection: 'row',\n border: 'none',\n hover: {\n border: `none`,\n color: linkColors.linkHover,\n },\n expandIcon: {\n backgroundColor: 'inherit',\n hover: {\n backgroundColor: 'inherit',\n color: linkColors.linkHover,\n },\n },\n padding: {\n left: '24px',\n right: '12px',\n },\n};\n\nconst languageSelector = {\n border: {\n color: formColors.inputBorder,\n width: '2px',\n },\n margin: '0',\n};\n\nconst table = {\n border: `solid 1px ${brandColors.secondaryColor}`,\n borderRadius: '4px',\n head: {\n backgroundColor: brandColors.secondaryColor,\n color: colors.white,\n },\n row: {\n even: {\n backgroundColor: colors.white,\n },\n },\n cell: {\n border: `solid 1px ${formColors.inputBorder}`,\n },\n};\n\nconst category = {\n outlined: {\n background: backgroundColors.grayLight,\n text: linkColors.link,\n },\n text: linkColors.link,\n hoverText: linkColors.linkHover,\n};\n\nconst mobileNavigation = {\n text: brandColors.violet,\n icon: brandColors.violet,\n xIconBackground: primaryButtonColors.primaryButtonBackground,\n logoBarBottomBorder: 'transparent',\n navigationElementBorder: 'transparent',\n subNavigationTitleBackground: brandColors.brown,\n subNavigationTitleColor: brandColors.violet,\n drawer: {\n paper: {\n backgroundColors: brandColors.beige,\n widthDesktop: '350px',\n },\n },\n};\n\nconst slider = {\n arrowBotton: {\n padding: '8px 10px 8px 10px',\n },\n};\n\nexport const wineworldFinlandPrimaryTheme = {\n colors,\n breakPoints,\n brandColors,\n textColors,\n textFontFamilies,\n textFontSizesMobile,\n textFontSizesDesktop,\n textFontWeight,\n textLineHeightsMobile,\n textLineHeightsDesktop,\n textMargins,\n linkColors,\n iconColors,\n backgroundColors,\n formColors,\n primaryButtonColors,\n secondaryButtonColors,\n outlinedButtonColors,\n buttonSettings,\n notificationColors,\n header,\n footer,\n accordion,\n table,\n category,\n mobileNavigation,\n hr,\n typography,\n pageTemplates,\n languageSelector,\n slider,\n};\n","import '../../fonts/Gotham/fontface.css';\n\nconst colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(242, 242, 242)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(209, 231, 236)',\n darkBlue: 'rgb(113, 134, 140)',\n green: 'rgb(116, 165, 74)',\n lightGreen: 'rgb(232, 236, 226)',\n darkGreen: 'rgb(136,144,129)',\n darkPurple: 'rgb(66,44,64)',\n lightPurple: 'rgb(180, 156, 185)',\n red: 'rgb(200, 49, 69)',\n lighterRed: ' rgb(222, 194, 194)',\n darkRed: ' rgb(95, 39, 39)',\n darkBrown: 'rgb(95,66,64)',\n darkerBrown: 'rgb(71, 64, 64)',\n lightBrown: 'rgb(229,222,217)',\n lightYellow: 'rgb(255, 246, 233)',\n\n brightOrange: '#e68532',\n brightBlue: '#3b91a4',\n brightYellow: '#ffd700',\n brightGreen: '#7b9f34',\n brightBrown: '#86482c',\n};\n\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\n\nconst brandColors = {\n primaryColor: '#A8191D',\n secondaryColor: '#000000',\n gray: '#F2F2F2',\n};\n\nconst textColors = {\n bodyText: '#000000',\n mutedText: '#7D7D7D',\n disabledText: '#B9B9B9',\n lightText: colors.lighterGray,\n};\nconst textFontFamilies = {\n fontTypography: 'Gotham, sans-serif',\n fontBody1: 'Gotham, sans-serif',\n fontBody2: 'Gotham, sans-serif',\n fontHeadings: 'Gotham, sans-serif',\n fontButton: 'Gotham, sans-serif',\n};\n\nconst textFontSizesMobile = {\n fontSizeLeadText: '1.125rem',\n fontSizeTypography: '0.938rem',\n fontSizeButton: '0.875rem',\n fontSizeBody1: '0.938rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '1.875rem',\n fontSizeH2: '1.5rem',\n fontSizeH3: '1.188rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontSizesDesktop = {\n fontSizeLeadText: '1.188rem',\n fontSizeTypography: '1rem',\n fontSizeButton: '1rem',\n fontSizeBody1: '1rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '3rem',\n fontSizeH2: '2rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontWeight = {\n typography: 'normal',\n button: '600',\n body1: 'normal',\n body2: 'normal',\n h1: '600',\n h2: '600',\n h3: '600',\n h4: '600',\n};\nconst textLineHeightsMobile = {\n lineHeightLeadText: '1.5',\n lineHeightQuote: '1.47',\n lineHeightBody1: '1.47',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n};\n\nconst textLineHeightsDesktop = {\n lineHeightLeadText: '1.67',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.5',\n lineHeightBody2: '1.54',\n lineHeightHeadings: '1.2',\n};\n\nconst textMargins = {\n textMarginBottomH1: '2.5rem',\n};\nconst typography = {\n h1: {\n marginBottom: '2.5rem',\n },\n h2: {\n marginBottom: '1.75rem',\n textTransform: 'none',\n },\n h3: {\n marginBottom: '1rem',\n },\n h4: {\n marginBottom: '1rem',\n },\n h5: {\n marginBottom: '1rem',\n },\n h6: {\n marginBottom: '1rem',\n },\n};\n\nconst pageTemplates = {\n landingPage: {\n mobile: {\n paddingTop: 0, // => value x 8px\n },\n desktop: {\n paddingTop: 0, // => value x 8px\n },\n },\n otherPageTemplates: {\n mobile: {\n paddingTop: 14, // => value x 8px\n },\n desktop: {\n paddingTop: 15, // => value x 8px\n },\n },\n};\n\nconst linkColors = {\n link: brandColors.primaryColor,\n linkHover: '#730f12',\n linkPressed: '#730f12',\n};\n\nconst iconColors = {\n iconColor: '#000000',\n};\nconst hr = {};\n\nconst backgroundColors = {\n paper: colors.lighterGray,\n grayLight: '#f0f0f0',\n grayDark: '#373737',\n beigeLight: '#fbf3e9',\n overlay: 'rgba(51,51,51,0.5)',\n};\n\nconst formColors = {\n inputBorder: '#B4B4B4',\n inputBackground: '#F0F0F0',\n inputActiveBackground: '#F0F0F0',\n inputActiveBorder: '#C78600',\n inputBorderRadius: '0',\n};\n\nconst primaryButtonColors = {\n primaryButtonBackground: brandColors.secondaryColor,\n primaryButtonHoveredBackground: brandColors.primaryColor,\n primaryButtonPressedBackground: brandColors.primaryColor,\n primaryButtonDisabledBackground: '#B9B9B9',\n primaryButtonContents: '#ffff',\n};\n\nconst secondaryButtonColors = {\n secondaryButtonBackground: brandColors.primaryColor,\n secondaryButtonHoveredBackground: brandColors.secondaryColor,\n secondaryButtonPressedBackground: brandColors.secondaryColor,\n secondaryButtonDisabledBackground: '#B9B9B9',\n secondaryButtonContents: '#ffff',\n};\n\nconst outlinedButtonColors = {\n outlinedButton: brandColors.secondaryColor,\n outlinedButtonHovered: '#B4B4B4',\n outlinedButtonHoveredBackground: 'transparent',\n outlinedButtonPressed: '#B4B4B4',\n outlinedButtonDisabled: '#B9B9B9',\n};\n\nconst buttonSettings = {\n buttonPaddingDesktop: '8px 14px',\n buttonPaddingMobile: '12px 20px',\n borderRadius: '0',\n textTransform: 'uppercase',\n hover: {\n shadow: 'none',\n },\n};\n\nconst notificationColors = {\n infoBackground: '#ecf1f8',\n successBackground: '#e6f9e8',\n warningBackground: '#fef3e8',\n errorBackground: '#fde9e9',\n\n infoContents: '#3d68a8',\n successContents: '#218e2c',\n warningContents: '#e8770e',\n errorContents: '#d71717',\n};\n\nconst header = {\n color: colors.lighterGray,\n text: colors.lighterGray,\n background: 'linear-gradient(to bottom, rgba(0, 0, 0, 100) 0%, rgba(240, 240, 240, 0) 100%)',\n minHeight: '76px',\n paddingYDesktop: '60px',\n navigation: {\n activeLink: brandColors.primaryColor,\n activeLinkBorder: 'none',\n hoverText: linkColors.linkHover,\n subMenuBackground: 'linear-gradient(to bottom, rgba(240, 240, 240, 0) 0%, rgba(0, 0, 0, 80) 100%)',\n subMenuBulletPoints: brandColors.primaryColor,\n },\n icons: {\n color: colors.lighterGray,\n backgroundColor: 'transparent',\n },\n};\n\nconst footer = {\n border: {\n color: 'transparent',\n width: 0,\n },\n divider: '#000000',\n text: textColors.bodyText,\n background: backgroundColors.grayLight,\n logoBarBackground: backgroundColors.grayLight,\n padding: {\n bottom: 0,\n },\n};\n\nconst accordion = {\n backgroundColor: backgroundColors.grayLight,\n borderRadius: '0',\n color: brandColors.secondaryColor,\n flexDirection: 'row',\n border: 'none',\n hover: {\n border: `none`,\n color: linkColors.linkHover,\n },\n expandIcon: {\n backgroundColor: 'inherit',\n hover: {\n backgroundColor: 'inherit',\n color: linkColors.linkHover,\n },\n },\n padding: {\n left: '24px',\n right: '12px',\n },\n};\n\nconst languageSelector = {\n color: 'white',\n border: {\n color: colors.lighterGray,\n width: '2px',\n },\n margin: '0',\n};\n\nconst table = {\n border: `none`,\n borderRadius: '4px',\n head: {\n backgroundColor: 'transparent',\n },\n row: {\n even: {\n backgroundColor: 'transparent',\n },\n },\n cell: {\n border: `none`,\n },\n};\n\nconst category = {\n outlined: {\n background: backgroundColors.grayLight,\n text: linkColors.link,\n },\n text: linkColors.link,\n hoverText: linkColors.linkHover,\n};\n\nconst mobileNavigation = {\n text: colors.lighterGray,\n icon: colors.lighterGray,\n xIconBackground: brandColors.primaryColor,\n logoBarBottomBorder: 'transparent',\n navigationElementBorder: 'transparent',\n subNavigationTitleBackground: brandColors.primaryColor,\n subNavigationTitleColor: colors.lighterGray,\n drawer: {\n paper: {\n backgroundColors: brandColors.secondaryColor,\n widthDesktop: '380px',\n },\n },\n};\n\nconst slider = {\n arrowBotton: {\n padding: '8px 10px 8px 10px',\n },\n};\n\nexport const LinieAquavitPrimaryTheme = {\n colors,\n breakPoints,\n brandColors,\n textColors,\n textFontFamilies,\n textFontSizesMobile,\n textFontSizesDesktop,\n textFontWeight,\n textLineHeightsMobile,\n textLineHeightsDesktop,\n textMargins,\n linkColors,\n iconColors,\n backgroundColors,\n formColors,\n primaryButtonColors,\n secondaryButtonColors,\n outlinedButtonColors,\n buttonSettings,\n notificationColors,\n header,\n footer,\n accordion,\n table,\n category,\n mobileNavigation,\n hr,\n typography,\n pageTemplates,\n languageSelector,\n slider,\n};\n","const colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(242, 242, 242)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(209, 231, 236)',\n darkBlue: 'rgb(113, 134, 140)',\n green: 'rgb(116, 165, 74)',\n lightGreen: 'rgb(232, 236, 226)',\n darkGreen: 'rgb(136,144,129)',\n darkPurple: 'rgb(66,44,64)',\n lightPurple: 'rgb(180, 156, 185)',\n red: 'rgb(200, 49, 69)',\n lighterRed: ' rgb(222, 194, 194)',\n darkRed: ' rgb(95, 39, 39)',\n darkBrown: 'rgb(95,66,64)',\n darkerBrown: 'rgb(71, 64, 64)',\n lightBrown: 'rgb(199,161,122)',\n lightYellow: 'rgb(255, 246, 233)',\n\n brightOrange: '#e68532',\n brightBlue: '#3b91a4',\n brightYellow: '#ffd700',\n brightGreen: '#7b9f34',\n brightBrown: '#86482c',\n};\n\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\n\nconst brandColors = {\n primaryColor: '#9D5812',\n secondaryColor: '#715E4B',\n};\n\nconst textColors = {\n bodyText: colors.black,\n mutedText: '#7D7D7D',\n disabledText: '#B9B9B9',\n lightText: colors.white,\n highlightedText: colors.lightBrown,\n};\nconst textFontFamilies = {\n fontTypography: \"'Josefin Sans', sans-serif\",\n fontBody1: \"'Josefin Sans', sans-serif\",\n fontBody2: \"'Josefin Sans', sans-serif\",\n fontHeadings: \"'Playfair Display', sans-serif\",\n h1: \"'Playfair Display', sans-serif\",\n h2: \"'Playfair Display', sans-serif\",\n h3: \"'Josefin Sans', sans-serif\",\n h4: \"'Josefin Sans', sans-serif\",\n h5: \"'Josefin Sans', sans-serif\",\n h6: \"'Josefin Sans', sans-serif\",\n fontButton: \"'Josefin Sans', sans-serif\",\n};\n\nconst textFontSizesMobile = {\n fontSizeLeadText: '1.125rem',\n fontSizeTypography: '0.938rem',\n fontSizeButton: '0.875rem',\n fontSizeBody1: '0.938rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '1.75rem',\n fontSizeH2: '1.35rem',\n fontSizeH3: '1.25rem',\n fontSizeH4: '1rem',\n};\nconst textFontSizesDesktop = {\n fontSizeLeadText: '1.188rem',\n fontSizeTypography: '1rem',\n fontSizeButton: '1rem',\n fontSizeBody1: '1rem',\n fontSizeBody2: '0.813rem',\n fontSizeH1: '2.5rem',\n fontSizeH2: '2rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.125rem',\n};\nconst textFontWeight = {\n typography: 'normal',\n button: '600',\n body1: 'normal',\n body2: 'normal',\n h1: '700',\n h2: '700',\n h3: '600',\n h4: '600',\n};\nconst textLineHeightsMobile = {\n lineHeightLeadText: '1.5',\n lineHeightQuote: '1.47',\n lineHeightBody1: '1.47',\n lineHeightBody2: '1.54',\n lineHeightHeadings: 'normal',\n h1: 'normal',\n h2: 'normal',\n h3: '1.33',\n h4: '1.25',\n h5: '1.2',\n};\n\nconst textLineHeightsDesktop = {\n lineHeightLeadText: '1.67',\n lineHeightQuote: '1.5',\n lineHeightBody1: '1.5',\n lineHeightBody2: '1.54',\n lineHeightHeadings: '1.2',\n h1: '0.926',\n h2: '1.2',\n h3: '1.2',\n h4: '1.2',\n};\n\nconst textMargins = {\n textMarginBottomH1: '2.5rem',\n};\nconst typography = {\n h1: {\n marginBottom: '2.5rem',\n textTransform: 'uppercase',\n },\n h2: {\n marginBottom: '1.75rem',\n textTransform: 'uppercase',\n },\n h3: {\n marginBottom: '1rem',\n textTransform: 'uppercase',\n },\n h4: {\n marginBottom: '1rem',\n textTransform: 'uppercase',\n },\n h5: {\n marginBottom: '1rem',\n textTransform: 'uppercase',\n },\n h6: {\n marginBottom: '1rem',\n textTransform: 'uppercase',\n },\n};\n\nconst pageTemplates = {\n landingPage: {\n mobile: {\n paddingTop: 0, // => value x 8px\n },\n desktop: {\n paddingTop: 0, // => value x 8px\n },\n },\n otherPageTemplates: {\n mobile: {\n paddingTop: 7, // => value x 8px\n },\n desktop: {\n paddingTop: 7, // => value x 8px\n },\n },\n};\n\nconst linkColors = {\n link: '#07789A',\n linkHover: '#095066',\n linkPressed: '#095066',\n};\n\nconst iconColors = {\n iconColor: '#000000',\n};\nconst hr = {\n color: '#715E4B',\n backgroundColor: '#715E4B',\n};\n\nconst backgroundColors = {\n paper: '#FFFFFF',\n grayLight: '#f0f0f0',\n grayDark: '#373737',\n beigeLight: '#F6F2EE',\n overlay: 'rgba(51,51,51,0.5)',\n highlight: '#F6F2EE',\n};\n\nconst formColors = {\n inputBorder: '#B4B4B4',\n inputBackground: '#F0F0F0',\n inputActiveBackground: '#F0F0F0',\n inputActiveBorder: '#373737',\n inputBorderRadius: '0',\n};\n\nconst primaryButtonColors = {\n primaryButtonBackground: brandColors.primaryColor,\n primaryButtonHoveredBackground: brandColors.secondaryColor,\n primaryButtonPressedBackground: brandColors.secondaryColor,\n primaryButtonDisabledBackground: '#B9B9B9',\n primaryButtonContents: '#FBECDD',\n\n primaryButtonBorder: brandColors.primaryColor,\n primaryButtonHoverContents: '#FBECDD',\n primaryButtonHoverBorder: brandColors.secondaryColor,\n};\n\nconst secondaryButtonColors = {\n secondaryButtonBackground: brandColors.primaryColor,\n secondaryButtonHoveredBackground: brandColors.secondaryColor,\n secondaryButtonPressedBackground: brandColors.secondaryColor,\n secondaryButtonDisabledBackground: '#B9B9B9',\n secondaryButtonContents: '#FBECDD',\n};\n\nconst outlinedButtonColors = {\n outlinedButton: brandColors.primaryColor,\n outlinedButtonHovered: brandColors.secondaryColor,\n outlinedButtonHoveredBackground: 'transparent',\n outlinedButtonPressed: brandColors.secondaryColor,\n outlinedButtonDisabled: '#B9B9B9',\n};\n\nconst buttonSettings = {\n buttonPaddingDesktop: '8px 10px',\n buttonPaddingMobile: '12px 16px',\n borderRadius: '4px',\n textTransform: 'none',\n hover: {\n shadow: 'none',\n },\n};\n\nconst notificationColors = {\n infoBackground: '#ecf1f8',\n successBackground: '#e6f9e8',\n warningBackground: '#fef3e8',\n errorBackground: '#fde9e9',\n\n infoContents: '#3d68a8',\n successContents: '#218e2c',\n warningContents: '#e8770e',\n errorContents: '#d71717',\n};\n\nconst header = {\n color: colors.white,\n text: colors.white,\n background: '#30271C',\n minHeight: '56px',\n paddingYDesktop: '60px',\n navigation: {\n activeLink: linkColors.link,\n activeLinkBorder: 'none',\n hoverText: linkColors.linkHover,\n subMenuBackground: '#30271C',\n subMenuBulletPoints: colors.white,\n },\n icons: {\n color: colors.black,\n backgroundColor: 'transparent',\n },\n};\n\nconst footer = {\n border: {\n color: 'transparent',\n width: 0,\n },\n divider: colors.white,\n text: textColors.lightText,\n background: '#212121',\n logoBarBackground: '#212121',\n padding: {\n bottom: 0,\n },\n};\n\nconst accordion = {\n backgroundColor: colors.white,\n borderRadius: '4px',\n color: '#0E7FA1',\n flexDirection: 'row',\n border: 'none',\n hover: {\n border: `none`,\n color: '#333333',\n },\n expandIcon: {\n backgroundColor: 'inherit',\n hover: {\n backgroundColor: 'inherit',\n color: linkColors.linkHover,\n },\n },\n padding: {\n left: '24px',\n right: '12px',\n },\n subtitle: {\n color: '#797672',\n },\n startIcon: {\n color: '#333333',\n '&:hover': {\n color: 'inherit',\n },\n },\n};\nconst event = {\n root: {\n padding: '12px 12px 12px 24px',\n borderRadius: '4px',\n marginBottom: '16px',\n backgroundColor: colors.white,\n },\n day: {\n fontFamily: textFontFamilies.fontHeadings,\n fontSize: '28px',\n color: textColors.bodyText,\n fontWeight: '700',\n marginTop: '-16px',\n },\n month: {\n fontSize: '13px',\n color: '#9D5812',\n fontWeight: '600',\n textTransform: 'uppercase',\n lineHeight: '18px',\n },\n name: {\n color: linkColors.link,\n fontWeight: '600',\n textTransform: 'uppercase',\n },\n shortDescription: {\n color: '#797672',\n fontSize: '15px',\n },\n icon: {\n color: linkColors.link,\n fontSize: '2rem',\n },\n};\n\nconst languageSelector = {\n color: 'white',\n border: {\n color: colors.white,\n width: '2px',\n },\n margin: '0',\n};\n\nconst table = {\n border: `solid 1px ${colors.lightBrown}`,\n borderRadius: '4px',\n head: {\n backgroundColor: 'transparent',\n },\n row: {\n even: {\n backgroundColor: 'transparent',\n },\n },\n cell: {\n border: `solid 1px ${colors.lightBrown}`,\n },\n};\n\nconst category = {\n outlined: {\n background: backgroundColors.grayLight,\n text: '#9D5812',\n },\n text: '#9D5812',\n hoverText: '#9D5812',\n};\n\nconst mobileNavigation = {\n text: colors.white,\n icon: colors.white,\n xIconBackground: '#30271C',\n logoBarBottomBorder: '#30271C',\n navigationElementBorder: 'transparent',\n subNavigationTitleBackground: brandColors.primaryColor,\n subNavigationTitleColor: brandColors.secondaryColor,\n drawer: {\n paper: {\n backgroundColors: '#30271C',\n widthDesktop: '340px',\n },\n },\n};\n\nconst slider = {\n arrowBotton: {\n padding: '8px 10px 8px 10px',\n },\n};\n\nexport const SocialwinesPrimaryTheme = {\n colors,\n breakPoints,\n brandColors,\n textColors,\n textFontFamilies,\n textFontSizesMobile,\n textFontSizesDesktop,\n textFontWeight,\n textLineHeightsMobile,\n textLineHeightsDesktop,\n textMargins,\n linkColors,\n iconColors,\n backgroundColors,\n formColors,\n primaryButtonColors,\n secondaryButtonColors,\n outlinedButtonColors,\n buttonSettings,\n notificationColors,\n header,\n footer,\n accordion,\n event,\n table,\n category,\n mobileNavigation,\n hr,\n typography,\n pageTemplates,\n languageSelector,\n slider,\n};\n","import React from 'react';\nimport isEqual from 'lodash/isEqual';\nimport get from 'lodash/get';\n\nimport { createTheme } from '@material-ui/core/styles';\nimport { CheckBoxOutlined } from '@material-ui/icons';\nimport { fofNavigationBreakpoint, siteIds } from '../../constants';\nimport { siteId } from '../../sites';\n\nimport { bibendumPrimaryTheme } from '../bibendum/primaryTheme';\nimport { philipsonSoderbergPrimaryTheme } from '../philipsonSoderberg/primaryTheme';\nimport { blossaPrimaryTheme } from '../blossa/primaryTheme';\nimport { valhallaPrimaryTheme } from '../valhalla/primaryTheme';\nimport { gammeldanskPrimaryTheme } from '../gammeldansk/primaryTheme';\nimport { wennercoPrimaryTheme } from '../wennerco/primaryTheme';\nimport { koskenkorvaPrimaryTheme } from '../koskenkorva/primaryTheme';\nimport { opAndersonPrimaryTheme } from '../opAnderson/primaryTheme';\nimport { skagerrakPrimaryTheme } from '../skagerrak/primaryTheme';\nimport { wineworldFinlandPrimaryTheme } from '../wineworld-finland/primaryTheme';\nimport { LinieAquavitPrimaryTheme } from '../LinieAquavit/primaryTheme';\nimport { SocialwinesPrimaryTheme } from '../socialwines/primaryTheme';\n\nlet brandPrimaryTheme = bibendumPrimaryTheme;\nif (isEqual(siteId, siteIds.Bibendum)) {\n brandPrimaryTheme = bibendumPrimaryTheme;\n} else if (isEqual(siteId, siteIds.PhilipsonSoderberg)) {\n brandPrimaryTheme = philipsonSoderbergPrimaryTheme;\n} else if (isEqual(siteId, siteIds.Blossa)) {\n brandPrimaryTheme = blossaPrimaryTheme;\n} else if (isEqual(siteId, siteIds.Valhalla)) {\n brandPrimaryTheme = valhallaPrimaryTheme;\n} else if (isEqual(siteId, siteIds.Gammeldansk)) {\n brandPrimaryTheme = gammeldanskPrimaryTheme;\n} else if (isEqual(siteId, siteIds.Wennerco)) {\n brandPrimaryTheme = wennercoPrimaryTheme;\n} else if (isEqual(siteId, siteIds.Koskenkorva)) {\n brandPrimaryTheme = koskenkorvaPrimaryTheme;\n} else if (isEqual(siteId, siteIds.OpAnderson)) {\n brandPrimaryTheme = opAndersonPrimaryTheme;\n} else if (isEqual(siteId, siteIds.Skagerrak)) {\n brandPrimaryTheme = skagerrakPrimaryTheme;\n} else if (isEqual(siteId, siteIds.WineworldFinland)) {\n brandPrimaryTheme = wineworldFinlandPrimaryTheme;\n} else if (isEqual(siteId, siteIds.LinieAquavit)) {\n brandPrimaryTheme = LinieAquavitPrimaryTheme;\n} else if (isEqual(siteId, siteIds.Socialwines)) {\n brandPrimaryTheme = SocialwinesPrimaryTheme;\n}\n\nconst theme = createTheme({});\n\nconst primaryTheme = createTheme({\n breakpoints: {\n values: brandPrimaryTheme.breakPoints,\n },\n mixins: {\n toolbar: {\n minHeight: '70px',\n },\n },\n typography: {\n fontFamily: brandPrimaryTheme.textFontFamilies.fontTypography,\n fontWeightLight: '300',\n fontWeightRegular: '400',\n fontWeightMedium: '500',\n fontWeightBold: '700',\n h1: {\n color: brandPrimaryTheme.textColors.headingColor,\n fontFamily: get(brandPrimaryTheme, 'textFontFamilies.h1', brandPrimaryTheme.textFontFamilies.fontHeadings),\n fontSize: brandPrimaryTheme.textFontSizesMobile.fontSizeH1,\n fontWeight: brandPrimaryTheme.textFontWeight.h1,\n marginBottom: brandPrimaryTheme.typography.h1.marginBottom,\n lineHeight: get(\n brandPrimaryTheme,\n 'textLineHeightsMobile.h1',\n brandPrimaryTheme.textLineHeightsMobile.lineHeightHeadings,\n ),\n textTransform: get(brandPrimaryTheme, 'typography.h2.textTransform', 'none'),\n [theme.breakpoints.up(brandPrimaryTheme.breakPoints.md)]: {\n fontSize: brandPrimaryTheme.textFontSizesDesktop.fontSizeH1,\n lineHeight: get(\n brandPrimaryTheme,\n 'textLineHeightsDesktop.h1',\n brandPrimaryTheme.textLineHeightsDesktop.lineHeightHeadings,\n ),\n },\n },\n h2: {\n color: brandPrimaryTheme.textColors.headingColor,\n fontFamily: get(brandPrimaryTheme, 'textFontFamilies.h2', brandPrimaryTheme.textFontFamilies.fontHeadings),\n fontSize: brandPrimaryTheme.textFontSizesMobile.fontSizeH2,\n fontWeight: brandPrimaryTheme.textFontWeight.h2,\n marginBottom: brandPrimaryTheme.typography.h2.marginBottom,\n lineHeight: get(\n brandPrimaryTheme,\n 'textLineHeightsMobile.h2',\n brandPrimaryTheme.textLineHeightsMobile.lineHeightHeadings,\n ),\n textTransform: get(brandPrimaryTheme, 'typography.h2.textTransform', 'none'),\n [theme.breakpoints.up(brandPrimaryTheme.breakPoints.md)]: {\n fontSize: brandPrimaryTheme.textFontSizesDesktop.fontSizeH2,\n lineHeight: get(\n brandPrimaryTheme,\n 'textLineHeightsDesktop.h2',\n brandPrimaryTheme.textLineHeightsDesktop.lineHeightHeadings,\n ),\n },\n },\n h3: {\n color: brandPrimaryTheme.textColors.headingColor,\n fontFamily: get(brandPrimaryTheme, 'textFontFamilies.h3', brandPrimaryTheme.textFontFamilies.fontHeadings),\n fontSize: brandPrimaryTheme.textFontSizesMobile.fontSizeH3,\n fontWeight: brandPrimaryTheme.textFontWeight.h3,\n marginBottom: brandPrimaryTheme.typography.h3.marginBottom,\n lineHeight: get(\n brandPrimaryTheme,\n 'textLineHeightsMobile.h3',\n brandPrimaryTheme.textLineHeightsMobile.lineHeightHeadings,\n ),\n textTransform: get(brandPrimaryTheme, 'typography.h2.textTransform', 'none'),\n [theme.breakpoints.up(brandPrimaryTheme.breakPoints.md)]: {\n fontSize: brandPrimaryTheme.textFontSizesDesktop.fontSizeH3,\n lineHeight: get(\n brandPrimaryTheme,\n 'textLineHeightsDesktop.h3',\n brandPrimaryTheme.textLineHeightsDesktop.lineHeightHeadings,\n ),\n },\n },\n h4: {\n color: brandPrimaryTheme.textColors.headingColor,\n fontFamily: get(brandPrimaryTheme, 'textFontFamilies.h4', brandPrimaryTheme.textFontFamilies.fontHeadings),\n fontSize: brandPrimaryTheme.textFontSizesMobile.fontSizeH4,\n fontWeight: brandPrimaryTheme.textFontWeight.h4,\n marginBottom: brandPrimaryTheme.typography.h4.marginBottom,\n lineHeight: get(\n brandPrimaryTheme,\n 'textLineHeightsMobile.h4',\n brandPrimaryTheme.textLineHeightsMobile.lineHeightHeadings,\n ),\n textTransform: get(brandPrimaryTheme, 'typography.h2.textTransform', 'none'),\n [theme.breakpoints.up(brandPrimaryTheme.breakPoints.md)]: {\n fontSize: brandPrimaryTheme.textFontSizesDesktop.fontSizeH4,\n lineHeight: get(\n brandPrimaryTheme,\n 'textLineHeightsDesktop.h4',\n brandPrimaryTheme.textLineHeightsDesktop.lineHeightHeadings,\n ),\n },\n },\n h5: {\n color: brandPrimaryTheme.textColors.headingColor,\n fontFamily: get(brandPrimaryTheme, 'textFontFamilies.h5', brandPrimaryTheme.textFontFamilies.fontHeadings),\n fontSize: get(\n brandPrimaryTheme,\n 'textFontSizesMobile.fontSizeH5',\n brandPrimaryTheme.textFontSizesMobile.fontSizeH4,\n ),\n fontWeight: brandPrimaryTheme.textFontWeight.h4,\n marginBottom: brandPrimaryTheme.typography.h5.marginBottom,\n lineHeight: get(\n brandPrimaryTheme,\n 'textLineHeightsMobile.h5',\n brandPrimaryTheme.textLineHeightsMobile.lineHeightHeadings,\n ),\n textTransform: get(brandPrimaryTheme, 'typography.h2.textTransform', 'none'),\n [theme.breakpoints.up(brandPrimaryTheme.breakPoints.md)]: {\n fontSize: get(\n brandPrimaryTheme,\n 'textFontSizesDesktop.fontSizeH5',\n brandPrimaryTheme.textFontSizesDesktop.fontSizeH4,\n ),\n lineHeight: get(\n brandPrimaryTheme,\n 'textLineHeightsDesktop.h5',\n brandPrimaryTheme.textLineHeightsDesktop.lineHeightHeadings,\n ),\n },\n },\n h6: {\n fontFamily: get(brandPrimaryTheme, 'textFontFamilies.h6', brandPrimaryTheme.textFontFamilies.fontHeadings),\n fontSize: get(\n brandPrimaryTheme,\n 'textFontSizesMobile.fontSizeH6',\n brandPrimaryTheme.textFontSizesMobile.fontSizeH4,\n ),\n fontWeight: brandPrimaryTheme.textFontWeight.body1,\n marginBottom: brandPrimaryTheme.typography.h6.marginBottom,\n lineHeight: brandPrimaryTheme.textLineHeightsMobile.lineHeightHeadings,\n textTransform: get(brandPrimaryTheme, 'typography.h2.textTransform', 'none'),\n [theme.breakpoints.up(brandPrimaryTheme.breakPoints.md)]: {\n fontSize: get(\n brandPrimaryTheme,\n 'textFontSizesDesktop.fontSizeH6',\n brandPrimaryTheme.textFontSizesDesktop.fontSizeH4,\n ),\n lineHeight: brandPrimaryTheme.textLineHeightsDesktop.lineHeightHeadings,\n },\n },\n caption: {\n fontSize: 'inherit',\n fontStyle: 'italic',\n lineHeight: '1.5',\n },\n overline: {\n fontSize: '0.75rem',\n fontWeight: '700',\n },\n body1: {\n fontFamily: brandPrimaryTheme.textFontFamilies.fontBody1,\n fontSize: brandPrimaryTheme.textFontSizesMobile.fontSizeBody1,\n lineHeight: brandPrimaryTheme.textLineHeightsMobile.lineHeightBody1,\n [theme.breakpoints.up(brandPrimaryTheme.breakPoints.md)]: {\n fontSize: brandPrimaryTheme.textFontSizesDesktop.fontSizeBody1,\n lineHeight: brandPrimaryTheme.textLineHeightsDesktop.lineHeightBody1,\n },\n },\n body2: {\n fontFamily: brandPrimaryTheme.textFontFamilies.fontBody2,\n fontSize: brandPrimaryTheme.textFontSizesMobile.fontSizeBody2,\n lineHeight: brandPrimaryTheme.textLineHeightsMobile.lineHeightBody2,\n [theme.breakpoints.up(brandPrimaryTheme.breakPoints.md)]: {\n fontSize: brandPrimaryTheme.textFontSizesDesktop.fontSizeBody2,\n lineHeight: brandPrimaryTheme.textLineHeightsDesktop.lineHeightBody2,\n },\n },\n navigationLink: {\n fontSize: brandPrimaryTheme.textFontSizesMobile.fontSizeBody1,\n fontFamily: brandPrimaryTheme.textFontFamilies.fontBody1,\n fontWeight: 'bold',\n color: get(brandPrimaryTheme, 'header.color', brandPrimaryTheme.textColors.bodyText),\n },\n descriptionRow: {\n fontSize: '.875rem',\n },\n },\n palette: {\n common: {\n black: brandPrimaryTheme.colors.black,\n white: brandPrimaryTheme.colors.white,\n gray: brandPrimaryTheme.colors.gray,\n lightGray: brandPrimaryTheme.colors.lightGray,\n lighterGray: brandPrimaryTheme.colors.lighterGray,\n mediumGray: brandPrimaryTheme.colors.mediumGray,\n darkGray: brandPrimaryTheme.colors.darkGray,\n blue: brandPrimaryTheme.colors.blue,\n lightBlue: brandPrimaryTheme.colors.lightBlue,\n red: brandPrimaryTheme.colors.red,\n darkRed: brandPrimaryTheme.colors.darkRed,\n green: brandPrimaryTheme.colors.green,\n lightGreen: brandPrimaryTheme.colors.lightGreen,\n darkBrown: brandPrimaryTheme.colors.darkBrown,\n darkerBrown: brandPrimaryTheme.colors.darkerBrown,\n darkPurple: brandPrimaryTheme.colors.darkPurple,\n lighterRed: brandPrimaryTheme.colors.lighterRed,\n lightBrown: brandPrimaryTheme.colors.lightBrown,\n },\n primary: {\n main: brandPrimaryTheme.textColors.bodyText,\n contrastText: brandPrimaryTheme.colors.white50,\n },\n secondary: {\n main: brandPrimaryTheme.textColors.bodyText,\n light: brandPrimaryTheme.colors.lightYellow,\n },\n text: {\n primary: brandPrimaryTheme.textColors.bodyText,\n secondary: brandPrimaryTheme.colors.white,\n muted: brandPrimaryTheme.textColors.mutedText,\n light: brandPrimaryTheme.textColors.lightText,\n },\n background: {\n default: brandPrimaryTheme.backgroundColors.paper,\n breadcrumbs: brandPrimaryTheme.backgroundColors.grayLight,\n linkBlock: brandPrimaryTheme.backgroundColors.grayLight,\n defaultColumn: 'transparent',\n defaultRow: 'transparent',\n },\n error: {\n main: brandPrimaryTheme.notificationColors.errorContents,\n light: brandPrimaryTheme.notificationColors.errorBackground,\n },\n success: {\n main: brandPrimaryTheme.notificationColors.successContents,\n light: brandPrimaryTheme.notificationColors.successBackground,\n },\n warning: {\n main: brandPrimaryTheme.notificationColors.warningContents,\n light: brandPrimaryTheme.notificationColors.warningBackground,\n },\n info: {\n main: brandPrimaryTheme.notificationColors.infoContents,\n light: brandPrimaryTheme.notificationColors.infoBackground,\n },\n headingFontFamily: { fontFamily: brandPrimaryTheme.textFontFamilies.fontHeadings },\n\n divider: brandPrimaryTheme.backgroundColors.grayLight,\n\n category: {\n outlined: {\n background: brandPrimaryTheme.category.outlined.background,\n text: brandPrimaryTheme.category.outlined.text,\n },\n text: brandPrimaryTheme.category.text,\n hoverText: brandPrimaryTheme.category.hoverText,\n },\n footer: {\n border: {\n color: brandPrimaryTheme.footer.border.color,\n width: brandPrimaryTheme.footer.border.width,\n },\n divider: brandPrimaryTheme.footer.divider,\n text: brandPrimaryTheme.footer.text,\n background: brandPrimaryTheme.footer.background,\n logoBarBackground: brandPrimaryTheme.footer.logoBarBackground,\n padding: brandPrimaryTheme.footer.padding,\n columns: {\n list: {\n '& > li::Marker': {\n color: brandPrimaryTheme.colors.white,\n },\n },\n texts: { color: brandPrimaryTheme.colors.white },\n },\n },\n header: {\n text: brandPrimaryTheme.header.text,\n background: brandPrimaryTheme.header.background,\n minHeight: brandPrimaryTheme.header.minHeight,\n paddingYDesktop: brandPrimaryTheme.header.paddingYDesktop,\n navigation: {\n activeLink: brandPrimaryTheme.header.navigation.activeLink,\n activeLinkBorder: brandPrimaryTheme.header.navigation.activeLinkBorder,\n hoverText: brandPrimaryTheme.header.navigation.hoverText,\n subMenuBackground: brandPrimaryTheme.header.navigation.subMenuBackground,\n subMenuBulletPoints: brandPrimaryTheme.header.navigation.subMenuBulletPoints,\n },\n border: {\n bottomWidth: get(brandPrimaryTheme, 'header.border.bottomWidth', '0'),\n style: get(brandPrimaryTheme, 'header.border.style', 'none'),\n },\n icons: {\n color: brandPrimaryTheme.header.icons.color,\n backgroundColor: brandPrimaryTheme.header.icons.backgroundColor,\n },\n backgroundGradient: {\n ...brandPrimaryTheme.header.backgroundGradient,\n },\n },\n mobileNavigation: {\n text: brandPrimaryTheme.mobileNavigation.text,\n icon: brandPrimaryTheme.mobileNavigation.icon,\n xIconBackground: brandPrimaryTheme.mobileNavigation.xIconBackground,\n xIconBackgroundHover: get(brandPrimaryTheme, 'mobileNavigation.xIconBackgroundHover', null),\n logoBarBottomBorder: brandPrimaryTheme.mobileNavigation.logoBarBottomBorder,\n navigationElementBorder: brandPrimaryTheme.mobileNavigation.navigationElementBorder,\n subNavigationTitleBackground: brandPrimaryTheme.mobileNavigation.subNavigationTitleBackground,\n subNavigationTitleColor: brandPrimaryTheme.mobileNavigation.subNavigationTitleColor,\n closeButton: {\n background: brandPrimaryTheme.mobileNavigation.xIconBackground,\n color: get(brandPrimaryTheme, 'mobileNavigation.closeButton.color', null),\n },\n },\n productPage: {\n informationBackground: brandPrimaryTheme.colors.lightGreen,\n tasteProfiles: {\n orange: brandPrimaryTheme.colors.brightOrange,\n purple: brandPrimaryTheme.colors.brightYellow,\n green: brandPrimaryTheme.colors.brightGreen,\n brown: brandPrimaryTheme.colors.brightBrown,\n blue: brandPrimaryTheme.colors.brightBlue,\n },\n mainInfo: {\n accordion: {\n color: brandPrimaryTheme.colors.darkerBrown,\n iconBackground: brandPrimaryTheme.colors.darkerBrown,\n description: {\n summaryBackground: brandPrimaryTheme.colors.darkGreen,\n summaryText: brandPrimaryTheme.colors.white,\n },\n information: {\n summaryBackground: brandPrimaryTheme.colors.lightGreen,\n summaryText: brandPrimaryTheme.colors.darkerBrown,\n detailesKey: brandPrimaryTheme.colors.darkBrown,\n },\n },\n },\n review: {\n articlePadding: theme.spacing(0, 2, 0, 2),\n background: brandPrimaryTheme.colors.lightBlue,\n divider: brandPrimaryTheme.colors.darkBlue,\n },\n labelBackground: brandPrimaryTheme.colors.darkPurple,\n },\n quote: {\n text: brandPrimaryTheme.linkColors.link,\n fontSize: '17px',\n },\n button: {\n textTransform: brandPrimaryTheme.buttonSettings.textTransform,\n },\n memoryListButton: {\n badge: { backgroundColor: brandPrimaryTheme.colors.lightPurple },\n },\n link: {\n link: brandPrimaryTheme.linkColors.link,\n active: brandPrimaryTheme.linkColors.linkPressed,\n hover: brandPrimaryTheme.linkColors.linkHover,\n },\n pageTemplates: {\n landingPage: {\n paddingTop: theme.spacing(brandPrimaryTheme.pageTemplates.landingPage.mobile.paddingTop),\n [theme.breakpoints.up(brandPrimaryTheme.breakPoints.lg)]: {\n paddingTop: theme.spacing(brandPrimaryTheme.pageTemplates.landingPage.desktop.paddingTop),\n },\n },\n otherPageTemplates: {\n paddingTop: theme.spacing(brandPrimaryTheme.pageTemplates.otherPageTemplates.mobile.paddingTop),\n [theme.breakpoints.up(brandPrimaryTheme.breakPoints.sm)]: {\n paddingTop: theme.spacing(brandPrimaryTheme.pageTemplates.otherPageTemplates.desktop.paddingTop),\n },\n },\n recipePage: {\n paddingTop: theme.spacing(brandPrimaryTheme.pageTemplates.otherPageTemplates.mobile.paddingTop),\n [theme.breakpoints.up(brandPrimaryTheme.breakPoints.sm)]: {\n paddingTop: theme.spacing(brandPrimaryTheme.pageTemplates.otherPageTemplates.desktop.paddingTop),\n },\n },\n },\n custobarSubscriptionForm: {\n background: brandPrimaryTheme.colors.darkPurple,\n hover: {\n background: brandPrimaryTheme.colors.darkGreen,\n },\n disabled: {\n background: brandPrimaryTheme.colors.lightGray,\n },\n },\n siteNotifications: {\n backgroundColor: brandPrimaryTheme.notificationColors.warningBackground,\n color: brandPrimaryTheme.notificationColors.warningContents,\n padding: theme.spacing(2.5),\n borderRadius: get(brandPrimaryTheme, 'notificationColors.borderRadius', '0'),\n margin: theme.spacing(4, 0, 4, 0),\n [theme.breakpoints.up(fofNavigationBreakpoint.Breakpoint)]: {\n margin: theme.spacing(4, 0, 4, 0),\n },\n },\n monopolyPrice: {\n fontFamily: null,\n reducedPriceColor: null,\n },\n },\n accordion: {\n backgroundColor: brandPrimaryTheme.accordion.backgroundColor,\n borderRadius: brandPrimaryTheme.accordion.borderRadius,\n color: brandPrimaryTheme.accordion.color,\n flexDirection: brandPrimaryTheme.accordion.flexDirection,\n border: get(brandPrimaryTheme, 'accordion.border', 'none'),\n titleFontSize: get(brandPrimaryTheme, 'accordion.titleFontSize', '1.125rem'),\n expandIcon: {\n backgroundColor: brandPrimaryTheme.accordion.expandIcon.backgroundColor,\n hover: {\n backgroundColor: brandPrimaryTheme.accordion.expandIcon.hover.backgroundColor,\n },\n },\n padding: {\n left: brandPrimaryTheme.accordion.padding.left,\n right: brandPrimaryTheme.accordion.padding.right,\n },\n hover: {\n ...get(brandPrimaryTheme, 'accordion.hover', {}),\n },\n subtitle: {\n ...get(brandPrimaryTheme, 'accordion.subtitle', {}),\n },\n startIcon: {\n ...get(brandPrimaryTheme, 'accordion.startIcon', {}),\n },\n },\n event: {\n root: {\n ...get(brandPrimaryTheme, 'event.root', {}),\n },\n day: {\n ...get(brandPrimaryTheme, 'event.day', {}),\n },\n month: {\n ...get(brandPrimaryTheme, 'event.month', {}),\n },\n name: {\n ...get(brandPrimaryTheme, 'event.name', {}),\n },\n shortDescription: {\n ...get(brandPrimaryTheme, 'event.shortDescription', {}),\n },\n icon: {\n ...get(brandPrimaryTheme, 'event.icon', {}),\n },\n },\n languageSelector: {\n color: get(brandPrimaryTheme, 'languageSelector.color', null),\n border: {\n color: brandPrimaryTheme.languageSelector.border.color,\n width: brandPrimaryTheme.languageSelector.border.width,\n },\n margin: brandPrimaryTheme.languageSelector.margin,\n },\n table: {\n border: brandPrimaryTheme.table.border,\n borderRadius: brandPrimaryTheme.table.borderRadius,\n head: {\n backgroundColor: brandPrimaryTheme.table.head.backgroundColor,\n color: brandPrimaryTheme.table.head.color,\n },\n row: {\n even: {\n backgroundColor: brandPrimaryTheme.table.row.even.backgroundColor,\n },\n backgroundColor: brandPrimaryTheme.table.row.backgroundColor,\n },\n },\n hr: {\n ...brandPrimaryTheme.hr,\n },\n imageSpotLink: {\n innerDot: {\n ...get(brandPrimaryTheme, 'imageSpotLink.innerDot', { color: 'white' }),\n },\n },\n listElementCard: {\n content: {\n ...get(brandPrimaryTheme, 'listElementCard.content', {}),\n },\n },\n linkBlockModule: {\n center: {\n ...get(brandPrimaryTheme, 'linkBlockModule.center', {}),\n },\n imageWrapper: {\n ...get(brandPrimaryTheme, ['linkBlockModule', 'imageWrapper'], { maxWidth: '40%' }),\n },\n textWrapper: {\n ...get(brandPrimaryTheme, ['linkBlockModule', 'textWrapper'], {}),\n },\n },\n slider: {\n arrowBotton: {\n ...get(brandPrimaryTheme, 'slider.arrowBotton', {}),\n },\n },\n overrides: {\n MuiAppBar: {\n root: {\n boxShadow: 'none',\n },\n colorPrimary: {\n color: brandPrimaryTheme.textColors.bodyText,\n backgroundColor: brandPrimaryTheme.backgroundColors.paper,\n },\n },\n MuiToolbar: {\n regular: {},\n dense: {\n color: brandPrimaryTheme.colors.white,\n },\n },\n MuiDrawer: {\n root: {\n width: '350px',\n flexShrink: 0,\n },\n paper: {\n width: '350px',\n color: brandPrimaryTheme.textColors.bodyText,\n backgroundColor: get(\n brandPrimaryTheme,\n 'mobileNavigation.drawer.paper.backgroundColors',\n brandPrimaryTheme.backgroundColors.paper,\n ),\n [theme.breakpoints.up('500')]: {\n width: get(brandPrimaryTheme, 'mobileNavigation.drawer.paper.widthDesktop', '480px'),\n },\n },\n },\n MuiLink: {\n root: {\n color: brandPrimaryTheme.linkColors.link,\n '&:hover': {},\n },\n },\n MuiDialog: {\n paper: {\n margin: '5px',\n },\n },\n MuiButton: {\n root: {\n fontFamily: brandPrimaryTheme.textFontFamilies.fontButton,\n textTransform: brandPrimaryTheme.buttonSettings.textTransform,\n borderRadius: brandPrimaryTheme.buttonSettings.borderRadius,\n fontSize: brandPrimaryTheme.textFontSizesMobile.fontSizeButton,\n minWidth: '0',\n padding: brandPrimaryTheme.buttonSettings.buttonPaddingMobile,\n fontWeight: brandPrimaryTheme.textFontWeight.button,\n\n [theme.breakpoints.up(brandPrimaryTheme.breakPoints.md)]: {\n fontSize: brandPrimaryTheme.textFontSizesDesktop.fontSizeButton,\n padding: brandPrimaryTheme.buttonSettings.buttonPaddingDesktop,\n },\n },\n contained: {\n '&:hover': {\n boxShadow: get(\n brandPrimaryTheme,\n 'buttonSettings.hover.shadow',\n '0px 2px 4px -1px rgba(0,0,0,0.2), 0px 4px 5px 0px rgba(0,0,0,0.14), 0px 1px 10px 0px rgba(0,0,0,0.12)',\n ),\n },\n },\n sizeSmall: {\n borderRadius: brandPrimaryTheme.buttonSettings.borderRadius,\n fontSize: brandPrimaryTheme.textFontSizesMobile.fontSizeButton,\n padding: brandPrimaryTheme.buttonSettings.buttonPaddingMobile,\n\n [theme.breakpoints.up(brandPrimaryTheme.breakPoints.md)]: {\n fontSize: brandPrimaryTheme.textFontSizesDesktop.fontSizeButton,\n padding: brandPrimaryTheme.buttonSettings.buttonPaddingDesktop,\n },\n },\n containedPrimary: {\n boxShadow: 'none',\n border: `2px solid ${get(\n brandPrimaryTheme,\n 'primaryButtonColors.primaryButtonBorder',\n brandPrimaryTheme.primaryButtonColors.primaryButtonBackground,\n )}`,\n backgroundColor: brandPrimaryTheme.primaryButtonColors.primaryButtonBackground,\n background: brandPrimaryTheme.primaryButtonColors.primaryButtonBackgroundGradient,\n color: brandPrimaryTheme.primaryButtonColors.primaryButtonContents,\n '&:hover': {\n backgroundColor: brandPrimaryTheme.primaryButtonColors.primaryButtonHoveredBackground,\n background: 'none',\n color: get(\n brandPrimaryTheme,\n 'primaryButtonColors.primaryButtonHoverContents',\n brandPrimaryTheme.primaryButtonColors.primaryButtonContents,\n ),\n border: `2px solid ${get(\n brandPrimaryTheme,\n 'primaryButtonColors.primaryButtonHoverBorder',\n brandPrimaryTheme.primaryButtonColors.primaryButtonHoveredBackground,\n )}`,\n '@media (hover: none)': {\n background: 'none',\n backgroundColor: brandPrimaryTheme.primaryButtonColors.primaryButtonPressedBackground,\n border: `2px solid ${brandPrimaryTheme.primaryButtonColors.primaryButtonPressedBackground}`,\n },\n },\n '&$disabled': {\n color: brandPrimaryTheme.primaryButtonColors.primaryButtonContents,\n backgroundColor: brandPrimaryTheme.primaryButtonColors.primaryButtonDisabledBackground,\n opacity: 0.7,\n },\n },\n outlinedPrimary: {\n border: `2px solid ${brandPrimaryTheme.outlinedButtonColors.outlinedButton}`,\n color: brandPrimaryTheme.outlinedButtonColors.outlinedButton,\n '&:hover': {\n backgroundColor: get(\n brandPrimaryTheme,\n 'outlinedButtonColors.outlinedButtonHoveredBackground',\n brandPrimaryTheme.outlinedButtonColors.outlinedButtonHovered,\n ),\n border: `2px solid ${brandPrimaryTheme.outlinedButtonColors.outlinedButtonHoveredBackground}`,\n color: brandPrimaryTheme.outlinedButtonColors.outlinedButtonHovered,\n '@media (hover: none)': {\n backgroundColor: get(\n brandPrimaryTheme,\n 'outlinedButtonColors.outlinedButtonHoveredBackground',\n brandPrimaryTheme.outlinedButtonColors.outlinedButtonHovered,\n ),\n color: brandPrimaryTheme.primaryButtonColors.primaryButtonContents,\n },\n },\n '&$disabled': {\n color: brandPrimaryTheme.outlinedButtonColors.outlinedButtonDisabled,\n border: `2px solid ${brandPrimaryTheme.outlinedButtonColors.outlinedButtonDisabled}`,\n opacity: 0.7,\n },\n },\n },\n MuiBreadcrumbs: {\n root: {\n color: brandPrimaryTheme.backgroundColors.grayLight,\n },\n separator: {\n fontSize: '1.5rem',\n marginLeft: '16px',\n marginRight: '16px',\n },\n },\n MuiDialogContent: {\n root: {\n padding: '8px 8px',\n [theme.breakpoints.up('sm')]: {\n padding: '8px 24px',\n },\n },\n },\n MuiInputBase: {\n root: {\n border: '1px solid',\n borderRadius: brandPrimaryTheme.formColors.inputBorderRadius,\n borderColor: brandPrimaryTheme.formColors.inputBorder,\n overflow: 'hidden',\n backgroundColor: brandPrimaryTheme.formColors.inputBackground,\n '&:hover:not($disabled)': {\n borderColor: brandPrimaryTheme.formColors.inputActiveBorder,\n backgroundColor: brandPrimaryTheme.formColors.inputActiveBackground,\n },\n '& > svg': {\n color: brandPrimaryTheme.formColors.inputBorder,\n },\n '&$focused': {\n boxShadow: '0 2px 6px 0 rgba(0, 0, 0, 0.24)',\n borderColor: brandPrimaryTheme.formColors.inputActiveBorder,\n backgroundColor: brandPrimaryTheme.formColors.inputActiveBackground,\n '&:hover:not($disabled)': {\n borderColor: brandPrimaryTheme.formColors.inputActiveBorder,\n },\n },\n '&$error:not($focused)': {\n borderColor: brandPrimaryTheme.notificationColors.errorContents,\n '&:hover:not($disabled)': {\n borderColor: brandPrimaryTheme.notificationColors.errorContents,\n },\n },\n '&$disabled': {\n backgroundColor: brandPrimaryTheme.colors.gray,\n },\n },\n adornedStart: {\n paddingLeft: '0.5rem',\n },\n adornedEnd: {\n paddingRight: '0.5rem',\n },\n input: {\n fontSize: brandPrimaryTheme.textFontSizesMobile.body1,\n padding: '0.625rem 1rem',\n '&:not(:first-child)': {\n paddingLeft: '0.5rem',\n },\n '&:not(:last-child)': {\n paddingRight: '0.5rem',\n },\n '&::placeholder': {\n fontStyle: 'italic',\n },\n },\n },\n MuiInputLabel: {\n root: {\n textTransform: 'uppercase',\n marginLeft: '0.75rem',\n },\n shrink: {\n marginTop: '-8px',\n transform: 'translate(0, 1.5px) scale(1)',\n },\n },\n MuiFormLabel: {\n root: {\n color: brandPrimaryTheme.textColors.bodyText,\n '&$error': {\n color: brandPrimaryTheme.notificationColors.errorContents,\n },\n },\n asterisk: {\n '&$error': {\n color: brandPrimaryTheme.notificationColors.errorContents,\n },\n },\n },\n MuiFormHelperText: {\n root: {\n color: brandPrimaryTheme.textColors.bodyText,\n marginLeft: '0.75rem',\n '&$error': {\n color: brandPrimaryTheme.notificationColors.errorContents,\n },\n },\n },\n MuiCheckbox: {\n root: {\n color: brandPrimaryTheme.textColors.mutedText,\n backgroundColro: brandPrimaryTheme.backgroundColors.grayLight,\n '&:hover': {\n color: brandPrimaryTheme.formColors.inputActiveBorder,\n backgroundColro: brandPrimaryTheme.backgroundColors.grayLight,\n },\n '&$checked': {\n color: 'white',\n backgroundColro: brandPrimaryTheme.formColors.inputActiveBorder,\n },\n },\n },\n MuiFormControl: {\n root: {\n marginBottom: theme.spacing(2),\n },\n },\n MuiList: {\n root: {\n listStyle: 'square',\n '& > li::Marker': {\n color: brandPrimaryTheme.linkColors.link,\n },\n },\n },\n MuiCollapse: {\n hidden: {\n '@media print': {\n visibility: 'visible',\n height: 'auto',\n },\n },\n },\n MuiTable: {\n root: {\n border: brandPrimaryTheme.table.border,\n borderRadius: brandPrimaryTheme.table.borderRadius,\n color: 'inherit',\n },\n },\n MuiTableHead: {\n root: {\n backgroundColor: brandPrimaryTheme.table.head.backgroundColor,\n color: brandPrimaryTheme.table.head.color,\n },\n },\n MuiTableRow: {\n root: {\n backgroundColor: brandPrimaryTheme.table.row.backgroundColor,\n color: 'inherit',\n '&:nth-of-type(even)': {\n backgroundColor: brandPrimaryTheme.table.row.even.backgroundColor,\n },\n },\n },\n MuiTableCell: {\n root: {\n borderBottom: get(brandPrimaryTheme, 'table.cell.border', null),\n color: 'inherit',\n paddingBottom: 0,\n },\n },\n },\n props: {\n MuiAppBar: {\n color: 'primary',\n },\n MuiIconButton: {\n color: 'primary',\n },\n MuiButton: {\n color: 'primary',\n variant: 'contained',\n },\n MuiLink: {\n variant: 'body1',\n },\n MuiContainer: {\n disableGutters: false,\n },\n MuiBreadcrumbs: {\n separator: '›',\n },\n MuiInput: {\n disableUnderline: true,\n },\n MuiInputLabel: {\n shrink: true,\n },\n MuiCheckbox: {\n checkedIcon: <CheckBoxOutlined />,\n },\n },\n});\n\nexport default primaryTheme;\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\nimport { ThemeProvider } from '@material-ui/core';\n\nimport { siteIds } from '../constants';\nimport { siteId, brandSite } from '../sites';\n\nimport viinimaaTheme from './viinimaa/primaryTheme';\nimport folkofolkTheme from './folkofolk/primaryTheme';\nimport anoraProTheme from './anoraPro/primaryTheme';\nimport brandsTheme from './brands/primaryTheme';\n\nfunction getPrimaryTheme() {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return viinimaaTheme;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return folkofolkTheme;\n }\n if (isEqual(siteId, siteIds.AnoraPro)) {\n return anoraProTheme;\n }\n if (brandSite) {\n return brandsTheme;\n }\n\n return null;\n}\n\nfunction PrimaryThemeProvider(props) {\n return <ThemeProvider theme={getPrimaryTheme()} {...props} />;\n}\n\nexport default PrimaryThemeProvider;\n","/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable react/prop-types */\n\nimport React from 'react';\n\nimport { CssBaseline } from '@material-ui/core';\n\nimport PrimaryThemeProvider from '../../src/themes/PrimaryThemeProvider';\n\nexport const wrapRootElement = ({ element }) => {\n return (\n <>\n <PrimaryThemeProvider>\n <CssBaseline />\n {element}\n </PrimaryThemeProvider>\n </>\n );\n};\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\nimport Cookies from 'universal-cookie';\r\nimport { Provider } from './CookiesContext';\r\nvar CookiesProvider = /** @class */ (function (_super) {\r\n __extends(CookiesProvider, _super);\r\n function CookiesProvider(props) {\r\n var _this = _super.call(this, props) || this;\r\n if (props.cookies) {\r\n _this.cookies = props.cookies;\r\n }\r\n else {\r\n _this.cookies = new Cookies();\r\n }\r\n return _this;\r\n }\r\n CookiesProvider.prototype.render = function () {\r\n return React.createElement(Provider, { value: this.cookies }, this.props.children);\r\n };\r\n return CookiesProvider;\r\n}(React.Component));\r\nexport default CookiesProvider;\r\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { QueryClient, QueryClientProvider } from 'react-query';\n\nconst client = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 1000 * 60 * 5,\n retry: false,\n refetchOnWindowFocus: false,\n },\n },\n});\n\nexport function ReactQueryProvider(props) {\n return <QueryClientProvider {...props} client={client} />;\n}\n\nReactQueryProvider.propTypes = {\n children: PropTypes.node,\n};\n\nReactQueryProvider.defaultProps = {\n children: null,\n};\n","import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context';\nexport function I18nextProvider(_ref) {\n var i18n = _ref.i18n,\n defaultNS = _ref.defaultNS,\n children = _ref.children;\n var value = useMemo(function () {\n return {\n i18n: i18n,\n defaultNS: defaultNS\n };\n }, [i18n, defaultNS]);\n return createElement(I18nContext.Provider, {\n value: value\n }, children);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _toArray from '@babel/runtime/helpers/esm/toArray';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread(_objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }]);\n\n return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n\n if (!listener) {\n delete this.observers[event];\n return;\n }\n\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n\n return matched;\n}\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n\n current = current[paths[i]];\n }\n\n return current;\n}\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n var _super = _createSuper(ResourceStore);\n\n function ResourceStore(data) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n\n _classCallCheck(this, ResourceStore);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.data = data || {};\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n\n return _this;\n }\n\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$1(_objectSpread$1({}, pack), resources);\n }\n\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$1(_objectSpread$1({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n var _super = _createSuper$1(Translator);\n\n function Translator(services) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n\n if (key === undefined || key === null) {\n return false;\n }\n\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n\n if (returnDetails) {\n resolved.res = \"\".concat(namespace).concat(nsSeparator).concat(key);\n return resolved;\n }\n\n return \"\".concat(namespace).concat(nsSeparator).concat(key);\n }\n\n if (returnDetails) {\n resolved.res = key;\n return resolved;\n }\n\n return key;\n }\n\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n\n var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$2(_objectSpread$2({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n\n return r;\n }\n\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$2(_objectSpread$2({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$2(_objectSpread$2({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$2(_objectSpread$2({}, options), {\n interpolation: _objectSpread$2(_objectSpread$2({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n var nestBef;\n\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n return null;\n }\n\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$2({\n i18nResolved: resolved\n }, options) : options, this);\n }\n\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n\n var extracted = _this4.extractFromKey(k, options);\n\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = \"\".concat(_this4.options.pluralSeparator, \"zero\");\n\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n\n var possibleKey;\n\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n\n return false;\n }\n }]);\n\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n\n var cleanedLng = _this.formatLanguageCode(code);\n\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n\n var lngOnly = _this.getLanguagePartFromCode(code);\n\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n\n var addCode = function addCode(c) {\n if (!c) return;\n\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n\n this.rules = createRules();\n }\n\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n\n if (!rule) {\n return [];\n }\n\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n\n return this.getSuffixRetroCompatible(rule, count);\n }\n\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n\n return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n\n this.init(options);\n }\n\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n\n while (match = todo.regex.exec(str)) {\n var matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && options.hasOwnProperty(matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n\n replaces++;\n\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n\n var clonedOptions = _objectSpread$3({}, options);\n\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n optionsString = optionsString.replace(/'/g, '\"');\n\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n\n delete clonedOptions.defaultValue;\n return key;\n }\n\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n\n return str;\n }\n }]);\n\n return Interpolator;\n}();\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n\n var _opt$split = opt.split(':'),\n _opt$split2 = _toArray(_opt$split),\n key = _opt$split2[0],\n rest = _opt$split2.slice(1);\n\n var val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\n\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Formatter);\n\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: function number(val, lng, options) {\n return new Intl.NumberFormat(lng, options).format(val);\n },\n currency: function currency(val, lng, options) {\n return new Intl.NumberFormat(lng, _objectSpread$4(_objectSpread$4({}, options), {}, {\n style: 'currency'\n })).format(val);\n },\n datetime: function datetime(val, lng, options) {\n return new Intl.DateTimeFormat(lng, _objectSpread$4({}, options)).format(val);\n },\n relativetime: function relativetime(val, lng, options) {\n return new Intl.RelativeTimeFormat(lng, _objectSpread$4({}, options)).format(val, options.range || 'day');\n },\n list: function list(val, lng, options) {\n return new Intl.ListFormat(lng, _objectSpread$4({}, options)).format(val);\n }\n };\n this.init(options);\n }\n\n _createClass(Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng, options) {\n var _this = this;\n\n var formats = _format.split(this.formatSeparator);\n\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n\n if (_this.formats[formatName]) {\n var formatted = mem;\n\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$4(_objectSpread$4(_objectSpread$4({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n\n return mem;\n }, value);\n return result;\n }\n }]);\n\n return Formatter;\n}();\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n var _super = _createSuper$2(Connector);\n\n function Connector(backend, store, services) {\n var _this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.waitingReads = [];\n _this.maxParallelReads = options.maxParallelReads || 10;\n _this.readingCalls = 0;\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n var toLoad = {};\n var pending = {};\n var toLoadLanguages = {};\n var toLoadNamespaces = {};\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending: pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = {};\n var loadedKeys = q.loaded[l];\n\n if (loadedKeys.length) {\n loadedKeys.forEach(function (ns) {\n if (loaded[l][ns] === undefined) loaded[l][ns] = true;\n });\n }\n });\n q.done = true;\n\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng: lng,\n ns: ns,\n fcName: fcName,\n tried: tried,\n wait: wait,\n callback: callback\n });\n return;\n }\n\n this.readingCalls++;\n return this.backend[fcName](lng, ns, function (err, data) {\n if (err && data && tried < 5) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n\n _this3.readingCalls--;\n\n if (_this3.waitingReads.length > 0) {\n var next = _this3.waitingReads.shift();\n\n _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n\n if (key === undefined || key === null || key === '') return;\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread$5(_objectSpread$5({}, options), {}, {\n isUpdate: isUpdate\n }));\n }\n\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n\n return options;\n}\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction noop() {}\n\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n var _super = _createSuper$3(I18n);\n\n function I18n() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n _classCallCheck(this, I18n);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized(_this));\n\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n\n return _this;\n }\n\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (!options.defaultNS && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n\n var defOpts = get();\n this.options = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, defOpts), this.options), transformOptions(options));\n\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread$6(_objectSpread$6({}, defOpts.interpolation), this.options.interpolation);\n }\n\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var formatter;\n\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n return _this2;\n };\n });\n var deferred = defer();\n\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n _this2.emit('initialized', _this2.options);\n\n deferred.resolve(t);\n callback(err, t);\n };\n\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n }\n }, {\n key: \"setResolvedLanguage\",\n value: function setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n\n for (var li = 0; li < this.languages.length; li++) {\n var lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n\n _this4.setResolvedLanguage(l);\n };\n\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n\n _this4.translator.changeLanguage(l);\n\n _this4.isLanguageChangingTo = undefined;\n\n _this4.emit('languageChanged', l);\n\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n var options;\n\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread$6({}, opts);\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey = options.keyPrefix ? \"\".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;\n return _this5.t(resultKey, options);\n };\n\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n\n var lng = this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n return loadState === -1 || loadState === 2;\n };\n\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n\n var deferred = defer();\n\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, this.options), options), {\n isClone: true\n });\n\n var clone = new I18n(mergedOptions);\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread$6({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n\n return I18n;\n}(EventEmitter);\n\n_defineProperty(I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\n\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nvar createInstance = instance.createInstance;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\n\nexport default instance;\nexport { changeLanguage, createInstance, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\n\nimport { map } from 'lodash';\n\nimport en from './en/translation.json';\nimport fi from './fi/translation.json';\nimport sv from './sv/translation.json';\nimport da from './da/translation.json';\nimport de from './de/translation.json';\n\nimport { settings } from '../sites';\n\ni18n.use(initReactI18next).init({\n resources: {\n en: { translation: en },\n fi: { translation: fi },\n sv: { translation: sv },\n da: { translation: da },\n de: { translation: de },\n },\n fallbackLng: settings.localization.defaultLanguageCode,\n supportedLngs: map(settings.channels, 'languageCode'),\n interpolation: {\n escapeValue: false,\n },\n});\n\nexport default i18n;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { I18nextProvider } from 'react-i18next';\n\nimport i18n from '../../locales';\n\nexport function TranslationProvider({ children }) {\n return <I18nextProvider i18n={i18n}>{children}</I18nextProvider>;\n}\n\nTranslationProvider.propTypes = {\n children: PropTypes.node,\n};\n\nTranslationProvider.defaultProps = {\n children: null,\n};\n","import React from 'react';\n\nimport { Helmet } from 'react-helmet';\n\nfunction GoogleTagManager() {\n return (\n <>\n <Helmet>\n <script>\n {(function (s, l, i) {\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n window[l] = window[l] || [];\n window[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });\n const f = document.getElementsByTagName(s)[0];\n const j = document.createElement(s);\n const dl = l !== 'dataLayer' ? `&l=${l}` : '';\n j.async = true;\n j.src = `https://www.googletagmanager.com/gtm.js?id=${i}${dl}`;\n f.parentNode.insertBefore(j, f);\n }\n })('script', 'dataLayer', process.env.GATSBY_GOOGLE_TAG_MANAGER_ID)}\n </script>\n </Helmet>\n <noscript>\n <iframe\n title=\"gtag\"\n src={`https://www.googletagmanager.com/ns.html?id=${process.env.GATSBY_GOOGLE_TAG_MANAGER_ID}`}\n height=\"0\"\n width=\"0\"\n style={{ display: 'none', visibility: 'hidden' }}\n />\n </noscript>\n </>\n );\n}\n\nGoogleTagManager.propTypes = {};\n\nGoogleTagManager.defaultProps = {};\n\nexport default GoogleTagManager;\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId, brandSite } from '../../../sites';\n\nimport ViinimaaGoogleTagManager from './viinimaa';\n\nfunction GoogleTagManager(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return <ViinimaaGoogleTagManager {...props} />;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return <ViinimaaGoogleTagManager {...props} />;\n }\n if (brandSite) {\n return <ViinimaaGoogleTagManager {...props} />;\n }\n\n return null;\n}\n\nexport default GoogleTagManager;\n","import React from 'react';\n\nimport { Helmet } from 'react-helmet';\nimport { isSSR } from '../../../../utils/windowUtils';\n\nfunction FrosmoScript() {\n if (isSSR()) {\n return null;\n }\n return (\n <Helmet>\n <script type=\"text/javascript\" charset=\"utf-8\" async src=\"//d2oarllo6tn86.cloudfront.net/frosmo.easy.js\" />\n <script type=\"text/javascript\" charset=\"utf-8\" async src=\"//d2oarllo6tn86.cloudfront.net/sites/viinimaa_fi.js\" />\n </Helmet>\n );\n}\n\nFrosmoScript.propTypes = {};\n\nFrosmoScript.defaultProps = {};\n\nexport default FrosmoScript;\n","import React from 'react';\n\nimport { Helmet } from 'react-helmet';\nimport { isSSR } from '../../../../utils/windowUtils';\n\nfunction FrosmoScript() {\n if (isSSR()) {\n return null;\n }\n return (\n <Helmet>\n <script type=\"text/javascript\" charset=\"utf-8\" src=\"//d2wzl9lnvjz3bh.cloudfront.net/frosmo.easy.js\" async />\n <script\n type=\"text/javascript\"\n charset=\"utf-8\"\n src=\"//d2wzl9lnvjz3bh.cloudfront.net/sites/folkofolk_se.js\"\n async\n />\n </Helmet>\n );\n}\n\nFrosmoScript.propTypes = {};\n\nFrosmoScript.defaultProps = {};\n\nexport default FrosmoScript;\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId } from '../../../sites';\n\nimport ViinimaaFrosmoScript from './viinimaa';\nimport FolkofolkFrosmoScript from './folkofolk';\n\nfunction FrosmoScript(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return <ViinimaaFrosmoScript {...props} />;\n }\n if (isEqual(siteId, siteIds.AnoraPro)) {\n return <ViinimaaFrosmoScript {...props} />;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return <FolkofolkFrosmoScript {...props} />;\n }\n\n return null;\n}\n\nexport default FrosmoScript;\n","/* eslint-disable prefer-destructuring */\n/* eslint-disable prefer-rest-params */\nimport React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { isSSR } from '../../../../utils/windowUtils';\n\nfunction Hotjar() {\n if (isSSR()) {\n return null;\n }\n\n if (process.env.GATSBY_HOTJAR_ID) {\n return (\n <Helmet>\n <script>\n {(function (h, o, t, j, a, r) {\n h.hj =\n h.hj ||\n function () {\n (h.hj.q = h.hj.q || []).push(arguments);\n };\n h._hjSettings = { hjid: process.env.GATSBY_HOTJAR_ID, hjsv: 6 };\n a = o.getElementsByTagName('head')[0];\n r = o.createElement('script');\n r.async = 1;\n r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;\n a.appendChild(r);\n })(window, document, 'https://static.hotjar.com/c/hotjar-', '.js?sv=')}\n </script>\n </Helmet>\n );\n }\n\n return null;\n}\n\nHotjar.propTypes = {};\n\nexport default Hotjar;\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId } from '../../../sites';\n\nimport DefaultHotjar from './default';\n\nfunction Hotjar() {\n if (isEqual(siteId, siteIds.Viinimaa) || isEqual(siteId, siteIds.Folkofolk)) {\n return <DefaultHotjar />;\n }\n\n return null;\n}\n\nexport default Hotjar;\n","import React from 'react';\n\nimport { Helmet } from 'react-helmet';\n\nfunction DefaultFonts() {\n return (\n <Helmet>\n <link rel=\"preload\" as=\"style\" href=\"https://use.typekit.net/vas0xvf.css\" />\n <link rel=\"stylesheet\" href=\"https://use.typekit.net/vas0xvf.css\" />\n <link\n as=\"font\"\n crossOrigin=\"anonymous\"\n href=\"../../../../fonts/PlayfairDisplay/playfair-display-v30-latin-700.woff2\"\n rel=\"preload\"\n type=\"font/woff2\"\n />\n <link\n as=\"font\"\n crossOrigin=\"anonymous\"\n href=\"../../../../fonts/PlayfairDisplay/playfair-display-v30-latin-regular.woff2\"\n rel=\"preload\"\n type=\"font/woff2\"\n />\n </Helmet>\n );\n}\n\nexport default DefaultFonts;\n","import React from 'react';\n\nimport { Helmet } from 'react-helmet';\n\nfunction DefaultFonts() {\n return (\n <Helmet>\n <link href=\"https://fonts.googleapis.com/css2?family=Playfair+Display&display=swap\" rel=\"stylesheet\" />\n <link href=\"https://fonts.googleapis.com/css2?family=Jost&display=swap\" rel=\"stylesheet\" />\n </Helmet>\n );\n}\n\nexport default DefaultFonts;\n","import React from 'react';\n\nimport { Helmet } from 'react-helmet';\n\nfunction DefaultFonts() {\n return (\n <Helmet>\n <link href=\"https://fonts.googleapis.com/css2?family=Lato&display=swap\" rel=\"stylesheet\" />\n <link rel=\"preload\" as=\"style\" href=\"https://use.typekit.net/mqe7api.css\" />\n <link rel=\"stylesheet\" href=\"https://use.typekit.net/mqe7api.css\" />\n <link\n as=\"font\"\n crossOrigin=\"anonymous\"\n href=\"../../../../fonts/Gotham/Gotham-Bold.otf\"\n rel=\"preload\"\n type=\"font/opentype\"\n />\n <link\n as=\"font\"\n crossOrigin=\"anonymous\"\n href=\"../../../../fonts/Gotham/Gotham-Book.otf\"\n rel=\"preload\"\n type=\"font/opentype\"\n />\n <link\n as=\"font\"\n crossOrigin=\"anonymous\"\n href=\"../../../../fonts/Gotham/Gotham-Medium.otf\"\n rel=\"preload\"\n type=\"font/opentype\"\n />\n </Helmet>\n );\n}\n\nexport default DefaultFonts;\n","import React from 'react';\n\nimport { Helmet } from 'react-helmet';\n\nfunction DefaultFonts() {\n return (\n <Helmet>\n <link rel=\"preload\" as=\"style\" href=\"https://use.typekit.net/gvs3cvh.css\" />\n <link rel=\"stylesheet\" href=\"https://use.typekit.net/gvs3cvh.css\" />\n </Helmet>\n );\n}\n\nexport default DefaultFonts;\n","import React from 'react';\n\nimport { Helmet } from 'react-helmet';\n\nfunction DefaultFonts() {\n return (\n <Helmet>\n <link rel=\"preload\" as=\"style\" href=\"https://use.typekit.net/fkk1vht.css\" />\n <link rel=\"stylesheet\" href=\"https://use.typekit.net/fkk1vht.css\" />\n </Helmet>\n );\n}\n\nexport default DefaultFonts;\n","import React from 'react';\n\nimport { Helmet } from 'react-helmet';\n\nfunction DefaultFonts() {\n return (\n <Helmet>\n <link\n href=\"https://fonts.googleapis.com/css2?family=Josefin+Sans:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&family=Playfair+Display:ital,wght@0,700;1,700&display=swap\"\n rel=\"stylesheet\"\n />\n </Helmet>\n );\n}\n\nexport default DefaultFonts;\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId } from '../../../sites';\n\nimport ViinimaaDefaultFonts from './viinimaa';\nimport PhilipsonSoderbergDefaultFonts from './philipsonSoderberg';\nimport WennercoDefaultFonts from './wennerco';\nimport SkagerrakDefaultFonts from './skagerrak';\nimport WineworldFinlandDefaultFonts from './wineworldFinland';\nimport SocialwinesDefaultFonts from './socialwines';\n\nfunction DefaultFonts(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return <ViinimaaDefaultFonts {...props} />;\n }\n if (isEqual(siteId, siteIds.AnoraPro)) {\n return <ViinimaaDefaultFonts {...props} />;\n }\n\n if (isEqual(siteId, siteIds.PhilipsonSoderberg)) {\n return <PhilipsonSoderbergDefaultFonts {...props} />;\n }\n if (isEqual(siteId, siteIds.Wennerco)) {\n return <WennercoDefaultFonts {...props} />;\n }\n if (isEqual(siteId, siteIds.Skagerrak)) {\n return <SkagerrakDefaultFonts {...props} />;\n }\n if (isEqual(siteId, siteIds.WineworldFinland)) {\n return <WineworldFinlandDefaultFonts {...props} />;\n }\n if (isEqual(siteId, siteIds.Socialwines)) {\n return <SocialwinesDefaultFonts {...props} />;\n }\n\n return null;\n}\n\nexport default DefaultFonts;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction ViinimaaFavicon() {\n const themeFaciconQuery = useStaticQuery(graphql`\n query ViinimaaThemeFaviconQuery {\n allContentfulTheme(\n filter: { channel: { elemMatch: { channel: { eq: \"Viinimaa FI\" } } }, themeType: { eq: \"Main theme\" } }\n ) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaciconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default ViinimaaFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction ViinimaaFavicon() {\n const themeFaciconQuery = useStaticQuery(graphql`\n query FolkofolkThemeFaviconQuery {\n allContentfulTheme(\n filter: { channel: { elemMatch: { channel: { eq: \"Folkofolk SE\" } } }, themeType: { eq: \"Main theme\" } }\n ) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaciconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default ViinimaaFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction ViinimaaFavicon() {\n const themeFaciconQuery = useStaticQuery(graphql`\n query AnoraProThemeFaviconQuery {\n allContentfulTheme(\n filter: { channel: { elemMatch: { channel: { eq: \"Anora Pro FI\" } } }, themeType: { eq: \"Main theme\" } }\n ) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaciconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default ViinimaaFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction BlossaFavicon() {\n const themeFaciconQuery = useStaticQuery(graphql`\n query BlossaThemeFaviconQuery {\n allContentfulTheme(\n filter: {\n channel: { elemMatch: { channel: { in: [\"Blossa SE\", \"Blossa EN\"] } } }\n themeType: { eq: \"Main theme\" }\n }\n ) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaciconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default BlossaFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction BibendumFavicon() {\n const themeFaciconQuery = useStaticQuery(graphql`\n query BibendumThemeFaviconQuery {\n allContentfulTheme(\n filter: { channel: { elemMatch: { channel: { eq: \"Bibendum EN\" } } }, themeType: { eq: \"Main theme\" } }\n ) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaciconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default BibendumFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction PhilipsonSoderbergFavicon() {\n const themeFaciconQuery = useStaticQuery(graphql`\n query PhilipsonThemeFaviconQuery {\n allContentfulTheme(\n filter: {\n channel: { elemMatch: { channel: { in: [\"Philipson Söderberg EN\", \"Philipson Söderberg SE\"] } } }\n themeType: { eq: \"Main theme\" }\n }\n ) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaciconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default PhilipsonSoderbergFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction ValhallaFavicon() {\n const themeFaciconQuery = useStaticQuery(graphql`\n query ValhallaThemeFaviconQuery {\n allContentfulTheme(\n filter: {\n channel: { elemMatch: { channel: { in: [\"Valhalla DE\", \"Valhalla EN\"] } } }\n themeType: { eq: \"Main theme\" }\n }\n ) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaciconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default ValhallaFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction GammeldanskFavicon() {\n const themeFaciconQuery = useStaticQuery(graphql`\n query GammeldanskThemeFaviconQuery {\n allContentfulTheme(\n filter: { channel: { elemMatch: { channel: { in: [\"Gammeldansk DK\", \"Gammeldansk EN\"] } } } }\n ) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaciconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n if (publicId) {\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n }\n return null;\n}\n\nexport default GammeldanskFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction WennercoFavicon() {\n const themeFaviconQuery = useStaticQuery(graphql`\n query wennercoThemeFaciconQuery {\n allContentfulTheme(filter: { channel: { elemMatch: { channel: { eq: \"Wennerco EN\" } } } }) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaviconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default WennercoFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction KoskenkorvaFavicon() {\n const themeFaviconQuery = useStaticQuery(graphql`\n query koskenkorvaThemeFaviconQuery {\n allContentfulTheme(\n filter: { channel: { elemMatch: { channel: { in: [\"Koskenkorva EN\", \"Koskenkorva DE\"] } } } }\n ) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaviconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default KoskenkorvaFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport { get } from 'lodash';\n\nfunction WennercoFavicon() {\n const themeFaviconQuery = useStaticQuery(graphql`\n query opAndersonThemeFaviconQuery {\n allContentfulTheme(filter: { channel: { elemMatch: { channel: { eq: \"O.P. Anderson EN\" } } } }) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaviconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default WennercoFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction SkagerrakFavicon() {\n const themeFaciconQuery = useStaticQuery(graphql`\n query SkagerrakThemeFaviconQuery {\n allContentfulTheme(\n filter: {\n channel: { elemMatch: { channel: { in: [\"Skagerrak EN\", \"Skagerrak DE\"] } } }\n themeType: { eq: \"Main theme\" }\n }\n ) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaciconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default SkagerrakFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction WineworldFinlandFavicon() {\n const themeFaviconQuery = useStaticQuery(graphql`\n query wineworldFinlandThemeFaviconQuery {\n allContentfulTheme(filter: { channel: { elemMatch: { channel: { eq: \"Wineworld Finland EN\" } } } }) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaviconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default WineworldFinlandFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction LinieAquavitFavicon() {\n const themeFaciconQuery = useStaticQuery(graphql`\n query LinieAquavitThemeFaviconQuery {\n allContentfulTheme(\n filter: {\n channel: { elemMatch: { channel: { in: [\"Linie Aquavit EN\", \"Linie Aquavit DK\", \"Linie Aquavit DE\"] } } }\n themeType: { eq: \"Main theme\" }\n }\n ) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaciconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default LinieAquavitFavicon;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport get from 'lodash/get';\n\nfunction SocialwinesFavicon() {\n const themeFaviconQuery = useStaticQuery(graphql`\n query socialwinesThemeFaviconQuery {\n allContentfulTheme(filter: { channel: { elemMatch: { channel: { eq: \"Social Wines EN\" } } } }) {\n nodes {\n title\n themeType\n themeStyles {\n favicon {\n cloudinaryImage {\n public_id\n url\n secure_url\n }\n }\n }\n }\n }\n }\n `);\n\n const cloudinaryImage = get(themeFaviconQuery, 'allContentfulTheme.nodes.0.themeStyles.favicon.cloudinaryImage.0');\n const publicId = get(cloudinaryImage, 'public_id');\n const url = `https://res.cloudinary.com/${process.env.GATSBY_CLOUDINARY_CLOUD_NAME}/image/upload/c_limit,q_auto:good,w_32/${publicId}`;\n\n return (\n <Helmet>\n <link rel=\"icon\" type=\"image/x-icon\" href={url} />\n </Helmet>\n );\n}\n\nexport default SocialwinesFavicon;\n","import React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { siteIds } from '../../../constants';\nimport { siteId } from '../../../sites';\n\nimport ViinimaaFavicon from './viinimaa';\nimport FolkofolkFavicon from './folkofolk';\nimport AnoraProFavicon from './anoraPro';\nimport BlossaFavicon from './blossa';\nimport BibendumFavicon from './bibendum';\nimport PhilipsonSoderbergFavicon from './philipsonSoderberg';\nimport ValhallaFavicon from './valhalla';\nimport GammeldanskFavicon from './gammeldansk';\nimport WennercoFavicon from './wennerco';\nimport KoskenkorvaFavicon from './koskenkorva';\nimport OpAndersonFavicon from './opAnderson';\nimport SkagerrakFavicon from './skagerrak';\nimport WineworldFinlandFavicon from './wineworld-finland';\nimport LinieAquavitFavicon from './linieAquavit';\nimport SocialwinesFavicon from './socialwines';\n\nfunction Favicon(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return <ViinimaaFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return <FolkofolkFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.AnoraPro)) {\n return <AnoraProFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.PhilipsonSoderberg)) {\n return <PhilipsonSoderbergFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.Blossa)) {\n return <BlossaFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.Bibendum)) {\n return <BibendumFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.Valhalla)) {\n return <ValhallaFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.Gammeldansk)) {\n return <GammeldanskFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.Wennerco)) {\n return <WennercoFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.Koskenkorva)) {\n return <KoskenkorvaFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.OpAnderson)) {\n return <OpAndersonFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.Skagerrak)) {\n return <SkagerrakFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.WineworldFinland)) {\n return <WineworldFinlandFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.LinieAquavit)) {\n return <LinieAquavitFavicon {...props} />;\n }\n if (isEqual(siteId, siteIds.Socialwines)) {\n return <SocialwinesFavicon {...props} />;\n }\n\n return null;\n}\n\nexport default Favicon;\n","import React from 'react';\n\nimport { Helmet } from 'react-helmet';\n\nfunction MetaDomainVerificationTag() {\n if (!process.env.GATSBY_META_DOMAIN_VERIFICATION_CODE) {\n return null;\n }\n\n return (\n <Helmet>\n <meta name=\"facebook-domain-verification\" content={process.env.GATSBY_META_DOMAIN_VERIFICATION_CODE} />\n </Helmet>\n );\n}\n\nexport default MetaDomainVerificationTag;\n","import { KlevuConfig } from '@klevu/core';\n\nKlevuConfig.init({\n url: process.env.GATSBY_KlEVU_URL_SEARCH,\n apiKey: process.env.GATSBY_KlEVU_API_KEY,\n});\n\nexport default function KlevuInit() {\n return null;\n}\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId } from '../../../sites';\n\nimport CommonKlevuInit from './common';\n\nfunction KlevuInit(props) {\n if (isEqual(siteId, siteIds.Viinimaa) || isEqual(siteId, siteIds.Folkofolk) || isEqual(siteId, siteIds.AnoraPro)) {\n return <CommonKlevuInit {...props} />;\n }\n\n return null;\n}\n\nexport default KlevuInit;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport get from 'lodash/get';\nimport includes from 'lodash/includes';\nimport { navigate } from 'gatsby';\nimport { Auth0Provider } from '@auth0/auth0-react';\nimport { ContentfulLivePreviewProvider } from '@contentful/live-preview/react';\n\nimport { Helmet } from 'react-helmet';\nimport { CookiesProvider } from 'react-cookie';\n\nimport { DialogProvider } from '../../../context/DialogContext';\nimport { PopUpProvider } from '../../../context/PopUpContext';\nimport { MessageProvider } from '../../../context/MessageContext';\nimport { DrawerProvider } from '../../../context/DrawerContext';\nimport { ReactQueryProvider } from '../../../context/ReactQueryContext';\nimport { ContentProvider } from '../../../context/ContentContext';\nimport { ActiveNavigationProvider } from '../../../context/ActiveNavigationContext';\nimport { ContentSearchContextProvider } from '../../../context/ContentSearchContext';\nimport { KlevuSearchProvider } from '../../../context/KlevuSearchContext';\n\nimport { TranslationProvider } from '../../../context/TranslationContext';\n\nimport GoogleTagManager from '../../GoogleTagManager';\nimport FrosmoScript from '../../FrosmoScript';\nimport Hotjar from '../../Hotjar';\nimport DefaultFonts from '../../DefaultFonts.js';\nimport Favicon from '../../Favicon';\nimport MetaDomainVerificationTag from '../../MetaDomainVerificationTag';\nimport KlevuInit from '../../../search/KlevuInit';\nimport { settings } from '../../../../sites';\n\nconst onRedirectCallback = appState => {\n // Use Gatsby's navigate method to replace the url\n navigate(appState?.returnTo || '/', { replace: true });\n};\n\nfunction RootWrapper({ element }) {\n const locale = get(settings, ['localization', 'default'], 'en-US');\n return (\n <>\n <Favicon />\n <GoogleTagManager />\n <FrosmoScript />\n <Hotjar />\n <MetaDomainVerificationTag />\n <KlevuInit />\n <Helmet>\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossOrigin=\"anonymous\" />\n <link rel=\"preconnect\" href=\"https://use.typekit.net\" crossOrigin=\"anonymous\" />\n <link rel=\"preconnect\" href=\"https://p.typekit.net\" crossOrigin=\"anonymous\" />\n </Helmet>\n <DefaultFonts />\n <ReactQueryProvider>\n <TranslationProvider>\n <KlevuSearchProvider>\n <DialogProvider>\n <CookiesProvider>\n <PopUpProvider>\n <MessageProvider>\n <ActiveNavigationProvider>\n <DrawerProvider>\n <ContentSearchContextProvider>\n <ContentProvider>\n <Auth0Provider\n domain={process.env.GATSBY_AUTH0_DOMAIN}\n clientId={process.env.GATSBY_AUTH0_CLIENTID}\n authorizationParams={{ redirect_uri: process.env.GATSBY_AUTH0_REDIRECT_URI }}\n onRedirectCallback={onRedirectCallback}>\n <ContentfulLivePreviewProvider\n locale={locale}\n enableInspectorMode={process.env.CONTENTFUL_HOST.includes('preview')}>\n {element}\n </ContentfulLivePreviewProvider>\n </Auth0Provider>\n </ContentProvider>\n </ContentSearchContextProvider>\n </DrawerProvider>\n </ActiveNavigationProvider>\n </MessageProvider>\n </PopUpProvider>\n </CookiesProvider>\n </DialogProvider>\n </KlevuSearchProvider>\n </TranslationProvider>\n </ReactQueryProvider>\n </>\n );\n}\n\nRootWrapper.propTypes = {\n element: PropTypes.node,\n props: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n};\n\nRootWrapper.defaultProps = {\n element: null,\n props: null,\n};\n\nexport default RootWrapper;\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId, brandSite } from '../../../sites';\n\nimport ViinimaaRootWrapper from './viinimaa';\n\nfunction RootWrapper(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return <ViinimaaRootWrapper {...props} />;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return <ViinimaaRootWrapper {...props} />;\n }\n if (brandSite) {\n return <ViinimaaRootWrapper {...props} />;\n }\n\n return null;\n}\n\nexport default RootWrapper;\n","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Paper from '../Paper';\nimport { emphasize } from '../styles/colorManipulator';\nexport var styles = function styles(theme) {\n var emphasis = theme.palette.type === 'light' ? 0.8 : 0.98;\n var backgroundColor = emphasize(theme.palette.background.default, emphasis);\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.body2, _defineProperty({\n color: theme.palette.getContrastText(backgroundColor),\n backgroundColor: backgroundColor,\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n padding: '6px 16px',\n borderRadius: theme.shape.borderRadius,\n flexGrow: 1\n }, theme.breakpoints.up('sm'), {\n flexGrow: 'initial',\n minWidth: 288\n })),\n\n /* Styles applied to the message wrapper element. */\n message: {\n padding: '8px 0'\n },\n\n /* Styles applied to the action wrapper element if `action` is provided. */\n action: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto',\n paddingLeft: 16,\n marginRight: -8\n }\n };\n};\nvar SnackbarContent = /*#__PURE__*/React.forwardRef(function SnackbarContent(props, ref) {\n var action = props.action,\n classes = props.classes,\n className = props.className,\n message = props.message,\n _props$role = props.role,\n role = _props$role === void 0 ? 'alert' : _props$role,\n other = _objectWithoutProperties(props, [\"action\", \"classes\", \"className\", \"message\", \"role\"]);\n\n return /*#__PURE__*/React.createElement(Paper, _extends({\n role: role,\n square: true,\n elevation: 6,\n className: clsx(classes.root, className),\n ref: ref\n }, other), /*#__PURE__*/React.createElement(\"div\", {\n className: classes.message\n }, message), action ? /*#__PURE__*/React.createElement(\"div\", {\n className: classes.action\n }, action) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? SnackbarContent.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The action to display. It renders after the message, at the end of the snackbar.\n */\n action: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The message to display.\n */\n message: PropTypes.node,\n\n /**\n * The ARIA role attribute of the element.\n */\n role: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiSnackbarContent'\n})(SnackbarContent);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport { duration } from '../styles/transitions';\nimport ClickAwayListener from '../ClickAwayListener';\nimport useEventCallback from '../utils/useEventCallback';\nimport capitalize from '../utils/capitalize';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport deprecatedPropType from '../utils/deprecatedPropType';\nimport Grow from '../Grow';\nimport SnackbarContent from '../SnackbarContent';\nexport var styles = function styles(theme) {\n var top1 = {\n top: 8\n };\n var bottom1 = {\n bottom: 8\n };\n var right = {\n justifyContent: 'flex-end'\n };\n var left = {\n justifyContent: 'flex-start'\n };\n var top3 = {\n top: 24\n };\n var bottom3 = {\n bottom: 24\n };\n var right3 = {\n right: 24\n };\n var left3 = {\n left: 24\n };\n var center = {\n left: '50%',\n right: 'auto',\n transform: 'translateX(-50%)'\n };\n return {\n /* Styles applied to the root element. */\n root: {\n zIndex: theme.zIndex.snackbar,\n position: 'fixed',\n display: 'flex',\n left: 8,\n right: 8,\n justifyContent: 'center',\n alignItems: 'center'\n },\n\n /* Styles applied to the root element if `anchorOrigin={{ 'top', 'center' }}`. */\n anchorOriginTopCenter: _extends({}, top1, _defineProperty({}, theme.breakpoints.up('sm'), _extends({}, top3, center))),\n\n /* Styles applied to the root element if `anchorOrigin={{ 'bottom', 'center' }}`. */\n anchorOriginBottomCenter: _extends({}, bottom1, _defineProperty({}, theme.breakpoints.up('sm'), _extends({}, bottom3, center))),\n\n /* Styles applied to the root element if `anchorOrigin={{ 'top', 'right' }}`. */\n anchorOriginTopRight: _extends({}, top1, right, _defineProperty({}, theme.breakpoints.up('sm'), _extends({\n left: 'auto'\n }, top3, right3))),\n\n /* Styles applied to the root element if `anchorOrigin={{ 'bottom', 'right' }}`. */\n anchorOriginBottomRight: _extends({}, bottom1, right, _defineProperty({}, theme.breakpoints.up('sm'), _extends({\n left: 'auto'\n }, bottom3, right3))),\n\n /* Styles applied to the root element if `anchorOrigin={{ 'top', 'left' }}`. */\n anchorOriginTopLeft: _extends({}, top1, left, _defineProperty({}, theme.breakpoints.up('sm'), _extends({\n right: 'auto'\n }, top3, left3))),\n\n /* Styles applied to the root element if `anchorOrigin={{ 'bottom', 'left' }}`. */\n anchorOriginBottomLeft: _extends({}, bottom1, left, _defineProperty({}, theme.breakpoints.up('sm'), _extends({\n right: 'auto'\n }, bottom3, left3)))\n };\n};\nvar Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(props, ref) {\n var action = props.action,\n _props$anchorOrigin = props.anchorOrigin;\n _props$anchorOrigin = _props$anchorOrigin === void 0 ? {\n vertical: 'bottom',\n horizontal: 'center'\n } : _props$anchorOrigin;\n\n var vertical = _props$anchorOrigin.vertical,\n horizontal = _props$anchorOrigin.horizontal,\n _props$autoHideDurati = props.autoHideDuration,\n autoHideDuration = _props$autoHideDurati === void 0 ? null : _props$autoHideDurati,\n children = props.children,\n classes = props.classes,\n className = props.className,\n ClickAwayListenerProps = props.ClickAwayListenerProps,\n ContentProps = props.ContentProps,\n _props$disableWindowB = props.disableWindowBlurListener,\n disableWindowBlurListener = _props$disableWindowB === void 0 ? false : _props$disableWindowB,\n message = props.message,\n onClose = props.onClose,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n open = props.open,\n resumeHideDuration = props.resumeHideDuration,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Grow : _props$TransitionComp,\n _props$transitionDura = props.transitionDuration,\n transitionDuration = _props$transitionDura === void 0 ? {\n enter: duration.enteringScreen,\n exit: duration.leavingScreen\n } : _props$transitionDura,\n TransitionProps = props.TransitionProps,\n other = _objectWithoutProperties(props, [\"action\", \"anchorOrigin\", \"autoHideDuration\", \"children\", \"classes\", \"className\", \"ClickAwayListenerProps\", \"ContentProps\", \"disableWindowBlurListener\", \"message\", \"onClose\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"onMouseEnter\", \"onMouseLeave\", \"open\", \"resumeHideDuration\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"]);\n\n var timerAutoHide = React.useRef();\n\n var _React$useState = React.useState(true),\n exited = _React$useState[0],\n setExited = _React$useState[1];\n\n var handleClose = useEventCallback(function () {\n if (onClose) {\n onClose.apply(void 0, arguments);\n }\n });\n var setAutoHideTimer = useEventCallback(function (autoHideDurationParam) {\n if (!onClose || autoHideDurationParam == null) {\n return;\n }\n\n clearTimeout(timerAutoHide.current);\n timerAutoHide.current = setTimeout(function () {\n handleClose(null, 'timeout');\n }, autoHideDurationParam);\n });\n React.useEffect(function () {\n if (open) {\n setAutoHideTimer(autoHideDuration);\n }\n\n return function () {\n clearTimeout(timerAutoHide.current);\n };\n }, [open, autoHideDuration, setAutoHideTimer]); // Pause the timer when the user is interacting with the Snackbar\n // or when the user hide the window.\n\n var handlePause = function handlePause() {\n clearTimeout(timerAutoHide.current);\n }; // Restart the timer when the user is no longer interacting with the Snackbar\n // or when the window is shown back.\n\n\n var handleResume = React.useCallback(function () {\n if (autoHideDuration != null) {\n setAutoHideTimer(resumeHideDuration != null ? resumeHideDuration : autoHideDuration * 0.5);\n }\n }, [autoHideDuration, resumeHideDuration, setAutoHideTimer]);\n\n var handleMouseEnter = function handleMouseEnter(event) {\n if (onMouseEnter) {\n onMouseEnter(event);\n }\n\n handlePause();\n };\n\n var handleMouseLeave = function handleMouseLeave(event) {\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n\n handleResume();\n };\n\n var handleClickAway = function handleClickAway(event) {\n if (onClose) {\n onClose(event, 'clickaway');\n }\n };\n\n var handleExited = function handleExited() {\n setExited(true);\n };\n\n var handleEnter = function handleEnter() {\n setExited(false);\n };\n\n React.useEffect(function () {\n if (!disableWindowBlurListener && open) {\n window.addEventListener('focus', handleResume);\n window.addEventListener('blur', handlePause);\n return function () {\n window.removeEventListener('focus', handleResume);\n window.removeEventListener('blur', handlePause);\n };\n }\n\n return undefined;\n }, [disableWindowBlurListener, handleResume, open]); // So we only render active snackbars.\n\n if (!open && exited) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(ClickAwayListener, _extends({\n onClickAway: handleClickAway\n }, ClickAwayListenerProps), /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, classes[\"anchorOrigin\".concat(capitalize(vertical)).concat(capitalize(horizontal))], className),\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ref: ref\n }, other), /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n appear: true,\n in: open,\n onEnter: createChainedFunction(handleEnter, onEnter),\n onEntered: onEntered,\n onEntering: onEntering,\n onExit: onExit,\n onExited: createChainedFunction(handleExited, onExited),\n onExiting: onExiting,\n timeout: transitionDuration,\n direction: vertical === 'top' ? 'down' : 'up'\n }, TransitionProps), children || /*#__PURE__*/React.createElement(SnackbarContent, _extends({\n message: message,\n action: action\n }, ContentProps)))));\n});\nprocess.env.NODE_ENV !== \"production\" ? Snackbar.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The action to display. It renders after the message, at the end of the snackbar.\n */\n action: PropTypes.node,\n\n /**\n * The anchor of the `Snackbar`.\n */\n anchorOrigin: PropTypes.shape({\n horizontal: PropTypes.oneOf(['center', 'left', 'right']).isRequired,\n vertical: PropTypes.oneOf(['bottom', 'top']).isRequired\n }),\n\n /**\n * The number of milliseconds to wait before automatically calling the\n * `onClose` function. `onClose` should then set the state of the `open`\n * prop to hide the Snackbar. This behavior is disabled by default with\n * the `null` value.\n */\n autoHideDuration: PropTypes.number,\n\n /**\n * Replace the `SnackbarContent` component.\n */\n children: PropTypes.element,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * Props applied to the `ClickAwayListener` element.\n */\n ClickAwayListenerProps: PropTypes.object,\n\n /**\n * Props applied to the [`SnackbarContent`](/api/snackbar-content/) element.\n */\n ContentProps: PropTypes.object,\n\n /**\n * If `true`, the `autoHideDuration` timer will expire even if the window is not focused.\n */\n disableWindowBlurListener: PropTypes.bool,\n\n /**\n * When displaying multiple consecutive Snackbars from a parent rendering a single\n * <Snackbar/>, add the key prop to ensure independent treatment of each message.\n * e.g. <Snackbar key={message} />, otherwise, the message may update-in-place and\n * features such as autoHideDuration may be canceled.\n */\n key: PropTypes.any,\n\n /**\n * The message to display.\n */\n message: PropTypes.node,\n\n /**\n * Callback fired when the component requests to be closed.\n * Typically `onClose` is used to set state in the parent component,\n * which is used to control the `Snackbar` `open` prop.\n * The `reason` parameter can optionally be used to control the response to `onClose`,\n * for example ignoring `clickaway`.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"timeout\"` (`autoHideDuration` expired), `\"clickaway\"`.\n */\n onClose: PropTypes.func,\n\n /**\n * Callback fired before the transition is entering.\n * @deprecated Use the `TransitionProps` prop instead.\n */\n onEnter: deprecatedPropType(PropTypes.func, 'Use the `TransitionProps` prop instead.'),\n\n /**\n * Callback fired when the transition has entered.\n * @deprecated Use the `TransitionProps` prop instead.\n */\n onEntered: deprecatedPropType(PropTypes.func, 'Use the `TransitionProps` prop instead.'),\n\n /**\n * Callback fired when the transition is entering.\n * @deprecated Use the `TransitionProps` prop instead.\n */\n onEntering: deprecatedPropType(PropTypes.func, 'Use the `TransitionProps` prop instead.'),\n\n /**\n * Callback fired before the transition is exiting.\n * @deprecated Use the `TransitionProps` prop instead.\n */\n onExit: deprecatedPropType(PropTypes.func, 'Use the `TransitionProps` prop instead.'),\n\n /**\n * Callback fired when the transition has exited.\n * @deprecated Use the `TransitionProps` prop instead.\n */\n onExited: deprecatedPropType(PropTypes.func, 'Use the `TransitionProps` prop instead.'),\n\n /**\n * Callback fired when the transition is exiting.\n * @deprecated Use the `TransitionProps` prop instead.\n */\n onExiting: deprecatedPropType(PropTypes.func, 'Use the `TransitionProps` prop instead.'),\n\n /**\n * @ignore\n */\n onMouseEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onMouseLeave: PropTypes.func,\n\n /**\n * If `true`, `Snackbar` is open.\n */\n open: PropTypes.bool,\n\n /**\n * The number of milliseconds to wait before dismissing after user interaction.\n * If `autoHideDuration` prop isn't specified, it does nothing.\n * If `autoHideDuration` prop is specified but `resumeHideDuration` isn't,\n * we default to `autoHideDuration / 2` ms.\n */\n resumeHideDuration: PropTypes.number,\n\n /**\n * The component used for the transition.\n * [Follow this guide](/components/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n\n /**\n * Props applied to the [`Transition`](http://reactcommunity.org/react-transition-group/transition#Transition-props) element.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n flip: false,\n name: 'MuiSnackbar'\n})(Snackbar);","import * as React from 'react';\nimport { createSvgIcon } from '@material-ui/core/utils';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z\"\n}), 'SuccessOutlined');","import * as React from 'react';\nimport { createSvgIcon } from '@material-ui/core/utils';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\"\n}), 'ReportProblemOutlined');","import * as React from 'react';\nimport { createSvgIcon } from '@material-ui/core/utils';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline');","import * as React from 'react';\nimport { createSvgIcon } from '@material-ui/core/utils';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z\"\n}), 'InfoOutlined');","import * as React from 'react';\nimport { createSvgIcon } from '@material-ui/core/utils';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { withStyles, lighten, darken } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport SuccessOutlinedIcon from '../internal/svg-icons/SuccessOutlined';\nimport ReportProblemOutlinedIcon from '../internal/svg-icons/ReportProblemOutlined';\nimport ErrorOutlineIcon from '../internal/svg-icons/ErrorOutline';\nimport InfoOutlinedIcon from '../internal/svg-icons/InfoOutlined';\nimport CloseIcon from '../internal/svg-icons/Close';\nimport IconButton from '@material-ui/core/IconButton';\nimport { capitalize } from '@material-ui/core/utils';\nexport var styles = function styles(theme) {\n var getColor = theme.palette.type === 'light' ? darken : lighten;\n var getBackgroundColor = theme.palette.type === 'light' ? lighten : darken;\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.body2, {\n borderRadius: theme.shape.borderRadius,\n backgroundColor: 'transparent',\n display: 'flex',\n padding: '6px 16px'\n }),\n\n /* Styles applied to the root element if `variant=\"standard\"` and `color=\"success\"`. */\n standardSuccess: {\n color: getColor(theme.palette.success.main, 0.6),\n backgroundColor: getBackgroundColor(theme.palette.success.main, 0.9),\n '& $icon': {\n color: theme.palette.success.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"standard\"` and `color=\"info\"`. */\n standardInfo: {\n color: getColor(theme.palette.info.main, 0.6),\n backgroundColor: getBackgroundColor(theme.palette.info.main, 0.9),\n '& $icon': {\n color: theme.palette.info.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"standard\"` and `color=\"warning\"`. */\n standardWarning: {\n color: getColor(theme.palette.warning.main, 0.6),\n backgroundColor: getBackgroundColor(theme.palette.warning.main, 0.9),\n '& $icon': {\n color: theme.palette.warning.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"standard\"` and `color=\"error\"`. */\n standardError: {\n color: getColor(theme.palette.error.main, 0.6),\n backgroundColor: getBackgroundColor(theme.palette.error.main, 0.9),\n '& $icon': {\n color: theme.palette.error.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"success\"`. */\n outlinedSuccess: {\n color: getColor(theme.palette.success.main, 0.6),\n border: \"1px solid \".concat(theme.palette.success.main),\n '& $icon': {\n color: theme.palette.success.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"info\"`. */\n outlinedInfo: {\n color: getColor(theme.palette.info.main, 0.6),\n border: \"1px solid \".concat(theme.palette.info.main),\n '& $icon': {\n color: theme.palette.info.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"warning\"`. */\n outlinedWarning: {\n color: getColor(theme.palette.warning.main, 0.6),\n border: \"1px solid \".concat(theme.palette.warning.main),\n '& $icon': {\n color: theme.palette.warning.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"error\"`. */\n outlinedError: {\n color: getColor(theme.palette.error.main, 0.6),\n border: \"1px solid \".concat(theme.palette.error.main),\n '& $icon': {\n color: theme.palette.error.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"filled\"` and `color=\"success\"`. */\n filledSuccess: {\n color: '#fff',\n fontWeight: theme.typography.fontWeightMedium,\n backgroundColor: theme.palette.success.main\n },\n\n /* Styles applied to the root element if `variant=\"filled\"` and `color=\"info\"`. */\n filledInfo: {\n color: '#fff',\n fontWeight: theme.typography.fontWeightMedium,\n backgroundColor: theme.palette.info.main\n },\n\n /* Styles applied to the root element if `variant=\"filled\"` and `color=\"warning\"`. */\n filledWarning: {\n color: '#fff',\n fontWeight: theme.typography.fontWeightMedium,\n backgroundColor: theme.palette.warning.main\n },\n\n /* Styles applied to the root element if `variant=\"filled\"` and `color=\"error\"`. */\n filledError: {\n color: '#fff',\n fontWeight: theme.typography.fontWeightMedium,\n backgroundColor: theme.palette.error.main\n },\n\n /* Styles applied to the icon wrapper element. */\n icon: {\n marginRight: 12,\n padding: '7px 0',\n display: 'flex',\n fontSize: 22,\n opacity: 0.9\n },\n\n /* Styles applied to the message wrapper element. */\n message: {\n padding: '8px 0'\n },\n\n /* Styles applied to the action wrapper element if `action` is provided. */\n action: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto',\n paddingLeft: 16,\n marginRight: -8\n }\n };\n};\nvar defaultIconMapping = {\n success: /*#__PURE__*/React.createElement(SuccessOutlinedIcon, {\n fontSize: \"inherit\"\n }),\n warning: /*#__PURE__*/React.createElement(ReportProblemOutlinedIcon, {\n fontSize: \"inherit\"\n }),\n error: /*#__PURE__*/React.createElement(ErrorOutlineIcon, {\n fontSize: \"inherit\"\n }),\n info: /*#__PURE__*/React.createElement(InfoOutlinedIcon, {\n fontSize: \"inherit\"\n })\n};\n\nvar _ref = /*#__PURE__*/React.createElement(CloseIcon, {\n fontSize: \"small\"\n});\n\nvar Alert = /*#__PURE__*/React.forwardRef(function Alert(props, ref) {\n var action = props.action,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$closeText = props.closeText,\n closeText = _props$closeText === void 0 ? 'Close' : _props$closeText,\n color = props.color,\n icon = props.icon,\n _props$iconMapping = props.iconMapping,\n iconMapping = _props$iconMapping === void 0 ? defaultIconMapping : _props$iconMapping,\n onClose = props.onClose,\n _props$role = props.role,\n role = _props$role === void 0 ? 'alert' : _props$role,\n _props$severity = props.severity,\n severity = _props$severity === void 0 ? 'success' : _props$severity,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"action\", \"children\", \"classes\", \"className\", \"closeText\", \"color\", \"icon\", \"iconMapping\", \"onClose\", \"role\", \"severity\", \"variant\"]);\n\n return /*#__PURE__*/React.createElement(Paper, _extends({\n role: role,\n square: true,\n elevation: 0,\n className: clsx(classes.root, classes[\"\".concat(variant).concat(capitalize(color || severity))], className),\n ref: ref\n }, other), icon !== false ? /*#__PURE__*/React.createElement(\"div\", {\n className: classes.icon\n }, icon || iconMapping[severity] || defaultIconMapping[severity]) : null, /*#__PURE__*/React.createElement(\"div\", {\n className: classes.message\n }, children), action != null ? /*#__PURE__*/React.createElement(\"div\", {\n className: classes.action\n }, action) : null, action == null && onClose ? /*#__PURE__*/React.createElement(\"div\", {\n className: classes.action\n }, /*#__PURE__*/React.createElement(IconButton, {\n size: \"small\",\n \"aria-label\": closeText,\n title: closeText,\n color: \"inherit\",\n onClick: onClose\n }, _ref)) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? Alert.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The action to display. It renders after the message, at the end of the alert.\n */\n action: PropTypes.node,\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * Override the default label for the *close popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/guides/localization/).\n */\n closeText: PropTypes.string,\n\n /**\n * The main color for the alert. Unless provided, the value is taken from the `severity` prop.\n */\n color: PropTypes.oneOf(['error', 'info', 'success', 'warning']),\n\n /**\n * Override the icon displayed before the children.\n * Unless provided, the icon is mapped to the value of the `severity` prop.\n */\n icon: PropTypes.node,\n\n /**\n * The component maps the `severity` prop to a range of different icons,\n * for instance success to `<SuccessOutlined>`.\n * If you wish to change this mapping, you can provide your own.\n * Alternatively, you can use the `icon` prop to override the icon displayed.\n */\n iconMapping: PropTypes.shape({\n error: PropTypes.node,\n info: PropTypes.node,\n success: PropTypes.node,\n warning: PropTypes.node\n }),\n\n /**\n * Callback fired when the component requests to be closed.\n * When provided and no `action` prop is set, a close icon button is displayed that triggers the callback when clicked.\n *\n * @param {object} event The event source of the callback.\n */\n onClose: PropTypes.func,\n\n /**\n * The ARIA role attribute of the element.\n */\n role: PropTypes.string,\n\n /**\n * The severity of the alert. This defines the color and icon used.\n */\n severity: PropTypes.oneOf(['error', 'info', 'success', 'warning']),\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiAlert'\n})(Alert);","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { get, isEqual } from 'lodash';\nimport { Snackbar, withStyles } from '@material-ui/core';\n\nimport MuiAlert from '@material-ui/lab/Alert';\nimport CheckIcon from '@material-ui/icons/Check';\nimport ReportProblemOutlinedIcon from '@material-ui/icons/ReportProblemOutlined';\nimport { messageTypes } from '../../../constants';\n\nimport { useMessage } from '../../context/MessageContext';\n\nconst styles = theme => ({\n content: {\n ...theme.typography.body2,\n alignItems: 'center',\n backgroundColor: ({ message }) => {\n let backgroundColor;\n\n switch (get(message, 'type')) {\n case messageTypes.Error:\n backgroundColor = theme.palette.error.light;\n break;\n case messageTypes.Success:\n backgroundColor = theme.palette.success.light;\n break;\n case messageTypes.Warning:\n backgroundColor = theme.palette.warning.light;\n break;\n case messageTypes.Info:\n backgroundColor = theme.palette.info.light;\n break;\n default:\n backgroundColor = theme.palette.grey['100'];\n break;\n }\n return backgroundColor;\n },\n borderRadius: 0,\n boxShadow: 'none',\n color: theme.palette.text.primary,\n display: 'flex',\n padding: '.8rem 1.5rem',\n '& .MuiAlert-icon > svg': {\n fill: ({ message }) => {\n let fillColor;\n\n switch (get(message, 'type')) {\n case messageTypes.Error:\n fillColor = theme.palette.error.main;\n break;\n case messageTypes.Success:\n fillColor = theme.palette.success.main;\n break;\n case messageTypes.Warning:\n fillColor = theme.palette.warning.main;\n break;\n case messageTypes.Info:\n fillColor = theme.palette.info.main;\n break;\n default:\n fillColor = theme.palette.grey['800'];\n break;\n }\n return fillColor;\n },\n },\n '& .MuiAlert-message': {\n paddingTop: '11px',\n },\n },\n});\n\nfunction Alert(props) {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nfunction Message({ classes, message }) {\n const { removeMessage } = useMessage();\n\n const id = get(message, 'id');\n const text = get(message, 'text');\n\n const closeMessage = useCallback(\n (event, reason) => {\n if (isEqual(reason, 'clickaway')) {\n return;\n }\n removeMessage(id);\n },\n [removeMessage, id],\n );\n // eslint-disable-next-line no-console\n\n return (\n <Snackbar\n autoHideDuration={4000}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n onClose={closeMessage}\n open>\n <Alert\n onClose={closeMessage}\n className={classes.content}\n severity={get(message, 'type').toLowerCase()}\n iconMapping={{\n success: <CheckIcon fontSize=\"inherit\" />,\n error: <ReportProblemOutlinedIcon fontSize=\"inherit\" />,\n }}>\n {text}\n </Alert>\n </Snackbar>\n );\n}\n\nMessage.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n message: PropTypes.object,\n};\n\nMessage.defaultProps = {\n message: null,\n classes: {},\n className: null,\n};\n\nexport default withStyles(styles)(Message);\n","import React from 'react';\n\nimport { get, map } from 'lodash';\n\nimport { useMessage } from '../../../context/MessageContext';\n\nimport Message from '../Message';\n\nfunction MessageQueue() {\n const { messages } = useMessage();\n\n return map(messages, message => <Message key={get(message, 'id')} message={message} />);\n}\n\nMessageQueue.propTypes = {};\n\nMessageQueue.defaultProps = {};\n\nexport default MessageQueue;\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId } from '../../../sites';\n\nimport ViinimaaMessageQueue from './viinimaa';\n\nfunction MessageQueue(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return <ViinimaaMessageQueue {...props} />;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return <ViinimaaMessageQueue {...props} />;\n }\n if (isEqual(siteId, siteIds.AnoraPro)) {\n return <ViinimaaMessageQueue {...props} />;\n }\n\n return null;\n}\n\nexport default MessageQueue;\n","import React, { useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { find, get, isEmpty } from 'lodash';\nimport { Drawer, IconButton, Toolbar, Typography, withStyles } from '@material-ui/core';\nimport { Close } from '@material-ui/icons';\n// eslint-disable-next-line import/no-unresolved\nimport { useLocation } from '@reach/router';\n\nimport { useDrawer } from '../../../context/DrawerContext';\n\nimport NavigationElements from '../../NavigationElements';\n\nconst styles = theme => ({\n root: {},\n content: {\n overflow: 'auto',\n },\n toolbar: {\n padding: '15px',\n justifyContent: 'space-between',\n },\n iconButton: {\n padding: '10px',\n },\n icon: {\n fontSize: '2rem',\n color: theme.palette.secondary.main,\n },\n});\n\nfunction getActiveNavigationElement(navigationElements, pathname) {\n return find(navigationElements, {\n pageReference: {\n fullPath: pathname,\n },\n });\n}\n\nfunction AdditionalNavigation({ classes, className }) {\n const { pathname } = useLocation();\n const { closeDrawer, isDrawerOpen, drawerData } = useDrawer();\n\n const drawerOpen = isDrawerOpen('AdditionalNavigationDrawer');\n\n const navigationElements = useMemo(() => {\n return get(drawerData, 'additionalNavigation.flattenedNavigationElements');\n }, [drawerData]);\n\n const activeNavigationElementTitle = useMemo(() => {\n const activeNavigationElement = getActiveNavigationElement(navigationElements, pathname);\n\n let title = get(activeNavigationElement, 'pageReference.menuTitle');\n if (isEmpty(title)) {\n title = get(activeNavigationElement, 'pageReference.title');\n }\n\n return title;\n }, [navigationElements, pathname]);\n\n const handleNavigationElementClick = useCallback(() => {\n closeDrawer();\n }, [closeDrawer]);\n\n return (\n <Drawer anchor=\"left\" className={clsx(classes.root, className)} open={drawerOpen} onClose={closeDrawer}>\n <Toolbar className={classes.toolbar}>\n <Typography variant=\"h3\">{activeNavigationElementTitle}</Typography>\n <IconButton edge=\"end\" aria-label=\"close\" className={classes.iconButton} onClick={closeDrawer}>\n <Close className={classes.icon} />\n </IconButton>\n </Toolbar>\n <div className={classes.content}>\n <NavigationElements data={navigationElements} onNavigationElementClick={handleNavigationElementClick} />\n </div>\n </Drawer>\n );\n}\n\nAdditionalNavigation.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.object,\n children: PropTypes.func,\n};\n\nAdditionalNavigation.defaultProps = {\n classes: {},\n className: {},\n children: () => {},\n};\n\nexport default withStyles(styles)(AdditionalNavigation);\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId } from '../../../sites';\n\nimport ViinimaaAdditionalNavigation from './viinimaa';\n\nfunction AdditionalNavigation(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return <ViinimaaAdditionalNavigation {...props} />;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return <ViinimaaAdditionalNavigation {...props} />;\n }\n\n return null;\n}\n\nexport default AdditionalNavigation;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { viewPage } from '../../../../utils/analyticUtils';\n\nimport MessageQueue from '../../MessageQueue';\nimport AdditionalNavigation from '../../../navigation/AdditionalNavigation';\n\nfunction PageWrapper({ element }) {\n useEffect(() => {\n viewPage();\n });\n\n return (\n <>\n <MessageQueue />\n <AdditionalNavigation />\n {element}\n </>\n );\n}\n\nPageWrapper.propTypes = {\n element: PropTypes.node,\n props: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n};\n\nPageWrapper.defaultProps = {\n element: null,\n props: null,\n};\n\nexport default PageWrapper;\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId, brandSite } from '../../../sites';\n\nimport ViinimaaPageWrapper from './viinimaa';\n\nfunction PageWrapper(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return <ViinimaaPageWrapper {...props} />;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return <ViinimaaPageWrapper {...props} />;\n }\n if (brandSite) {\n return <ViinimaaPageWrapper {...props} />;\n }\n\n return null;\n}\n\nexport default PageWrapper;\n","/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable react/prop-types */\n\nimport React from 'react';\n\nimport RootWrapper from '../../src/components/layout/RootWrapper';\nimport PageWrapper from '../../src/components/layout/PageWrapper';\n\nexport const wrapRootElement = props => {\n return <RootWrapper {...props} />;\n};\n\nexport const wrapPageElement = props => {\n return <PageWrapper {...props} />;\n};\n","import React, { createContext, useContext, useMemo, useReducer } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { get, isNil } from 'lodash';\n\nconst ActiveNavigationContext = createContext({\n activeNav: {},\n updateActiveNav: () => {},\n clearActiveNav: () => {},\n});\n\nconst initialState = {};\n\nfunction reducer(state, action) {\n switch (get(action, 'type')) {\n case 'updateActiveNav': {\n const navData = get(action, 'payload.navData');\n return { ...state, activeNav: navData };\n }\n case 'clearActiveNav': {\n return initialState;\n }\n default: {\n throw new Error(`Unhandled action type: ${get(action, 'type')}`);\n }\n }\n}\n\nexport function ActiveNavigationProvider({ children }) {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const contextValue = useMemo(() => {\n const updateActiveNav = navData => {\n dispatch({ type: 'updateActiveNav', payload: { navData } });\n };\n const clearActiveNav = () => {\n dispatch({ type: 'clearActiveNav', payload: {} });\n };\n\n return {\n activeNav: get(state, 'activeNav'),\n updateActiveNav,\n clearActiveNav,\n };\n }, [state]);\n\n return <ActiveNavigationContext.Provider value={contextValue}>{children}</ActiveNavigationContext.Provider>;\n}\n\nActiveNavigationProvider.propTypes = {\n children: PropTypes.node,\n};\n\nActiveNavigationProvider.defaultProps = {\n children: null,\n};\n\nexport function useActiveNavigation() {\n const context = useContext(ActiveNavigationContext);\n if (isNil(context)) {\n throw new Error('useActiveNavigation must be used within a DrawerProvider');\n }\n return context;\n}\n","import React, { createContext, useContext, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { get, filter, isEqual, isNil } from 'lodash';\nimport { useStaticQuery, graphql } from 'gatsby';\n\nconst ContentContext = createContext({\n getContentData: () => null,\n});\n\nexport function ContentProvider({ children }) {\n const query = useStaticQuery(graphql`\n query ContentProvider {\n allContentfulArticlePage {\n nodes {\n __typename\n id\n title\n fullPath\n menuTitle\n node_locale\n contentful_id\n shortDescription\n primaryChannel {\n channel\n }\n heroImage {\n imageTitleText\n imageAltText\n cloudinaryImage {\n public_id\n }\n }\n categories {\n fullPath\n title\n id\n }\n }\n }\n allContentfulLandingPage {\n nodes {\n __typename\n id\n fullPath\n menuTitle\n node_locale\n contentful_id\n shortDescription\n primaryChannel {\n channel\n }\n heroImage {\n imageTitleText\n imageAltText\n cloudinaryImage {\n public_id\n }\n }\n }\n }\n allContentfulAdvancedPage {\n nodes {\n __typename\n id\n fullPath\n menuTitle\n title\n node_locale\n contentful_id\n shortDescription\n primaryChannel {\n channel\n }\n heroImage {\n imageTitleText\n imageAltText\n cloudinaryImage {\n public_id\n }\n }\n }\n }\n allContentfulBrand {\n nodes {\n __typename\n id\n title\n fullPath\n menuTitle\n node_locale\n contentful_id\n shortDescription\n primaryChannel {\n channel\n }\n heroImage {\n imageTitleText\n imageAltText\n cloudinaryImage {\n public_id\n }\n }\n categories {\n fullPath\n title\n id\n }\n }\n }\n allContentfulCategory {\n nodes {\n __typename\n id\n title\n alternativePage\n categoryType\n fullPath\n menuTitle\n node_locale\n contentful_id\n shortDescription\n primaryChannel {\n channel\n }\n heroImage {\n imageTitleText\n imageAltText\n cloudinaryImage {\n public_id\n }\n }\n }\n }\n allContentfulRecipePage {\n nodes {\n __typename\n id\n title\n fullPath\n menuTitle\n node_locale\n contentful_id\n shortDescription\n publishingDate\n primaryChannel {\n channel\n }\n heroImage {\n imageTitleText\n imageAltText\n cloudinaryImage {\n public_id\n }\n }\n categories {\n fullPath\n title\n id\n }\n }\n }\n allMagentoProduct {\n nodes {\n __typename\n id\n node_locale\n sku\n name\n price\n fullPath\n shortDescription\n primaryChannel {\n channel\n }\n heroImage {\n imageTitleText\n imageAltText\n cloudinaryImage {\n public_id\n }\n }\n brands {\n id\n title\n fullPath\n }\n categories {\n id\n title\n fullPath\n }\n\n attributes {\n ...ProductAttributesFragment\n }\n }\n }\n }\n `);\n\n const contextValue = useMemo(() => {\n const getContentData = channel => {\n const articlePageNodes = get(query, 'allContentfulArticlePage.nodes');\n const landingPageNodes = get(query, 'allContentfulLandingPage.nodes');\n const advancedPageNodes = get(query, 'allContentfulAdvancedPage.nodes');\n const brandNodes = get(query, 'allContentfulBrand.nodes');\n const recipePageNodes = get(query, 'allContentfulRecipePage.nodes');\n const productNodes = get(query, 'allMagentoProduct.nodes');\n const categorytNodes = get(query, 'allContentfulCategory.nodes');\n\n const filterByChannel = nodes => {\n return filter(nodes, node => {\n return isEqual(get(node, 'primaryChannel.channel'), get(channel, 'channel'));\n });\n };\n\n return {\n articlePages: filterByChannel(articlePageNodes),\n landingPages: filterByChannel(landingPageNodes),\n advancedPages: filterByChannel(advancedPageNodes),\n brands: filterByChannel(brandNodes),\n recipePages: filterByChannel(recipePageNodes),\n products: filterByChannel(productNodes),\n categories: filterByChannel(categorytNodes),\n };\n };\n\n return {\n getContentData,\n };\n }, [query]);\n\n return <ContentContext.Provider value={contextValue}>{children}</ContentContext.Provider>;\n}\n\nContentProvider.propTypes = {\n children: PropTypes.node,\n};\n\nContentProvider.defaultProps = {\n children: null,\n};\n\nexport function useContent() {\n const context = useContext(ContentContext);\n if (isNil(context)) {\n throw new Error('useContent must be used within a ContentProvider');\n }\n return context;\n}\n","import React, { createContext, useContext, useMemo, useReducer } from 'react';\nimport PropTypes from 'prop-types';\n\nimport isNil from 'lodash/isNil';\nimport get from 'lodash/get';\n\nconst ContentSearchContext = createContext({\n getSearchTerm: () => {},\n getSelectedCheckboxes: () => {},\n getResults: () => {},\n updateSearchTerm: () => {},\n updateSelectedCheckboxes: () => {},\n updateResults: () => {},\n clearSearch: () => {},\n});\n\nconst initialState = {};\n\nfunction reducer(state, action) {\n switch (get(action, 'type')) {\n case 'updateSearchTerm': {\n const searchTerm = get(action, 'payload.searchTerm');\n const pageTitle = get(action, 'payload.pageTitle');\n return {\n ...state,\n [pageTitle]: {\n ...state[pageTitle],\n searchTerm,\n },\n };\n }\n\n case 'updateSelectedCheckboxes': {\n const selectedCheckboxes = get(action, 'payload.selectedCheckboxes');\n const pageTitle = get(action, 'payload.pageTitle');\n return {\n ...state,\n [pageTitle]: {\n ...state[pageTitle],\n selectedCheckboxes,\n },\n };\n }\n case 'updateResults': {\n const results = get(action, 'payload.results');\n const pageTitle = get(action, 'payload.pageTitle');\n return {\n ...state,\n [pageTitle]: {\n ...state[pageTitle],\n results,\n },\n };\n }\n case 'clearSearch': {\n return initialState;\n }\n default: {\n throw new Error(`Unhandled action type: ${get(action, 'type')}`);\n }\n }\n}\n\nexport function ContentSearchContextProvider({ children }) {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const contextValue = useMemo(() => {\n const updateSearchTerm = (pageTitle, searchTerm) => {\n dispatch({ type: 'updateSearchTerm', payload: { pageTitle, searchTerm } });\n };\n\n const updateSelectedCheckboxes = (pageTitle, selectedCheckboxes) => {\n dispatch({ type: 'updateSelectedCheckboxes', payload: { pageTitle, selectedCheckboxes } });\n };\n\n const updateResults = (pageTitle, results) => {\n dispatch({ type: 'updateResults', payload: { pageTitle, results } });\n };\n\n const clearSearch = () => {\n dispatch({ type: 'cleanSearch', payload: {} });\n };\n\n return {\n getSearchTerm: pageTitle => {\n return get(state, `${pageTitle}.searchTerm`, '');\n },\n getSelectedCheckboxes: pageTitle => {\n return get(state, `${pageTitle}.selectedCheckboxes`, []);\n },\n getResults: pageTitle => {\n return get(state, `${pageTitle}.resutls`, []);\n },\n updateSearchTerm,\n updateSelectedCheckboxes,\n updateResults,\n clearSearch,\n };\n }, [state]);\n\n return <ContentSearchContext.Provider value={contextValue}>{children}</ContentSearchContext.Provider>;\n}\n\nContentSearchContextProvider.propTypes = {\n children: PropTypes.node,\n};\n\nContentSearchContextProvider.defaultProps = {\n children: null,\n};\n\nexport function useContentSearchContext() {\n const context = useContext(ContentSearchContext);\n if (isNil(context)) {\n throw new Error('Content Search Contex must be used within a ContentSearchContextProvider!');\n }\n return context;\n}\n","import React, { createContext, useContext, useMemo, useReducer } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { get, isEqual, isNil } from 'lodash';\n\nconst DialogContext = createContext({\n dialogData: null,\n openDialog: () => {},\n closeDialog: () => {},\n isDialogOpen: () => {},\n});\n\nconst initialState = { name: null, data: null };\n\nfunction reducer(state, action) {\n switch (get(action, 'type')) {\n case 'openDialog': {\n const name = get(action, 'payload.name');\n const data = get(action, 'payload.data');\n\n return { ...state, name, data };\n }\n case 'closeDialog': {\n return initialState;\n }\n default: {\n throw new Error(`Unhandled action type: ${get(action, 'type')}`);\n }\n }\n}\n\nexport function DialogProvider({ children }) {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const contextValue = useMemo(() => {\n const openDialog = (name, data) => {\n dispatch({ type: 'openDialog', payload: { name, data } });\n };\n\n const closeDialog = () => {\n dispatch({ type: 'closeDialog', payload: {} });\n };\n\n const isDialogOpen = name => {\n return isEqual(name, get(state, 'name'));\n };\n\n return {\n dialogData: get(state, 'data'),\n openDialog,\n closeDialog,\n isDialogOpen,\n };\n }, [state]);\n\n return <DialogContext.Provider value={contextValue}>{children}</DialogContext.Provider>;\n}\n\nDialogProvider.propTypes = {\n children: PropTypes.node,\n};\n\nDialogProvider.defaultProps = {\n children: null,\n};\n\nexport function useDialog() {\n const context = useContext(DialogContext);\n if (isNil(context)) {\n throw new Error('useDialog must be used within a DialogProvider');\n }\n return context;\n}\n","import React, { createContext, useContext, useMemo, useReducer } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { get, isEqual, isNil } from 'lodash';\n\nconst DrawerContext = createContext({\n drawerData: null,\n openDrawer: () => {},\n closeDrawer: () => {},\n isDrawerOpen: () => {},\n});\n\nconst initialState = { name: null, data: null };\n\nfunction reducer(state, action) {\n switch (get(action, 'type')) {\n case 'openDrawer': {\n const name = get(action, 'payload.name');\n const data = get(action, 'payload.data');\n\n return { ...state, name, data };\n }\n case 'closeDrawer': {\n return initialState;\n }\n default: {\n throw new Error(`Unhandled action type: ${get(action, 'type')}`);\n }\n }\n}\n\nexport function DrawerProvider({ children }) {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const contextValue = useMemo(() => {\n const openDrawer = (name, data) => {\n dispatch({ type: 'openDrawer', payload: { name, data } });\n };\n\n const closeDrawer = () => {\n dispatch({ type: 'closeDrawer', payload: {} });\n };\n\n const isDrawerOpen = name => {\n return isEqual(name, get(state, 'name'));\n };\n\n return {\n drawerData: get(state, 'data'),\n openDrawer,\n closeDrawer,\n isDrawerOpen,\n };\n }, [state]);\n\n return <DrawerContext.Provider value={contextValue}>{children}</DrawerContext.Provider>;\n}\n\nDrawerProvider.propTypes = {\n children: PropTypes.node,\n};\n\nDrawerProvider.defaultProps = {\n children: null,\n};\n\nexport function useDrawer() {\n const context = useContext(DrawerContext);\n if (isNil(context)) {\n throw new Error('useDrawer must be used within a DrawerProvider');\n }\n return context;\n}\n","/* eslint-disable dot-notation */\nimport React, { createContext, useContext, useMemo, useReducer } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { get, isNil } from 'lodash';\n\nconst KlevuSearchContext = createContext({\n updateIsInputOpen: () => {},\n isInputReady: false,\n isInputOpen: false,\n});\n\nconst initialState = {\n isInputOpen: false,\n};\n\nfunction reducer(state, action) {\n switch (get(action, 'type')) {\n case 'updateIsInputOpen': {\n const isInputOpen = get(action, 'payload.isInputOpen');\n return { ...state, isInputOpen };\n }\n default: {\n throw new Error(`Unhandled action type: ${get(action, 'type')}`);\n }\n }\n}\n\nexport function KlevuSearchProvider({ children }) {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const contextValue = useMemo(() => {\n const updateIsInputOpen = isInputOpen => {\n dispatch({ type: 'updateIsInputOpen', payload: { isInputOpen } });\n };\n\n return {\n isInputOpen: get(state, 'isInputOpen'),\n updateIsInputOpen,\n };\n }, [state]);\n\n return <KlevuSearchContext.Provider value={contextValue}>{children}</KlevuSearchContext.Provider>;\n}\n\nKlevuSearchProvider.propTypes = {\n children: PropTypes.node,\n};\n\nKlevuSearchProvider.defaultProps = {\n children: null,\n};\n\nexport function useKlevuSearch() {\n const context = useContext(KlevuSearchContext);\n if (isNil(context)) {\n throw new Error('useKlevuSearch must be used within a DrawerProvider');\n }\n return context;\n}\n","import React, { createContext, useContext, useMemo, useReducer } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isNil, uniqueId } from 'lodash';\n\nimport get from 'lodash/get';\nimport concat from 'lodash/concat';\nimport filter from 'lodash/filter';\nimport isEqual from 'lodash/isEqual';\n\nimport { messageTypes } from '../../constants';\n\nconst MessageContext = createContext({\n messages: [],\n removeMessage: () => {},\n createErrorMessage: () => {},\n createInfoMessage: () => {},\n createWarningMessage: () => {},\n createSuccessMessage: () => {},\n});\n\nconst initialState = [];\n\nfunction reducer(state, action) {\n switch (get(action, 'type')) {\n case 'createMessage': {\n return concat([], state, {\n id: get(action, 'payload.id'),\n type: get(action, 'payload.type'),\n text: get(action, 'payload.text'),\n options: get(action, 'payload.options'),\n route: get(action, 'payload.route'),\n });\n }\n case 'removeMessage': {\n return filter(state, message => !isEqual(get(message, 'id'), get(action, 'payload.id')));\n }\n default: {\n throw new Error(`Unhandled action type: ${get(action, 'type')}`);\n }\n }\n}\n\nexport function MessageProvider({ children }) {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const contextValue = useMemo(() => {\n const removeMessage = id => {\n dispatch({\n type: 'removeMessage',\n payload: { id },\n });\n };\n\n const createErrorMessage = (text, options, route) => {\n dispatch({\n type: 'createMessage',\n payload: { id: uniqueId(messageTypes.Error), type: messageTypes.Error, text, options, route },\n });\n };\n\n const createInfoMessage = (text, options, route) => {\n dispatch({\n type: 'createMessage',\n payload: { id: uniqueId(messageTypes.Info), type: messageTypes.Info, text, options, route },\n });\n };\n\n const createWarningMessage = (text, options, route) => {\n dispatch({\n type: 'createMessage',\n payload: { id: uniqueId(messageTypes.Warning), type: messageTypes.Warning, text, options, route },\n });\n };\n\n const createSuccessMessage = (text, options, route) => {\n dispatch({\n type: 'createMessage',\n payload: { id: uniqueId(messageTypes.Success), type: messageTypes.Success, text, options, route },\n });\n };\n\n return {\n messages: state,\n removeMessage,\n createErrorMessage,\n createInfoMessage,\n createWarningMessage,\n createSuccessMessage,\n };\n }, [state]);\n\n return <MessageContext.Provider value={contextValue}>{children}</MessageContext.Provider>;\n}\n\nMessageProvider.propTypes = {\n children: PropTypes.any,\n};\n\nMessageProvider.defaultProps = {\n children: null,\n};\n\nexport function useMessage() {\n const context = useContext(MessageContext);\n if (isNil(context)) {\n throw new Error('useMessage must be used within a MessageProvider');\n }\n return context;\n}\n","import React, { createContext, useContext, useMemo, useReducer } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { get, isEqual, isNil } from 'lodash';\n\nconst PopUpContext = createContext({\n hasBeenClosed: false,\n openPopUp: () => {},\n closePopUp: () => {},\n isPopUpOpen: () => {},\n});\n\nconst initialState = { name: null, hasBeenClosed: false };\n\nfunction reducer(state, action) {\n switch (get(action, 'type')) {\n case 'openPopUp': {\n const name = get(action, 'payload.name');\n\n return { ...state, name };\n }\n case 'closePopUp': {\n return { name: null, hasBeenClosed: true };\n }\n\n default: {\n throw new Error(`Unhandled action type: ${get(action, 'type')}`);\n }\n }\n}\n\nexport function PopUpProvider({ children }) {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const contextValue = useMemo(() => {\n const openPopUp = name => {\n dispatch({ type: 'openPopUp', payload: { name } });\n };\n\n const closePopUp = () => {\n dispatch({ type: 'closePopUp', payload: {} });\n };\n\n const isPopUpOpen = name => {\n return isEqual(name, get(state, 'name'));\n };\n\n return {\n hasBeenClosed: get(state, 'hasBeenClosed'),\n openPopUp,\n closePopUp,\n isPopUpOpen,\n };\n }, [state]);\n\n return <PopUpContext.Provider value={contextValue}>{children}</PopUpContext.Provider>;\n}\n\nPopUpProvider.propTypes = {\n children: PropTypes.node,\n};\n\nPopUpProvider.defaultProps = {\n children: null,\n};\n\nexport function usePopUp() {\n const context = useContext(PopUpContext);\n if (isNil(context)) {\n throw new Error('usePopUp must be used within a DialogProvider');\n }\n return context;\n}\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { Link as GatsbyLink } from 'gatsby';\nimport { Link as MuiLink, withStyles } from '@material-ui/core';\nimport { isEmpty } from 'lodash';\n\nconst styles = () => ({\n root: {},\n});\n\nfunction Link({ classes, className, children, to, target, ...otherProps }) {\n const internal = useMemo(() => /^\\/(?!\\/)/.test(to), [to]);\n\n if (isEmpty(to)) {\n return (\n <span {...otherProps} className={clsx(classes.root, className)}>\n {children}\n </span>\n );\n }\n if (internal && target !== '_blank') {\n return (\n <MuiLink {...otherProps} component={GatsbyLink} className={clsx(classes.root, className)} to={to}>\n {children}\n </MuiLink>\n );\n }\n\n return (\n <MuiLink {...otherProps} target={target} className={clsx(classes.root, className)} href={to}>\n {children}\n </MuiLink>\n );\n}\n\nLink.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n children: PropTypes.node,\n to: PropTypes.string,\n target: PropTypes.string,\n};\n\nLink.defaultProps = {\n classes: {},\n className: null,\n children: null,\n to: null,\n target: null,\n};\n\nexport default withStyles(styles)(Link);\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId, brandSite } from '../../../sites';\n\nimport ViinimaaLink from './viinimaa';\n\nfunction Link(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return <ViinimaaLink {...props} />;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return <ViinimaaLink {...props} />;\n }\n if (brandSite) {\n return <ViinimaaLink {...props} />;\n }\n\n return null;\n}\n\nexport default Link;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n position: 'absolute',\n right: 16,\n top: '50%',\n transform: 'translateY(-50%)'\n }\n};\n/**\n * Must be used as the last child of ListItem to function properly.\n */\n\nvar ListItemSecondaryAction = /*#__PURE__*/React.forwardRef(function ListItemSecondaryAction(props, ref) {\n var classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"classes\", \"className\"]);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemSecondaryAction.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component, normally an `IconButton` or selection control.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\nexport default withStyles(styles, {\n name: 'MuiListItemSecondaryAction'\n})(ListItemSecondaryAction);","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { get, isEmpty, map, filter, find, isEqual } from 'lodash';\nimport {\n ButtonBase,\n IconButton,\n List,\n ListItem,\n ListItemSecondaryAction,\n Typography,\n withStyles,\n} from '@material-ui/core';\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\nimport { useTranslation } from 'react-i18next';\n// eslint-disable-next-line import/no-unresolved\nimport { useLocation } from '@reach/router';\n\nimport Visible from '../../../shared/Visible';\nimport Link from '../../Link';\n\nconst styles = theme => ({\n root: {\n padding: '0',\n },\n subNavigationTitleBar: {\n display: 'block',\n minHeight: '56px',\n backgroundColor: theme.palette.mobileNavigation.subNavigationTitleBackground,\n padding: '12px 12px 12px 20px',\n },\n subNavigationTitleWrapper: {\n display: 'flex',\n justifyContent: 'space-between',\n alignContent: 'center',\n alignItems: 'center',\n '&:hover': {\n textDecoration: 'none',\n },\n },\n subNavigationTitle: {\n color: theme.palette.mobileNavigation.subNavigationTitleColor,\n fontSize: '22px',\n fontWeight: 'bold',\n },\n BackIconWrapper: { padding: '8px' },\n iconWrapper: { padding: '8px' },\n icon: { fontSize: '1.3rem', color: theme.palette.mobileNavigation.icon, margin: '4px' },\n label: {\n color: theme.palette.mobileNavigation.text,\n marginLeft: '10px',\n fontSize: '14px',\n fontWeight: 'bold',\n letterSpacing: '0.4px',\n textTransform: 'uppercase',\n },\n listItem: {\n padding: '0 ',\n borderBottom: `1px solid ${theme.palette.mobileNavigation.navigationElementBorder}`,\n },\n listItemTextRight: {\n flexGrow: '1',\n marginRight: '48px',\n },\n buttonBase: { height: '56px' },\n\n listItemTextLeft: {\n flexGrow: '1',\n padding: ' 0 0 0 10px',\n },\n link: {\n color: theme.palette.mobileNavigation.text,\n display: 'block',\n fontSize: '14px',\n fontWeight: 'bold',\n letterSpacing: '0.4px',\n padding: '12px 12px 12px 20px',\n textTransform: 'uppercase',\n },\n activeLink: {\n color: theme.palette.header.navigation.activeLink,\n },\n secondaryActionRight: {\n right: '0',\n },\n listItemBottom: {},\n});\n\nfunction getActiveNavigationElement(navigationElements, pathname) {\n return find(navigationElements, {\n pageReference: {\n fullPath: pathname,\n },\n });\n}\n\nfunction getFilteredNavigationElements(navigationElements, parentNavigationElement) {\n return filter(navigationElements, navigationElement => {\n return isEqual(get(navigationElement, 'parentNavigationElement.id'), get(parentNavigationElement, 'id'));\n });\n}\n\nfunction getNavigationElement(navigationElements, navigationElementId) {\n const navigationElement = find(navigationElements, {\n id: navigationElementId,\n });\n\n return isEmpty(navigationElement) ? null : navigationElement;\n}\n\nfunction NavigationElements({ classes, className, data: navigationElements, onNavigationElementClick }) {\n const { t } = useTranslation();\n const { pathname } = useLocation();\n\n const [parentNavigationElement, setParentNavigationElement] = useState(null);\n\n const activeNavigationElement = useMemo(() => {\n return getActiveNavigationElement(navigationElements, pathname);\n }, [navigationElements, pathname]);\n\n const filteredNavigationElements = useMemo(() => {\n return getFilteredNavigationElements(navigationElements, parentNavigationElement);\n }, [navigationElements, parentNavigationElement]);\n\n const handleBackClick = useCallback(() => {\n const navigationElementId = get(parentNavigationElement, 'parentNavigationElement.id');\n const navigationElement = getNavigationElement(navigationElements, navigationElementId);\n setParentNavigationElement(navigationElement);\n }, [navigationElements, parentNavigationElement]);\n\n const handleIconClick = useCallback(\n navigationElement => () => {\n setParentNavigationElement(navigationElement);\n },\n [],\n );\n\n const handleLinkClick = useCallback(\n navigationElement => () => {\n onNavigationElementClick(navigationElement);\n },\n [onNavigationElementClick],\n );\n\n useEffect(() => {\n const navigationElementId = get(activeNavigationElement, 'parentNavigationElement.id');\n const navigationElement = getNavigationElement(navigationElements, navigationElementId);\n setParentNavigationElement(navigationElement);\n }, [navigationElements, activeNavigationElement]);\n\n const parentPage = {\n fullPath: get(parentNavigationElement, 'pageReference.fullPath'),\n title: get(parentNavigationElement, 'pageReference.title'),\n };\n\n if (isEmpty(parentPage.title) && !isEmpty(parentNavigationElement)) {\n parentPage.title = get(parentNavigationElement, 'title');\n }\n\n return (\n <List component=\"nav\" className={clsx(classes.root, className)}>\n <Visible hidden={isEmpty(parentNavigationElement)}>\n <ListItem className={classes.subNavigationTitleBar}>\n <Link\n to={parentPage.fullPath}\n onClick={handleLinkClick(parentNavigationElement)}\n className={classes.subNavigationTitleWrapper}>\n <Typography className={classes.subNavigationTitle}>{parentPage.title}</Typography>\n <KeyboardArrowRight className={classes.icon} />\n </Link>\n </ListItem>\n\n <ListItem key=\"back\" className={classes.listItem}>\n <div className={classes.listItemTextLeft}>\n <ButtonBase onClick={handleBackClick} className={classes.BackIconWrapper}>\n <KeyboardArrowLeft className={classes.icon} />\n <Typography className={classes.label}>{t('navigation.back.label')}</Typography>\n </ButtonBase>\n </div>\n </ListItem>\n <div className={classes.listItemBottom} />\n </Visible>\n {map(filteredNavigationElements, navigationElement => {\n const navigationElementId = get(navigationElement, 'id');\n const subNavigationElements = get(navigationElement, 'subNavigationElements');\n const fullPath = get(navigationElement, 'pageReference.fullPath');\n\n let title = get(navigationElement, 'pageReference.menuTitle');\n\n if (isEmpty(title)) {\n title = get(navigationElement, 'pageReference.title');\n }\n if (isEmpty(title)) {\n title = get(navigationElement, 'title');\n }\n return (\n <>\n <ListItem key={navigationElementId} className={classes.listItem}>\n <div className={classes.listItemTextRight}>\n <Link\n to={fullPath}\n className={classes.link}\n activeClassName={classes.activeLink}\n onClick={handleLinkClick(navigationElement)}>\n {title}\n </Link>\n </div>\n <Visible hidden={isEmpty(subNavigationElements)}>\n <ListItemSecondaryAction className={classes.secondaryActionRight}>\n <IconButton onClick={handleIconClick(navigationElement)} className={classes.iconWrapper}>\n <KeyboardArrowRight className={classes.icon} />\n </IconButton>\n </ListItemSecondaryAction>\n </Visible>\n </ListItem>\n <div className={classes.listItemBottom} />\n </>\n );\n })}\n </List>\n );\n}\n\nNavigationElements.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.array,\n onNavigationElementClick: PropTypes.func,\n};\n\nNavigationElements.defaultProps = {\n classes: {},\n className: null,\n data: null,\n onNavigationElementClick: () => {},\n};\n\nexport default withStyles(styles)(NavigationElements);\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { get, isEmpty, map, filter, find, isEqual, isNull } from 'lodash';\nimport { ButtonBase, IconButton, List, ListItem, Typography, withStyles } from '@material-ui/core';\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\nimport { useTranslation } from 'react-i18next';\n// eslint-disable-next-line import/no-unresolved\nimport { useLocation } from '@reach/router';\n\nimport { useActiveNavigation } from '../../../context/ActiveNavigationContext';\nimport Visible from '../../../shared/Visible';\nimport Link from '../../Link';\nimport { fofNavigationTitle } from '../../../../constants';\n\nimport MartiniIcon from '../../../../images/folkofolk/Martini.svg';\nimport MartiniIconWhite from '../../../../images/folkofolk/Martini-white.svg';\n\nimport WineIcon from '../../../../images/folkofolk/Wine.svg';\nimport WineIconWhite from '../../../../images/folkofolk/Wine-white.svg';\n\nconst styles = theme => ({\n root: {\n padding: '0',\n },\n subNavigationTitleBar: {\n display: 'block',\n height: '56px',\n backgroundColor: theme.palette.mobileNavigation.subNavigationTitleBackground,\n padding: '12px 12px 12px 20px',\n },\n subNavigationTitleLink: {\n display: 'flex',\n minHeight: '56px',\n padding: '12px 12px 12px 20px',\n justifyContent: 'space-between',\n alignContent: 'center',\n alignItems: 'center',\n color: 'inherit',\n fontSize: '22px',\n fontWeight: 'bold',\n '&:hover': {\n textDecoration: 'none',\n },\n },\n subNavigationTitle: {\n display: 'flex',\n justifyContent: 'flex-start',\n alignContent: 'center',\n alignItems: 'center',\n },\n iconWrapper: { padding: '13px', color: 'inherit' },\n icon: { fontSize: '20px', color: theme.palette.mobileNavigation.icon },\n arrowIcon: { fontSize: '20px', color: 'inherit' },\n label: {\n marginLeft: '10px',\n fontSize: '16px',\n fontWeight: 'bold',\n letterSpacing: '0.4px',\n },\n listItem: {\n padding: '0 ',\n borderBottom: `1px solid ${theme.palette.mobileNavigation.navigationElementBorder}`,\n },\n\n buttonBase: { height: '56px' },\n\n link: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n minHeight: '46px',\n flexGrow: '1',\n padding: '10px 10px 10px 20px',\n color: theme.palette.mobileNavigation.text,\n fontSize: '16px',\n fontWeight: 'bold',\n letterSpacing: '0.4px',\n },\n activeLink: {\n color: theme.palette.header.navigation.activeLink,\n },\n secondaryActionRight: {\n right: '0',\n },\n\n spirits: {\n backgroundColor: theme.palette.common.lightBrown,\n },\n\n activeSpirits: {\n backgroundColor: theme.palette.common.darkBrown,\n color: theme.palette.common.white,\n },\n wines: {\n backgroundColor: theme.palette.common.lighterRed,\n },\n\n activeWines: {\n backgroundColor: theme.palette.common.darkPurple,\n color: theme.palette.common.white,\n },\n image: { marginRight: '8px' },\n});\n\nfunction getActiveNavigationElement(navigationElements, pathname) {\n return find(navigationElements, {\n pageReference: {\n fullPath: pathname,\n },\n });\n}\n\nfunction getFilteredNavigationElements(navigationElements, parentNavigationElement) {\n return filter(navigationElements, navigationElement => {\n return isEqual(get(navigationElement, 'parentNavigationElement.id'), get(parentNavigationElement, 'id'));\n });\n}\nfunction getParentNavigationElements(navigationElements, navigationElement) {\n const parent = filter(navigationElements, element => {\n return isEqual(get(element, 'id'), get(navigationElement, 'parentNavigationElement.id'));\n });\n return get(parent, '0', null);\n}\nfunction setActiveMainNavigation(navigationElement, wines, updateFunction) {\n const element = {\n id: get(navigationElement, 'id'),\n fullPath: get(navigationElement, 'pageReference.fullPath'),\n children: get(navigationElement, 'subNavigationElements'),\n title: get(navigationElement, 'title'),\n index: isEqual(get(navigationElement, 'title'), wines) ? 1 : 0,\n };\n updateFunction(element);\n}\n\nfunction getNavigationElement(navigationElements, navigationElementId) {\n const navigationElement = find(navigationElements, {\n id: navigationElementId,\n });\n\n return isEmpty(navigationElement) ? null : navigationElement;\n}\n\nfunction NavigationElements({ classes, className, data: navigationElements, onNavigationElementClick }) {\n const wines = get(fofNavigationTitle, 'wines');\n const spirits = get(fofNavigationTitle, 'spirits');\n const { t } = useTranslation();\n const { pathname } = useLocation();\n const { activeNav, updateActiveNav } = useActiveNavigation();\n\n const [parentNavigationElement, setParentNavigationElement] = useState(null);\n\n const activeNavigationElement = useMemo(() => {\n return getActiveNavigationElement(navigationElements, pathname);\n }, [navigationElements, pathname]);\n\n const filteredNavigationElements = useMemo(() => {\n return getFilteredNavigationElements(navigationElements, parentNavigationElement);\n }, [navigationElements, parentNavigationElement]);\n\n const handleBackClick = useCallback(() => {\n const navigationElementId = get(parentNavigationElement, 'parentNavigationElement.id');\n const navigationElement = getNavigationElement(navigationElements, navigationElementId);\n setParentNavigationElement(navigationElement);\n }, [navigationElements, parentNavigationElement]);\n\n const handleIconClick = useCallback(\n navigationElement => () => {\n if (isEqual(get(navigationElement, 'title'), wines) || isEqual(get(navigationElement, 'title'), spirits)) {\n setActiveMainNavigation(navigationElement, wines, updateActiveNav);\n }\n setParentNavigationElement(navigationElement);\n },\n [],\n );\n\n const handleLinkClick = useCallback(\n navigationElement => () => {\n let parenntElement = getParentNavigationElements(navigationElements, navigationElement);\n while (get(parenntElement, 'parentNavigationElement.id', false)) {\n parenntElement = getParentNavigationElements(navigationElements, parenntElement);\n }\n if (isEmpty(parenntElement)) {\n setActiveMainNavigation(navigationElement, wines, updateActiveNav);\n } else {\n setActiveMainNavigation(parenntElement, wines, updateActiveNav);\n }\n onNavigationElementClick(navigationElement);\n },\n [onNavigationElementClick],\n );\n\n useEffect(() => {\n const navigationElementId = get(activeNavigationElement, 'parentNavigationElement.id');\n const navigationElement = getNavigationElement(navigationElements, navigationElementId);\n setParentNavigationElement(navigationElement);\n\n if (isNull(parentNavigationElement)) {\n if (isEqual(get(activeNav, 'title'), wines) || isEqual(get(activeNav, 'title'), spirits)) {\n const mainNavigationElement = getNavigationElement(navigationElements, get(activeNav, 'id'));\n setParentNavigationElement(mainNavigationElement);\n }\n }\n\n let parenntElement = getParentNavigationElements(navigationElements, navigationElement);\n while (get(parenntElement, 'parentNavigationElement.id', false)) {\n parenntElement = getParentNavigationElements(navigationElements, parenntElement);\n }\n if (isEmpty(parenntElement)) {\n setActiveMainNavigation(navigationElement, wines, updateActiveNav);\n } else {\n setActiveMainNavigation(parenntElement, wines, updateActiveNav);\n }\n }, [navigationElements, activeNavigationElement]);\n\n return (\n <List component=\"nav\" className={clsx(classes.root, className)}>\n <Visible hidden={isEmpty(parentNavigationElement)}>\n <Link\n to={get(parentNavigationElement, 'pageReference.fullPath')}\n onClick={handleLinkClick(parentNavigationElement)}\n className={clsx(\n classes.subNavigationTitleLink,\n isEqual(get(activeNav, 'title'), wines) ? classes.activeWines : null,\n isEqual(get(activeNav, 'title'), spirits) ? classes.activeSpirits : null,\n )}>\n <div className={classes.subNavigationTitle}>\n {isEqual(get(parentNavigationElement, 'title'), wines) ? (\n <img src={WineIconWhite} alt=\"icon\" width=\"24\" height=\"24\" className={classes.image} loading=\"lazy\" />\n ) : null}\n {isEqual(get(parentNavigationElement, 'title'), spirits) ? (\n <img src={MartiniIconWhite} alt=\"icon\" width=\"24\" height=\"24\" className={classes.image} loading=\"lazy\" />\n ) : null}\n {!isEmpty(get(parentNavigationElement, 'pageReference.menuTitle'))\n ? get(parentNavigationElement, 'pageReference.menuTitle')\n : get(parentNavigationElement, 'title')}\n </div>\n <KeyboardArrowRight />\n </Link>\n <div\n className={clsx(\n isEqual(get(activeNav, 'title'), wines) ? classes.wines : null,\n isEqual(get(activeNav, 'title'), spirits) ? classes.spirits : null,\n )}>\n <ButtonBase onClick={handleBackClick} className={classes.iconWrapper}>\n <KeyboardArrowLeft className={classes.icon} />\n <Typography className={classes.label}>{t('navigation.back.label')}</Typography>\n </ButtonBase>\n </div>\n </Visible>\n {map(filteredNavigationElements, navigationElement => {\n const navigationElementId = get(navigationElement, 'id');\n const subNavigationElements = get(navigationElement, 'subNavigationElements');\n const fullPath = get(navigationElement, 'pageReference.fullPath');\n let isMainNav = false;\n if (isEqual(get(navigationElement, 'title'), wines) || isEqual(get(navigationElement, 'title'), spirits)) {\n isMainNav = true;\n }\n let title = get(navigationElement, 'pageReference.menuTitle');\n if (isEmpty(title)) {\n title = get(navigationElement, 'pageReference.title');\n }\n if (isEmpty(title)) {\n title = get(navigationElement, 'title');\n }\n\n return (\n <>\n {isEqual(get(navigationElement, 'title'), spirits) && (\n <ListItem\n key={navigationElementId}\n className={clsx(\n classes.listItem,\n isEqual(get(activeNav, 'title'), spirits) ? classes.activeSpirits : classes.spirits,\n )}>\n <Link\n to={fullPath}\n className={clsx(\n classes.link,\n isEqual(get(activeNav, 'title'), spirits) ? classes.activeSpirits : classes.spirits,\n )}\n activeClassName={null}\n partiallyActive\n onClick={handleLinkClick(navigationElement)}>\n <img\n src={isEqual(get(activeNav, 'title'), spirits) ? MartiniIconWhite : MartiniIcon}\n alt=\"icon\"\n width=\"20\"\n height=\"20\"\n className={classes.image}\n loading=\"lazy\"\n />\n {title}\n </Link>\n <Visible hidden={isEmpty(subNavigationElements)}>\n <div className={clsx(classes.secondaryActionRight)}>\n <IconButton onClick={handleIconClick(navigationElement)} className={classes.iconWrapper}>\n <KeyboardArrowRight className={classes.arrowIcon} />\n </IconButton>\n </div>\n </Visible>\n </ListItem>\n )}\n {isEqual(get(navigationElement, 'title'), wines) && (\n <ListItem\n key={navigationElementId}\n className={clsx(\n classes.listItem,\n isEqual(get(activeNav, 'title'), wines) ? classes.activeWines : classes.wines,\n )}>\n <Link\n to={fullPath}\n className={clsx(\n classes.link,\n isEqual(get(activeNav, 'title'), wines) ? classes.activeWines : classes.wines,\n )}\n activeClassName={null}\n partiallyActive\n onClick={handleLinkClick(navigationElement)}>\n <img\n src={isEqual(get(activeNav, 'title'), wines) ? WineIconWhite : WineIcon}\n alt=\"icon\"\n width=\"20\"\n height=\"20\"\n className={classes.image}\n loading=\"lazy\"\n />\n {title}\n </Link>\n <Visible hidden={isEmpty(subNavigationElements)}>\n <div className={clsx(classes.secondaryActionRight)}>\n <IconButton onClick={handleIconClick(navigationElement)} className={classes.iconWrapper}>\n <KeyboardArrowRight className={classes.arrowIcon} />\n </IconButton>\n </div>\n </Visible>\n </ListItem>\n )}\n {!isMainNav && (\n <ListItem key={navigationElementId} className={clsx(classes.listItem)}>\n <Link\n to={fullPath}\n className={classes.link}\n activeClassName={classes.activeLink}\n partiallyActive\n onClick={handleLinkClick(navigationElement)}>\n {title}\n </Link>\n <Visible hidden={isEmpty(subNavigationElements)}>\n <div className={classes.secondaryActionRight}>\n <IconButton onClick={handleIconClick(navigationElement)} className={classes.iconWrapper}>\n <KeyboardArrowRight className={classes.icon} />\n </IconButton>\n </div>\n </Visible>\n </ListItem>\n )}\n </>\n );\n })}\n </List>\n );\n}\n\nNavigationElements.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.array,\n onNavigationElementClick: PropTypes.func,\n};\n\nNavigationElements.defaultProps = {\n classes: {},\n className: null,\n data: null,\n onNavigationElementClick: () => {},\n};\n\nexport default withStyles(styles)(NavigationElements);\n","import React, { useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { get, isEmpty, isEqual, map, find } from 'lodash';\nimport { Accordion, AccordionSummary, AccordionDetails, List, Typography, withStyles } from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\n// eslint-disable-next-line import/no-unresolved\nimport { useLocation } from '@reach/router';\n\nimport Link from '../../Link';\n\nconst styles = theme => ({\n root: {\n padding: '0',\n },\n accordionDetails: {\n flexDirection: 'column',\n },\n link: {\n display: 'block',\n fontSize: '14px',\n letterSpacing: '0.4px',\n },\n topLevelLink: {\n fontWeight: 'bold',\n textTransform: 'uppercase',\n },\n linkWithoutAccordion: {\n borderBottom: 'solid 1px rgb(230, 230, 230)',\n color: theme.palette.mobileNavigation.text,\n padding: theme.spacing(1.5, 2, 1.5, 2),\n },\n subNavigationLink: {\n color: theme.palette.mobileNavigation.text,\n padding: theme.spacing(1.5, 2, 1.5, 4),\n },\n parentElementLink: {\n fontWeight: 'bold',\n },\n activeLink: {\n color: theme.palette.header.navigation.activeLink,\n fontWeight: 'bold',\n },\n});\n\nfunction getActiveNavigationElement(navigationElements, pathname) {\n return find(navigationElements, {\n pageReference: {\n fullPath: pathname,\n },\n });\n}\n\nfunction NavigationElements({ classes, className, data: navigationElements, onNavigationElementClick }) {\n const { pathname } = useLocation();\n\n const activeNavigationElement = useMemo(() => {\n return getActiveNavigationElement(navigationElements, pathname);\n }, [navigationElements, pathname]);\n\n const handleLinkClick = useCallback(\n navigationElement => () => {\n onNavigationElementClick(navigationElement);\n },\n [onNavigationElementClick],\n );\n\n const topLevelElements = [];\n const subNavigationItems = {};\n\n navigationElements.map(navigationElement => {\n const parentId = get(navigationElement, 'parentNavigationElement.id');\n if (!isEmpty(parentId)) {\n if (!isEmpty(get(subNavigationItems, parentId))) {\n subNavigationItems[parentId].push(navigationElement);\n } else {\n subNavigationItems[parentId] = [navigationElement];\n }\n } else {\n topLevelElements.push(navigationElement);\n }\n });\n\n return (\n <List component=\"nav\" className={clsx(classes.root, className)}>\n {map(topLevelElements, navigationElement => {\n const navigationElementId = get(navigationElement, 'id');\n const subNavigationElements = get(navigationElement, 'subNavigationElements');\n const fullPath = get(navigationElement, 'pageReference.fullPath');\n\n let title = get(navigationElement, 'pageReference.menuTitle');\n\n if (isEmpty(title)) {\n title = get(navigationElement, 'pageReference.title');\n }\n if (isEmpty(title)) {\n title = get(navigationElement, 'title');\n }\n\n if (subNavigationElements) {\n return (\n <Accordion\n defaultExpanded={isEqual(\n get(activeNavigationElement, 'parentNavigationElement.id'),\n navigationElementId,\n )}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls={`${navigationElementId}-content`}\n id={`${navigationElementId}-header`}>\n <Typography className={clsx(classes.link, classes.topLevelLink)} activeClassName={classes.activeLink}>\n {title}\n </Typography>\n </AccordionSummary>\n {subNavigationElements && (\n <AccordionDetails className={classes.accordionDetails}>\n {fullPath && (\n <Link\n to={fullPath}\n className={clsx(classes.link, classes.subNavigationLink, classes.parentElementLink)}\n activeClassName={classes.activeLink}\n onClick={handleLinkClick(navigationElement)}>\n {title}\n </Link>\n )}\n {map(get(subNavigationItems, navigationElementId), subNavigationElement => {\n return (\n <Link\n to={get(subNavigationElement, 'pageReference.fullPath')}\n className={clsx(classes.link, classes.subNavigationLink)}\n activeClassName={classes.activeLink}\n onClick={handleLinkClick(subNavigationElement)}>\n {get(subNavigationElement, 'title')}\n </Link>\n );\n })}\n </AccordionDetails>\n )}\n </Accordion>\n );\n }\n\n return (\n <Link\n to={fullPath}\n className={clsx(classes.link, classes.topLevelLink, classes.linkWithoutAccordion)}\n activeClassName={classes.activeLink}\n onClick={handleLinkClick(navigationElement)}>\n {title}\n </Link>\n );\n })}\n </List>\n );\n}\n\nNavigationElements.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.array,\n onNavigationElementClick: PropTypes.func,\n};\n\nNavigationElements.defaultProps = {\n classes: {},\n className: null,\n data: null,\n onNavigationElementClick: () => {},\n};\n\nexport default withStyles(styles)(NavigationElements);\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId, brandSite } from '../../../sites';\n\nimport ViinimaaNavigationElements from './viinimaa';\nimport FolkofolkNavigationElements from './folkofolk';\nimport AnoraProNavigationElements from './anoraPro';\n\nfunction NavigationElements(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return <ViinimaaNavigationElements {...props} />;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return <FolkofolkNavigationElements {...props} />;\n }\n if (isEqual(siteId, siteIds.AnoraPro)) {\n return <AnoraProNavigationElements {...props} />;\n }\n if (brandSite) {\n return <ViinimaaNavigationElements {...props} />;\n }\n\n return null;\n}\n\nexport default NavigationElements;\n","import PropTypes from 'prop-types';\n\nexport default function Visible({ children, visible, hidden }) {\n if (!visible || hidden) {\n return null;\n }\n\n return children;\n}\n\nVisible.propTypes = {\n children: PropTypes.node,\n visible: PropTypes.bool,\n hidden: PropTypes.bool,\n};\n\nVisible.defaultProps = {\n children: null,\n visible: true,\n hidden: false,\n};\n","export const contentfulContentTypes = {\n Entry: 'ContentfulEntry',\n PageUnion: 'PageUnion',\n LandingPage: 'ContentfulLandingPage',\n CampaignPage: 'ContentfulCampaign',\n ContentfulProductPage: 'ContentfulProduct',\n AdvancedPage: 'ContentfulAdvancedPage',\n ArticlePage: 'ContentfulArticlePage',\n RecipePage: 'ContentfulRecipePage',\n Navigation: 'ContentfulNavigation',\n NavigationElement: 'ContentfulNavigationElement',\n LinkBlockModule: 'ContentfulLinkBlockModule',\n ImageModule: 'ContentfulImageModule',\n VideoModule: 'ContentfulVideoModule',\n ProductListModule: 'ContentfulProductListModule',\n FeaturedProductModule: 'ContentfulFeaturedProductModule',\n LatestArticlesModule: 'ContentfulLatestArticlesModule',\n ContactPersonModule: 'ContentfulContactPersonModule',\n HeroImageModule: 'ContentfulHeroImageModule',\n AccordionModule: 'ContentfulAccordionModule',\n ContentListModule: 'ContentfulContentListModule',\n MediaGalleryModule: 'ContentfulMediaGalleryModule',\n LeadTextModule: 'ContentfulLeadTextModule',\n TableModule: 'ContentfulTableModule',\n ButtonLinkModule: 'ContentfulButtonLinkModule',\n SocialMediaElementModule: 'ContentfulSocialMediaElement',\n PreparationSection: 'ContentfulPreparationSection',\n PreparationStep: 'ContentfulPreparationStep',\n ProductReference: 'ContentfulProductReference',\n Channel: 'ContentfulChannel',\n Ingredient: 'ContentfulIngredient',\n AssetModule: 'ContentfulAsset',\n SEOData: 'ContentfulSEOData',\n Category: 'ContentfulCategory',\n Brand: 'ContentfulBrand',\n TextBlock: 'ContentfulTextBlock',\n Table: 'ContentfulTable',\n RowStructure: 'ContentfulRowStructure',\n ColumnStructure: 'ContentfulColumnStructure',\n CustobarSubscription: 'ContentfulCustobarSubscription',\n FormModule: 'ContentfulFormModule',\n SearchModule: 'ContentfulSearchModule',\n InspirationalAreaModule: 'ContentfulInspirationalAreaModule',\n PopUpModule: 'ContentfulPopUpModule',\n AnalyticsModule: 'ContentfulAnalyticsModule',\n Theme: 'ContentfulTheme',\n IdentifierModule: 'ContentfulIdentifierModule',\n AudioModule: 'ContentfulAudioModule',\n IFrameModule: 'ContentfulIFrameModule',\n InstagramFeedModule: 'ContentfulInstagramFeedModule',\n EventCalendarModule: 'ContentfulEventCalendarModule',\n Event: 'ContentfulEvent',\n OrderFormModule: 'ContentfulOrderFormModule',\n};\n\nexport const magentoContentTypes = {\n Product: 'MagentoProduct',\n Attribute: 'MagentoAttribute',\n};\n\nexport const secondaryThemeTypes = {\n AnoraPurple: 'anoraPurple',\n AnoraYellow: 'anoraYellow',\n AnoraDarkBlue: 'anoraDarkBlue',\n AnoraWhite: 'anoraWhite',\n AnoraLightBlue: 'anoraLightBlue',\n AnoraGreen: 'anoraGreen',\n AnoraTransparent: 'anoraTransparent',\n};\n\nexport const searchTypes = {\n AnoraGroupGeneralSearch: 'anoraGroupGeneralSearch',\n};\n\nexport const messageTypes = {\n Success: 'Success',\n Warning: 'Warning',\n Error: 'Error',\n Info: 'Info',\n};\n\nexport const siteIds = {\n Viinimaa: 'viinimaa',\n Folkofolk: 'folkofolk',\n AnoraPro: 'anoraPro',\n Bibendum: 'bibendum',\n Blossa: 'blossa',\n PhilipsonSoderberg: 'philipson-soderberg',\n Valhalla: 'valhalla',\n Gammeldansk: 'gammeldansk',\n Wennerco: 'wennerco',\n Koskenkorva: 'koskenkorva',\n OpAnderson: 'opanderson',\n Skagerrak: 'skagerrak',\n WineworldFinland: 'wineworld-fi',\n LinieAquavit: 'linieAquavit',\n Socialwines: 'socialwines',\n};\n\nexport const fofNavigationTitle = {\n wines: 'Wines',\n spirits: 'Spirits',\n};\n\nexport const fofNavigationBreakpoint = {\n Breakpoint: '1600',\n};\nexport const viinimaaNavigationBreakpoint = {\n Breakpoint: '1345',\n};\nexport const blossaNavigationBreakpoint = {\n Breakpoint: '1140',\n};\nexport const gammeldanskNavigationBreakpoint = {\n Breakpoint: '900',\n};\n\nconst getBreakpoints = () => {\n return {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n };\n};\n\nexport const breakPoints = getBreakpoints();\n\nconst getContentPageMaxWidth = () => {\n return 'md';\n};\n\nexport const contentPageMaxWidth = getContentPageMaxWidth();\n\nexport const productDefaultImage = {\n Viinimaa: 'viinimaa/labels/viinimaa-kuva-tulossa_oubmmk.png',\n Folkofolk: 'folkofolk/labels/Image-missing.png',\n};\nexport const awards = {\n Viinimaa: [\n 'Vuoden Viinit kunniamaininta',\n 'Vuoden Viinit hopeamitali',\n 'Vuoden Viinit pronssimitali',\n 'Vuoden Viinit kultamitali',\n 'Palkittu',\n ],\n Folkofolk: ['Prisbelönt'],\n};\n\nexport const siteMaintenanceMode = {\n ActiveMode: ['Activate Maintenance Mode'],\n};\n\nexport const subscribeNewsletterPage = {\n Folkofolk: '/nyhetsbrev',\n Viinimaa: '/uutiskirje',\n AnoraPro: 'https://anora-group-plc.campaign.playable.com/horeca-uutiskirjeen-tilaus-lomake-042024',\n ViinimaaRedirectURL: '/kiitos-uutiskirjeen-tilauksesta',\n FolkofolkRedirectURL: '/tack-nyhetsbrev',\n};\n\nexport const anoraProUnprotectedPages = {\n login: '/kirjaudu',\n registration: '/hae-tunnuksia',\n thankYouForRegistering: '/kiitos-rekisteroitymisesta',\n termsOfUse: '/www-sivuston-kayttoehdot',\n privacy: '/tietosuojailmoitus',\n contactInformation: '/ravintolamyynnin-yhteystiedot',\n contactForm: '/yhteydenottopyynto',\n};\n","const settings = {\n channels: [\n {\n channel: 'Viinimaa FI',\n store: 'viinimaa_fi',\n locale: 'fi-FI',\n languageCode: 'fi',\n slugs: {\n ContentfulArticlePage: 'artikkelit',\n MagentoProduct: 'juomat',\n },\n },\n ],\n localization: {\n default: 'fi-FI',\n defaultLanguageCode: 'fi',\n },\n};\n\nexport default settings;\n","const settings = {\n channels: [\n {\n channel: 'Folkofolk SE',\n store: 'folkofolk_se',\n locale: 'sv-SE',\n languageCode: 'sv',\n slugs: {\n ContentfulArticlePage: 'artiklar',\n ContentfulCampaign: 'campaign',\n MagentoProduct: 'drycker',\n },\n },\n ],\n localization: {\n default: 'sv-SE',\n defaultLanguageCode: 'sv',\n },\n};\n\nexport default settings;\n","const settings = {\n brandSite: true,\n channels: [\n {\n channel: 'Anora Pro FI',\n // channel: 'Viinimaa FI',\n store: 'anorapro_fi',\n locale: 'fi-FI',\n languageCode: 'fi',\n slugs: {\n ContentfulArticlePage: 'artikkelit',\n MagentoProduct: 'juomat',\n },\n },\n ],\n localization: {\n default: 'fi-FI',\n defaultLanguageCode: 'fi',\n },\n};\n\nexport default settings;\n","const settings = {\n brandSite: true,\n channels: [\n {\n channel: 'Bibendum EN',\n locale: 'en-US',\n languageCode: 'en',\n slugs: {\n ContentfulArticlePage: 'articles',\n },\n },\n ],\n localization: {\n default: 'en-US',\n defaultLanguageCode: 'en',\n },\n};\n\nexport default settings;\n","const settings = {\n brandSite: true,\n channels: [\n {\n channel: 'Blossa SE',\n locale: 'sv-SE',\n languageCode: 'sv',\n slugs: {\n ContentfulArticlePage: 'artiklar',\n },\n },\n {\n channel: 'Blossa EN',\n locale: 'en-US',\n languageCode: 'en',\n slugs: {\n ContentfulArticlePage: 'articles',\n },\n },\n ],\n localization: {\n default: 'sv-SE',\n defaultLanguageCode: 'sv',\n },\n};\n\nexport default settings;\n","const settings = {\n brandSite: true,\n channels: [\n {\n channel: 'Philipson Söderberg EN',\n locale: 'en-US',\n languageCode: 'en',\n slugs: {\n ContentfulArticlePage: 'articles',\n },\n },\n {\n channel: 'Philipson Söderberg SE',\n locale: 'sv-SE',\n languageCode: 'sv',\n slugs: {\n ContentfulArticlePage: 'artiklar',\n },\n },\n ],\n localization: {\n default: 'en-US',\n defaultLanguageCode: 'en',\n },\n};\n\nexport default settings;\n","const settings = {\n brandSite: true,\n channels: [\n {\n channel: 'Valhalla EN',\n locale: 'en-US',\n languageCode: 'en',\n slugs: {\n ContentfulArticlePage: 'artiklar',\n },\n },\n {\n channel: 'Valhalla DE',\n locale: 'de-DE',\n languageCode: 'de',\n slugs: {\n ContentfulArticlePage: 'articles',\n },\n },\n ],\n localization: {\n default: 'en-US',\n defaultLanguageCode: 'en',\n },\n};\n\nexport default settings;\n","const settings = {\n brandSite: true,\n channels: [\n {\n channel: 'Gammeldansk DK',\n locale: 'da-DK',\n languageCode: 'da',\n slugs: {\n ContentfulArticlePage: 'artiklar',\n },\n },\n {\n channel: 'Gammeldansk EN',\n locale: 'en-US',\n languageCode: 'en',\n slugs: {\n ContentfulArticlePage: 'articles',\n },\n },\n ],\n localization: {\n default: 'da-DK',\n defaultLanguageCode: 'da',\n },\n};\n\nexport default settings;\n","const settings = {\n brandSite: true,\n channels: [\n {\n channel: 'Wennerco EN',\n locale: 'en-US',\n languageCode: 'en',\n slugs: {\n ContentfulArticlePage: 'article',\n },\n },\n ],\n localization: {\n default: 'en-US',\n defaultLanguageCode: 'en',\n },\n};\n\nexport default settings;\n","const settings = {\n brandSite: true,\n channels: [\n {\n channel: 'Koskenkorva EN',\n locale: 'en-US',\n languageCode: 'en',\n slugs: {\n ContentfulArticlePage: 'article',\n },\n },\n {\n channel: 'Koskenkorva DE',\n locale: 'de-DE',\n languageCode: 'de',\n slugs: {\n ContentfulArticlePage: 'Artikel',\n },\n },\n ],\n localization: {\n default: 'en-US',\n defaultLanguageCode: 'en',\n },\n};\n\nexport default settings;\n","const settings = {\n brandSite: true,\n channels: [\n {\n channel: 'O.P. Anderson EN',\n locale: 'en-US',\n languageCode: 'en',\n slugs: {\n ContentfulArticlePage: 'article',\n },\n },\n ],\n localization: {\n default: 'en-US',\n defaultLanguageCode: 'en',\n },\n};\n\nexport default settings;\n","const settings = {\n brandSite: true,\n channels: [\n {\n channel: 'Skagerrak EN',\n locale: 'en-US',\n languageCode: 'en',\n slugs: {\n ContentfulArticlePage: 'articles',\n },\n },\n {\n channel: 'Skagerrak DE',\n locale: 'de-DE',\n languageCode: 'de',\n slugs: {\n ContentfulArticlePage: 'Artikel',\n },\n },\n ],\n localization: {\n default: 'en-US',\n defaultLanguageCode: 'en',\n },\n};\n\nexport default settings;\n","const settings = {\n brandSite: true,\n channels: [\n {\n channel: 'Wineworld Finland EN',\n locale: 'en-US',\n languageCode: 'en',\n slugs: {\n ContentfulArticlePage: 'article',\n },\n },\n ],\n localization: {\n default: 'en-US',\n defaultLanguageCode: 'en',\n },\n};\n\nexport default settings;\n","const settings = {\n brandSite: true,\n channels: [\n {\n channel: 'Linie Aquavit EN',\n locale: 'en-US',\n languageCode: 'en',\n slugs: {\n ContentfulArticlePage: 'articles',\n },\n },\n {\n channel: 'Linie Aquavit DK',\n locale: 'da-DK',\n languageCode: 'da',\n slugs: {\n ContentfulArticlePage: 'artikler',\n },\n },\n {\n channel: 'Linie Aquavit DE',\n locale: 'de-DE',\n languageCode: 'de',\n slugs: {\n ContentfulArticlePage: 'Artikel',\n },\n },\n ],\n localization: {\n default: 'en-US',\n defaultLanguageCode: 'en',\n },\n};\n\nexport default settings;\n","const settings = {\n brandSite: true,\n channels: [\n {\n channel: 'Social Wines EN',\n locale: 'en-US',\n languageCode: 'en',\n slugs: {\n ContentfulArticlePage: 'article',\n },\n },\n ],\n localization: {\n default: 'en-US',\n defaultLanguageCode: 'en',\n },\n};\n\nexport default settings;\n","import isEqual from 'lodash/isEqual';\n\nimport { siteIds } from '../constants';\n\nimport viinimaaSettings from './viinimaa/settings';\nimport folkofolkSettings from './folkofolk/settings';\nimport anoraProSettings from './anoraPro/settings';\nimport bibendumSettings from './bibendum/settings';\nimport blossaSettings from './blossa/settings';\nimport philipsonSoderbergSettings from './philipson-soderberg/settings';\nimport valhallaSettings from './valhalla/settings';\nimport gammeldanskSettings from './gammeldansk/settings';\nimport wennercoSettings from './wennerco/settings';\nimport koskenkorvaSettings from './koskenkorva/settings';\nimport opAndersonSettings from './op-anderson/settings';\nimport skagerrakSettings from './skagerrak/settings';\nimport wineworldFinlandSettings from './wineworld-finland/settings';\nimport linieAquavitSettings from './linieAquavit/settings';\nimport socialwinesSettings from './socialwines/settings';\n\nexport const siteId = process.env.GATSBY_SITE_ID;\n\nexport const settings = (() => {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return viinimaaSettings;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return folkofolkSettings;\n }\n if (isEqual(siteId, siteIds.AnoraPro)) {\n return anoraProSettings;\n }\n if (isEqual(siteId, siteIds.Bibendum)) {\n return bibendumSettings;\n }\n if (isEqual(siteId, siteIds.Blossa)) {\n return blossaSettings;\n }\n if (isEqual(siteId, siteIds.PhilipsonSoderberg)) {\n return philipsonSoderbergSettings;\n }\n if (isEqual(siteId, siteIds.Valhalla)) {\n return valhallaSettings;\n }\n if (isEqual(siteId, siteIds.Gammeldansk)) {\n return gammeldanskSettings;\n }\n if (isEqual(siteId, siteIds.Wennerco)) {\n return wennercoSettings;\n }\n if (isEqual(siteId, siteIds.Koskenkorva)) {\n return koskenkorvaSettings;\n }\n if (isEqual(siteId, siteIds.OpAnderson)) {\n return opAndersonSettings;\n }\n if (isEqual(siteId, siteIds.Skagerrak)) {\n return skagerrakSettings;\n }\n if (isEqual(siteId, siteIds.WineworldFinland)) {\n return wineworldFinlandSettings;\n }\n if (isEqual(siteId, siteIds.LinieAquavit)) {\n return linieAquavitSettings;\n }\n if (isEqual(siteId, siteIds.Socialwines)) {\n return socialwinesSettings;\n }\n\n return {};\n})();\n\nexport const { brandSite } = settings;\n","import React from 'react';\nimport { createTheme } from '@material-ui/core/styles';\nimport { CheckBoxOutlined } from '@material-ui/icons';\nimport { fofNavigationBreakpoint } from '../../constants';\n\nimport '../../fonts/Merriweather/Merriweather.css';\nimport '../../fonts/Montserrat/Montserrat.css';\n\nexport const colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(244, 245, 246)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(209, 231, 236)',\n darkBlue: 'rgb(113, 134, 140)',\n green: 'rgb(116, 165, 74)',\n lightGreen: 'rgb(232, 236, 226)',\n darkGreen: 'rgb(136,144,129)',\n purple: 'rgb(184, 132, 203)',\n lightPurple: 'rgb(180, 156, 185)',\n darkPurple: 'rgb(66,44,64)',\n red: 'rgb(200, 49, 69)',\n lightRed: ' rgb(228, 140, 139)',\n lighterRed: ' rgb(222, 194, 194)',\n lighterRed2: 'rgb(249, 234, 236)',\n darkRed: ' rgb(95, 39, 39)',\n darkBrown: 'rgb(95,66,64)',\n darkerBrown: 'rgb(71, 64, 64)',\n lightBrown: 'rgb(229,222,217)',\n brightOrange: '#e68532',\n brightBlue: '#3b91a4',\n brightYellow: '#ffd700',\n lightYellow2: '#fff6e9',\n lightYellow: 'rgb(255, 246, 233)',\n\n brightGreen: '#7b9f34',\n brightBrown: '#86482c',\n};\n\nconst theme = createTheme({});\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\n\nconst primaryTheme = createTheme({\n breakpoints: {\n values: breakPoints,\n },\n mixins: {\n toolbar: {\n minHeight: '70px',\n },\n },\n typography: {\n fontFamily: 'Merriweather, sans-serif',\n fontWeightLight: '300',\n fontWeightRegular: '400',\n fontWeightMedium: '500',\n fontWeightBold: '700',\n h1: {\n fontFamily: '\"Montserrat\", serif',\n fontSize: '1.75rem',\n fontWeight: '400',\n lineHeight: '1.19',\n marginBottom: '1rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '2.625rem',\n },\n },\n h2: {\n fontFamily: '\"Montserrat\", serif',\n fontSize: '1.375rem',\n fontWeight: '400',\n lineHeight: 'normal',\n marginBottom: '1rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '1.875rem',\n },\n },\n h3: {\n fontFamily: '\"Montserrat\", serif',\n fontSize: '1.125rem',\n fontWeight: '400',\n lineHeight: 'normal',\n marginBottom: '1rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '1.5rem',\n },\n },\n h4: {\n fontFamily: '\"Montserrat\", serif',\n fontSize: '1rem',\n fontWeight: '400',\n lineHeight: 'normal',\n marginBottom: '1rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '1.35rem',\n },\n },\n h5: {\n fontFamily: '\"Montserrat\", serif',\n fontSize: '1rem',\n fontWeight: '400',\n lineHeight: 'normal',\n marginBottom: '1rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '1.25rem',\n },\n },\n h6: {\n fontFamily: '\"Merriweather\", sans-serif',\n fontSize: '1rem',\n fontWeight: '400',\n lineHeight: 'normal',\n marginBottom: '1rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '1.25rem',\n },\n },\n caption: {\n fontSize: 'inherit',\n fontStyle: 'italic',\n lineHeight: '1.5',\n },\n overline: {\n fontSize: '0.75rem',\n fontWeight: '700',\n },\n body1: {\n fontFamily: 'Merriweather, sans-serif',\n fontSize: '0.875rem',\n lineHeight: '1.8',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '1rem',\n },\n },\n body2: {\n fontFamily: 'Merriweather, sans-serif',\n fontSize: '0.75rem',\n lineHeight: '1.6',\n\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '0.813rem',\n },\n },\n navigationLink: {\n fontSize: '1rem',\n fontFamily: 'Montserrat, sans-serif',\n fontWeight: 'bold',\n color: colors.darkBrown,\n },\n descriptionRow: {\n fontSize: '.875rem',\n },\n },\n palette: {\n common: {\n black: colors.black,\n white: colors.white,\n gray: colors.gray,\n lightGray: colors.lightGray,\n lighterGray: colors.lighterGray,\n mediumGray: colors.mediumGray,\n darkGray: colors.darkGray,\n blue: colors.blue,\n lightBlue: colors.lightBlue,\n red: colors.red,\n darkRed: colors.darkRed,\n green: colors.green,\n lightGreen: colors.lightGreen,\n darkBrown: colors.darkBrown,\n darkerBrown: colors.darkerBrown,\n darkPurple: colors.darkPurple,\n lighterRed: colors.lighterRed,\n lightBrown: colors.lightBrown,\n },\n primary: {\n main: colors.black,\n contrastText: colors.white50,\n },\n secondary: {\n main: colors.darkerBrown,\n light: colors.lightYellow,\n },\n text: {\n primary: colors.darkerBrown,\n secondary: colors.white,\n light: colors.white,\n },\n background: {\n default: colors.white,\n breadcrumbs: colors.lightGray,\n linkBlock: colors.lightGray,\n defaultColumn: 'transparent',\n defaultRow: 'transparent',\n },\n error: {\n main: colors.red,\n light: colors.lighterRed2,\n },\n success: {\n main: colors.green,\n light: colors.lightGreen,\n },\n warning: {\n main: colors.brightOrange,\n light: colors.lightYellow,\n },\n info: {\n main: colors.blue,\n light: colors.lightBlue,\n },\n headingFontFamily: { fontFamily: '\"Montserrat\", serif' },\n divider: colors.lightGray,\n category: {\n outlined: {\n background: colors.lightBrown,\n text: colors.darkBrown,\n },\n text: colors.darkBrown,\n hoverText: colors.darkBlue,\n },\n\n footer: {\n border: {\n color: colors.darkBlue,\n width: '3px',\n },\n divider: colors.darkerBrown,\n text: colors.white,\n background: colors.darkerBrown,\n logoBarBackground: colors.lightGray,\n padding: {\n bottom: '50px',\n },\n columns: {\n list: {\n '& > li::Marker': {\n color: colors.white,\n },\n },\n texts: { color: colors.white },\n },\n },\n header: {\n paddingTop: '16px',\n text: colors.darkerBrown,\n background: colors.white,\n border: {\n style: 'solid',\n color: colors.lightGreen,\n },\n navigation: {\n activeLink: colors.darkGreen,\n activeLinkBorder: colors.darkBlue,\n hoverText: colors.darkGreen,\n subMenuBackground: colors.lightGreen,\n subMenuBulletPoints: colors.darkBlue,\n },\n icons: {\n color: colors.white,\n backgroundColor: colors.darkerBrown,\n },\n },\n search: {\n quickSearch: {\n inputContainer: {\n backgroundColor: colors.lightGreen,\n },\n hideButton: {\n color: colors.black,\n },\n },\n filters: {\n title: {\n fontSize: '24px',\n },\n filter: {\n title: {\n fontSize: '1.1875rem',\n },\n label: {\n fontSize: '.875rem',\n },\n },\n },\n },\n mobileNavigation: {\n text: colors.darkerBrown,\n icon: colors.darkerBrown,\n xIconBackground: colors.lightBrown,\n logoBarBottomBorder: colors.darkBlue,\n navigationElementBorder: colors.lightGray,\n subNavigationTitleBackground: colors.lightGreen,\n subNavigationTitleColor: colors.darkBlue,\n },\n productPage: {\n informationBackground: colors.lightGreen,\n tasteProfiles: {\n orange: colors.brightOrange,\n purple: colors.brightYellow,\n green: colors.brightGreen,\n brown: colors.brightBrown,\n blue: colors.brightBlue,\n },\n mainInfo: {\n accordion: {\n color: colors.darkerBrown,\n iconBackground: colors.darkerBrown,\n description: {\n summaryBackground: colors.darkGreen,\n summaryText: colors.white,\n },\n information: {\n summaryBackground: colors.lightGreen,\n summaryText: colors.darkerBrown,\n detailesKey: colors.darkBrown,\n },\n },\n },\n review: {\n articlePadding: 0,\n background: colors.lightBlue,\n divider: colors.darkBlue,\n },\n labelBackground: colors.darkPurple,\n },\n quote: {\n text: colors.darkGreen,\n fontSize: '17px',\n },\n button: {\n fontWeight: 'bold',\n textTransform: 'inherit',\n [theme.breakpoints.up(breakPoints.md)]: {\n padding: '15px 10px 15px 10px',\n },\n },\n memoryListButton: {\n badge: { backgroundColor: colors.lightPurple, color: colors.black },\n },\n link: {\n link: colors.darkBlue,\n active: colors.darkBlue,\n hover: colors.darkBlue,\n },\n pageTemplates: {\n landingPage: {\n paddingTop: theme.spacing(26),\n [theme.breakpoints.up(fofNavigationBreakpoint.Breakpoint)]: {\n paddingTop: theme.spacing(10),\n },\n },\n campaignPage: {\n colors: {\n darkColor: '#333333',\n lightColor: colors.white,\n },\n },\n otherPageTemplates: {\n paddingTop: theme.spacing(26),\n [theme.breakpoints.up(breakPoints.sm)]: {\n paddingTop: theme.spacing(15),\n },\n },\n recipePage: {\n paddingTop: theme.spacing(26),\n [theme.breakpoints.up(breakPoints.sm)]: {\n paddingTop: theme.spacing(15),\n },\n },\n },\n custobarSubscriptionForm: {\n background: colors.darkPurple,\n hover: {\n background: colors.darkGreen,\n },\n disabled: {\n background: colors.lightGray,\n },\n },\n siteNotifications: {\n backgroundColor: colors.lightYellow2,\n color: '#ffa31c',\n padding: theme.spacing(2.5),\n margin: theme.spacing(4, 0, 4, 0),\n [theme.breakpoints.up(fofNavigationBreakpoint.Breakpoint)]: {\n margin: theme.spacing(0, 0, 4, 0),\n },\n },\n monopolyPrice: {\n fontFamily: null,\n reducedPriceColor: null,\n },\n },\n\n accordion: {\n backgroundColor: colors.white,\n color: colors.darkBlue,\n border: '',\n expandIcon: {\n backgroundColor: colors.lighterGray,\n hover: {\n backgroundColor: colors.gray,\n },\n },\n },\n languageSelector: {\n color: colors.black,\n border: {\n color: colors.black,\n width: '2px',\n },\n margin: '0',\n },\n linkBlockModule: {\n imageWrapper: {\n maxWidth: '40%',\n },\n textWrapper: {},\n },\n table: {\n border: `solid 1px ${colors.black}`,\n borderRadius: 0,\n head: {\n backgroundColor: colors.black,\n color: colors.white,\n },\n row: {\n even: {\n backgroundColor: theme.palette.action.hover,\n },\n },\n },\n listElementCard: {\n content: {},\n },\n slider: {\n arrowBotton: {},\n },\n hr: {},\n imageSpotLink: {\n innerDot: {},\n },\n event: {\n root: {},\n day: {},\n month: {},\n name: {},\n shortDescription: {},\n icon: {},\n },\n overrides: {\n MuiAppBar: {\n root: {\n boxShadow: 'none',\n },\n colorPrimary: {\n color: colors.black,\n backgroundColor: colors.white,\n },\n },\n MuiToolbar: {\n regular: {},\n dense: {\n color: colors.white,\n },\n },\n MuiDrawer: {\n root: {\n width: '350px',\n flexShrink: 0,\n },\n paper: {\n width: '350px',\n color: colors.black,\n backgroundColor: colors.white,\n },\n },\n MuiLink: {\n root: {\n color: colors.darkBlue,\n },\n },\n MuiDialog: {\n paper: {\n margin: '5px',\n },\n },\n MuiButton: {\n root: {\n fontFamily: '\"Montserrat\", serif',\n textTransform: 'inherit',\n borderRadius: '0px',\n padding: '18px 20px',\n fontSize: '1rem',\n minWidth: '0',\n },\n sizeSmall: {\n padding: '9px 18px',\n borderRadius: '0px',\n fontSize: '0.8125rem',\n },\n containedPrimary: {\n boxShadow: 'none',\n border: '2px solid transparent',\n backgroundColor: colors.darkPurple,\n color: colors.white,\n '&:hover': {\n backgroundColor: colors.white,\n border: `2px solid ${colors.darkPurple}`,\n color: colors.darkPurple,\n '@media (hover: none)': {\n backgroundColor: colors.white,\n },\n },\n '&$disabled': {\n color: colors.mediumGray,\n opacity: 0.9,\n },\n },\n outlinedPrimary: {\n border: `2px solid ${colors.darkPurple}`,\n color: colors.darkPurple,\n '&:hover': {\n backgroundColor: colors.darkPurple,\n border: `2px solid transparent`,\n color: colors.white,\n '@media (hover: none)': {\n backgroundColor: colors.darkPurple,\n },\n },\n '&$disabled': {\n color: colors.black,\n opacity: 0.7,\n },\n },\n },\n MuiBreadcrumbs: {\n root: {\n color: colors.darkGray,\n },\n separator: {\n fontSize: '1.5rem',\n marginLeft: '16px',\n marginRight: '16px',\n },\n },\n MuiDialogContent: {\n root: {\n padding: '8px 8px',\n [theme.breakpoints.up('sm')]: {\n padding: '8px 24px',\n },\n },\n },\n MuiInputBase: {\n root: {\n border: '1px solid',\n borderColor: colors.gray,\n overflow: 'hidden',\n backgroundColor: colors.lightGreen,\n '&:hover:not($disabled)': {\n borderColor: colors.gray,\n },\n '& > svg': {\n color: colors.gray,\n },\n '&$focused': {\n boxShadow: '0 2px 6px 0 rgba(0, 0, 0, 0.24)',\n borderColor: colors.lightGreen,\n backgroundColor: colors.white,\n '&:hover:not($disabled)': {\n borderColor: colors.lightGreen,\n },\n },\n '&$error:not($focused)': {\n borderColor: theme.palette.error.main,\n '&:hover:not($disabled)': {\n borderColor: theme.palette.error.main,\n },\n },\n '&$disabled': {\n backgroundColor: colors.lightGray,\n },\n },\n adornedStart: {\n paddingLeft: '0.5rem',\n },\n adornedEnd: {\n paddingRight: '0.5rem',\n },\n input: {\n fontSize: '1rem',\n padding: '0.625rem 1rem',\n '&:not(:first-child)': {\n paddingLeft: '0.5rem',\n },\n '&:not(:last-child)': {\n paddingRight: '0.5rem',\n },\n '&::placeholder': {\n fontStyle: 'italic',\n },\n },\n },\n MuiInputLabel: {\n root: {\n textTransform: 'uppercase',\n marginLeft: '0.75rem',\n },\n shrink: {\n marginTop: '-8px',\n transform: 'translate(0, 1.5px) scale(1)',\n },\n },\n MuiFormLabel: {\n root: {\n color: colors.darkBrown,\n '&$error': {\n color: colors.darkRed,\n },\n },\n asterisk: {\n '&$error': {\n color: colors.darkRed,\n },\n },\n },\n MuiFormHelperText: {\n root: {\n color: colors.darkBrown,\n marginLeft: '0.75rem',\n '&$error': {\n color: theme.palette.error.main,\n },\n },\n },\n MuiCheckbox: {\n root: {\n color: colors.darkerBrown,\n backgroundColro: colors.lightGray,\n '&$checked': {\n color: colors.darkerBrown,\n backgroundColro: colors.white,\n },\n },\n },\n MuiFormControl: {\n root: {\n marginBottom: theme.spacing(2),\n },\n },\n MuiTypography: {\n root: {\n '& > li::Marker': {\n color: colors.darkBlue,\n },\n },\n },\n MuiList: {\n root: {\n listStyle: 'square',\n '& > li::Marker': {\n color: colors.darkBlue,\n },\n },\n },\n MuiCollapse: {\n hidden: {\n '@media print': {\n visibility: 'visible',\n height: 'auto',\n },\n },\n },\n MuiPaginationItem: {\n textPrimary: {\n '&.Mui-selected': {\n backgroundColor: colors.darkGreen,\n color: colors.white,\n fontWeight: 'bold',\n },\n },\n },\n MuiSlider: {\n thumb: {\n color: colors.darkGreen,\n '&:after': {\n display: 'none',\n },\n },\n track: {\n color: colors.darkGreen,\n },\n },\n PrivateValueLabel: {\n circle: {\n borderRadius: '50%',\n },\n label: {\n color: colors.white,\n fontWeight: 'bold',\n },\n offset: {\n top: 0,\n },\n },\n },\n props: {\n MuiAppBar: {\n color: 'primary',\n },\n MuiIconButton: {\n color: 'primary',\n },\n MuiButton: {\n color: 'primary',\n variant: 'contained',\n },\n MuiLink: {\n variant: 'body1',\n },\n MuiContainer: {\n disableGutters: false,\n },\n MuiBreadcrumbs: {\n separator: '›',\n },\n MuiInput: {\n disableUnderline: true,\n },\n MuiInputLabel: {\n shrink: true,\n },\n MuiCheckbox: {\n checkedIcon: <CheckBoxOutlined />,\n },\n },\n});\n\nexport default primaryTheme;\n","import React from 'react';\nimport { createTheme } from '@material-ui/core/styles';\nimport { CheckBoxOutlined } from '@material-ui/icons';\nimport { viinimaaNavigationBreakpoint } from '../../constants';\n\nimport '../../fonts/PlayfairDisplay/PlayfairDisplay.css';\n\nexport const colors = {\n black: 'rgb(0, 0, 0)',\n white: 'rgb(255, 255, 255)',\n white50: 'rgba(255, 255, 255, 0.5)',\n whiteTransparent: 'rgba(255, 255, 255, 0.9)',\n gray: 'rgb(204, 204, 204)',\n lighterGray: 'rgb(244, 245, 246)',\n lightGray: 'rgb(230, 230, 230)',\n mediumGray: 'rgb(155, 155, 155)',\n mediumGray2: 'rgb(129, 129, 129)',\n darkGray: 'rgb(51, 51, 51)',\n darkerGray: 'rgb(129, 129, 129)',\n blue: 'rgb(70, 152, 202)',\n lightBlue: 'rgb(164, 200, 225)',\n lightBlueTransparent: 'rgba(164, 200, 225, 0.9)',\n lighterBlue: 'rgb(234, 243, 249)',\n green: 'rgb(139, 181, 80)',\n lightGreen: 'rgb(176, 219, 116)',\n lightGreenTransparent: 'rgba(176, 219, 116, 0.9)',\n lighterGreen: 'rgb(241, 246, 236)',\n yellow: 'rgb(222, 184, 59)',\n lightYellow: 'rgb(233, 225, 134)',\n lighterYellow: 'rgb(255, 246, 233)',\n lightYellowTransparent: 'rgba(233, 225, 134, 0.9)',\n lighterYellow2: '#fff6e9',\n\n red: 'rgb(161, 21, 60)',\n darkRed: ' rgb(117, 13, 13)',\n lightRed: 'rgb(249, 234, 236)',\n\n darkOrange: '#ba8142',\n brightBlue: '#43847c',\n brightyellow: '#ffd700',\n\n brightGreen: '#6c8551',\n brightBrown: '#86482c',\n\n pink: 'rgb(208, 1, 110)',\n darkBrown: '#6D3332',\n brightOrange: '#FF4F01',\n purple: '#685BC7',\n lightPink: 'rgb(221, 169, 191)',\n};\n\nconst theme = createTheme({});\nconst breakPoints = {\n xs: 0,\n sm: 600,\n md: 840,\n lg: 1280,\n xl: 1920,\n};\nconst primaryTheme = createTheme({\n breakpoints: {\n values: breakPoints,\n },\n mixins: {\n toolbar: {\n minHeight: '70px',\n },\n },\n typography: {\n fontFamily: 'proxima-nova, sans-serif',\n fontWeightLight: '300',\n fontWeightRegular: '400',\n fontWeightMedium: '500',\n fontWeightBold: '700',\n h1: {\n fontFamily: '\"Playfair Display\", serif',\n fontSize: '1.75rem',\n fontWeight: '700',\n lineHeight: '1.19',\n marginBottom: '1rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '2.625rem',\n },\n },\n h2: {\n fontFamily: '\"Playfair Display\", serif',\n fontSize: '1.375rem',\n fontWeight: '700',\n lineHeight: 'normal',\n marginBottom: '1rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '1.5rem',\n },\n },\n h3: {\n fontFamily: '\"Playfair Display\", serif',\n fontSize: '1.125rem',\n fontWeight: '700',\n lineHeight: 'normal',\n marginBottom: '1rem',\n },\n h4: {\n fontFamily: '\"Playfair Display\", serif',\n fontSize: '1rem',\n fontWeight: '700',\n lineHeight: 'normal',\n marginBottom: '1rem',\n },\n h5: {\n fontFamily: '\"Playfair Display\", serif',\n fontSize: '1rem',\n fontWeight: '700',\n lineHeight: 'normal',\n marginBottom: '1rem',\n },\n h6: {\n fontFamily: '\"proxima-nova\", sans-serif',\n fontSize: '1rem',\n fontWeight: '400',\n lineHeight: 'normal',\n marginBottom: '1rem',\n },\n caption: {\n fontSize: 'inherit',\n fontStyle: 'italic',\n lineHeight: '1.5',\n },\n overline: {\n fontSize: '0.75rem',\n fontWeight: '700',\n },\n body1: {\n fontFamily: 'proxima-nova, sans-serif',\n fontSize: '0.938rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '1rem',\n },\n },\n body2: {\n fontFamily: 'proxima-nova, sans-serif',\n fontSize: '0.75rem',\n [theme.breakpoints.up(breakPoints.md)]: {\n fontSize: '0.875rem',\n },\n },\n navigationLink: {\n fontSize: '1rem',\n fontFamily: 'proxima-nova, sans-serif',\n fontWeight: 'bold',\n color: colors.black,\n },\n descriptionRow: {\n fontSize: 'initial',\n },\n },\n palette: {\n common: {\n black: colors.black,\n white: colors.white,\n gray: colors.gray,\n lightGray: colors.lightGray,\n lighterGray: colors.lighterGray,\n mediumGray: colors.mediumGray,\n darkGray: colors.darkGray,\n blue: colors.blue,\n lightBlue: colors.lightBlue,\n red: colors.red,\n darkRed: colors.darkRed,\n green: colors.green,\n lightGreen: colors.lightGreen,\n },\n primary: {\n main: colors.black,\n contrastText: colors.white50,\n },\n secondary: {\n main: colors.darkGray,\n light: colors.lightYellow,\n },\n text: {\n primary: colors.darkGray,\n secondary: colors.white,\n light: colors.white,\n },\n background: {\n default: colors.white,\n breadcrumbs: colors.lightGray,\n linkBlock: colors.lightGray,\n defaultColumn: 'transparent',\n defaultRow: 'transparent',\n },\n error: {\n main: colors.red,\n light: colors.lightRed,\n },\n success: {\n main: colors.green,\n light: colors.lighterGreen,\n },\n warning: {\n main: colors.brightOrange,\n light: colors.lighterYellow,\n },\n info: {\n main: colors.blue,\n light: colors.lighterBlue,\n },\n headingFontFamily: { fontFamily: '\"Playfair Display\", serif' },\n divider: colors.lightGray,\n category: {\n outlined: {\n background: colors.lightGray,\n text: colors.red,\n },\n text: colors.mediumGray,\n hoverText: colors.red,\n },\n footer: {\n border: {\n color: colors.red,\n width: '3px',\n },\n divider: colors.green,\n text: colors.black,\n background: colors.white,\n logoBarBackground: colors.lightGray,\n padding: {\n bottom: '50px',\n },\n columns: {\n list: null,\n },\n texts: null,\n },\n header: {\n text: colors.black,\n background: colors.white,\n border: {\n bottomWidth: '3px',\n style: 'solid',\n color: colors.red,\n },\n minHeight: '64px',\n paddingYDesktop: '24px',\n paddingTop: '0',\n backgroundDesktop: colors.green,\n borderBottomColor: colors.red,\n navigation: {\n activeLink: colors.red,\n activeLinkBorder: `4px solid ${colors.green}`,\n hoverText: colors.red,\n subMenuBackground: colors.lighterGray,\n subMenuBulletPoints: colors.red,\n },\n icons: {\n color: null,\n backgroundColor: 'transparent',\n },\n },\n search: {\n quickSearch: {\n inputContainer: {\n backgroundColor: colors.white,\n [theme.breakpoints.up('sm')]: {\n backgroundColor: colors.green,\n },\n },\n hideButton: {\n color: colors.white,\n },\n },\n },\n mobileNavigation: {\n text: colors.black,\n icon: colors.red,\n xIconBackground: colors.lighterGray,\n logoBarBottomBorder: colors.red,\n navigationElementBorder: colors.lightGray,\n subNavigationTitleBackground: colors.lighterGray,\n subNavigationTitleColor: colors.red,\n },\n productPage: {\n informationBackground: colors.lighterGray,\n tasteProfiles: {\n orange: colors.darkOrange,\n yellow: colors.brightyellow,\n green: colors.brightGreen,\n brown: colors.brightBrown,\n blue: colors.brightBlue,\n\n pink: colors.pink,\n darkBrown: colors.darkBrown,\n brightOrange: colors.brightOrange,\n purple: colors.purple,\n lightPink: colors.lightPink,\n },\n mainInfo: {\n accordion: {\n color: colors.red,\n information: {\n detailesKey: colors.darkerGray,\n },\n },\n },\n review: {\n articlePadding: theme.spacing(0, 2, 0, 2),\n background: colors.lighterGray,\n divider: colors.darkerGray,\n },\n labelBackground: colors.red,\n },\n quote: {\n text: colors.green,\n fontSize: '19px',\n },\n button: {\n fontWeight: 'bold',\n textTransform: 'uppercase',\n [theme.breakpoints.up(breakPoints.md)]: {\n padding: '15px 10px 15px 10px',\n },\n },\n memoryListButton: {\n badge: { backgroundColor: colors.green, color: colors.black },\n },\n link: {\n link: colors.red,\n active: colors.red,\n hover: colors.red,\n },\n pageTemplates: {\n landingPage: {\n paddingTop: theme.spacing(20),\n\n [theme.breakpoints.up(viinimaaNavigationBreakpoint.Breakpoint)]: {\n paddingTop: theme.spacing(10),\n },\n },\n otherPageTemplates: {\n paddingTop: theme.spacing(20),\n [theme.breakpoints.up(viinimaaNavigationBreakpoint.Breakpoint)]: {\n paddingTop: theme.spacing(15),\n },\n },\n recipePage: {\n paddingTop: theme.spacing(20),\n [theme.breakpoints.up(viinimaaNavigationBreakpoint.Breakpoint)]: {\n paddingTop: theme.spacing(15),\n },\n },\n },\n custobarSubscriptionForm: {\n background: colors.green,\n hover: {\n background: colors.lightGreen,\n },\n disabled: {\n background: colors.green,\n },\n },\n siteNotifications: {\n backgroundColor: colors.lighterYellow2,\n color: '#ffa31c',\n padding: theme.spacing(2.5),\n margin: theme.spacing(-3, 0, 4, 0),\n [theme.breakpoints.up(viinimaaNavigationBreakpoint.Breakpoint)]: {\n margin: theme.spacing(-1, 0, 4, 0),\n },\n },\n monopolyPrice: {\n fontFamily: 'proxima-nova, sans-serif',\n reducedPriceColor: colors.red,\n },\n },\n\n accordion: {\n backgroundColor: colors.white,\n color: colors.darkRed,\n border: '',\n expandIcon: {\n backgroundColor: colors.lighterGray,\n hover: {\n backgroundColor: colors.gray,\n },\n },\n },\n languageSelector: {\n color: colors.black,\n border: {\n color: colors.black,\n width: '2px',\n },\n margin: '0',\n },\n linkBlockModule: {\n imageWrapper: {\n maxWidth: '40%',\n },\n textWrapper: {},\n },\n table: {\n border: `solid 1px ${colors.black}`,\n borderRadius: 0,\n head: {\n backgroundColor: colors.black,\n color: colors.white,\n },\n row: {\n even: {\n backgroundColor: theme.palette.action.hover,\n },\n },\n },\n listElementCard: {\n content: {},\n },\n slider: {\n arrowBotton: {},\n },\n hr: {},\n\n imageSpotLink: {\n innerDot: {},\n },\n event: {\n root: {},\n day: {},\n month: {},\n name: {},\n shortDescription: {},\n icon: {},\n },\n overrides: {\n MuiAppBar: {\n root: {\n boxShadow: 'none',\n backgroundColor: 'transparent',\n },\n colorPrimary: {\n color: colors.black,\n backgroundColor: colors.white,\n },\n },\n MuiToolbar: {\n regular: {},\n dense: {\n color: colors.white,\n },\n },\n MuiDrawer: {\n root: {\n width: '350px',\n flexShrink: 0,\n },\n paper: {\n width: '350px',\n color: colors.black,\n backgroundColor: colors.white,\n maxWidth: '100%',\n },\n },\n MuiLink: {\n root: {\n color: colors.red,\n },\n },\n MuiDialog: {\n paper: {\n margin: '5px',\n },\n },\n MuiButton: {\n root: {\n textTransform: 'inherit',\n borderRadius: '0px',\n padding: '18px 20px',\n fontSize: '1rem',\n minWidth: '0',\n },\n sizeSmall: {\n padding: '9px 18px',\n borderRadius: '0px',\n fontSize: '0.8125rem',\n },\n containedPrimary: {\n boxShadow: 'none',\n border: '2px solid transparent',\n backgroundColor: colors.red,\n color: colors.white,\n '&:hover': {\n backgroundColor: colors.white,\n border: `2px solid ${colors.red}`,\n boxShadow: 'none',\n color: colors.red,\n '@media (hover: none)': {\n backgroundColor: colors.white,\n },\n },\n '&$disabled': {\n color: colors.black,\n opacity: 0.7,\n },\n },\n outlinedPrimary: {\n border: `2px solid ${colors.red}`,\n color: colors.red,\n '&:hover': {\n backgroundColor: colors.red,\n border: `2px solid transparent`,\n color: colors.white,\n '@media (hover: none)': {\n backgroundColor: colors.red,\n },\n },\n },\n },\n MuiBreadcrumbs: {\n root: {\n color: colors.darkGray,\n },\n separator: {\n fontSize: '1.5rem',\n marginLeft: '16px',\n marginRight: '16px',\n },\n },\n MuiDialogContent: {\n root: {\n padding: '8px 8px',\n [theme.breakpoints.up('sm')]: {\n padding: '8px 24px',\n },\n },\n },\n MuiInputBase: {\n root: {\n border: '1px solid',\n borderColor: colors.gray,\n overflow: 'hidden',\n backgroundColor: colors.lightGray,\n '&:hover:not($disabled)': {\n borderColor: colors.gray,\n },\n '& > svg': {\n color: colors.gray,\n },\n '&$focused': {\n boxShadow: '0 2px 6px 0 rgba(0, 0, 0, 0.24)',\n borderColor: colors.green,\n '&:hover:not($disabled)': {\n borderColor: colors.green,\n },\n },\n '&$error:not($focused)': {\n borderColor: theme.palette.error.main,\n '&:hover:not($disabled)': {\n borderColor: theme.palette.error.main,\n },\n },\n '&$disabled': {\n backgroundColor: colors.lightGray,\n },\n },\n adornedStart: {\n paddingLeft: '0.5rem',\n },\n adornedEnd: {\n paddingRight: '0.5rem',\n },\n input: {\n fontSize: '1rem',\n padding: '0.625rem 1rem',\n '&:not(:first-child)': {\n paddingLeft: '0.5rem',\n },\n '&:not(:last-child)': {\n paddingRight: '0.5rem',\n },\n '&::placeholder': {\n fontStyle: 'italic',\n },\n },\n },\n MuiInputLabel: {\n root: {\n textTransform: 'uppercase',\n marginLeft: '0.75rem',\n },\n shrink: {\n marginTop: '-8px',\n transform: 'translate(0, 1.5px) scale(1)',\n },\n },\n MuiFormLabel: {\n root: {\n color: colors.darkGray,\n '&$error': {\n color: colors.darkRed,\n },\n },\n asterisk: {\n '&$error': {\n color: colors.darkGray,\n },\n },\n },\n MuiFormHelperText: {\n root: {\n color: colors.darkGray,\n marginLeft: '0.75rem',\n '&$error': {\n color: colors.darkRed,\n },\n },\n },\n\n MuiCheckbox: {\n root: {\n color: colors.darkGray,\n '&$checked': {\n color: colors.darkGray,\n },\n },\n },\n MuiFormControl: {\n root: {\n marginBottom: theme.spacing(2),\n },\n },\n MuiTypography: {\n root: {\n '& > li::Marker': {\n color: colors.red,\n },\n },\n },\n MuiList: {\n root: {\n listStyle: 'square',\n '& > li::Marker': {\n color: colors.red,\n },\n },\n },\n MuiCollapse: {\n hidden: {\n '@media print': {\n visibility: 'visible',\n height: 'auto',\n },\n },\n },\n MuiPaginationItem: {\n textPrimary: {\n '&.Mui-selected': {\n backgroundColor: colors.red,\n color: colors.white,\n fontWeight: 'bold',\n },\n },\n },\n MuiSlider: {\n thumb: {\n color: colors.red,\n '&:after': {\n display: 'none',\n },\n },\n track: {\n color: colors.red,\n },\n },\n PrivateValueLabel: {\n circle: {\n borderRadius: '50%',\n },\n label: {\n color: colors.white,\n fontWeight: 'bold',\n },\n offset: {\n top: 0,\n },\n },\n },\n props: {\n MuiAppBar: {\n color: 'primary',\n },\n MuiIconButton: {\n color: 'primary',\n },\n MuiButton: {\n color: 'primary',\n variant: 'contained',\n },\n MuiLink: {\n variant: 'body1',\n },\n MuiContainer: {\n disableGutters: false,\n },\n MuiBreadcrumbs: {\n separator: '›',\n },\n MuiInput: {\n disableUnderline: true,\n },\n MuiInputLabel: {\n shrink: true,\n },\n MuiCheckbox: {\n checkedIcon: <CheckBoxOutlined />,\n },\n },\n});\n\nexport default primaryTheme;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { map, get, isEqual, isEmpty, isNil, reduce } from 'lodash';\nimport { v4 as uuid } from 'uuid';\n\nimport { isSSR } from './windowUtils';\n\nimport { createCustobarOrder, AnoraConversionEvent } from './custobarUtils';\n\nconst getProductBrand = productData => {\n let brand = get(productData, 'brands.0.title');\n if (isEmpty(brand)) {\n brand = get(productData, 'brands.0.menuTitle');\n }\n return brand;\n};\n\nconst getProductCategory = productData => {\n let category = get(productData, 'categories.0.title');\n if (isEmpty(category)) {\n category = get(productData, 'categories.0.menuTitle');\n }\n return category;\n};\n\nconst getProductsTotalPrice = productsData => {\n return reduce(\n productsData,\n (totalPrice, productData) => {\n return totalPrice + parseFloat(get(productData, 'price'));\n },\n 0,\n );\n};\n\nconst getProductsCurrencyCode = productsData => {\n const locale = get(productsData, '0.node_locale');\n return isEqual(locale, 'fi-FI') ? 'EUR' : 'SEK';\n};\n\nexport const viewPage = () => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer)) {\n return;\n }\n\n dataLayer.push({ event: 'pageView' });\n};\n\nexport const pushFacebookCategory = category => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer)) {\n return;\n }\n\n dataLayer.push({ event: 'fb_category', campaign_category: category });\n};\n\nexport const productClick = productData => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer) || isNil(productData)) {\n return;\n }\n\n dataLayer.push({ ecommerce: null });\n dataLayer.push({\n event: 'select_item',\n ecommerce: {\n items: [\n {\n item_name: get(productData, 'name'),\n item_id: get(productData, 'sku'),\n price: get(productData, 'price'),\n item_brand: getProductBrand(productData),\n item_category: getProductCategory(productData),\n item_list_name: 'Search Results',\n quantity: 1,\n },\n ],\n },\n });\n};\n\nexport const viewProduct = productData => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer) || isNil(productData)) {\n return;\n }\n\n dataLayer.push({ ecommerce: null });\n dataLayer.push({\n event: 'view_item',\n ecommerce: {\n items: [\n {\n item_name: get(productData, 'name'),\n item_id: get(productData, 'sku'),\n price: get(productData, 'price'),\n item_brand: getProductBrand(productData),\n item_category: getProductCategory(productData),\n quantity: 1,\n },\n ],\n },\n });\n};\n\nexport const viewProducts = productsData => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer) || isEmpty(productsData)) {\n return;\n }\n\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: 'view_item_list',\n ecommerce: {\n items: map(productsData, (productData, index) => {\n return {\n item_name: get(productData, 'name'),\n item_id: get(productData, 'sku'),\n price: get(productData, 'price'),\n item_brand: getProductBrand(productData),\n item_category: getProductCategory(productData),\n index,\n item_list_name: 'Search Results',\n };\n }),\n },\n });\n};\n\nexport const viewCart = productsData => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer) || isEmpty(productsData)) {\n return;\n }\n\n const currencyCode = getProductsCurrencyCode(productsData);\n const totalPrice = getProductsTotalPrice(productsData);\n\n dataLayer.push({ ecommerce: null });\n dataLayer.push({\n event: 'view_cart',\n ecommerce: {\n currency: currencyCode,\n value: totalPrice,\n items: map(productsData, (productData, productIndex) => {\n return {\n item_name: get(productData, 'name'),\n item_id: get(productData, 'sku'),\n item_brand: getProductBrand(productData),\n item_category: getProductCategory(productData),\n item_list_name: 'Memory List',\n index: productIndex,\n price: get(productData, 'price'),\n quantity: 1,\n };\n }),\n },\n });\n};\n\nexport const addToCart = productData => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer) || isNil(productData)) {\n return;\n }\n\n dataLayer.push({ ecommerce: null });\n dataLayer.push({\n event: 'add_to_cart',\n ecommerce: {\n items: [\n {\n item_name: get(productData, 'name'),\n item_id: get(productData, 'sku'),\n price: get(productData, 'price'),\n item_brand: getProductBrand(productData),\n item_category: getProductCategory(productData),\n quantity: 1,\n },\n ],\n },\n });\n};\n\nexport const removeFromCart = productData => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer) || isNil(productData)) {\n return;\n }\n\n dataLayer.push({ ecommerce: null });\n dataLayer.push({\n event: 'remove_from_cart',\n ecommerce: {\n items: [\n {\n item_name: get(productData, 'name'),\n item_id: get(productData, 'sku'),\n price: get(productData, 'price'),\n item_brand: getProductBrand(productData),\n item_category: getProductCategory(productData),\n quantity: 1,\n },\n ],\n },\n });\n};\n\nexport const purchaseProduct = (productData, customerToken) => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer) || isNil(productData)) {\n return;\n }\n\n const currencyCode = getProductsCurrencyCode([productData]);\n\n createCustobarOrder(productData, customerToken);\n AnoraConversionEvent(productData);\n\n dataLayer.push({ ecommerce: null });\n dataLayer.push({\n event: 'purchase',\n ecommerce: {\n transaction_id: uuid(),\n affiliation: get(productData, 'attributes.channel.value'),\n value: get(productData, 'price'),\n currency: currencyCode,\n items: [\n {\n item_name: get(productData, 'name'),\n item_id: get(productData, 'sku'),\n price: get(productData, 'price'),\n item_brand: getProductBrand(productData),\n item_category: getProductCategory(productData),\n quantity: 1,\n },\n ],\n },\n });\n};\n\nexport const purchaseProductFromCart = () => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer)) {\n return;\n }\n\n dataLayer.push({ event: 'alko_click_shopping_cart' });\n};\n\nexport const subscribeNewsletter = () => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer)) {\n return;\n }\n\n dataLayer.push({ event: 'newsletterSubscribe' });\n};\n\nexport const clickPrintButton = () => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer)) {\n return;\n }\n\n dataLayer.push({ event: 'printButton' });\n};\n\nexport const filterProducts = () => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer)) {\n return;\n }\n\n dataLayer.push({ event: 'useFilter' });\n};\n\nexport const searchUsage = (searchTerm, searchResultCount, searchType) => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n if (isNil(dataLayer)) {\n return;\n }\n\n dataLayer.push({\n event: 'searchResult',\n searchTerm,\n searchResults: searchResultCount,\n searchType,\n });\n};\n\nexport const viewVideo = () => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer)) {\n return;\n }\n dataLayer.push({ event: 'videoView' });\n};\n\nexport const clickAmazonAffiliateLink = () => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer)) {\n return;\n }\n dataLayer.push({ event: 'amazonAffiliateLink' });\n};\n\nexport const submitCampaignPageForm = () => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer)) {\n return;\n }\n dataLayer.push({ event: 'submitCampaignPageForm' });\n};\n\nexport const viewCampaign = campaignData => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer)) {\n return;\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: 'view_promotion',\n ecommerce: {\n creative_name: '', // Can be empty\n creative_slot: '', // Can be empty\n promotion_id: get(campaignData, 'fullPath', ''), // Page url\n promotion_name: get(campaignData, 'title', ''), // Item name\n items: [\n {\n item_name: get(campaignData, 'orderFormProduct.relatedProduct.name', ''),\n item_id: get(campaignData, 'orderFormProduct.relatedProduct.sku', ''),\n item_brand: get(campaignData, 'orderFormProduct.relatedProduct.brands.0.title', ''), // if used\n price: get(\n campaignData,\n 'orderFormProduct.relatedProduct.attributes.monopoly_reduced_price.value',\n get(campaignData, 'orderFormProduct.relatedProduct.price', ''),\n ),\n item_category: get(campaignData, 'orderFormProduct.relatedProduct.categories.0.title', ''),\n quantity: 1,\n },\n ],\n },\n });\n};\n\nexport const clickCampaignCard = campaignData => {\n const dataLayer = isSSR() ? null : get(window, 'dataLayer', []);\n\n if (isNil(dataLayer)) {\n return;\n }\n\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: 'select_promotion',\n ecommerce: {\n creative_name: '', // Can be empty\n creative_slot: '', // Can be empty\n promotion_id: get(campaignData, 'fullPath', ''), // Page url\n promotion_name: get(campaignData, 'title', ''), // Item name\n items: [\n {\n item_name: get(campaignData, 'orderFormProduct.relatedProduct.name', ''),\n item_id: get(campaignData, 'orderFormProduct.relatedProduct.sku', ''),\n item_brand: get(campaignData, 'orderFormProduct.relatedProduct.brands.0.title', ''), // if used\n price: get(\n campaignData,\n 'orderFormProduct.relatedProduct.attributes.monopoly_reduced_price.value',\n get(campaignData, 'orderFormProduct.relatedProduct.price', ''),\n ),\n item_category: get(campaignData, 'orderFormProduct.relatedProduct.categories.0.title', ''),\n quantity: 1,\n },\n ],\n },\n });\n};\n","import axios from 'axios';\nimport { DateTime } from 'luxon';\n\nimport { get, isEmpty, replace, includes, split, each, isNil } from 'lodash';\nimport { getWindowLocationSearch, isSSR } from './windowUtils';\n\nconst getProductBrand = productData => {\n let brand = get(productData, 'brands.0.title');\n if (isEmpty(brand)) {\n brand = get(productData, 'brands.0.menuTitle');\n }\n if (isEmpty(brand)) {\n brand = '';\n }\n return brand;\n};\n\nconst getProductCategory = productData => {\n let category = get(productData, 'categories.0.title');\n if (isEmpty(category)) {\n category = get(productData, 'categories.0.menuTitle');\n }\n if (isEmpty(category)) {\n category = '';\n }\n return category;\n};\n\nconst getProductPrice = productData => {\n let price = get(productData, 'price');\n price = parseFloat(price).toFixed(2);\n price = replace(price, '.', '');\n if (isEmpty(price)) {\n price = '';\n }\n return price;\n};\nconst getProductReducedPrice = productData => {\n let price = get(productData, 'attributes.monopoly_reduced_price.value', '');\n if (!isEmpty(price)) {\n price = parseFloat(price).toFixed(2);\n price = replace(price, '.', '');\n }\n return price;\n};\n\nexport const getUtmCampaignFromPath = () => {\n const locationSearch = getWindowLocationSearch();\n let utmCampainID = '';\n if (includes(locationSearch, 'utm_campaign')) {\n const params = split(locationSearch, '&');\n each(params, param => {\n if (includes(param, 'utm_campaign')) {\n utmCampainID = get(split(param, '='), '1', '');\n }\n });\n }\n return utmCampainID;\n};\n\nexport const createCustobarOrder = async (productData, customerToken) => {\n try {\n const utmCampaignID = getUtmCampaignFromPath();\n return axios.post(`${process.env.GATSBY_ELASTIC_HOST}/orderevents`, [\n {\n customer_token: customerToken,\n product_category: getProductCategory(productData),\n product_id: get(productData, 'sku', ''),\n product_tags: get(productData, 'attributes.sweetness.value', ''),\n product_title: get(productData, 'name', ''),\n product_type: get(productData, 'attributes.packaging_type.value', ''),\n product_price: getProductPrice(productData),\n product_brand: getProductBrand(productData),\n utm_campaign: utmCampaignID,\n },\n ]);\n } catch (error) {\n console.error(error);\n }\n return null;\n};\n\nexport const pageBrowseEvent = (pathName, productData) => {\n const cstbr = isSSR() ? null : get(window, 'cstbr', []);\n\n if (isNil(cstbr)) {\n return;\n }\n cstbr.push({\n type: 'BROWSE',\n path: pathName,\n product_id: get(productData, 'sku', null) ? get(productData, 'sku') : '',\n });\n};\n\nexport const AnoraConversionEvent = productData => {\n const cstbr = isSSR() ? null : get(window, 'cstbr', []);\n if (isNil(cstbr)) {\n return;\n }\n const saleId = DateTime.now().toFormat('ddMMyyHHmmss');\n\n const price = isEmpty(getProductReducedPrice(productData))\n ? getProductPrice(productData)\n : getProductReducedPrice(productData);\n cstbr.push({\n type: 'ANORA_CONVERSION',\n product_id: get(productData, 'sku', ''),\n sale_id: saleId,\n product_price: price,\n });\n};\n","import get from 'lodash/get';\nimport isEqual from 'lodash/isEqual';\n\nexport const isSSR = () => {\n return isEqual(typeof window, 'undefined');\n};\n\nexport const getWindowHref = () => {\n return isSSR() ? undefined : get(window, 'location.href');\n};\n\nexport const getWindowPathName = () => {\n return isSSR() ? undefined : get(window, 'location.pathname');\n};\nexport const getWindowLocationSearch = () => {\n return isSSR() ? undefined : get(window, 'location.search');\n};\n","import invariant from \"invariant\";\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Router> dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{ path: path }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// <Link to=\"deeper\"/>\n// // instead of\n// <Link to=`{${props.uri}/deeper}`/>\n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\n\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return { route: route, score: score, index: index };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({ location: location, action: \"POP\" });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, { key: Date.now() + \"\" });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({ location: location, action: \"PUSH\" });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({ pathname: pathname, search: search.length ? \"?\" + search : search });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = { pathname: pathname, search: search };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport React, { useContext, createContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\";\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\nvar LocationContext = createNamedContext(\"Location\");\n\n// sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(\n LocationContext.Consumer,\n null,\n function (context) {\n return context ? children(context) : React.createElement(\n LocationProvider,\n null,\n children\n );\n }\n );\n};\n\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n\n function LocationProvider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, LocationProvider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n context: _this.getContext(),\n refs: { unlisten: null }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n LocationProvider.prototype.getContext = function getContext() {\n var _props$history = this.props.history,\n navigate = _props$history.navigate,\n location = _props$history.location;\n\n return { navigate: navigate, location: location };\n };\n\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n\n _navigate(error.uri, { replace: true });\n } else {\n throw error;\n }\n };\n\n LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.context.location !== this.state.context.location) {\n this.props.history._onTransitionComplete();\n }\n };\n\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var refs = this.state.refs,\n history = this.props.history;\n\n history._onTransitionComplete();\n refs.unlisten = history.listen(function () {\n Promise.resolve().then(function () {\n // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n requestAnimationFrame(function () {\n if (!_this2.unmounted) {\n _this2.setState(function () {\n return { context: _this2.getContext() };\n });\n }\n });\n });\n });\n };\n\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n\n this.unmounted = true;\n refs.unlisten();\n };\n\n LocationProvider.prototype.render = function render() {\n var context = this.state.context,\n children = this.props.children;\n\n return React.createElement(\n LocationContext.Provider,\n { value: context },\n typeof children === \"function\" ? children(context) : children || null\n );\n };\n\n return LocationProvider;\n}(React.Component);\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? LocationProvider.propTypes = {\n history: PropTypes.object.isRequired\n} : void 0;\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\n\n var searchIndex = url.indexOf(\"?\");\n var searchExists = searchIndex > -1;\n var pathname = void 0;\n var search = \"\";\n var hash = \"\";\n\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\n\n return React.createElement(\n LocationContext.Provider,\n {\n value: {\n location: {\n pathname: pathname,\n search: search,\n hash: hash\n },\n navigate: function navigate() {\n throw new Error(\"You can't call navigate on the server.\");\n }\n }\n },\n children\n );\n};\n////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\nvar BaseContext = createNamedContext(\"Base\", {\n baseuri: \"/\",\n basepath: \"/\",\n navigate: globalHistory.navigate\n});\n\n////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\nvar Router = function Router(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (baseContext) {\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n }\n );\n }\n );\n};\n\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n RouterImpl.prototype.render = function render() {\n var _props = this.props,\n location = _props.location,\n _navigate2 = _props.navigate,\n basepath = _props.basepath,\n primary = _props.primary,\n children = _props.children,\n baseuri = _props.baseuri,\n _props$component = _props.component,\n component = _props$component === undefined ? \"div\" : _props$component,\n domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n\n var routes = React.Children.toArray(children).reduce(function (array, child) {\n var routes = createRoute(basepath)(child);\n return array.concat(routes);\n }, []);\n var pathname = location.pathname;\n\n\n var match = pick(routes, pathname);\n\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value;\n\n // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n\n var props = _extends({}, params, {\n uri: uri,\n location: location,\n navigate: function navigate(to, options) {\n return _navigate2(resolve(to, uri), options);\n }\n });\n\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(\n Router,\n { location: location, primary: primary },\n element.props.children\n ) : undefined);\n\n // using 'div' for < 16.3 support\n var FocusWrapper = primary ? FocusHandler : component;\n // don't pass any props to 'div'\n var wrapperProps = primary ? _extends({ uri: uri, location: location, component: component }, domProps) : domProps;\n\n return React.createElement(\n BaseContext.Provider,\n {\n value: { baseuri: uri, basepath: basepath, navigate: props.navigate }\n },\n React.createElement(\n FocusWrapper,\n wrapperProps,\n clone\n )\n );\n } else {\n // Not sure if we want this, would require index routes at every level\n // warning(\n // false,\n // `<Router basepath=\"${basepath}\">\\n\\nNothing matched:\\n\\t${\n // location.pathname\n // }\\n\\nPaths checked: \\n\\t${routes\n // .map(route => route.path)\n // .join(\n // \"\\n\\t\"\n // )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n // \\n\\tlet NotFound = () => <div>Not Found!</div>\n // \\n\\t<Router>\\n\\t <NotFound default/>\\n\\t {/* ... */}\\n\\t</Router>`\n // );\n return null;\n }\n };\n\n return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n primary: true\n};\n\n\nvar FocusContext = createNamedContext(\"Focus\");\n\nvar FocusHandler = function FocusHandler(_ref3) {\n var uri = _ref3.uri,\n location = _ref3.location,\n component = _ref3.component,\n domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n\n return React.createElement(\n FocusContext.Consumer,\n null,\n function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n }\n );\n};\n\n// don't focus on initial render\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n\n _classCallCheck(this, FocusHandlerImpl);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n if (!_this4.state.shouldFocus && node) {\n node.focus();\n }\n }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n }\n\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n if (initial) {\n return _extends({\n shouldFocus: true\n }, nextProps);\n } else {\n var myURIChanged = nextProps.uri !== prevState.uri;\n var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n return _extends({\n shouldFocus: myURIChanged || navigatedUpToMe\n }, nextProps);\n }\n };\n\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\n };\n\n FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n this.focus();\n }\n };\n\n FocusHandlerImpl.prototype.focus = function focus() {\n if (process.env.NODE_ENV === \"test\") {\n // getting cannot read property focus of null in the tests\n // and that bit of global `initialRender` state causes problems\n // should probably figure it out!\n return;\n }\n\n var requestFocus = this.props.requestFocus;\n\n\n if (requestFocus) {\n requestFocus(this.node);\n } else {\n if (initialRender) {\n initialRender = false;\n } else if (this.node) {\n // React polyfills [autofocus] and it fires earlier than cDM,\n // so we were stealing focus away, this line prevents that.\n if (!this.node.contains(document.activeElement)) {\n this.node.focus();\n }\n }\n }\n };\n\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n\n var _props2 = this.props,\n children = _props2.children,\n style = _props2.style,\n requestFocus = _props2.requestFocus,\n _props2$component = _props2.component,\n Comp = _props2$component === undefined ? \"div\" : _props2$component,\n uri = _props2.uri,\n location = _props2.location,\n domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n\n return React.createElement(\n Comp,\n _extends({\n style: _extends({ outline: \"none\" }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps),\n React.createElement(\n FocusContext.Provider,\n { value: this.requestFocus },\n this.props.children\n )\n );\n };\n\n return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {};\n\n////////////////////////////////////////////////////////////////////////////////\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref6) {\n var location = _ref6.location,\n navigate = _ref6.navigate;\n\n var to = props.to,\n state = props.state,\n replace = props.replace,\n _props$getProps = props.getProps,\n getProps = _props$getProps === undefined ? k : _props$getProps,\n anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n\n var href = resolve(to, baseuri);\n var encodedHref = encodeURI(href);\n var isCurrent = location.pathname === encodedHref;\n var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n\n return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({ isCurrent: isCurrent, isPartiallyCurrent: isPartiallyCurrent, href: href, location: location }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n if (typeof replace !== \"boolean\" && isCurrent) {\n var _location$state = _extends({}, location.state),\n key = _location$state.key,\n restState = _objectWithoutProperties(_location$state, [\"key\"]);\n\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n }\n );\n }\n );\n});\n\nLink.displayName = \"Link\";\n\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes = {\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n }\n\n // Support React < 16 with this hook\n RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n var _props3 = this.props,\n navigate = _props3.navigate,\n to = _props3.to,\n from = _props3.from,\n _props3$replace = _props3.replace,\n replace = _props3$replace === undefined ? true : _props3$replace,\n state = _props3.state,\n noThrow = _props3.noThrow,\n baseuri = _props3.baseuri,\n props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n Promise.resolve().then(function () {\n var resolvedTo = resolve(to, baseuri);\n navigate(insertParams(resolvedTo, props), { replace: replace, state: state });\n });\n };\n\n RedirectImpl.prototype.render = function render() {\n var _props4 = this.props,\n navigate = _props4.navigate,\n to = _props4.to,\n from = _props4.from,\n replace = _props4.replace,\n state = _props4.state,\n noThrow = _props4.noThrow,\n baseuri = _props4.baseuri,\n props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n\n return RedirectImpl;\n}(React.Component);\n\nvar Redirect = function Redirect(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, { baseuri: baseuri }, props));\n }\n );\n }\n );\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Redirect.propTypes = {\n from: PropTypes.string,\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\n\n var resolvedPath = resolve(path, baseuri);\n var result = match(resolvedPath, location.pathname);\n return children({\n navigate: navigate,\n location: location,\n match: result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null\n });\n }\n );\n }\n );\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.location;\n};\n\nvar useNavigate = function useNavigate() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useNavigate hook was used but a BaseContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.navigate;\n};\n\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var results = match(context.basepath, location.pathname);\n\n return results ? results.params : null;\n};\n\nvar useMatch = function useMatch(path) {\n if (!path) {\n throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n }\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var resolvedPath = resolve(path, context.baseuri);\n var result = match(resolvedPath, location.pathname);\n return result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\n !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Router>: Children of <Router> must have a `path` or `default` prop, or be a `<Redirect>`. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Redirect from=\\\"\" + element.props.from + \"\\\" to=\\\"\" + element.props.to + \"\\\"/> requires both \\\"from\\\" and \\\"to\\\" props when inside a <Router>.\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Redirect from=\\\"\" + element.props.from + \" to=\\\"\" + element.props.to + \"\\\"/> has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n\n if (element.props.default) {\n return { value: element, default: true };\n }\n\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n\n return {\n value: element,\n default: element.props.default,\n path: element.props.children ? stripSlashes(path) + \"/*\" : path\n };\n };\n};\n\nvar shouldNavigate = function shouldNavigate(event) {\n return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n////////////////////////////////////////////////////////////////////////\nexport { Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch, resolve , BaseContext };","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\n\nexport default isBrowser;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport isInBrowser from 'is-in-browser';\nimport warning from 'tiny-warning';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\nvar plainObjectConstrurctor = {}.constructor;\nfunction cloneStyle(style) {\n if (style == null || typeof style !== 'object') return style;\n if (Array.isArray(style)) return style.map(cloneStyle);\n if (style.constructor !== plainObjectConstrurctor) return style;\n var newStyle = {};\n\n for (var name in style) {\n newStyle[name] = cloneStyle(style[name]);\n }\n\n return newStyle;\n}\n\n/**\n * Create a rule instance.\n */\n\nfunction createRule(name, decl, options) {\n if (name === void 0) {\n name = 'unnamed';\n }\n\n var jss = options.jss;\n var declCopy = cloneStyle(decl);\n var rule = jss.plugins.onCreateRule(name, declCopy, options);\n if (rule) return rule; // It is an at-rule and it has no instance.\n\n if (name[0] === '@') {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown rule \" + name) : void 0;\n }\n\n return null;\n}\n\nvar join = function join(value, by) {\n var result = '';\n\n for (var i = 0; i < value.length; i++) {\n // Remove !important from the value, it will be readded later.\n if (value[i] === '!important') break;\n if (result) result += by;\n result += value[i];\n }\n\n return result;\n};\n/**\n * Converts JSS array value to a CSS string.\n *\n * `margin: [['5px', '10px']]` > `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\n\n\nvar toCssValue = function toCssValue(value) {\n if (!Array.isArray(value)) return value;\n var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.\n\n if (Array.isArray(value[0])) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] === '!important') break;\n if (cssValue) cssValue += ', ';\n cssValue += join(value[i], ' ');\n }\n } else cssValue = join(value, ', '); // Add !important, because it was ignored.\n\n\n if (value[value.length - 1] === '!important') {\n cssValue += ' !important';\n }\n\n return cssValue;\n};\n\nfunction getWhitespaceSymbols(options) {\n if (options && options.format === false) {\n return {\n linebreak: '',\n space: ''\n };\n }\n\n return {\n linebreak: '\\n',\n space: ' '\n };\n}\n\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\n\nfunction indentStr(str, indent) {\n var result = '';\n\n for (var index = 0; index < indent; index++) {\n result += ' ';\n }\n\n return result + str;\n}\n/**\n * Converts a Rule to CSS string.\n */\n\n\nfunction toCss(selector, style, options) {\n if (options === void 0) {\n options = {};\n }\n\n var result = '';\n if (!style) return result;\n var _options = options,\n _options$indent = _options.indent,\n indent = _options$indent === void 0 ? 0 : _options$indent;\n var fallbacks = style.fallbacks;\n\n if (options.format === false) {\n indent = -Infinity;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak,\n space = _getWhitespaceSymbols.space;\n\n if (selector) indent++; // Apply fallbacks first.\n\n if (fallbacks) {\n // Array syntax {fallbacks: [{prop: value}]}\n if (Array.isArray(fallbacks)) {\n for (var index = 0; index < fallbacks.length; index++) {\n var fallback = fallbacks[index];\n\n for (var prop in fallback) {\n var value = fallback[prop];\n\n if (value != null) {\n if (result) result += linebreak;\n result += indentStr(prop + \":\" + space + toCssValue(value) + \";\", indent);\n }\n }\n }\n } else {\n // Object syntax {fallbacks: {prop: value}}\n for (var _prop in fallbacks) {\n var _value = fallbacks[_prop];\n\n if (_value != null) {\n if (result) result += linebreak;\n result += indentStr(_prop + \":\" + space + toCssValue(_value) + \";\", indent);\n }\n }\n }\n }\n\n for (var _prop2 in style) {\n var _value2 = style[_prop2];\n\n if (_value2 != null && _prop2 !== 'fallbacks') {\n if (result) result += linebreak;\n result += indentStr(_prop2 + \":\" + space + toCssValue(_value2) + \";\", indent);\n }\n } // Allow empty style in this case, because properties will be added dynamically.\n\n\n if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.\n\n if (!selector) return result;\n indent--;\n if (result) result = \"\" + linebreak + result + linebreak;\n return indentStr(\"\" + selector + space + \"{\" + result, indent) + indentStr('}', indent);\n}\n\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\nvar nativeEscape = typeof CSS !== 'undefined' && CSS.escape;\nvar escape = (function (str) {\n return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\\\$1');\n});\n\nvar BaseStyleRule =\n/*#__PURE__*/\nfunction () {\n function BaseStyleRule(key, style, options) {\n this.type = 'style';\n this.isProcessed = false;\n var sheet = options.sheet,\n Renderer = options.Renderer;\n this.key = key;\n this.options = options;\n this.style = style;\n if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();\n }\n /**\n * Get or set a style property.\n */\n\n\n var _proto = BaseStyleRule.prototype;\n\n _proto.prop = function prop(name, value, options) {\n // It's a getter.\n if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.\n\n var force = options ? options.force : false;\n if (!force && this.style[name] === value) return this;\n var newValue = value;\n\n if (!options || options.process !== false) {\n newValue = this.options.jss.plugins.onChangeValue(value, name, this);\n }\n\n var isEmpty = newValue == null || newValue === false;\n var isDefined = name in this.style; // Value is empty and wasn't defined before.\n\n if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.\n\n var remove = isEmpty && isDefined;\n if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.\n\n if (this.renderable && this.renderer) {\n if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);\n return this;\n }\n\n var sheet = this.options.sheet;\n\n if (sheet && sheet.attached) {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Rule is not linked. Missing sheet option \"link: true\".') : void 0;\n }\n\n return this;\n };\n\n return BaseStyleRule;\n}();\nvar StyleRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(StyleRule, _BaseStyleRule);\n\n function StyleRule(key, style, options) {\n var _this;\n\n _this = _BaseStyleRule.call(this, key, style, options) || this;\n var selector = options.selector,\n scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n\n if (selector) {\n _this.selectorText = selector;\n } else if (scoped !== false) {\n _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);\n _this.selectorText = \".\" + escape(_this.id);\n }\n\n return _this;\n }\n /**\n * Set selector string.\n * Attention: use this with caution. Most browsers didn't implement\n * selectorText setter, so this may result in rerendering of entire Style Sheet.\n */\n\n\n var _proto2 = StyleRule.prototype;\n\n /**\n * Apply rule to an element inline.\n */\n _proto2.applyTo = function applyTo(renderable) {\n var renderer = this.renderer;\n\n if (renderer) {\n var json = this.toJSON();\n\n for (var prop in json) {\n renderer.setProperty(renderable, prop, json[prop]);\n }\n }\n\n return this;\n }\n /**\n * Returns JSON representation of the rule.\n * Fallbacks are not supported.\n * Useful for inline styles.\n */\n ;\n\n _proto2.toJSON = function toJSON() {\n var json = {};\n\n for (var prop in this.style) {\n var value = this.style[prop];\n if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);\n }\n\n return json;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto2.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.selectorText, this.style, opts);\n };\n\n _createClass(StyleRule, [{\n key: \"selector\",\n set: function set(selector) {\n if (selector === this.selectorText) return;\n this.selectorText = selector;\n var renderer = this.renderer,\n renderable = this.renderable;\n if (!renderable || !renderer) return;\n var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.\n\n if (!hasChanged) {\n renderer.replaceRule(renderable, this);\n }\n }\n /**\n * Get selector string.\n */\n ,\n get: function get() {\n return this.selectorText;\n }\n }]);\n\n return StyleRule;\n}(BaseStyleRule);\nvar pluginStyleRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (key[0] === '@' || options.parent && options.parent.type === 'keyframes') {\n return null;\n }\n\n return new StyleRule(key, style, options);\n }\n};\n\nvar defaultToStringOptions = {\n indent: 1,\n children: true\n};\nvar atRegExp = /@([\\w-]+)/;\n/**\n * Conditional rule for @media, @supports\n */\n\nvar ConditionalRule =\n/*#__PURE__*/\nfunction () {\n function ConditionalRule(key, styles, options) {\n this.type = 'conditional';\n this.isProcessed = false;\n this.key = key;\n var atMatch = key.match(atRegExp);\n this.at = atMatch ? atMatch[1] : 'unknown'; // Key might contain a unique suffix in case the `name` passed by user was duplicate.\n\n this.query = options.name || \"@\" + this.at;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = ConditionalRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Replace rule, run plugins.\n */\n ;\n\n _proto.replaceRule = function replaceRule(name, style, options) {\n var newRule = this.rules.replace(name, style, options);\n if (newRule) this.options.jss.plugins.onProcessRule(newRule);\n return newRule;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (options.indent == null) options.indent = defaultToStringOptions.indent;\n if (options.children == null) options.children = defaultToStringOptions.children;\n\n if (options.children === false) {\n return this.query + \" {}\";\n }\n\n var children = this.rules.toString(options);\n return children ? this.query + \" {\" + linebreak + children + linebreak + \"}\" : '';\n };\n\n return ConditionalRule;\n}();\nvar keyRegExp = /@media|@supports\\s+/;\nvar pluginConditionalRule = {\n onCreateRule: function onCreateRule(key, styles, options) {\n return keyRegExp.test(key) ? new ConditionalRule(key, styles, options) : null;\n }\n};\n\nvar defaultToStringOptions$1 = {\n indent: 1,\n children: true\n};\nvar nameRegExp = /@keyframes\\s+([\\w-]+)/;\n/**\n * Rule for @keyframes\n */\n\nvar KeyframesRule =\n/*#__PURE__*/\nfunction () {\n function KeyframesRule(key, frames, options) {\n this.type = 'keyframes';\n this.at = '@keyframes';\n this.isProcessed = false;\n var nameMatch = key.match(nameRegExp);\n\n if (nameMatch && nameMatch[1]) {\n this.name = nameMatch[1];\n } else {\n this.name = 'noname';\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Bad keyframes name \" + key) : void 0;\n }\n\n this.key = this.type + \"-\" + this.name;\n this.options = options;\n var scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n this.id = scoped === false ? this.name : escape(generateId(this, sheet));\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in frames) {\n this.rules.add(name, frames[name], _extends({}, options, {\n parent: this\n }));\n }\n\n this.rules.process();\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = KeyframesRule.prototype;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions$1;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (options.indent == null) options.indent = defaultToStringOptions$1.indent;\n if (options.children == null) options.children = defaultToStringOptions$1.children;\n\n if (options.children === false) {\n return this.at + \" \" + this.id + \" {}\";\n }\n\n var children = this.rules.toString(options);\n if (children) children = \"\" + linebreak + children + linebreak;\n return this.at + \" \" + this.id + \" {\" + children + \"}\";\n };\n\n return KeyframesRule;\n}();\nvar keyRegExp$1 = /@keyframes\\s+/;\nvar refRegExp = /\\$([\\w-]+)/g;\n\nvar findReferencedKeyframe = function findReferencedKeyframe(val, keyframes) {\n if (typeof val === 'string') {\n return val.replace(refRegExp, function (match, name) {\n if (name in keyframes) {\n return keyframes[name];\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced keyframes rule \\\"\" + name + \"\\\" is not defined.\") : void 0;\n return match;\n });\n }\n\n return val;\n};\n/**\n * Replace the reference for a animation name.\n */\n\n\nvar replaceRef = function replaceRef(style, prop, keyframes) {\n var value = style[prop];\n var refKeyframe = findReferencedKeyframe(value, keyframes);\n\n if (refKeyframe !== value) {\n style[prop] = refKeyframe;\n }\n};\n\nvar pluginKeyframesRule = {\n onCreateRule: function onCreateRule(key, frames, options) {\n return typeof key === 'string' && keyRegExp$1.test(key) ? new KeyframesRule(key, frames, options) : null;\n },\n // Animation name ref replacer.\n onProcessStyle: function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style' || !sheet) return style;\n if ('animation-name' in style) replaceRef(style, 'animation-name', sheet.keyframes);\n if ('animation' in style) replaceRef(style, 'animation', sheet.keyframes);\n return style;\n },\n onChangeValue: function onChangeValue(val, prop, rule) {\n var sheet = rule.options.sheet;\n\n if (!sheet) {\n return val;\n }\n\n switch (prop) {\n case 'animation':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n case 'animation-name':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n default:\n return val;\n }\n }\n};\n\nvar KeyframeRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(KeyframeRule, _BaseStyleRule);\n\n function KeyframeRule() {\n return _BaseStyleRule.apply(this, arguments) || this;\n }\n\n var _proto = KeyframeRule.prototype;\n\n /**\n * Generates a CSS string.\n */\n _proto.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.key, this.style, opts);\n };\n\n return KeyframeRule;\n}(BaseStyleRule);\nvar pluginKeyframeRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (options.parent && options.parent.type === 'keyframes') {\n return new KeyframeRule(key, style, options);\n }\n\n return null;\n }\n};\n\nvar FontFaceRule =\n/*#__PURE__*/\nfunction () {\n function FontFaceRule(key, style, options) {\n this.type = 'font-face';\n this.at = '@font-face';\n this.isProcessed = false;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = FontFaceRule.prototype;\n\n _proto.toString = function toString(options) {\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (Array.isArray(this.style)) {\n var str = '';\n\n for (var index = 0; index < this.style.length; index++) {\n str += toCss(this.at, this.style[index]);\n if (this.style[index + 1]) str += linebreak;\n }\n\n return str;\n }\n\n return toCss(this.at, this.style, options);\n };\n\n return FontFaceRule;\n}();\nvar keyRegExp$2 = /@font-face/;\nvar pluginFontFaceRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return keyRegExp$2.test(key) ? new FontFaceRule(key, style, options) : null;\n }\n};\n\nvar ViewportRule =\n/*#__PURE__*/\nfunction () {\n function ViewportRule(key, style, options) {\n this.type = 'viewport';\n this.at = '@viewport';\n this.isProcessed = false;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = ViewportRule.prototype;\n\n _proto.toString = function toString(options) {\n return toCss(this.key, this.style, options);\n };\n\n return ViewportRule;\n}();\nvar pluginViewportRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return key === '@viewport' || key === '@-ms-viewport' ? new ViewportRule(key, style, options) : null;\n }\n};\n\nvar SimpleRule =\n/*#__PURE__*/\nfunction () {\n function SimpleRule(key, value, options) {\n this.type = 'simple';\n this.isProcessed = false;\n this.key = key;\n this.value = value;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n // eslint-disable-next-line no-unused-vars\n\n\n var _proto = SimpleRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.value)) {\n var str = '';\n\n for (var index = 0; index < this.value.length; index++) {\n str += this.key + \" \" + this.value[index] + \";\";\n if (this.value[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return this.key + \" \" + this.value + \";\";\n };\n\n return SimpleRule;\n}();\nvar keysMap = {\n '@charset': true,\n '@import': true,\n '@namespace': true\n};\nvar pluginSimpleRule = {\n onCreateRule: function onCreateRule(key, value, options) {\n return key in keysMap ? new SimpleRule(key, value, options) : null;\n }\n};\n\nvar plugins = [pluginStyleRule, pluginConditionalRule, pluginKeyframesRule, pluginKeyframeRule, pluginFontFaceRule, pluginViewportRule, pluginSimpleRule];\n\nvar defaultUpdateOptions = {\n process: true\n};\nvar forceUpdateOptions = {\n force: true,\n process: true\n /**\n * Contains rules objects and allows adding/removing etc.\n * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n */\n\n};\n\nvar RuleList =\n/*#__PURE__*/\nfunction () {\n // Rules registry for access by .get() method.\n // It contains the same rule registered by name and by selector.\n // Original styles object.\n // Used to ensure correct rules order.\n function RuleList(options) {\n this.map = {};\n this.raw = {};\n this.index = [];\n this.counter = 0;\n this.options = options;\n this.classes = options.classes;\n this.keyframes = options.keyframes;\n }\n /**\n * Create and register rule.\n *\n * Will not render after Style Sheet was rendered the first time.\n */\n\n\n var _proto = RuleList.prototype;\n\n _proto.add = function add(name, decl, ruleOptions) {\n var _this$options = this.options,\n parent = _this$options.parent,\n sheet = _this$options.sheet,\n jss = _this$options.jss,\n Renderer = _this$options.Renderer,\n generateId = _this$options.generateId,\n scoped = _this$options.scoped;\n\n var options = _extends({\n classes: this.classes,\n parent: parent,\n sheet: sheet,\n jss: jss,\n Renderer: Renderer,\n generateId: generateId,\n scoped: scoped,\n name: name,\n keyframes: this.keyframes,\n selector: undefined\n }, ruleOptions); // When user uses .createStyleSheet(), duplicate names are not possible, but\n // `sheet.addRule()` opens the door for any duplicate rule name. When this happens\n // we need to make the key unique within this RuleList instance scope.\n\n\n var key = name;\n\n if (name in this.raw) {\n key = name + \"-d\" + this.counter++;\n } // We need to save the original decl before creating the rule\n // because cache plugin needs to use it as a key to return a cached rule.\n\n\n this.raw[key] = decl;\n\n if (key in this.classes) {\n // E.g. rules inside of @media container\n options.selector = \".\" + escape(this.classes[key]);\n }\n\n var rule = createRule(key, decl, options);\n if (!rule) return null;\n this.register(rule);\n var index = options.index === undefined ? this.index.length : options.index;\n this.index.splice(index, 0, rule);\n return rule;\n }\n /**\n * Replace rule.\n * Create a new rule and remove old one instead of overwriting\n * because we want to invoke onCreateRule hook to make plugins work.\n */\n ;\n\n _proto.replace = function replace(name, decl, ruleOptions) {\n var oldRule = this.get(name);\n var oldIndex = this.index.indexOf(oldRule);\n\n if (oldRule) {\n this.remove(oldRule);\n }\n\n var options = ruleOptions;\n if (oldIndex !== -1) options = _extends({}, ruleOptions, {\n index: oldIndex\n });\n return this.add(name, decl, options);\n }\n /**\n * Get a rule by name or selector.\n */\n ;\n\n _proto.get = function get(nameOrSelector) {\n return this.map[nameOrSelector];\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.remove = function remove(rule) {\n this.unregister(rule);\n delete this.raw[rule.key];\n this.index.splice(this.index.indexOf(rule), 1);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.index.indexOf(rule);\n }\n /**\n * Run `onProcessRule()` plugins on every rule.\n */\n ;\n\n _proto.process = function process() {\n var plugins = this.options.jss.plugins; // We need to clone array because if we modify the index somewhere else during a loop\n // we end up with very hard-to-track-down side effects.\n\n this.index.slice(0).forEach(plugins.onProcessRule, plugins);\n }\n /**\n * Register a rule in `.map`, `.classes` and `.keyframes` maps.\n */\n ;\n\n _proto.register = function register(rule) {\n this.map[rule.key] = rule;\n\n if (rule instanceof StyleRule) {\n this.map[rule.selector] = rule;\n if (rule.id) this.classes[rule.key] = rule.id;\n } else if (rule instanceof KeyframesRule && this.keyframes) {\n this.keyframes[rule.name] = rule.id;\n }\n }\n /**\n * Unregister a rule.\n */\n ;\n\n _proto.unregister = function unregister(rule) {\n delete this.map[rule.key];\n\n if (rule instanceof StyleRule) {\n delete this.map[rule.selector];\n delete this.classes[rule.key];\n } else if (rule instanceof KeyframesRule) {\n delete this.keyframes[rule.name];\n }\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var name;\n var data;\n var options;\n\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n name = arguments.length <= 0 ? undefined : arguments[0];\n data = arguments.length <= 1 ? undefined : arguments[1];\n options = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n data = arguments.length <= 0 ? undefined : arguments[0];\n options = arguments.length <= 1 ? undefined : arguments[1];\n name = null;\n }\n\n if (name) {\n this.updateOne(this.get(name), data, options);\n } else {\n for (var index = 0; index < this.index.length; index++) {\n this.updateOne(this.index[index], data, options);\n }\n }\n }\n /**\n * Execute plugins, update rule props.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n if (options === void 0) {\n options = defaultUpdateOptions;\n }\n\n var _this$options2 = this.options,\n plugins = _this$options2.jss.plugins,\n sheet = _this$options2.sheet; // It is a rules container like for e.g. ConditionalRule.\n\n if (rule.rules instanceof RuleList) {\n rule.rules.update(data, options);\n return;\n }\n\n var style = rule.style;\n plugins.onUpdate(data, rule, sheet, options); // We rely on a new `style` ref in case it was mutated during onUpdate hook.\n\n if (options.process && style && style !== rule.style) {\n // We need to run the plugins in case new `style` relies on syntax plugins.\n plugins.onProcessStyle(rule.style, rule, sheet); // Update and add props.\n\n for (var prop in rule.style) {\n var nextValue = rule.style[prop];\n var prevValue = style[prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (nextValue !== prevValue) {\n rule.prop(prop, nextValue, forceUpdateOptions);\n }\n } // Remove props.\n\n\n for (var _prop in style) {\n var _nextValue = rule.style[_prop];\n var _prevValue = style[_prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (_nextValue == null && _nextValue !== _prevValue) {\n rule.prop(_prop, null, forceUpdateOptions);\n }\n }\n }\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n var str = '';\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n for (var index = 0; index < this.index.length; index++) {\n var rule = this.index[index];\n var css = rule.toString(options); // No need to render an empty rule.\n\n if (!css && !link) continue;\n if (str) str += linebreak;\n str += css;\n }\n\n return str;\n };\n\n return RuleList;\n}();\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(styles, options) {\n this.attached = false;\n this.deployed = false;\n this.classes = {};\n this.keyframes = {};\n this.options = _extends({}, options, {\n sheet: this,\n parent: this,\n classes: this.classes,\n keyframes: this.keyframes\n });\n\n if (options.Renderer) {\n this.renderer = new options.Renderer(this);\n }\n\n this.rules = new RuleList(this.options);\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Attach renderable to the render tree.\n */\n\n\n var _proto = StyleSheet.prototype;\n\n _proto.attach = function attach() {\n if (this.attached) return this;\n if (this.renderer) this.renderer.attach();\n this.attached = true; // Order is important, because we can't use insertRule API if style element is not attached.\n\n if (!this.deployed) this.deploy();\n return this;\n }\n /**\n * Remove renderable from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.attached) return this;\n if (this.renderer) this.renderer.detach();\n this.attached = false;\n return this;\n }\n /**\n * Add a rule to the current stylesheet.\n * Will insert a rule also after the stylesheet has been rendered first time.\n */\n ;\n\n _proto.addRule = function addRule(name, decl, options) {\n var queue = this.queue; // Plugins can create rules.\n // In order to preserve the right order, we need to queue all `.addRule` calls,\n // which happen after the first `rules.add()` call.\n\n if (this.attached && !queue) this.queue = [];\n var rule = this.rules.add(name, decl, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n\n if (this.attached) {\n if (!this.deployed) return rule; // Don't insert rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (queue) queue.push(rule);else {\n this.insertRule(rule);\n\n if (this.queue) {\n this.queue.forEach(this.insertRule, this);\n this.queue = undefined;\n }\n }\n return rule;\n } // We can't add rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return rule;\n }\n /**\n * Replace a rule in the current stylesheet.\n */\n ;\n\n _proto.replaceRule = function replaceRule(nameOrSelector, decl, options) {\n var oldRule = this.rules.get(nameOrSelector);\n if (!oldRule) return this.addRule(nameOrSelector, decl, options);\n var newRule = this.rules.replace(nameOrSelector, decl, options);\n\n if (newRule) {\n this.options.jss.plugins.onProcessRule(newRule);\n }\n\n if (this.attached) {\n if (!this.deployed) return newRule; // Don't replace / delete rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (this.renderer) {\n if (!newRule) {\n this.renderer.deleteRule(oldRule);\n } else if (oldRule.renderable) {\n this.renderer.replaceRule(oldRule.renderable, newRule);\n }\n }\n\n return newRule;\n } // We can't replace rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return newRule;\n }\n /**\n * Insert rule into the StyleSheet\n */\n ;\n\n _proto.insertRule = function insertRule(rule) {\n if (this.renderer) {\n this.renderer.insertRule(rule);\n }\n }\n /**\n * Create and add rules.\n * Will render also after Style Sheet was rendered the first time.\n */\n ;\n\n _proto.addRules = function addRules(styles, options) {\n var added = [];\n\n for (var name in styles) {\n var rule = this.addRule(name, styles[name], options);\n if (rule) added.push(rule);\n }\n\n return added;\n }\n /**\n * Get a rule by name or selector.\n */\n ;\n\n _proto.getRule = function getRule(nameOrSelector) {\n return this.rules.get(nameOrSelector);\n }\n /**\n * Delete a rule by name.\n * Returns `true`: if rule has been deleted from the DOM.\n */\n ;\n\n _proto.deleteRule = function deleteRule(name) {\n var rule = typeof name === 'object' ? name : this.rules.get(name);\n\n if (!rule || // Style sheet was created without link: true and attached, in this case we\n // won't be able to remove the CSS rule from the DOM.\n this.attached && !rule.renderable) {\n return false;\n }\n\n this.rules.remove(rule);\n\n if (this.attached && rule.renderable && this.renderer) {\n return this.renderer.deleteRule(rule.renderable);\n }\n\n return true;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Deploy pure CSS string to a renderable.\n */\n ;\n\n _proto.deploy = function deploy() {\n if (this.renderer) this.renderer.deploy();\n this.deployed = true;\n return this;\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var _this$rules;\n\n (_this$rules = this.rules).update.apply(_this$rules, arguments);\n\n return this;\n }\n /**\n * Updates a single rule.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n this.rules.updateOne(rule, data, options);\n return this;\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n\n return StyleSheet;\n}();\n\nvar PluginsRegistry =\n/*#__PURE__*/\nfunction () {\n function PluginsRegistry() {\n this.plugins = {\n internal: [],\n external: []\n };\n this.registry = {};\n }\n\n var _proto = PluginsRegistry.prototype;\n\n /**\n * Call `onCreateRule` hooks and return an object if returned by a hook.\n */\n _proto.onCreateRule = function onCreateRule(name, decl, options) {\n for (var i = 0; i < this.registry.onCreateRule.length; i++) {\n var rule = this.registry.onCreateRule[i](name, decl, options);\n if (rule) return rule;\n }\n\n return null;\n }\n /**\n * Call `onProcessRule` hooks.\n */\n ;\n\n _proto.onProcessRule = function onProcessRule(rule) {\n if (rule.isProcessed) return;\n var sheet = rule.options.sheet;\n\n for (var i = 0; i < this.registry.onProcessRule.length; i++) {\n this.registry.onProcessRule[i](rule, sheet);\n }\n\n if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n rule.isProcessed = true;\n }\n /**\n * Call `onProcessStyle` hooks.\n */\n ;\n\n _proto.onProcessStyle = function onProcessStyle(style, rule, sheet) {\n for (var i = 0; i < this.registry.onProcessStyle.length; i++) {\n rule.style = this.registry.onProcessStyle[i](rule.style, rule, sheet);\n }\n }\n /**\n * Call `onProcessSheet` hooks.\n */\n ;\n\n _proto.onProcessSheet = function onProcessSheet(sheet) {\n for (var i = 0; i < this.registry.onProcessSheet.length; i++) {\n this.registry.onProcessSheet[i](sheet);\n }\n }\n /**\n * Call `onUpdate` hooks.\n */\n ;\n\n _proto.onUpdate = function onUpdate(data, rule, sheet, options) {\n for (var i = 0; i < this.registry.onUpdate.length; i++) {\n this.registry.onUpdate[i](data, rule, sheet, options);\n }\n }\n /**\n * Call `onChangeValue` hooks.\n */\n ;\n\n _proto.onChangeValue = function onChangeValue(value, prop, rule) {\n var processedValue = value;\n\n for (var i = 0; i < this.registry.onChangeValue.length; i++) {\n processedValue = this.registry.onChangeValue[i](processedValue, prop, rule);\n }\n\n return processedValue;\n }\n /**\n * Register a plugin.\n */\n ;\n\n _proto.use = function use(newPlugin, options) {\n if (options === void 0) {\n options = {\n queue: 'external'\n };\n }\n\n var plugins = this.plugins[options.queue]; // Avoids applying same plugin twice, at least based on ref.\n\n if (plugins.indexOf(newPlugin) !== -1) {\n return;\n }\n\n plugins.push(newPlugin);\n this.registry = [].concat(this.plugins.external, this.plugins.internal).reduce(function (registry, plugin) {\n for (var name in plugin) {\n if (name in registry) {\n registry[name].push(plugin[name]);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown hook \\\"\" + name + \"\\\".\") : void 0;\n }\n }\n\n return registry;\n }, {\n onCreateRule: [],\n onProcessRule: [],\n onProcessStyle: [],\n onProcessSheet: [],\n onChangeValue: [],\n onUpdate: []\n });\n };\n\n return PluginsRegistry;\n}();\n\n/**\n * Sheets registry to access all instances in one place.\n */\n\nvar SheetsRegistry =\n/*#__PURE__*/\nfunction () {\n function SheetsRegistry() {\n this.registry = [];\n }\n\n var _proto = SheetsRegistry.prototype;\n\n /**\n * Register a Style Sheet.\n */\n _proto.add = function add(sheet) {\n var registry = this.registry;\n var index = sheet.options.index;\n if (registry.indexOf(sheet) !== -1) return;\n\n if (registry.length === 0 || index >= this.index) {\n registry.push(sheet);\n return;\n } // Find a position.\n\n\n for (var i = 0; i < registry.length; i++) {\n if (registry[i].options.index > index) {\n registry.splice(i, 0, sheet);\n return;\n }\n }\n }\n /**\n * Reset the registry.\n */\n ;\n\n _proto.reset = function reset() {\n this.registry = [];\n }\n /**\n * Remove a Style Sheet.\n */\n ;\n\n _proto.remove = function remove(sheet) {\n var index = this.registry.indexOf(sheet);\n this.registry.splice(index, 1);\n }\n /**\n * Convert all attached sheets to a CSS string.\n */\n ;\n\n _proto.toString = function toString(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n attached = _ref.attached,\n options = _objectWithoutPropertiesLoose(_ref, [\"attached\"]);\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n var css = '';\n\n for (var i = 0; i < this.registry.length; i++) {\n var sheet = this.registry[i];\n\n if (attached != null && sheet.attached !== attached) {\n continue;\n }\n\n if (css) css += linebreak;\n css += sheet.toString(options);\n }\n\n return css;\n };\n\n _createClass(SheetsRegistry, [{\n key: \"index\",\n\n /**\n * Current highest index number.\n */\n get: function get() {\n return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n }\n }]);\n\n return SheetsRegistry;\n}();\n\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\n\nvar sheets = new SheetsRegistry();\n\n/* eslint-disable */\n\n/**\n * Now that `globalThis` is available on most platforms\n * (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis#browser_compatibility)\n * we check for `globalThis` first. `globalThis` is necessary for jss\n * to run in Agoric's secure version of JavaScript (SES). Under SES,\n * `globalThis` exists, but `window`, `self`, and `Function('return\n * this')()` are all undefined for security reasons.\n *\n * https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n */\nvar globalThis$1 = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' && window.Math === Math ? window : typeof self !== 'undefined' && self.Math === Math ? self : Function('return this')();\n\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (globalThis$1[ns] == null) globalThis$1[ns] = 0; // Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\n\nvar moduleId = globalThis$1[ns]++;\n\nvar maxRules = 1e10;\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\n\nvar createGenerateId = function createGenerateId(options) {\n if (options === void 0) {\n options = {};\n }\n\n var ruleCounter = 0;\n\n var generateId = function generateId(rule, sheet) {\n ruleCounter += 1;\n\n if (ruleCounter > maxRules) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] You might have a memory leak. Rule counter is at \" + ruleCounter + \".\") : void 0;\n }\n\n var jssId = '';\n var prefix = '';\n\n if (sheet) {\n if (sheet.options.classNamePrefix) {\n prefix = sheet.options.classNamePrefix;\n }\n\n if (sheet.options.jss.id != null) {\n jssId = String(sheet.options.jss.id);\n }\n }\n\n if (options.minify) {\n // Using \"c\" because a number can't be the first char in a class name.\n return \"\" + (prefix || 'c') + moduleId + jssId + ruleCounter;\n }\n\n return prefix + rule.key + \"-\" + moduleId + (jssId ? \"-\" + jssId : '') + \"-\" + ruleCounter;\n };\n\n return generateId;\n};\n\n/**\n * Cache the value from the first time a function is called.\n */\n\nvar memoize = function memoize(fn) {\n var value;\n return function () {\n if (!value) value = fn();\n return value;\n };\n};\n/**\n * Get a style property value.\n */\n\n\nvar getPropertyValue = function getPropertyValue(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n return cssRule.attributeStyleMap.get(prop);\n }\n\n return cssRule.style.getPropertyValue(prop);\n } catch (err) {\n // IE may throw if property is unknown.\n return '';\n }\n};\n/**\n * Set a style property.\n */\n\n\nvar setProperty = function setProperty(cssRule, prop, value) {\n try {\n var cssValue = value;\n\n if (Array.isArray(value)) {\n cssValue = toCssValue(value);\n } // Support CSSTOM.\n\n\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.set(prop, cssValue);\n } else {\n var indexOfImportantFlag = cssValue ? cssValue.indexOf('!important') : -1;\n var cssValueWithoutImportantFlag = indexOfImportantFlag > -1 ? cssValue.substr(0, indexOfImportantFlag - 1) : cssValue;\n cssRule.style.setProperty(prop, cssValueWithoutImportantFlag, indexOfImportantFlag > -1 ? 'important' : '');\n }\n } catch (err) {\n // IE may throw if property is unknown.\n return false;\n }\n\n return true;\n};\n/**\n * Remove a style property.\n */\n\n\nvar removeProperty = function removeProperty(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.delete(prop);\n } else {\n cssRule.style.removeProperty(prop);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] DOMException \\\"\" + err.message + \"\\\" was thrown. Tried to remove property \\\"\" + prop + \"\\\".\") : void 0;\n }\n};\n/**\n * Set the selector.\n */\n\n\nvar setSelector = function setSelector(cssRule, selectorText) {\n cssRule.selectorText = selectorText; // Return false if setter was not successful.\n // Currently works in chrome only.\n\n return cssRule.selectorText === selectorText;\n};\n/**\n * Gets the `head` element upon the first call and caches it.\n * We assume it can't be null.\n */\n\n\nvar getHead = memoize(function () {\n return document.querySelector('head');\n});\n/**\n * Find attached sheet with an index higher than the passed one.\n */\n\nfunction findHigherSheet(registry, options) {\n for (var i = 0; i < registry.length; i++) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find attached sheet with the highest index.\n */\n\n\nfunction findHighestSheet(registry, options) {\n for (var i = registry.length - 1; i >= 0; i--) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find a comment with \"jss\" inside.\n */\n\n\nfunction findCommentNode(text) {\n var head = getHead();\n\n for (var i = 0; i < head.childNodes.length; i++) {\n var node = head.childNodes[i];\n\n if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n return node;\n }\n }\n\n return null;\n}\n/**\n * Find a node before which we can insert the sheet.\n */\n\n\nfunction findPrevNode(options) {\n var registry = sheets.registry;\n\n if (registry.length > 0) {\n // Try to insert before the next higher sheet.\n var sheet = findHigherSheet(registry, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element\n };\n } // Otherwise insert after the last attached.\n\n\n sheet = findHighestSheet(registry, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element.nextSibling\n };\n }\n } // Try to find a comment placeholder if registry is empty.\n\n\n var insertionPoint = options.insertionPoint;\n\n if (insertionPoint && typeof insertionPoint === 'string') {\n var comment = findCommentNode(insertionPoint);\n\n if (comment) {\n return {\n parent: comment.parentNode,\n node: comment.nextSibling\n };\n } // If user specifies an insertion point and it can't be found in the document -\n // bad specificity issues may appear.\n\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Insertion point \\\"\" + insertionPoint + \"\\\" not found.\") : void 0;\n }\n\n return false;\n}\n/**\n * Insert style element into the DOM.\n */\n\n\nfunction insertStyle(style, options) {\n var insertionPoint = options.insertionPoint;\n var nextNode = findPrevNode(options);\n\n if (nextNode !== false && nextNode.parent) {\n nextNode.parent.insertBefore(style, nextNode.node);\n return;\n } // Works with iframes and any node types.\n\n\n if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n var insertionPointElement = insertionPoint;\n var parentNode = insertionPointElement.parentNode;\n if (parentNode) parentNode.insertBefore(style, insertionPointElement.nextSibling);else process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Insertion point is not in the DOM.') : void 0;\n return;\n }\n\n getHead().appendChild(style);\n}\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\n\n\nvar getNonce = memoize(function () {\n var node = document.querySelector('meta[property=\"csp-nonce\"]');\n return node ? node.getAttribute('content') : null;\n});\n\nvar _insertRule = function insertRule(container, rule, index) {\n try {\n if ('insertRule' in container) {\n container.insertRule(rule, index);\n } // Keyframes rule.\n else if ('appendRule' in container) {\n container.appendRule(rule);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] \" + err.message) : void 0;\n return false;\n }\n\n return container.cssRules[index];\n};\n\nvar getValidRuleInsertionIndex = function getValidRuleInsertionIndex(container, index) {\n var maxIndex = container.cssRules.length; // In case previous insertion fails, passed index might be wrong\n\n if (index === undefined || index > maxIndex) {\n // eslint-disable-next-line no-param-reassign\n return maxIndex;\n }\n\n return index;\n};\n\nvar createStyle = function createStyle() {\n var el = document.createElement('style'); // Without it, IE will have a broken source order specificity if we\n // insert rules after we insert the style tag.\n // It seems to kick-off the source order specificity algorithm.\n\n el.textContent = '\\n';\n return el;\n};\n\nvar DomRenderer =\n/*#__PURE__*/\nfunction () {\n // Will be empty if link: true option is not set, because\n // it is only for use together with insertRule API.\n function DomRenderer(sheet) {\n this.getPropertyValue = getPropertyValue;\n this.setProperty = setProperty;\n this.removeProperty = removeProperty;\n this.setSelector = setSelector;\n this.hasInsertedRules = false;\n this.cssRules = [];\n // There is no sheet when the renderer is used from a standalone StyleRule.\n if (sheet) sheets.add(sheet);\n this.sheet = sheet;\n\n var _ref = this.sheet ? this.sheet.options : {},\n media = _ref.media,\n meta = _ref.meta,\n element = _ref.element;\n\n this.element = element || createStyle();\n this.element.setAttribute('data-jss', '');\n if (media) this.element.setAttribute('media', media);\n if (meta) this.element.setAttribute('data-meta', meta);\n var nonce = getNonce();\n if (nonce) this.element.setAttribute('nonce', nonce);\n }\n /**\n * Insert style element into render tree.\n */\n\n\n var _proto = DomRenderer.prototype;\n\n _proto.attach = function attach() {\n // In the case the element node is external and it is already in the DOM.\n if (this.element.parentNode || !this.sheet) return;\n insertStyle(this.element, this.sheet.options); // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n // most browsers create a new CSSStyleSheet, except of all IEs.\n\n var deployed = Boolean(this.sheet && this.sheet.deployed);\n\n if (this.hasInsertedRules && deployed) {\n this.hasInsertedRules = false;\n this.deploy();\n }\n }\n /**\n * Remove style element from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.sheet) return;\n var parentNode = this.element.parentNode;\n if (parentNode) parentNode.removeChild(this.element); // In the most browsers, rules inserted using insertRule() API will be lost when style element is removed.\n // Though IE will keep them and we need a consistent behavior.\n\n if (this.sheet.options.link) {\n this.cssRules = [];\n this.element.textContent = '\\n';\n }\n }\n /**\n * Inject CSS string into element.\n */\n ;\n\n _proto.deploy = function deploy() {\n var sheet = this.sheet;\n if (!sheet) return;\n\n if (sheet.options.link) {\n this.insertRules(sheet.rules);\n return;\n }\n\n this.element.textContent = \"\\n\" + sheet.toString() + \"\\n\";\n }\n /**\n * Insert RuleList into an element.\n */\n ;\n\n _proto.insertRules = function insertRules(rules, nativeParent) {\n for (var i = 0; i < rules.index.length; i++) {\n this.insertRule(rules.index[i], i, nativeParent);\n }\n }\n /**\n * Insert a rule into element.\n */\n ;\n\n _proto.insertRule = function insertRule(rule, index, nativeParent) {\n if (nativeParent === void 0) {\n nativeParent = this.element.sheet;\n }\n\n if (rule.rules) {\n var parent = rule;\n var latestNativeParent = nativeParent;\n\n if (rule.type === 'conditional' || rule.type === 'keyframes') {\n var _insertionIndex = getValidRuleInsertionIndex(nativeParent, index); // We need to render the container without children first.\n\n\n latestNativeParent = _insertRule(nativeParent, parent.toString({\n children: false\n }), _insertionIndex);\n\n if (latestNativeParent === false) {\n return false;\n }\n\n this.refCssRule(rule, _insertionIndex, latestNativeParent);\n }\n\n this.insertRules(parent.rules, latestNativeParent);\n return latestNativeParent;\n }\n\n var ruleStr = rule.toString();\n if (!ruleStr) return false;\n var insertionIndex = getValidRuleInsertionIndex(nativeParent, index);\n\n var nativeRule = _insertRule(nativeParent, ruleStr, insertionIndex);\n\n if (nativeRule === false) {\n return false;\n }\n\n this.hasInsertedRules = true;\n this.refCssRule(rule, insertionIndex, nativeRule);\n return nativeRule;\n };\n\n _proto.refCssRule = function refCssRule(rule, index, cssRule) {\n rule.renderable = cssRule; // We only want to reference the top level rules, deleteRule API doesn't support removing nested rules\n // like rules inside media queries or keyframes\n\n if (rule.options.parent instanceof StyleSheet) {\n this.cssRules.splice(index, 0, cssRule);\n }\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.deleteRule = function deleteRule(cssRule) {\n var sheet = this.element.sheet;\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return true;\n }\n /**\n * Get index of a CSS Rule.\n */\n ;\n\n _proto.indexOf = function indexOf(cssRule) {\n return this.cssRules.indexOf(cssRule);\n }\n /**\n * Generate a new CSS rule and replace the existing one.\n */\n ;\n\n _proto.replaceRule = function replaceRule(cssRule, rule) {\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n this.element.sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return this.insertRule(rule, index);\n }\n /**\n * Get all rules elements.\n */\n ;\n\n _proto.getRules = function getRules() {\n return this.element.sheet.cssRules;\n };\n\n return DomRenderer;\n}();\n\nvar instanceCounter = 0;\n\nvar Jss =\n/*#__PURE__*/\nfunction () {\n function Jss(options) {\n this.id = instanceCounter++;\n this.version = \"10.9.1\";\n this.plugins = new PluginsRegistry();\n this.options = {\n id: {\n minify: false\n },\n createGenerateId: createGenerateId,\n Renderer: isInBrowser ? DomRenderer : null,\n plugins: []\n };\n this.generateId = createGenerateId({\n minify: false\n });\n\n for (var i = 0; i < plugins.length; i++) {\n this.plugins.use(plugins[i], {\n queue: 'internal'\n });\n }\n\n this.setup(options);\n }\n /**\n * Prepares various options, applies plugins.\n * Should not be used twice on the same instance, because there is no plugins\n * deduplication logic.\n */\n\n\n var _proto = Jss.prototype;\n\n _proto.setup = function setup(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (options.createGenerateId) {\n this.options.createGenerateId = options.createGenerateId;\n }\n\n if (options.id) {\n this.options.id = _extends({}, this.options.id, options.id);\n }\n\n if (options.createGenerateId || options.id) {\n this.generateId = this.options.createGenerateId(this.options.id);\n }\n\n if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n\n if ('Renderer' in options) {\n this.options.Renderer = options.Renderer;\n } // eslint-disable-next-line prefer-spread\n\n\n if (options.plugins) this.use.apply(this, options.plugins);\n return this;\n }\n /**\n * Create a Style Sheet.\n */\n ;\n\n _proto.createStyleSheet = function createStyleSheet(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n index = _options.index;\n\n if (typeof index !== 'number') {\n index = sheets.index === 0 ? 0 : sheets.index + 1;\n }\n\n var sheet = new StyleSheet(styles, _extends({}, options, {\n jss: this,\n generateId: options.generateId || this.generateId,\n insertionPoint: this.options.insertionPoint,\n Renderer: this.options.Renderer,\n index: index\n }));\n this.plugins.onProcessSheet(sheet);\n return sheet;\n }\n /**\n * Detach the Style Sheet and remove it from the registry.\n */\n ;\n\n _proto.removeStyleSheet = function removeStyleSheet(sheet) {\n sheet.detach();\n sheets.remove(sheet);\n return this;\n }\n /**\n * Create a rule without a Style Sheet.\n * [Deprecated] will be removed in the next major version.\n */\n ;\n\n _proto.createRule = function createRule$1(name, style, options) {\n if (style === void 0) {\n style = {};\n }\n\n if (options === void 0) {\n options = {};\n }\n\n // Enable rule without name for inline styles.\n if (typeof name === 'object') {\n return this.createRule(undefined, name, style);\n }\n\n var ruleOptions = _extends({}, options, {\n name: name,\n jss: this,\n Renderer: this.options.Renderer\n });\n\n if (!ruleOptions.generateId) ruleOptions.generateId = this.generateId;\n if (!ruleOptions.classes) ruleOptions.classes = {};\n if (!ruleOptions.keyframes) ruleOptions.keyframes = {};\n\n var rule = createRule(name, style, ruleOptions);\n\n if (rule) this.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Register plugin. Passed function will be invoked with a rule instance.\n */\n ;\n\n _proto.use = function use() {\n var _this = this;\n\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n plugins.forEach(function (plugin) {\n _this.plugins.use(plugin);\n });\n return this;\n };\n\n return Jss;\n}();\n\nvar createJss = function createJss(options) {\n return new Jss(options);\n};\n\n/**\n * SheetsManager is like a WeakMap which is designed to count StyleSheet\n * instances and attach/detach automatically.\n * Used in react-jss.\n */\n\nvar SheetsManager =\n/*#__PURE__*/\nfunction () {\n function SheetsManager() {\n this.length = 0;\n this.sheets = new WeakMap();\n }\n\n var _proto = SheetsManager.prototype;\n\n _proto.get = function get(key) {\n var entry = this.sheets.get(key);\n return entry && entry.sheet;\n };\n\n _proto.add = function add(key, sheet) {\n if (this.sheets.has(key)) return;\n this.length++;\n this.sheets.set(key, {\n sheet: sheet,\n refs: 0\n });\n };\n\n _proto.manage = function manage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs === 0) {\n entry.sheet.attach();\n }\n\n entry.refs++;\n return entry.sheet;\n }\n\n warning(false, \"[JSS] SheetsManager: can't find sheet to manage\");\n return undefined;\n };\n\n _proto.unmanage = function unmanage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs > 0) {\n entry.refs--;\n if (entry.refs === 0) entry.sheet.detach();\n }\n } else {\n warning(false, \"SheetsManager: can't find sheet to unmanage\");\n }\n };\n\n _createClass(SheetsManager, [{\n key: \"size\",\n get: function get() {\n return this.length;\n }\n }]);\n\n return SheetsManager;\n}();\n\n/**\n* Export a constant indicating if this browser has CSSTOM support.\n* https://developers.google.com/web/updates/2018/03/cssom\n*/\nvar hasCSSTOMSupport = typeof CSS === 'object' && CSS != null && 'number' in CSS;\n\n/**\n * Extracts a styles object with only props that contain function values.\n */\nfunction getDynamicStyles(styles) {\n var to = null;\n\n for (var key in styles) {\n var value = styles[key];\n var type = typeof value;\n\n if (type === 'function') {\n if (!to) to = {};\n to[key] = value;\n } else if (type === 'object' && value !== null && !Array.isArray(value)) {\n var extracted = getDynamicStyles(value);\n\n if (extracted) {\n if (!to) to = {};\n to[key] = extracted;\n }\n }\n }\n\n return to;\n}\n\n/**\n * A better abstraction over CSS.\n *\n * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present\n * @website https://github.com/cssinjs/jss\n * @license MIT\n */\nvar index = createJss();\n\nexport default index;\nexport { RuleList, SheetsManager, SheetsRegistry, createJss as create, createGenerateId, createRule, getDynamicStyles, hasCSSTOMSupport, sheets, toCssValue };\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var arrayPush = require('./_arrayPush'),\n baseFlatten = require('./_baseFlatten'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray');\n\n/**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\nfunction concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n}\n\nmodule.exports = concat;\n","module.exports = require('./forEach');\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nmodule.exports = isNull;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsRegExp = require('./_baseIsRegExp'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var arrayReduce = require('./_arrayReduce'),\n baseEach = require('./_baseEach'),\n baseIteratee = require('./_baseIteratee'),\n baseReduce = require('./_baseReduce'),\n isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n","var toString = require('./toString');\n\n/**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\nfunction replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n}\n\nmodule.exports = replace;\n","var baseToString = require('./_baseToString'),\n castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n isIterateeCall = require('./_isIterateeCall'),\n isRegExp = require('./isRegExp'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\nfunction split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n}\n\nmodule.exports = split;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","import Cookies from 'universal-cookie';\r\nexport default Cookies;\r\n","import * as React from 'react';\r\nimport Cookies from './Cookies';\r\nvar CookiesContext = React.createContext(new Cookies());\r\nexport var Provider = CookiesContext.Provider, Consumer = CookiesContext.Consumer;\r\nexport default CookiesContext;\r\n","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g;\nvar htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"'\n};\n\nvar unescapeHtmlEntity = function unescapeHtmlEntity(m) {\n return htmlEntities[m];\n};\n\nexport var unescape = function unescape(text) {\n return text.replace(matchHtmlEntity, unescapeHtmlEntity);\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { createContext } from 'react';\nimport { unescape } from './unescape';\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape: unescape\n};\nvar i18nInstance;\nexport var I18nContext = createContext();\nexport function setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\nexport function getDefaults() {\n return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n function ReportNamespaces() {\n _classCallCheck(this, ReportNamespaces);\n\n this.usedNamespaces = {};\n }\n\n _createClass(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n\n return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}\nexport var initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};\nexport function composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n };\n}\nexport function getInitialProps() {\n var i18n = getI18n();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","export function warn() {\n if (console && console.warn) {\n var _console;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n (_console = console).warn.apply(_console, args);\n }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn.apply(void 0, args);\n}\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, function () {\n if (i18n.isInitialized) {\n cb();\n } else {\n var initialized = function initialized() {\n setTimeout(function () {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n\n i18n.on('initialized', initialized);\n }\n });\n}\n\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var lng = i18n.languages[0];\n var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n var lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\n\nexport function hasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n\n var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n\n if (!isNewerI18next) {\n return oldI18nextHasLoadedNamespace(ns, i18n, options);\n }\n\n return i18n.hasLoadedNamespace(ns, {\n precheck: function precheck(i18nInstance, loadNotPending) {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';\nimport { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';\n\nvar usePrevious = function usePrevious(value, ignore) {\n var ref = useRef();\n useEffect(function () {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\n\nexport function useTranslation(ns) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nFromProps = props.i18n;\n\n var _ref = useContext(I18nContext) || {},\n i18nFromContext = _ref.i18n,\n defaultNSFromContext = _ref.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n\n var notReadyT = function notReadyT(k) {\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n\n var retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n\n if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n\n var i18nOptions = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), i18n.options.react), props);\n\n var useSuspense = i18nOptions.useSuspense,\n keyPrefix = i18nOptions.keyPrefix;\n var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n return hasLoadedNamespace(n, i18n, i18nOptions);\n });\n\n function getT() {\n return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n }\n\n var _useState = useState(getT),\n _useState2 = _slicedToArray(_useState, 2),\n t = _useState2[0],\n setT = _useState2[1];\n\n var joinedNS = namespaces.join();\n var previousJoinedNS = usePrevious(joinedNS);\n var isMounted = useRef(true);\n useEffect(function () {\n var bindI18n = i18nOptions.bindI18n,\n bindI18nStore = i18nOptions.bindI18nStore;\n isMounted.current = true;\n\n if (!ready && !useSuspense) {\n loadNamespaces(i18n, namespaces, function () {\n if (isMounted.current) setT(getT);\n });\n }\n\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getT);\n }\n\n function boundReset() {\n if (isMounted.current) setT(getT);\n }\n\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return function () {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n return i18n.off(e, boundReset);\n });\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n return i18n.store.off(e, boundReset);\n });\n };\n }, [i18n, joinedNS]);\n var isInitial = useRef(true);\n useEffect(function () {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n\n isInitial.current = false;\n }, [i18n]);\n var ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(function (resolve) {\n loadNamespaces(i18n, namespaces, function () {\n resolve();\n });\n });\n}","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Subscribable } from './subscribable';\nimport { isServer } from './utils';\nexport var FocusManager = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(FocusManager, _Subscribable);\n\n function FocusManager() {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n\n _this.setup = function (onFocus) {\n var _window;\n\n if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {\n var listener = function listener() {\n return onFocus();\n }; // Listen to visibillitychange and focus\n\n\n window.addEventListener('visibilitychange', listener, false);\n window.addEventListener('focus', listener, false);\n return function () {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener);\n window.removeEventListener('focus', listener);\n };\n }\n };\n\n return _this;\n }\n\n var _proto = FocusManager.prototype;\n\n _proto.onSubscribe = function onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n };\n\n _proto.setEventListener = function setEventListener(setup) {\n var _this$cleanup2,\n _this2 = this;\n\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(function (focused) {\n if (typeof focused === 'boolean') {\n _this2.setFocused(focused);\n } else {\n _this2.onFocus();\n }\n });\n };\n\n _proto.setFocused = function setFocused(focused) {\n this.focused = focused;\n\n if (focused) {\n this.onFocus();\n }\n };\n\n _proto.onFocus = function onFocus() {\n this.listeners.forEach(function (listener) {\n listener();\n });\n };\n\n _proto.isFocused = function isFocused() {\n if (typeof this.focused === 'boolean') {\n return this.focused;\n } // document global can be unavailable in react native\n\n\n if (typeof document === 'undefined') {\n return true;\n }\n\n return [undefined, 'visible', 'prerender'].includes(document.visibilityState);\n };\n\n return FocusManager;\n}(Subscribable);\nexport var focusManager = new FocusManager();","import { isCancelable } from './retryer';\nimport { getAbortController } from './utils';\nexport function infiniteQueryBehavior() {\n return {\n onFetch: function onFetch(context) {\n context.fetchFn = function () {\n var _context$fetchOptions, _context$fetchOptions2, _context$fetchOptions3, _context$fetchOptions4, _context$state$data, _context$state$data2;\n\n var refetchPage = (_context$fetchOptions = context.fetchOptions) == null ? void 0 : (_context$fetchOptions2 = _context$fetchOptions.meta) == null ? void 0 : _context$fetchOptions2.refetchPage;\n var fetchMore = (_context$fetchOptions3 = context.fetchOptions) == null ? void 0 : (_context$fetchOptions4 = _context$fetchOptions3.meta) == null ? void 0 : _context$fetchOptions4.fetchMore;\n var pageParam = fetchMore == null ? void 0 : fetchMore.pageParam;\n var isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'forward';\n var isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'backward';\n var oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || [];\n var oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || [];\n var abortController = getAbortController();\n var abortSignal = abortController == null ? void 0 : abortController.signal;\n var newPageParams = oldPageParams;\n var cancelled = false; // Get query function\n\n var queryFn = context.options.queryFn || function () {\n return Promise.reject('Missing queryFn');\n };\n\n var buildNewPages = function buildNewPages(pages, param, page, previous) {\n newPageParams = previous ? [param].concat(newPageParams) : [].concat(newPageParams, [param]);\n return previous ? [page].concat(pages) : [].concat(pages, [page]);\n }; // Create function to fetch a page\n\n\n var fetchPage = function fetchPage(pages, manual, param, previous) {\n if (cancelled) {\n return Promise.reject('Cancelled');\n }\n\n if (typeof param === 'undefined' && !manual && pages.length) {\n return Promise.resolve(pages);\n }\n\n var queryFnContext = {\n queryKey: context.queryKey,\n signal: abortSignal,\n pageParam: param,\n meta: context.meta\n };\n var queryFnResult = queryFn(queryFnContext);\n var promise = Promise.resolve(queryFnResult).then(function (page) {\n return buildNewPages(pages, param, page, previous);\n });\n\n if (isCancelable(queryFnResult)) {\n var promiseAsAny = promise;\n promiseAsAny.cancel = queryFnResult.cancel;\n }\n\n return promise;\n };\n\n var promise; // Fetch first page?\n\n if (!oldPages.length) {\n promise = fetchPage([]);\n } // Fetch next page?\n else if (isFetchingNextPage) {\n var manual = typeof pageParam !== 'undefined';\n var param = manual ? pageParam : getNextPageParam(context.options, oldPages);\n promise = fetchPage(oldPages, manual, param);\n } // Fetch previous page?\n else if (isFetchingPreviousPage) {\n var _manual = typeof pageParam !== 'undefined';\n\n var _param = _manual ? pageParam : getPreviousPageParam(context.options, oldPages);\n\n promise = fetchPage(oldPages, _manual, _param, true);\n } // Refetch pages\n else {\n (function () {\n newPageParams = [];\n var manual = typeof context.options.getNextPageParam === 'undefined';\n var shouldFetchFirstPage = refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true; // Fetch first page\n\n promise = shouldFetchFirstPage ? fetchPage([], manual, oldPageParams[0]) : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0])); // Fetch remaining pages\n\n var _loop = function _loop(i) {\n promise = promise.then(function (pages) {\n var shouldFetchNextPage = refetchPage && oldPages[i] ? refetchPage(oldPages[i], i, oldPages) : true;\n\n if (shouldFetchNextPage) {\n var _param2 = manual ? oldPageParams[i] : getNextPageParam(context.options, pages);\n\n return fetchPage(pages, manual, _param2);\n }\n\n return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i]));\n });\n };\n\n for (var i = 1; i < oldPages.length; i++) {\n _loop(i);\n }\n })();\n }\n\n var finalPromise = promise.then(function (pages) {\n return {\n pages: pages,\n pageParams: newPageParams\n };\n });\n var finalPromiseAsAny = finalPromise;\n\n finalPromiseAsAny.cancel = function () {\n cancelled = true;\n abortController == null ? void 0 : abortController.abort();\n\n if (isCancelable(promise)) {\n promise.cancel();\n }\n };\n\n return finalPromise;\n };\n }\n };\n}\nexport function getNextPageParam(options, pages) {\n return options.getNextPageParam == null ? void 0 : options.getNextPageParam(pages[pages.length - 1], pages);\n}\nexport function getPreviousPageParam(options, pages) {\n return options.getPreviousPageParam == null ? void 0 : options.getPreviousPageParam(pages[0], pages);\n}\n/**\n * Checks if there is a next page.\n * Returns `undefined` if it cannot be determined.\n */\n\nexport function hasNextPage(options, pages) {\n if (options.getNextPageParam && Array.isArray(pages)) {\n var nextPageParam = getNextPageParam(options, pages);\n return typeof nextPageParam !== 'undefined' && nextPageParam !== null && nextPageParam !== false;\n }\n}\n/**\n * Checks if there is a previous page.\n * Returns `undefined` if it cannot be determined.\n */\n\nexport function hasPreviousPage(options, pages) {\n if (options.getPreviousPageParam && Array.isArray(pages)) {\n var previousPageParam = getPreviousPageParam(options, pages);\n return typeof previousPageParam !== 'undefined' && previousPageParam !== null && previousPageParam !== false;\n }\n}","// TYPES\n// FUNCTIONS\nvar logger = console;\nexport function getLogger() {\n return logger;\n}\nexport function setLogger(newLogger) {\n logger = newLogger;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getLogger } from './logger';\nimport { notifyManager } from './notifyManager';\nimport { Retryer } from './retryer';\nimport { noop } from './utils'; // TYPES\n\n// CLASS\nexport var Mutation = /*#__PURE__*/function () {\n function Mutation(config) {\n this.options = _extends({}, config.defaultOptions, config.options);\n this.mutationId = config.mutationId;\n this.mutationCache = config.mutationCache;\n this.observers = [];\n this.state = config.state || getDefaultState();\n this.meta = config.meta;\n }\n\n var _proto = Mutation.prototype;\n\n _proto.setState = function setState(state) {\n this.dispatch({\n type: 'setState',\n state: state\n });\n };\n\n _proto.addObserver = function addObserver(observer) {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer);\n }\n };\n\n _proto.removeObserver = function removeObserver(observer) {\n this.observers = this.observers.filter(function (x) {\n return x !== observer;\n });\n };\n\n _proto.cancel = function cancel() {\n if (this.retryer) {\n this.retryer.cancel();\n return this.retryer.promise.then(noop).catch(noop);\n }\n\n return Promise.resolve();\n };\n\n _proto.continue = function _continue() {\n if (this.retryer) {\n this.retryer.continue();\n return this.retryer.promise;\n }\n\n return this.execute();\n };\n\n _proto.execute = function execute() {\n var _this = this;\n\n var data;\n var restored = this.state.status === 'loading';\n var promise = Promise.resolve();\n\n if (!restored) {\n this.dispatch({\n type: 'loading',\n variables: this.options.variables\n });\n promise = promise.then(function () {\n // Notify cache callback\n _this.mutationCache.config.onMutate == null ? void 0 : _this.mutationCache.config.onMutate(_this.state.variables, _this);\n }).then(function () {\n return _this.options.onMutate == null ? void 0 : _this.options.onMutate(_this.state.variables);\n }).then(function (context) {\n if (context !== _this.state.context) {\n _this.dispatch({\n type: 'loading',\n context: context,\n variables: _this.state.variables\n });\n }\n });\n }\n\n return promise.then(function () {\n return _this.executeMutation();\n }).then(function (result) {\n data = result; // Notify cache callback\n\n _this.mutationCache.config.onSuccess == null ? void 0 : _this.mutationCache.config.onSuccess(data, _this.state.variables, _this.state.context, _this);\n }).then(function () {\n return _this.options.onSuccess == null ? void 0 : _this.options.onSuccess(data, _this.state.variables, _this.state.context);\n }).then(function () {\n return _this.options.onSettled == null ? void 0 : _this.options.onSettled(data, null, _this.state.variables, _this.state.context);\n }).then(function () {\n _this.dispatch({\n type: 'success',\n data: data\n });\n\n return data;\n }).catch(function (error) {\n // Notify cache callback\n _this.mutationCache.config.onError == null ? void 0 : _this.mutationCache.config.onError(error, _this.state.variables, _this.state.context, _this); // Log error\n\n getLogger().error(error);\n return Promise.resolve().then(function () {\n return _this.options.onError == null ? void 0 : _this.options.onError(error, _this.state.variables, _this.state.context);\n }).then(function () {\n return _this.options.onSettled == null ? void 0 : _this.options.onSettled(undefined, error, _this.state.variables, _this.state.context);\n }).then(function () {\n _this.dispatch({\n type: 'error',\n error: error\n });\n\n throw error;\n });\n });\n };\n\n _proto.executeMutation = function executeMutation() {\n var _this2 = this,\n _this$options$retry;\n\n this.retryer = new Retryer({\n fn: function fn() {\n if (!_this2.options.mutationFn) {\n return Promise.reject('No mutationFn found');\n }\n\n return _this2.options.mutationFn(_this2.state.variables);\n },\n onFail: function onFail() {\n _this2.dispatch({\n type: 'failed'\n });\n },\n onPause: function onPause() {\n _this2.dispatch({\n type: 'pause'\n });\n },\n onContinue: function onContinue() {\n _this2.dispatch({\n type: 'continue'\n });\n },\n retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,\n retryDelay: this.options.retryDelay\n });\n return this.retryer.promise;\n };\n\n _proto.dispatch = function dispatch(action) {\n var _this3 = this;\n\n this.state = reducer(this.state, action);\n notifyManager.batch(function () {\n _this3.observers.forEach(function (observer) {\n observer.onMutationUpdate(action);\n });\n\n _this3.mutationCache.notify(_this3);\n });\n };\n\n return Mutation;\n}();\nexport function getDefaultState() {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n isPaused: false,\n status: 'idle',\n variables: undefined\n };\n}\n\nfunction reducer(state, action) {\n switch (action.type) {\n case 'failed':\n return _extends({}, state, {\n failureCount: state.failureCount + 1\n });\n\n case 'pause':\n return _extends({}, state, {\n isPaused: true\n });\n\n case 'continue':\n return _extends({}, state, {\n isPaused: false\n });\n\n case 'loading':\n return _extends({}, state, {\n context: action.context,\n data: undefined,\n error: null,\n isPaused: false,\n status: 'loading',\n variables: action.variables\n });\n\n case 'success':\n return _extends({}, state, {\n data: action.data,\n error: null,\n status: 'success',\n isPaused: false\n });\n\n case 'error':\n return _extends({}, state, {\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n isPaused: false,\n status: 'error'\n });\n\n case 'setState':\n return _extends({}, state, action.state);\n\n default:\n return state;\n }\n}","import { scheduleMicrotask } from './utils'; // TYPES\n\n// CLASS\nexport var NotifyManager = /*#__PURE__*/function () {\n function NotifyManager() {\n this.queue = [];\n this.transactions = 0;\n\n this.notifyFn = function (callback) {\n callback();\n };\n\n this.batchNotifyFn = function (callback) {\n callback();\n };\n }\n\n var _proto = NotifyManager.prototype;\n\n _proto.batch = function batch(callback) {\n var result;\n this.transactions++;\n\n try {\n result = callback();\n } finally {\n this.transactions--;\n\n if (!this.transactions) {\n this.flush();\n }\n }\n\n return result;\n };\n\n _proto.schedule = function schedule(callback) {\n var _this = this;\n\n if (this.transactions) {\n this.queue.push(callback);\n } else {\n scheduleMicrotask(function () {\n _this.notifyFn(callback);\n });\n }\n }\n /**\n * All calls to the wrapped function will be batched.\n */\n ;\n\n _proto.batchCalls = function batchCalls(callback) {\n var _this2 = this;\n\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this2.schedule(function () {\n callback.apply(void 0, args);\n });\n };\n };\n\n _proto.flush = function flush() {\n var _this3 = this;\n\n var queue = this.queue;\n this.queue = [];\n\n if (queue.length) {\n scheduleMicrotask(function () {\n _this3.batchNotifyFn(function () {\n queue.forEach(function (callback) {\n _this3.notifyFn(callback);\n });\n });\n });\n }\n }\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n ;\n\n _proto.setNotifyFunction = function setNotifyFunction(fn) {\n this.notifyFn = fn;\n }\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n ;\n\n _proto.setBatchNotifyFunction = function setBatchNotifyFunction(fn) {\n this.batchNotifyFn = fn;\n };\n\n return NotifyManager;\n}(); // SINGLETON\n\nexport var notifyManager = new NotifyManager();","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Subscribable } from './subscribable';\nimport { isServer } from './utils';\nexport var OnlineManager = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(OnlineManager, _Subscribable);\n\n function OnlineManager() {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n\n _this.setup = function (onOnline) {\n var _window;\n\n if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {\n var listener = function listener() {\n return onOnline();\n }; // Listen to online\n\n\n window.addEventListener('online', listener, false);\n window.addEventListener('offline', listener, false);\n return function () {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', listener);\n window.removeEventListener('offline', listener);\n };\n }\n };\n\n return _this;\n }\n\n var _proto = OnlineManager.prototype;\n\n _proto.onSubscribe = function onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n };\n\n _proto.setEventListener = function setEventListener(setup) {\n var _this$cleanup2,\n _this2 = this;\n\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(function (online) {\n if (typeof online === 'boolean') {\n _this2.setOnline(online);\n } else {\n _this2.onOnline();\n }\n });\n };\n\n _proto.setOnline = function setOnline(online) {\n this.online = online;\n\n if (online) {\n this.onOnline();\n }\n };\n\n _proto.onOnline = function onOnline() {\n this.listeners.forEach(function (listener) {\n listener();\n });\n };\n\n _proto.isOnline = function isOnline() {\n if (typeof this.online === 'boolean') {\n return this.online;\n }\n\n if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {\n return true;\n }\n\n return navigator.onLine;\n };\n\n return OnlineManager;\n}(Subscribable);\nexport var onlineManager = new OnlineManager();","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getAbortController, functionalUpdate, isValidTimeout, noop, replaceEqualDeep, timeUntilStale, ensureQueryKeyArray } from './utils';\nimport { notifyManager } from './notifyManager';\nimport { getLogger } from './logger';\nimport { Retryer, isCancelledError } from './retryer'; // TYPES\n\n// CLASS\nexport var Query = /*#__PURE__*/function () {\n function Query(config) {\n this.abortSignalConsumed = false;\n this.hadObservers = false;\n this.defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.cache = config.cache;\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.initialState = config.state || this.getDefaultState(this.options);\n this.state = this.initialState;\n this.meta = config.meta;\n this.scheduleGc();\n }\n\n var _proto = Query.prototype;\n\n _proto.setOptions = function setOptions(options) {\n var _this$options$cacheTi;\n\n this.options = _extends({}, this.defaultOptions, options);\n this.meta = options == null ? void 0 : options.meta; // Default to 5 minutes if not cache time is set\n\n this.cacheTime = Math.max(this.cacheTime || 0, (_this$options$cacheTi = this.options.cacheTime) != null ? _this$options$cacheTi : 5 * 60 * 1000);\n };\n\n _proto.setDefaultOptions = function setDefaultOptions(options) {\n this.defaultOptions = options;\n };\n\n _proto.scheduleGc = function scheduleGc() {\n var _this = this;\n\n this.clearGcTimeout();\n\n if (isValidTimeout(this.cacheTime)) {\n this.gcTimeout = setTimeout(function () {\n _this.optionalRemove();\n }, this.cacheTime);\n }\n };\n\n _proto.clearGcTimeout = function clearGcTimeout() {\n if (this.gcTimeout) {\n clearTimeout(this.gcTimeout);\n this.gcTimeout = undefined;\n }\n };\n\n _proto.optionalRemove = function optionalRemove() {\n if (!this.observers.length) {\n if (this.state.isFetching) {\n if (this.hadObservers) {\n this.scheduleGc();\n }\n } else {\n this.cache.remove(this);\n }\n }\n };\n\n _proto.setData = function setData(updater, options) {\n var _this$options$isDataE, _this$options;\n\n var prevData = this.state.data; // Get the new data\n\n var data = functionalUpdate(updater, prevData); // Use prev data if an isDataEqual function is defined and returns `true`\n\n if ((_this$options$isDataE = (_this$options = this.options).isDataEqual) == null ? void 0 : _this$options$isDataE.call(_this$options, prevData, data)) {\n data = prevData;\n } else if (this.options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n data = replaceEqualDeep(prevData, data);\n } // Set data and mark it as cached\n\n\n this.dispatch({\n data: data,\n type: 'success',\n dataUpdatedAt: options == null ? void 0 : options.updatedAt\n });\n return data;\n };\n\n _proto.setState = function setState(state, setStateOptions) {\n this.dispatch({\n type: 'setState',\n state: state,\n setStateOptions: setStateOptions\n });\n };\n\n _proto.cancel = function cancel(options) {\n var _this$retryer;\n\n var promise = this.promise;\n (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n };\n\n _proto.destroy = function destroy() {\n this.clearGcTimeout();\n this.cancel({\n silent: true\n });\n };\n\n _proto.reset = function reset() {\n this.destroy();\n this.setState(this.initialState);\n };\n\n _proto.isActive = function isActive() {\n return this.observers.some(function (observer) {\n return observer.options.enabled !== false;\n });\n };\n\n _proto.isFetching = function isFetching() {\n return this.state.isFetching;\n };\n\n _proto.isStale = function isStale() {\n return this.state.isInvalidated || !this.state.dataUpdatedAt || this.observers.some(function (observer) {\n return observer.getCurrentResult().isStale;\n });\n };\n\n _proto.isStaleByTime = function isStaleByTime(staleTime) {\n if (staleTime === void 0) {\n staleTime = 0;\n }\n\n return this.state.isInvalidated || !this.state.dataUpdatedAt || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n };\n\n _proto.onFocus = function onFocus() {\n var _this$retryer2;\n\n var observer = this.observers.find(function (x) {\n return x.shouldFetchOnWindowFocus();\n });\n\n if (observer) {\n observer.refetch();\n } // Continue fetch if currently paused\n\n\n (_this$retryer2 = this.retryer) == null ? void 0 : _this$retryer2.continue();\n };\n\n _proto.onOnline = function onOnline() {\n var _this$retryer3;\n\n var observer = this.observers.find(function (x) {\n return x.shouldFetchOnReconnect();\n });\n\n if (observer) {\n observer.refetch();\n } // Continue fetch if currently paused\n\n\n (_this$retryer3 = this.retryer) == null ? void 0 : _this$retryer3.continue();\n };\n\n _proto.addObserver = function addObserver(observer) {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer);\n this.hadObservers = true; // Stop the query from being garbage collected\n\n this.clearGcTimeout();\n this.cache.notify({\n type: 'observerAdded',\n query: this,\n observer: observer\n });\n }\n };\n\n _proto.removeObserver = function removeObserver(observer) {\n if (this.observers.indexOf(observer) !== -1) {\n this.observers = this.observers.filter(function (x) {\n return x !== observer;\n });\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.retryer) {\n if (this.retryer.isTransportCancelable || this.abortSignalConsumed) {\n this.retryer.cancel({\n revert: true\n });\n } else {\n this.retryer.cancelRetry();\n }\n }\n\n if (this.cacheTime) {\n this.scheduleGc();\n } else {\n this.cache.remove(this);\n }\n }\n\n this.cache.notify({\n type: 'observerRemoved',\n query: this,\n observer: observer\n });\n }\n };\n\n _proto.getObserversCount = function getObserversCount() {\n return this.observers.length;\n };\n\n _proto.invalidate = function invalidate() {\n if (!this.state.isInvalidated) {\n this.dispatch({\n type: 'invalidate'\n });\n }\n };\n\n _proto.fetch = function fetch(options, fetchOptions) {\n var _this2 = this,\n _this$options$behavio,\n _context$fetchOptions,\n _abortController$abor;\n\n if (this.state.isFetching) {\n if (this.state.dataUpdatedAt && (fetchOptions == null ? void 0 : fetchOptions.cancelRefetch)) {\n // Silently cancel current fetch if the user wants to cancel refetches\n this.cancel({\n silent: true\n });\n } else if (this.promise) {\n var _this$retryer4;\n\n // make sure that retries that were potentially cancelled due to unmounts can continue\n (_this$retryer4 = this.retryer) == null ? void 0 : _this$retryer4.continueRetry(); // Return current promise if we are already fetching\n\n return this.promise;\n }\n } // Update config if passed, otherwise the config from the last execution is used\n\n\n if (options) {\n this.setOptions(options);\n } // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n\n\n if (!this.options.queryFn) {\n var observer = this.observers.find(function (x) {\n return x.options.queryFn;\n });\n\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n\n var queryKey = ensureQueryKeyArray(this.queryKey);\n var abortController = getAbortController(); // Create query function context\n\n var queryFnContext = {\n queryKey: queryKey,\n pageParam: undefined,\n meta: this.meta\n };\n Object.defineProperty(queryFnContext, 'signal', {\n enumerable: true,\n get: function get() {\n if (abortController) {\n _this2.abortSignalConsumed = true;\n return abortController.signal;\n }\n\n return undefined;\n }\n }); // Create fetch function\n\n var fetchFn = function fetchFn() {\n if (!_this2.options.queryFn) {\n return Promise.reject('Missing queryFn');\n }\n\n _this2.abortSignalConsumed = false;\n return _this2.options.queryFn(queryFnContext);\n }; // Trigger behavior hook\n\n\n var context = {\n fetchOptions: fetchOptions,\n options: this.options,\n queryKey: queryKey,\n state: this.state,\n fetchFn: fetchFn,\n meta: this.meta\n };\n\n if ((_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch) {\n var _this$options$behavio2;\n\n (_this$options$behavio2 = this.options.behavior) == null ? void 0 : _this$options$behavio2.onFetch(context);\n } // Store state in case the current fetch needs to be reverted\n\n\n this.revertState = this.state; // Set to fetching state if not already in it\n\n if (!this.state.isFetching || this.state.fetchMeta !== ((_context$fetchOptions = context.fetchOptions) == null ? void 0 : _context$fetchOptions.meta)) {\n var _context$fetchOptions2;\n\n this.dispatch({\n type: 'fetch',\n meta: (_context$fetchOptions2 = context.fetchOptions) == null ? void 0 : _context$fetchOptions2.meta\n });\n } // Try to fetch the data\n\n\n this.retryer = new Retryer({\n fn: context.fetchFn,\n abort: abortController == null ? void 0 : (_abortController$abor = abortController.abort) == null ? void 0 : _abortController$abor.bind(abortController),\n onSuccess: function onSuccess(data) {\n _this2.setData(data); // Notify cache callback\n\n\n _this2.cache.config.onSuccess == null ? void 0 : _this2.cache.config.onSuccess(data, _this2); // Remove query after fetching if cache time is 0\n\n if (_this2.cacheTime === 0) {\n _this2.optionalRemove();\n }\n },\n onError: function onError(error) {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n _this2.dispatch({\n type: 'error',\n error: error\n });\n }\n\n if (!isCancelledError(error)) {\n // Notify cache callback\n _this2.cache.config.onError == null ? void 0 : _this2.cache.config.onError(error, _this2); // Log error\n\n getLogger().error(error);\n } // Remove query after fetching if cache time is 0\n\n\n if (_this2.cacheTime === 0) {\n _this2.optionalRemove();\n }\n },\n onFail: function onFail() {\n _this2.dispatch({\n type: 'failed'\n });\n },\n onPause: function onPause() {\n _this2.dispatch({\n type: 'pause'\n });\n },\n onContinue: function onContinue() {\n _this2.dispatch({\n type: 'continue'\n });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay\n });\n this.promise = this.retryer.promise;\n return this.promise;\n };\n\n _proto.dispatch = function dispatch(action) {\n var _this3 = this;\n\n this.state = this.reducer(this.state, action);\n notifyManager.batch(function () {\n _this3.observers.forEach(function (observer) {\n observer.onQueryUpdate(action);\n });\n\n _this3.cache.notify({\n query: _this3,\n type: 'queryUpdated',\n action: action\n });\n });\n };\n\n _proto.getDefaultState = function getDefaultState(options) {\n var data = typeof options.initialData === 'function' ? options.initialData() : options.initialData;\n var hasInitialData = typeof options.initialData !== 'undefined';\n var initialDataUpdatedAt = hasInitialData ? typeof options.initialDataUpdatedAt === 'function' ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n var hasData = typeof data !== 'undefined';\n return {\n data: data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt != null ? initialDataUpdatedAt : Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchMeta: null,\n isFetching: false,\n isInvalidated: false,\n isPaused: false,\n status: hasData ? 'success' : 'idle'\n };\n };\n\n _proto.reducer = function reducer(state, action) {\n var _action$meta, _action$dataUpdatedAt;\n\n switch (action.type) {\n case 'failed':\n return _extends({}, state, {\n fetchFailureCount: state.fetchFailureCount + 1\n });\n\n case 'pause':\n return _extends({}, state, {\n isPaused: true\n });\n\n case 'continue':\n return _extends({}, state, {\n isPaused: false\n });\n\n case 'fetch':\n return _extends({}, state, {\n fetchFailureCount: 0,\n fetchMeta: (_action$meta = action.meta) != null ? _action$meta : null,\n isFetching: true,\n isPaused: false\n }, !state.dataUpdatedAt && {\n error: null,\n status: 'loading'\n });\n\n case 'success':\n return _extends({}, state, {\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: (_action$dataUpdatedAt = action.dataUpdatedAt) != null ? _action$dataUpdatedAt : Date.now(),\n error: null,\n fetchFailureCount: 0,\n isFetching: false,\n isInvalidated: false,\n isPaused: false,\n status: 'success'\n });\n\n case 'error':\n var error = action.error;\n\n if (isCancelledError(error) && error.revert && this.revertState) {\n return _extends({}, this.revertState);\n }\n\n return _extends({}, state, {\n error: error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n isFetching: false,\n isPaused: false,\n status: 'error'\n });\n\n case 'invalidate':\n return _extends({}, state, {\n isInvalidated: true\n });\n\n case 'setState':\n return _extends({}, state, action.state);\n\n default:\n return state;\n }\n };\n\n return Query;\n}();","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { hashQueryKeyByOptions, matchQuery, parseFilterArgs } from './utils';\nimport { Query } from './query';\nimport { notifyManager } from './notifyManager';\nimport { Subscribable } from './subscribable';\n// CLASS\nexport var QueryCache = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(QueryCache, _Subscribable);\n\n function QueryCache(config) {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n _this.config = config || {};\n _this.queries = [];\n _this.queriesMap = {};\n return _this;\n }\n\n var _proto = QueryCache.prototype;\n\n _proto.build = function build(client, options, state) {\n var _options$queryHash;\n\n var queryKey = options.queryKey;\n var queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : hashQueryKeyByOptions(queryKey, options);\n var query = this.get(queryHash);\n\n if (!query) {\n query = new Query({\n cache: this,\n queryKey: queryKey,\n queryHash: queryHash,\n options: client.defaultQueryOptions(options),\n state: state,\n defaultOptions: client.getQueryDefaults(queryKey),\n meta: options.meta\n });\n this.add(query);\n }\n\n return query;\n };\n\n _proto.add = function add(query) {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query;\n this.queries.push(query);\n this.notify({\n type: 'queryAdded',\n query: query\n });\n }\n };\n\n _proto.remove = function remove(query) {\n var queryInMap = this.queriesMap[query.queryHash];\n\n if (queryInMap) {\n query.destroy();\n this.queries = this.queries.filter(function (x) {\n return x !== query;\n });\n\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash];\n }\n\n this.notify({\n type: 'queryRemoved',\n query: query\n });\n }\n };\n\n _proto.clear = function clear() {\n var _this2 = this;\n\n notifyManager.batch(function () {\n _this2.queries.forEach(function (query) {\n _this2.remove(query);\n });\n });\n };\n\n _proto.get = function get(queryHash) {\n return this.queriesMap[queryHash];\n };\n\n _proto.getAll = function getAll() {\n return this.queries;\n };\n\n _proto.find = function find(arg1, arg2) {\n var _parseFilterArgs = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs[0];\n\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n\n return this.queries.find(function (query) {\n return matchQuery(filters, query);\n });\n };\n\n _proto.findAll = function findAll(arg1, arg2) {\n var _parseFilterArgs2 = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs2[0];\n\n return Object.keys(filters).length > 0 ? this.queries.filter(function (query) {\n return matchQuery(filters, query);\n }) : this.queries;\n };\n\n _proto.notify = function notify(event) {\n var _this3 = this;\n\n notifyManager.batch(function () {\n _this3.listeners.forEach(function (listener) {\n listener(event);\n });\n });\n };\n\n _proto.onFocus = function onFocus() {\n var _this4 = this;\n\n notifyManager.batch(function () {\n _this4.queries.forEach(function (query) {\n query.onFocus();\n });\n });\n };\n\n _proto.onOnline = function onOnline() {\n var _this5 = this;\n\n notifyManager.batch(function () {\n _this5.queries.forEach(function (query) {\n query.onOnline();\n });\n });\n };\n\n return QueryCache;\n}(Subscribable);","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { notifyManager } from './notifyManager';\nimport { Mutation } from './mutation';\nimport { matchMutation, noop } from './utils';\nimport { Subscribable } from './subscribable'; // TYPES\n\n// CLASS\nexport var MutationCache = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(MutationCache, _Subscribable);\n\n function MutationCache(config) {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n _this.config = config || {};\n _this.mutations = [];\n _this.mutationId = 0;\n return _this;\n }\n\n var _proto = MutationCache.prototype;\n\n _proto.build = function build(client, options, state) {\n var mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.mutationId,\n options: client.defaultMutationOptions(options),\n state: state,\n defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : undefined,\n meta: options.meta\n });\n this.add(mutation);\n return mutation;\n };\n\n _proto.add = function add(mutation) {\n this.mutations.push(mutation);\n this.notify(mutation);\n };\n\n _proto.remove = function remove(mutation) {\n this.mutations = this.mutations.filter(function (x) {\n return x !== mutation;\n });\n mutation.cancel();\n this.notify(mutation);\n };\n\n _proto.clear = function clear() {\n var _this2 = this;\n\n notifyManager.batch(function () {\n _this2.mutations.forEach(function (mutation) {\n _this2.remove(mutation);\n });\n });\n };\n\n _proto.getAll = function getAll() {\n return this.mutations;\n };\n\n _proto.find = function find(filters) {\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n\n return this.mutations.find(function (mutation) {\n return matchMutation(filters, mutation);\n });\n };\n\n _proto.findAll = function findAll(filters) {\n return this.mutations.filter(function (mutation) {\n return matchMutation(filters, mutation);\n });\n };\n\n _proto.notify = function notify(mutation) {\n var _this3 = this;\n\n notifyManager.batch(function () {\n _this3.listeners.forEach(function (listener) {\n listener(mutation);\n });\n });\n };\n\n _proto.onFocus = function onFocus() {\n this.resumePausedMutations();\n };\n\n _proto.onOnline = function onOnline() {\n this.resumePausedMutations();\n };\n\n _proto.resumePausedMutations = function resumePausedMutations() {\n var pausedMutations = this.mutations.filter(function (x) {\n return x.state.isPaused;\n });\n return notifyManager.batch(function () {\n return pausedMutations.reduce(function (promise, mutation) {\n return promise.then(function () {\n return mutation.continue().catch(noop);\n });\n }, Promise.resolve());\n });\n };\n\n return MutationCache;\n}(Subscribable);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { hashQueryKey, noop, parseFilterArgs, parseQueryArgs, partialMatchKey, hashQueryKeyByOptions } from './utils';\nimport { QueryCache } from './queryCache';\nimport { MutationCache } from './mutationCache';\nimport { focusManager } from './focusManager';\nimport { onlineManager } from './onlineManager';\nimport { notifyManager } from './notifyManager';\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior';\n// CLASS\nexport var QueryClient = /*#__PURE__*/function () {\n function QueryClient(config) {\n if (config === void 0) {\n config = {};\n }\n\n this.queryCache = config.queryCache || new QueryCache();\n this.mutationCache = config.mutationCache || new MutationCache();\n this.defaultOptions = config.defaultOptions || {};\n this.queryDefaults = [];\n this.mutationDefaults = [];\n }\n\n var _proto = QueryClient.prototype;\n\n _proto.mount = function mount() {\n var _this = this;\n\n this.unsubscribeFocus = focusManager.subscribe(function () {\n if (focusManager.isFocused() && onlineManager.isOnline()) {\n _this.mutationCache.onFocus();\n\n _this.queryCache.onFocus();\n }\n });\n this.unsubscribeOnline = onlineManager.subscribe(function () {\n if (focusManager.isFocused() && onlineManager.isOnline()) {\n _this.mutationCache.onOnline();\n\n _this.queryCache.onOnline();\n }\n });\n };\n\n _proto.unmount = function unmount() {\n var _this$unsubscribeFocu, _this$unsubscribeOnli;\n\n (_this$unsubscribeFocu = this.unsubscribeFocus) == null ? void 0 : _this$unsubscribeFocu.call(this);\n (_this$unsubscribeOnli = this.unsubscribeOnline) == null ? void 0 : _this$unsubscribeOnli.call(this);\n };\n\n _proto.isFetching = function isFetching(arg1, arg2) {\n var _parseFilterArgs = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs[0];\n\n filters.fetching = true;\n return this.queryCache.findAll(filters).length;\n };\n\n _proto.isMutating = function isMutating(filters) {\n return this.mutationCache.findAll(_extends({}, filters, {\n fetching: true\n })).length;\n };\n\n _proto.getQueryData = function getQueryData(queryKey, filters) {\n var _this$queryCache$find;\n\n return (_this$queryCache$find = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find.state.data;\n };\n\n _proto.getQueriesData = function getQueriesData(queryKeyOrFilters) {\n return this.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref) {\n var queryKey = _ref.queryKey,\n state = _ref.state;\n var data = state.data;\n return [queryKey, data];\n });\n };\n\n _proto.setQueryData = function setQueryData(queryKey, updater, options) {\n var parsedOptions = parseQueryArgs(queryKey);\n var defaultedOptions = this.defaultQueryOptions(parsedOptions);\n return this.queryCache.build(this, defaultedOptions).setData(updater, options);\n };\n\n _proto.setQueriesData = function setQueriesData(queryKeyOrFilters, updater, options) {\n var _this2 = this;\n\n return notifyManager.batch(function () {\n return _this2.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref2) {\n var queryKey = _ref2.queryKey;\n return [queryKey, _this2.setQueryData(queryKey, updater, options)];\n });\n });\n };\n\n _proto.getQueryState = function getQueryState(queryKey, filters) {\n var _this$queryCache$find2;\n\n return (_this$queryCache$find2 = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find2.state;\n };\n\n _proto.removeQueries = function removeQueries(arg1, arg2) {\n var _parseFilterArgs2 = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs2[0];\n\n var queryCache = this.queryCache;\n notifyManager.batch(function () {\n queryCache.findAll(filters).forEach(function (query) {\n queryCache.remove(query);\n });\n });\n };\n\n _proto.resetQueries = function resetQueries(arg1, arg2, arg3) {\n var _this3 = this;\n\n var _parseFilterArgs3 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs3[0],\n options = _parseFilterArgs3[1];\n\n var queryCache = this.queryCache;\n\n var refetchFilters = _extends({}, filters, {\n active: true\n });\n\n return notifyManager.batch(function () {\n queryCache.findAll(filters).forEach(function (query) {\n query.reset();\n });\n return _this3.refetchQueries(refetchFilters, options);\n });\n };\n\n _proto.cancelQueries = function cancelQueries(arg1, arg2, arg3) {\n var _this4 = this;\n\n var _parseFilterArgs4 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs4[0],\n _parseFilterArgs4$ = _parseFilterArgs4[1],\n cancelOptions = _parseFilterArgs4$ === void 0 ? {} : _parseFilterArgs4$;\n\n if (typeof cancelOptions.revert === 'undefined') {\n cancelOptions.revert = true;\n }\n\n var promises = notifyManager.batch(function () {\n return _this4.queryCache.findAll(filters).map(function (query) {\n return query.cancel(cancelOptions);\n });\n });\n return Promise.all(promises).then(noop).catch(noop);\n };\n\n _proto.invalidateQueries = function invalidateQueries(arg1, arg2, arg3) {\n var _ref3,\n _filters$refetchActiv,\n _filters$refetchInact,\n _this5 = this;\n\n var _parseFilterArgs5 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs5[0],\n options = _parseFilterArgs5[1];\n\n var refetchFilters = _extends({}, filters, {\n // if filters.refetchActive is not provided and filters.active is explicitly false,\n // e.g. invalidateQueries({ active: false }), we don't want to refetch active queries\n active: (_ref3 = (_filters$refetchActiv = filters.refetchActive) != null ? _filters$refetchActiv : filters.active) != null ? _ref3 : true,\n inactive: (_filters$refetchInact = filters.refetchInactive) != null ? _filters$refetchInact : false\n });\n\n return notifyManager.batch(function () {\n _this5.queryCache.findAll(filters).forEach(function (query) {\n query.invalidate();\n });\n\n return _this5.refetchQueries(refetchFilters, options);\n });\n };\n\n _proto.refetchQueries = function refetchQueries(arg1, arg2, arg3) {\n var _this6 = this;\n\n var _parseFilterArgs6 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs6[0],\n options = _parseFilterArgs6[1];\n\n var promises = notifyManager.batch(function () {\n return _this6.queryCache.findAll(filters).map(function (query) {\n return query.fetch(undefined, _extends({}, options, {\n meta: {\n refetchPage: filters == null ? void 0 : filters.refetchPage\n }\n }));\n });\n });\n var promise = Promise.all(promises).then(noop);\n\n if (!(options == null ? void 0 : options.throwOnError)) {\n promise = promise.catch(noop);\n }\n\n return promise;\n };\n\n _proto.fetchQuery = function fetchQuery(arg1, arg2, arg3) {\n var parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n var defaultedOptions = this.defaultQueryOptions(parsedOptions); // https://github.com/tannerlinsley/react-query/issues/652\n\n if (typeof defaultedOptions.retry === 'undefined') {\n defaultedOptions.retry = false;\n }\n\n var query = this.queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n };\n\n _proto.prefetchQuery = function prefetchQuery(arg1, arg2, arg3) {\n return this.fetchQuery(arg1, arg2, arg3).then(noop).catch(noop);\n };\n\n _proto.fetchInfiniteQuery = function fetchInfiniteQuery(arg1, arg2, arg3) {\n var parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n parsedOptions.behavior = infiniteQueryBehavior();\n return this.fetchQuery(parsedOptions);\n };\n\n _proto.prefetchInfiniteQuery = function prefetchInfiniteQuery(arg1, arg2, arg3) {\n return this.fetchInfiniteQuery(arg1, arg2, arg3).then(noop).catch(noop);\n };\n\n _proto.cancelMutations = function cancelMutations() {\n var _this7 = this;\n\n var promises = notifyManager.batch(function () {\n return _this7.mutationCache.getAll().map(function (mutation) {\n return mutation.cancel();\n });\n });\n return Promise.all(promises).then(noop).catch(noop);\n };\n\n _proto.resumePausedMutations = function resumePausedMutations() {\n return this.getMutationCache().resumePausedMutations();\n };\n\n _proto.executeMutation = function executeMutation(options) {\n return this.mutationCache.build(this, options).execute();\n };\n\n _proto.getQueryCache = function getQueryCache() {\n return this.queryCache;\n };\n\n _proto.getMutationCache = function getMutationCache() {\n return this.mutationCache;\n };\n\n _proto.getDefaultOptions = function getDefaultOptions() {\n return this.defaultOptions;\n };\n\n _proto.setDefaultOptions = function setDefaultOptions(options) {\n this.defaultOptions = options;\n };\n\n _proto.setQueryDefaults = function setQueryDefaults(queryKey, options) {\n var result = this.queryDefaults.find(function (x) {\n return hashQueryKey(queryKey) === hashQueryKey(x.queryKey);\n });\n\n if (result) {\n result.defaultOptions = options;\n } else {\n this.queryDefaults.push({\n queryKey: queryKey,\n defaultOptions: options\n });\n }\n };\n\n _proto.getQueryDefaults = function getQueryDefaults(queryKey) {\n var _this$queryDefaults$f;\n\n return queryKey ? (_this$queryDefaults$f = this.queryDefaults.find(function (x) {\n return partialMatchKey(queryKey, x.queryKey);\n })) == null ? void 0 : _this$queryDefaults$f.defaultOptions : undefined;\n };\n\n _proto.setMutationDefaults = function setMutationDefaults(mutationKey, options) {\n var result = this.mutationDefaults.find(function (x) {\n return hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey);\n });\n\n if (result) {\n result.defaultOptions = options;\n } else {\n this.mutationDefaults.push({\n mutationKey: mutationKey,\n defaultOptions: options\n });\n }\n };\n\n _proto.getMutationDefaults = function getMutationDefaults(mutationKey) {\n var _this$mutationDefault;\n\n return mutationKey ? (_this$mutationDefault = this.mutationDefaults.find(function (x) {\n return partialMatchKey(mutationKey, x.mutationKey);\n })) == null ? void 0 : _this$mutationDefault.defaultOptions : undefined;\n };\n\n _proto.defaultQueryOptions = function defaultQueryOptions(options) {\n if (options == null ? void 0 : options._defaulted) {\n return options;\n }\n\n var defaultedOptions = _extends({}, this.defaultOptions.queries, this.getQueryDefaults(options == null ? void 0 : options.queryKey), options, {\n _defaulted: true\n });\n\n if (!defaultedOptions.queryHash && defaultedOptions.queryKey) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);\n }\n\n return defaultedOptions;\n };\n\n _proto.defaultQueryObserverOptions = function defaultQueryObserverOptions(options) {\n return this.defaultQueryOptions(options);\n };\n\n _proto.defaultMutationOptions = function defaultMutationOptions(options) {\n if (options == null ? void 0 : options._defaulted) {\n return options;\n }\n\n return _extends({}, this.defaultOptions.mutations, this.getMutationDefaults(options == null ? void 0 : options.mutationKey), options, {\n _defaulted: true\n });\n };\n\n _proto.clear = function clear() {\n this.queryCache.clear();\n this.mutationCache.clear();\n };\n\n return QueryClient;\n}();","import { focusManager } from './focusManager';\nimport { onlineManager } from './onlineManager';\nimport { sleep } from './utils';\n\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1000 * Math.pow(2, failureCount), 30000);\n}\n\nexport function isCancelable(value) {\n return typeof (value == null ? void 0 : value.cancel) === 'function';\n}\nexport var CancelledError = function CancelledError(options) {\n this.revert = options == null ? void 0 : options.revert;\n this.silent = options == null ? void 0 : options.silent;\n};\nexport function isCancelledError(value) {\n return value instanceof CancelledError;\n} // CLASS\n\nexport var Retryer = function Retryer(config) {\n var _this = this;\n\n var cancelRetry = false;\n var cancelFn;\n var continueFn;\n var promiseResolve;\n var promiseReject;\n this.abort = config.abort;\n\n this.cancel = function (cancelOptions) {\n return cancelFn == null ? void 0 : cancelFn(cancelOptions);\n };\n\n this.cancelRetry = function () {\n cancelRetry = true;\n };\n\n this.continueRetry = function () {\n cancelRetry = false;\n };\n\n this.continue = function () {\n return continueFn == null ? void 0 : continueFn();\n };\n\n this.failureCount = 0;\n this.isPaused = false;\n this.isResolved = false;\n this.isTransportCancelable = false;\n this.promise = new Promise(function (outerResolve, outerReject) {\n promiseResolve = outerResolve;\n promiseReject = outerReject;\n });\n\n var resolve = function resolve(value) {\n if (!_this.isResolved) {\n _this.isResolved = true;\n config.onSuccess == null ? void 0 : config.onSuccess(value);\n continueFn == null ? void 0 : continueFn();\n promiseResolve(value);\n }\n };\n\n var reject = function reject(value) {\n if (!_this.isResolved) {\n _this.isResolved = true;\n config.onError == null ? void 0 : config.onError(value);\n continueFn == null ? void 0 : continueFn();\n promiseReject(value);\n }\n };\n\n var pause = function pause() {\n return new Promise(function (continueResolve) {\n continueFn = continueResolve;\n _this.isPaused = true;\n config.onPause == null ? void 0 : config.onPause();\n }).then(function () {\n continueFn = undefined;\n _this.isPaused = false;\n config.onContinue == null ? void 0 : config.onContinue();\n });\n }; // Create loop function\n\n\n var run = function run() {\n // Do nothing if already resolved\n if (_this.isResolved) {\n return;\n }\n\n var promiseOrValue; // Execute query\n\n try {\n promiseOrValue = config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n } // Create callback to cancel this fetch\n\n\n cancelFn = function cancelFn(cancelOptions) {\n if (!_this.isResolved) {\n reject(new CancelledError(cancelOptions));\n _this.abort == null ? void 0 : _this.abort(); // Cancel transport if supported\n\n if (isCancelable(promiseOrValue)) {\n try {\n promiseOrValue.cancel();\n } catch (_unused) {}\n }\n }\n }; // Check if the transport layer support cancellation\n\n\n _this.isTransportCancelable = isCancelable(promiseOrValue);\n Promise.resolve(promiseOrValue).then(resolve).catch(function (error) {\n var _config$retry, _config$retryDelay;\n\n // Stop if the fetch is already resolved\n if (_this.isResolved) {\n return;\n } // Do we need to retry the request?\n\n\n var retry = (_config$retry = config.retry) != null ? _config$retry : 3;\n var retryDelay = (_config$retryDelay = config.retryDelay) != null ? _config$retryDelay : defaultRetryDelay;\n var delay = typeof retryDelay === 'function' ? retryDelay(_this.failureCount, error) : retryDelay;\n var shouldRetry = retry === true || typeof retry === 'number' && _this.failureCount < retry || typeof retry === 'function' && retry(_this.failureCount, error);\n\n if (cancelRetry || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error);\n return;\n }\n\n _this.failureCount++; // Notify on fail\n\n config.onFail == null ? void 0 : config.onFail(_this.failureCount, error); // Delay\n\n sleep(delay) // Pause if the document is not visible or when the device is offline\n .then(function () {\n if (!focusManager.isFocused() || !onlineManager.isOnline()) {\n return pause();\n }\n }).then(function () {\n if (cancelRetry) {\n reject(error);\n } else {\n run();\n }\n });\n });\n }; // Start loop\n\n\n run();\n};","export var Subscribable = /*#__PURE__*/function () {\n function Subscribable() {\n this.listeners = [];\n }\n\n var _proto = Subscribable.prototype;\n\n _proto.subscribe = function subscribe(listener) {\n var _this = this;\n\n var callback = listener || function () {\n return undefined;\n };\n\n this.listeners.push(callback);\n this.onSubscribe();\n return function () {\n _this.listeners = _this.listeners.filter(function (x) {\n return x !== callback;\n });\n\n _this.onUnsubscribe();\n };\n };\n\n _proto.hasListeners = function hasListeners() {\n return this.listeners.length > 0;\n };\n\n _proto.onSubscribe = function onSubscribe() {// Do nothing\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {// Do nothing\n };\n\n return Subscribable;\n}();","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// TYPES\n// UTILS\nexport var isServer = typeof window === 'undefined';\nexport function noop() {\n return undefined;\n}\nexport function functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nexport function isValidTimeout(value) {\n return typeof value === 'number' && value >= 0 && value !== Infinity;\n}\nexport function ensureQueryKeyArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nexport function difference(array1, array2) {\n return array1.filter(function (x) {\n return array2.indexOf(x) === -1;\n });\n}\nexport function replaceAt(array, index, value) {\n var copy = array.slice(0);\n copy[index] = value;\n return copy;\n}\nexport function timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nexport function parseQueryArgs(arg1, arg2, arg3) {\n if (!isQueryKey(arg1)) {\n return arg1;\n }\n\n if (typeof arg2 === 'function') {\n return _extends({}, arg3, {\n queryKey: arg1,\n queryFn: arg2\n });\n }\n\n return _extends({}, arg2, {\n queryKey: arg1\n });\n}\nexport function parseMutationArgs(arg1, arg2, arg3) {\n if (isQueryKey(arg1)) {\n if (typeof arg2 === 'function') {\n return _extends({}, arg3, {\n mutationKey: arg1,\n mutationFn: arg2\n });\n }\n\n return _extends({}, arg2, {\n mutationKey: arg1\n });\n }\n\n if (typeof arg1 === 'function') {\n return _extends({}, arg2, {\n mutationFn: arg1\n });\n }\n\n return _extends({}, arg1);\n}\nexport function parseFilterArgs(arg1, arg2, arg3) {\n return isQueryKey(arg1) ? [_extends({}, arg2, {\n queryKey: arg1\n }), arg3] : [arg1 || {}, arg2];\n}\nexport function parseMutationFilterArgs(arg1, arg2) {\n return isQueryKey(arg1) ? _extends({}, arg2, {\n mutationKey: arg1\n }) : arg1;\n}\nexport function mapQueryStatusFilter(active, inactive) {\n if (active === true && inactive === true || active == null && inactive == null) {\n return 'all';\n } else if (active === false && inactive === false) {\n return 'none';\n } else {\n // At this point, active|inactive can only be true|false or false|true\n // so, when only one value is provided, the missing one has to be the negated value\n var isActive = active != null ? active : !inactive;\n return isActive ? 'active' : 'inactive';\n }\n}\nexport function matchQuery(filters, query) {\n var active = filters.active,\n exact = filters.exact,\n fetching = filters.fetching,\n inactive = filters.inactive,\n predicate = filters.predicate,\n queryKey = filters.queryKey,\n stale = filters.stale;\n\n if (isQueryKey(queryKey)) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n\n var queryStatusFilter = mapQueryStatusFilter(active, inactive);\n\n if (queryStatusFilter === 'none') {\n return false;\n } else if (queryStatusFilter !== 'all') {\n var isActive = query.isActive();\n\n if (queryStatusFilter === 'active' && !isActive) {\n return false;\n }\n\n if (queryStatusFilter === 'inactive' && isActive) {\n return false;\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false;\n }\n\n if (typeof fetching === 'boolean' && query.isFetching() !== fetching) {\n return false;\n }\n\n if (predicate && !predicate(query)) {\n return false;\n }\n\n return true;\n}\nexport function matchMutation(filters, mutation) {\n var exact = filters.exact,\n fetching = filters.fetching,\n predicate = filters.predicate,\n mutationKey = filters.mutationKey;\n\n if (isQueryKey(mutationKey)) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n\n if (exact) {\n if (hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n\n if (typeof fetching === 'boolean' && mutation.state.status === 'loading' !== fetching) {\n return false;\n }\n\n if (predicate && !predicate(mutation)) {\n return false;\n }\n\n return true;\n}\nexport function hashQueryKeyByOptions(queryKey, options) {\n var hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashQueryKey;\n return hashFn(queryKey);\n}\n/**\n * Default query keys hash function.\n */\n\nexport function hashQueryKey(queryKey) {\n var asArray = ensureQueryKeyArray(queryKey);\n return stableValueHash(asArray);\n}\n/**\n * Hashes the value into a stable hash.\n */\n\nexport function stableValueHash(value) {\n return JSON.stringify(value, function (_, val) {\n return isPlainObject(val) ? Object.keys(val).sort().reduce(function (result, key) {\n result[key] = val[key];\n return result;\n }, {}) : val;\n });\n}\n/**\n * Checks if key `b` partially matches with key `a`.\n */\n\nexport function partialMatchKey(a, b) {\n return partialDeepEqual(ensureQueryKeyArray(a), ensureQueryKeyArray(b));\n}\n/**\n * Checks if `b` partially matches with `a`.\n */\n\nexport function partialDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (typeof a !== typeof b) {\n return false;\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some(function (key) {\n return !partialDeepEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\n\nexport function replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n\n var array = Array.isArray(a) && Array.isArray(b);\n\n if (array || isPlainObject(a) && isPlainObject(b)) {\n var aSize = array ? a.length : Object.keys(a).length;\n var bItems = array ? b : Object.keys(b);\n var bSize = bItems.length;\n var copy = array ? [] : {};\n var equalItems = 0;\n\n for (var i = 0; i < bSize; i++) {\n var key = array ? i : bItems[i];\n copy[key] = replaceEqualDeep(a[key], b[key]);\n\n if (copy[key] === a[key]) {\n equalItems++;\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n\n return b;\n}\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\n\nexport function shallowEqualObjects(a, b) {\n if (a && !b || b && !a) {\n return false;\n }\n\n for (var key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n\n return true;\n} // Copied from: https://github.com/jonschlinkert/is-plain-object\n\nexport function isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n } // If has modified constructor\n\n\n var ctor = o.constructor;\n\n if (typeof ctor === 'undefined') {\n return true;\n } // If has modified prototype\n\n\n var prot = ctor.prototype;\n\n if (!hasObjectPrototype(prot)) {\n return false;\n } // If constructor does not have an Object-specific method\n\n\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false;\n } // Most likely a plain Object\n\n\n return true;\n}\n\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nexport function isQueryKey(value) {\n return typeof value === 'string' || Array.isArray(value);\n}\nexport function isError(value) {\n return value instanceof Error;\n}\nexport function sleep(timeout) {\n return new Promise(function (resolve) {\n setTimeout(resolve, timeout);\n });\n}\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\n\nexport function scheduleMicrotask(callback) {\n Promise.resolve().then(callback).catch(function (error) {\n return setTimeout(function () {\n throw error;\n });\n });\n}\nexport function getAbortController() {\n if (typeof AbortController === 'function') {\n return new AbortController();\n }\n}","import ReactDOM from 'react-dom';\nexport var unstable_batchedUpdates = ReactDOM.unstable_batchedUpdates;","import { notifyManager } from '../core';\nimport { unstable_batchedUpdates } from './reactBatchedUpdates';\nnotifyManager.setBatchNotifyFunction(unstable_batchedUpdates);","export var logger = console;","import { setLogger } from '../core';\nimport { logger } from './logger';\nsetLogger(logger);","import React from 'react';\nvar defaultContext = /*#__PURE__*/React.createContext(undefined);\nvar QueryClientSharingContext = /*#__PURE__*/React.createContext(false); // if contextSharing is on, we share the first and at least one\n// instance of the context across the window\n// to ensure that if React Query is used across\n// different bundles or microfrontends they will\n// all use the same **instance** of context, regardless\n// of module scoping.\n\nfunction getQueryClientContext(contextSharing) {\n if (contextSharing && typeof window !== 'undefined') {\n if (!window.ReactQueryClientContext) {\n window.ReactQueryClientContext = defaultContext;\n }\n\n return window.ReactQueryClientContext;\n }\n\n return defaultContext;\n}\n\nexport var useQueryClient = function useQueryClient() {\n var queryClient = React.useContext(getQueryClientContext(React.useContext(QueryClientSharingContext)));\n\n if (!queryClient) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one');\n }\n\n return queryClient;\n};\nexport var QueryClientProvider = function QueryClientProvider(_ref) {\n var client = _ref.client,\n _ref$contextSharing = _ref.contextSharing,\n contextSharing = _ref$contextSharing === void 0 ? false : _ref$contextSharing,\n children = _ref.children;\n React.useEffect(function () {\n client.mount();\n return function () {\n client.unmount();\n };\n }, [client]);\n var Context = getQueryClientContext(contextSharing);\n return /*#__PURE__*/React.createElement(QueryClientSharingContext.Provider, {\n value: contextSharing\n }, /*#__PURE__*/React.createElement(Context.Provider, {\n value: client\n }, children));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { getDefaultState } from './mutation';\nimport { notifyManager } from './notifyManager';\nimport { Subscribable } from './subscribable';\n// CLASS\nexport var MutationObserver = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(MutationObserver, _Subscribable);\n\n function MutationObserver(client, options) {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n _this.client = client;\n\n _this.setOptions(options);\n\n _this.bindMethods();\n\n _this.updateResult();\n\n return _this;\n }\n\n var _proto = MutationObserver.prototype;\n\n _proto.bindMethods = function bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n };\n\n _proto.setOptions = function setOptions(options) {\n this.options = this.client.defaultMutationOptions(options);\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.listeners.length) {\n var _this$currentMutation;\n\n (_this$currentMutation = this.currentMutation) == null ? void 0 : _this$currentMutation.removeObserver(this);\n }\n };\n\n _proto.onMutationUpdate = function onMutationUpdate(action) {\n this.updateResult(); // Determine which callbacks to trigger\n\n var notifyOptions = {\n listeners: true\n };\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = true;\n } else if (action.type === 'error') {\n notifyOptions.onError = true;\n }\n\n this.notify(notifyOptions);\n };\n\n _proto.getCurrentResult = function getCurrentResult() {\n return this.currentResult;\n };\n\n _proto.reset = function reset() {\n this.currentMutation = undefined;\n this.updateResult();\n this.notify({\n listeners: true\n });\n };\n\n _proto.mutate = function mutate(variables, options) {\n this.mutateOptions = options;\n\n if (this.currentMutation) {\n this.currentMutation.removeObserver(this);\n }\n\n this.currentMutation = this.client.getMutationCache().build(this.client, _extends({}, this.options, {\n variables: typeof variables !== 'undefined' ? variables : this.options.variables\n }));\n this.currentMutation.addObserver(this);\n return this.currentMutation.execute();\n };\n\n _proto.updateResult = function updateResult() {\n var state = this.currentMutation ? this.currentMutation.state : getDefaultState();\n\n var result = _extends({}, state, {\n isLoading: state.status === 'loading',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset\n });\n\n this.currentResult = result;\n };\n\n _proto.notify = function notify(options) {\n var _this2 = this;\n\n notifyManager.batch(function () {\n // First trigger the mutate callbacks\n if (_this2.mutateOptions) {\n if (options.onSuccess) {\n _this2.mutateOptions.onSuccess == null ? void 0 : _this2.mutateOptions.onSuccess(_this2.currentResult.data, _this2.currentResult.variables, _this2.currentResult.context);\n _this2.mutateOptions.onSettled == null ? void 0 : _this2.mutateOptions.onSettled(_this2.currentResult.data, null, _this2.currentResult.variables, _this2.currentResult.context);\n } else if (options.onError) {\n _this2.mutateOptions.onError == null ? void 0 : _this2.mutateOptions.onError(_this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context);\n _this2.mutateOptions.onSettled == null ? void 0 : _this2.mutateOptions.onSettled(undefined, _this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context);\n }\n } // Then trigger the listeners\n\n\n if (options.listeners) {\n _this2.listeners.forEach(function (listener) {\n listener(_this2.currentResult);\n });\n }\n });\n };\n\n return MutationObserver;\n}(Subscribable);","export function shouldThrowError(suspense, _useErrorBoundary, params) {\n // Allow useErrorBoundary function to override throwing behavior on a per-error basis\n if (typeof _useErrorBoundary === 'function') {\n return _useErrorBoundary.apply(void 0, params);\n } // Allow useErrorBoundary to override suspense's throwing behavior\n\n\n if (typeof _useErrorBoundary === 'boolean') return _useErrorBoundary; // If suspense is enabled default to throwing errors\n\n return !!suspense;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { notifyManager } from '../core/notifyManager';\nimport { noop, parseMutationArgs } from '../core/utils';\nimport { MutationObserver } from '../core/mutationObserver';\nimport { useQueryClient } from './QueryClientProvider';\nimport { shouldThrowError } from './utils'; // HOOK\n\nexport function useMutation(arg1, arg2, arg3) {\n var mountedRef = React.useRef(false);\n\n var _React$useState = React.useState(0),\n forceUpdate = _React$useState[1];\n\n var options = parseMutationArgs(arg1, arg2, arg3);\n var queryClient = useQueryClient();\n var obsRef = React.useRef();\n\n if (!obsRef.current) {\n obsRef.current = new MutationObserver(queryClient, options);\n } else {\n obsRef.current.setOptions(options);\n }\n\n var currentResult = obsRef.current.getCurrentResult();\n React.useEffect(function () {\n mountedRef.current = true;\n var unsubscribe = obsRef.current.subscribe(notifyManager.batchCalls(function () {\n if (mountedRef.current) {\n forceUpdate(function (x) {\n return x + 1;\n });\n }\n }));\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, []);\n var mutate = React.useCallback(function (variables, mutateOptions) {\n obsRef.current.mutate(variables, mutateOptions).catch(noop);\n }, []);\n\n if (currentResult.error && shouldThrowError(undefined, obsRef.current.options.useErrorBoundary, [currentResult.error])) {\n throw currentResult.error;\n }\n\n return _extends({}, currentResult, {\n mutate: mutate,\n mutateAsync: currentResult.mutate\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { isServer, isValidTimeout, noop, replaceEqualDeep, shallowEqualObjects, timeUntilStale } from './utils';\nimport { notifyManager } from './notifyManager';\nimport { focusManager } from './focusManager';\nimport { Subscribable } from './subscribable';\nimport { getLogger } from './logger';\nimport { isCancelledError } from './retryer';\nexport var QueryObserver = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(QueryObserver, _Subscribable);\n\n function QueryObserver(client, options) {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n _this.client = client;\n _this.options = options;\n _this.trackedProps = [];\n _this.selectError = null;\n\n _this.bindMethods();\n\n _this.setOptions(options);\n\n return _this;\n }\n\n var _proto = QueryObserver.prototype;\n\n _proto.bindMethods = function bindMethods() {\n this.remove = this.remove.bind(this);\n this.refetch = this.refetch.bind(this);\n };\n\n _proto.onSubscribe = function onSubscribe() {\n if (this.listeners.length === 1) {\n this.currentQuery.addObserver(this);\n\n if (shouldFetchOnMount(this.currentQuery, this.options)) {\n this.executeFetch();\n }\n\n this.updateTimers();\n }\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.listeners.length) {\n this.destroy();\n }\n };\n\n _proto.shouldFetchOnReconnect = function shouldFetchOnReconnect() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnReconnect);\n };\n\n _proto.shouldFetchOnWindowFocus = function shouldFetchOnWindowFocus() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnWindowFocus);\n };\n\n _proto.destroy = function destroy() {\n this.listeners = [];\n this.clearTimers();\n this.currentQuery.removeObserver(this);\n };\n\n _proto.setOptions = function setOptions(options, notifyOptions) {\n var prevOptions = this.options;\n var prevQuery = this.currentQuery;\n this.options = this.client.defaultQueryObserverOptions(options);\n\n if (typeof this.options.enabled !== 'undefined' && typeof this.options.enabled !== 'boolean') {\n throw new Error('Expected enabled to be a boolean');\n } // Keep previous query key if the user does not supply one\n\n\n if (!this.options.queryKey) {\n this.options.queryKey = prevOptions.queryKey;\n }\n\n this.updateQuery();\n var mounted = this.hasListeners(); // Fetch if there are subscribers\n\n if (mounted && shouldFetchOptionally(this.currentQuery, prevQuery, this.options, prevOptions)) {\n this.executeFetch();\n } // Update result\n\n\n this.updateResult(notifyOptions); // Update stale interval if needed\n\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) {\n this.updateStaleTimeout();\n }\n\n var nextRefetchInterval = this.computeRefetchInterval(); // Update refetch interval if needed\n\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.currentRefetchInterval)) {\n this.updateRefetchInterval(nextRefetchInterval);\n }\n };\n\n _proto.getOptimisticResult = function getOptimisticResult(options) {\n var defaultedOptions = this.client.defaultQueryObserverOptions(options);\n var query = this.client.getQueryCache().build(this.client, defaultedOptions);\n return this.createResult(query, defaultedOptions);\n };\n\n _proto.getCurrentResult = function getCurrentResult() {\n return this.currentResult;\n };\n\n _proto.trackResult = function trackResult(result, defaultedOptions) {\n var _this2 = this;\n\n var trackedResult = {};\n\n var trackProp = function trackProp(key) {\n if (!_this2.trackedProps.includes(key)) {\n _this2.trackedProps.push(key);\n }\n };\n\n Object.keys(result).forEach(function (key) {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: function get() {\n trackProp(key);\n return result[key];\n }\n });\n });\n\n if (defaultedOptions.useErrorBoundary || defaultedOptions.suspense) {\n trackProp('error');\n }\n\n return trackedResult;\n };\n\n _proto.getNextResult = function getNextResult(options) {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n var unsubscribe = _this3.subscribe(function (result) {\n if (!result.isFetching) {\n unsubscribe();\n\n if (result.isError && (options == null ? void 0 : options.throwOnError)) {\n reject(result.error);\n } else {\n resolve(result);\n }\n }\n });\n });\n };\n\n _proto.getCurrentQuery = function getCurrentQuery() {\n return this.currentQuery;\n };\n\n _proto.remove = function remove() {\n this.client.getQueryCache().remove(this.currentQuery);\n };\n\n _proto.refetch = function refetch(options) {\n return this.fetch(_extends({}, options, {\n meta: {\n refetchPage: options == null ? void 0 : options.refetchPage\n }\n }));\n };\n\n _proto.fetchOptimistic = function fetchOptimistic(options) {\n var _this4 = this;\n\n var defaultedOptions = this.client.defaultQueryObserverOptions(options);\n var query = this.client.getQueryCache().build(this.client, defaultedOptions);\n return query.fetch().then(function () {\n return _this4.createResult(query, defaultedOptions);\n });\n };\n\n _proto.fetch = function fetch(fetchOptions) {\n var _this5 = this;\n\n return this.executeFetch(fetchOptions).then(function () {\n _this5.updateResult();\n\n return _this5.currentResult;\n });\n };\n\n _proto.executeFetch = function executeFetch(fetchOptions) {\n // Make sure we reference the latest query as the current one might have been removed\n this.updateQuery(); // Fetch\n\n var promise = this.currentQuery.fetch(this.options, fetchOptions);\n\n if (!(fetchOptions == null ? void 0 : fetchOptions.throwOnError)) {\n promise = promise.catch(noop);\n }\n\n return promise;\n };\n\n _proto.updateStaleTimeout = function updateStaleTimeout() {\n var _this6 = this;\n\n this.clearStaleTimeout();\n\n if (isServer || this.currentResult.isStale || !isValidTimeout(this.options.staleTime)) {\n return;\n }\n\n var time = timeUntilStale(this.currentResult.dataUpdatedAt, this.options.staleTime); // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n\n var timeout = time + 1;\n this.staleTimeoutId = setTimeout(function () {\n if (!_this6.currentResult.isStale) {\n _this6.updateResult();\n }\n }, timeout);\n };\n\n _proto.computeRefetchInterval = function computeRefetchInterval() {\n var _this$options$refetch;\n\n return typeof this.options.refetchInterval === 'function' ? this.options.refetchInterval(this.currentResult.data, this.currentQuery) : (_this$options$refetch = this.options.refetchInterval) != null ? _this$options$refetch : false;\n };\n\n _proto.updateRefetchInterval = function updateRefetchInterval(nextInterval) {\n var _this7 = this;\n\n this.clearRefetchInterval();\n this.currentRefetchInterval = nextInterval;\n\n if (isServer || this.options.enabled === false || !isValidTimeout(this.currentRefetchInterval) || this.currentRefetchInterval === 0) {\n return;\n }\n\n this.refetchIntervalId = setInterval(function () {\n if (_this7.options.refetchIntervalInBackground || focusManager.isFocused()) {\n _this7.executeFetch();\n }\n }, this.currentRefetchInterval);\n };\n\n _proto.updateTimers = function updateTimers() {\n this.updateStaleTimeout();\n this.updateRefetchInterval(this.computeRefetchInterval());\n };\n\n _proto.clearTimers = function clearTimers() {\n this.clearStaleTimeout();\n this.clearRefetchInterval();\n };\n\n _proto.clearStaleTimeout = function clearStaleTimeout() {\n if (this.staleTimeoutId) {\n clearTimeout(this.staleTimeoutId);\n this.staleTimeoutId = undefined;\n }\n };\n\n _proto.clearRefetchInterval = function clearRefetchInterval() {\n if (this.refetchIntervalId) {\n clearInterval(this.refetchIntervalId);\n this.refetchIntervalId = undefined;\n }\n };\n\n _proto.createResult = function createResult(query, options) {\n var prevQuery = this.currentQuery;\n var prevOptions = this.options;\n var prevResult = this.currentResult;\n var prevResultState = this.currentResultState;\n var prevResultOptions = this.currentResultOptions;\n var queryChange = query !== prevQuery;\n var queryInitialState = queryChange ? query.state : this.currentQueryInitialState;\n var prevQueryResult = queryChange ? this.currentResult : this.previousQueryResult;\n var state = query.state;\n var dataUpdatedAt = state.dataUpdatedAt,\n error = state.error,\n errorUpdatedAt = state.errorUpdatedAt,\n isFetching = state.isFetching,\n status = state.status;\n var isPreviousData = false;\n var isPlaceholderData = false;\n var data; // Optimistically set result in fetching state if needed\n\n if (options.optimisticResults) {\n var mounted = this.hasListeners();\n var fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n var fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n\n if (fetchOnMount || fetchOptionally) {\n isFetching = true;\n\n if (!dataUpdatedAt) {\n status = 'loading';\n }\n }\n } // Keep previous data if needed\n\n\n if (options.keepPreviousData && !state.dataUpdateCount && (prevQueryResult == null ? void 0 : prevQueryResult.isSuccess) && status !== 'error') {\n data = prevQueryResult.data;\n dataUpdatedAt = prevQueryResult.dataUpdatedAt;\n status = prevQueryResult.status;\n isPreviousData = true;\n } // Select data if needed\n else if (options.select && typeof state.data !== 'undefined') {\n // Memoize select result\n if (prevResult && state.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === this.selectFn) {\n data = this.selectResult;\n } else {\n try {\n this.selectFn = options.select;\n data = options.select(state.data);\n\n if (options.structuralSharing !== false) {\n data = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, data);\n }\n\n this.selectResult = data;\n this.selectError = null;\n } catch (selectError) {\n getLogger().error(selectError);\n this.selectError = selectError;\n }\n }\n } // Use query data\n else {\n data = state.data;\n } // Show placeholder data if needed\n\n\n if (typeof options.placeholderData !== 'undefined' && typeof data === 'undefined' && (status === 'loading' || status === 'idle')) {\n var placeholderData; // Memoize placeholder data\n\n if ((prevResult == null ? void 0 : prevResult.isPlaceholderData) && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) {\n placeholderData = prevResult.data;\n } else {\n placeholderData = typeof options.placeholderData === 'function' ? options.placeholderData() : options.placeholderData;\n\n if (options.select && typeof placeholderData !== 'undefined') {\n try {\n placeholderData = options.select(placeholderData);\n\n if (options.structuralSharing !== false) {\n placeholderData = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, placeholderData);\n }\n\n this.selectError = null;\n } catch (selectError) {\n getLogger().error(selectError);\n this.selectError = selectError;\n }\n }\n }\n\n if (typeof placeholderData !== 'undefined') {\n status = 'success';\n data = placeholderData;\n isPlaceholderData = true;\n }\n }\n\n if (this.selectError) {\n error = this.selectError;\n data = this.selectResult;\n errorUpdatedAt = Date.now();\n status = 'error';\n }\n\n var result = {\n status: status,\n isLoading: status === 'loading',\n isSuccess: status === 'success',\n isError: status === 'error',\n isIdle: status === 'idle',\n data: data,\n dataUpdatedAt: dataUpdatedAt,\n error: error,\n errorUpdatedAt: errorUpdatedAt,\n failureCount: state.fetchFailureCount,\n errorUpdateCount: state.errorUpdateCount,\n isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching: isFetching,\n isRefetching: isFetching && status !== 'loading',\n isLoadingError: status === 'error' && state.dataUpdatedAt === 0,\n isPlaceholderData: isPlaceholderData,\n isPreviousData: isPreviousData,\n isRefetchError: status === 'error' && state.dataUpdatedAt !== 0,\n isStale: isStale(query, options),\n refetch: this.refetch,\n remove: this.remove\n };\n return result;\n };\n\n _proto.shouldNotifyListeners = function shouldNotifyListeners(result, prevResult) {\n if (!prevResult) {\n return true;\n }\n\n var _this$options = this.options,\n notifyOnChangeProps = _this$options.notifyOnChangeProps,\n notifyOnChangePropsExclusions = _this$options.notifyOnChangePropsExclusions;\n\n if (!notifyOnChangeProps && !notifyOnChangePropsExclusions) {\n return true;\n }\n\n if (notifyOnChangeProps === 'tracked' && !this.trackedProps.length) {\n return true;\n }\n\n var includedProps = notifyOnChangeProps === 'tracked' ? this.trackedProps : notifyOnChangeProps;\n return Object.keys(result).some(function (key) {\n var typedKey = key;\n var changed = result[typedKey] !== prevResult[typedKey];\n var isIncluded = includedProps == null ? void 0 : includedProps.some(function (x) {\n return x === key;\n });\n var isExcluded = notifyOnChangePropsExclusions == null ? void 0 : notifyOnChangePropsExclusions.some(function (x) {\n return x === key;\n });\n return changed && !isExcluded && (!includedProps || isIncluded);\n });\n };\n\n _proto.updateResult = function updateResult(notifyOptions) {\n var prevResult = this.currentResult;\n this.currentResult = this.createResult(this.currentQuery, this.options);\n this.currentResultState = this.currentQuery.state;\n this.currentResultOptions = this.options; // Only notify if something has changed\n\n if (shallowEqualObjects(this.currentResult, prevResult)) {\n return;\n } // Determine which callbacks to trigger\n\n\n var defaultNotifyOptions = {\n cache: true\n };\n\n if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && this.shouldNotifyListeners(this.currentResult, prevResult)) {\n defaultNotifyOptions.listeners = true;\n }\n\n this.notify(_extends({}, defaultNotifyOptions, notifyOptions));\n };\n\n _proto.updateQuery = function updateQuery() {\n var query = this.client.getQueryCache().build(this.client, this.options);\n\n if (query === this.currentQuery) {\n return;\n }\n\n var prevQuery = this.currentQuery;\n this.currentQuery = query;\n this.currentQueryInitialState = query.state;\n this.previousQueryResult = this.currentResult;\n\n if (this.hasListeners()) {\n prevQuery == null ? void 0 : prevQuery.removeObserver(this);\n query.addObserver(this);\n }\n };\n\n _proto.onQueryUpdate = function onQueryUpdate(action) {\n var notifyOptions = {};\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = true;\n } else if (action.type === 'error' && !isCancelledError(action.error)) {\n notifyOptions.onError = true;\n }\n\n this.updateResult(notifyOptions);\n\n if (this.hasListeners()) {\n this.updateTimers();\n }\n };\n\n _proto.notify = function notify(notifyOptions) {\n var _this8 = this;\n\n notifyManager.batch(function () {\n // First trigger the configuration callbacks\n if (notifyOptions.onSuccess) {\n _this8.options.onSuccess == null ? void 0 : _this8.options.onSuccess(_this8.currentResult.data);\n _this8.options.onSettled == null ? void 0 : _this8.options.onSettled(_this8.currentResult.data, null);\n } else if (notifyOptions.onError) {\n _this8.options.onError == null ? void 0 : _this8.options.onError(_this8.currentResult.error);\n _this8.options.onSettled == null ? void 0 : _this8.options.onSettled(undefined, _this8.currentResult.error);\n } // Then trigger the listeners\n\n\n if (notifyOptions.listeners) {\n _this8.listeners.forEach(function (listener) {\n listener(_this8.currentResult);\n });\n } // Then the cache listeners\n\n\n if (notifyOptions.cache) {\n _this8.client.getQueryCache().notify({\n query: _this8.currentQuery,\n type: 'observerResultsUpdated'\n });\n }\n });\n };\n\n return QueryObserver;\n}(Subscribable);\n\nfunction shouldLoadOnMount(query, options) {\n return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === 'error' && options.retryOnMount === false);\n}\n\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\n\nfunction shouldFetchOn(query, options, field) {\n if (options.enabled !== false) {\n var value = typeof field === 'function' ? field(query) : field;\n return value === 'always' || value !== false && isStale(query, options);\n }\n\n return false;\n}\n\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== 'error') && isStale(query, options);\n}\n\nfunction isStale(query, options) {\n return query.isStaleByTime(options.staleTime);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { QueryObserver } from './queryObserver';\nimport { hasNextPage, hasPreviousPage, infiniteQueryBehavior } from './infiniteQueryBehavior';\nexport var InfiniteQueryObserver = /*#__PURE__*/function (_QueryObserver) {\n _inheritsLoose(InfiniteQueryObserver, _QueryObserver);\n\n // Type override\n // Type override\n // Type override\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n function InfiniteQueryObserver(client, options) {\n return _QueryObserver.call(this, client, options) || this;\n }\n\n var _proto = InfiniteQueryObserver.prototype;\n\n _proto.bindMethods = function bindMethods() {\n _QueryObserver.prototype.bindMethods.call(this);\n\n this.fetchNextPage = this.fetchNextPage.bind(this);\n this.fetchPreviousPage = this.fetchPreviousPage.bind(this);\n };\n\n _proto.setOptions = function setOptions(options, notifyOptions) {\n _QueryObserver.prototype.setOptions.call(this, _extends({}, options, {\n behavior: infiniteQueryBehavior()\n }), notifyOptions);\n };\n\n _proto.getOptimisticResult = function getOptimisticResult(options) {\n options.behavior = infiniteQueryBehavior();\n return _QueryObserver.prototype.getOptimisticResult.call(this, options);\n };\n\n _proto.fetchNextPage = function fetchNextPage(options) {\n var _options$cancelRefetc;\n\n return this.fetch({\n // TODO consider removing `?? true` in future breaking change, to be consistent with `refetch` API (see https://github.com/tannerlinsley/react-query/issues/2617)\n cancelRefetch: (_options$cancelRefetc = options == null ? void 0 : options.cancelRefetch) != null ? _options$cancelRefetc : true,\n throwOnError: options == null ? void 0 : options.throwOnError,\n meta: {\n fetchMore: {\n direction: 'forward',\n pageParam: options == null ? void 0 : options.pageParam\n }\n }\n });\n };\n\n _proto.fetchPreviousPage = function fetchPreviousPage(options) {\n var _options$cancelRefetc2;\n\n return this.fetch({\n // TODO consider removing `?? true` in future breaking change, to be consistent with `refetch` API (see https://github.com/tannerlinsley/react-query/issues/2617)\n cancelRefetch: (_options$cancelRefetc2 = options == null ? void 0 : options.cancelRefetch) != null ? _options$cancelRefetc2 : true,\n throwOnError: options == null ? void 0 : options.throwOnError,\n meta: {\n fetchMore: {\n direction: 'backward',\n pageParam: options == null ? void 0 : options.pageParam\n }\n }\n });\n };\n\n _proto.createResult = function createResult(query, options) {\n var _state$data, _state$data2, _state$fetchMeta, _state$fetchMeta$fetc, _state$fetchMeta2, _state$fetchMeta2$fet;\n\n var state = query.state;\n\n var result = _QueryObserver.prototype.createResult.call(this, query, options);\n\n return _extends({}, result, {\n fetchNextPage: this.fetchNextPage,\n fetchPreviousPage: this.fetchPreviousPage,\n hasNextPage: hasNextPage(options, (_state$data = state.data) == null ? void 0 : _state$data.pages),\n hasPreviousPage: hasPreviousPage(options, (_state$data2 = state.data) == null ? void 0 : _state$data2.pages),\n isFetchingNextPage: state.isFetching && ((_state$fetchMeta = state.fetchMeta) == null ? void 0 : (_state$fetchMeta$fetc = _state$fetchMeta.fetchMore) == null ? void 0 : _state$fetchMeta$fetc.direction) === 'forward',\n isFetchingPreviousPage: state.isFetching && ((_state$fetchMeta2 = state.fetchMeta) == null ? void 0 : (_state$fetchMeta2$fet = _state$fetchMeta2.fetchMore) == null ? void 0 : _state$fetchMeta2$fet.direction) === 'backward'\n });\n };\n\n return InfiniteQueryObserver;\n}(QueryObserver);","import React from 'react'; // CONTEXT\n\nfunction createValue() {\n var _isReset = false;\n return {\n clearReset: function clearReset() {\n _isReset = false;\n },\n reset: function reset() {\n _isReset = true;\n },\n isReset: function isReset() {\n return _isReset;\n }\n };\n}\n\nvar QueryErrorResetBoundaryContext = /*#__PURE__*/React.createContext(createValue()); // HOOK\n\nexport var useQueryErrorResetBoundary = function useQueryErrorResetBoundary() {\n return React.useContext(QueryErrorResetBoundaryContext);\n}; // COMPONENT\n\nexport var QueryErrorResetBoundary = function QueryErrorResetBoundary(_ref) {\n var children = _ref.children;\n var value = React.useMemo(function () {\n return createValue();\n }, []);\n return /*#__PURE__*/React.createElement(QueryErrorResetBoundaryContext.Provider, {\n value: value\n }, typeof children === 'function' ? children(value) : children);\n};","import React from 'react';\nimport { notifyManager } from '../core/notifyManager';\nimport { useQueryErrorResetBoundary } from './QueryErrorResetBoundary';\nimport { useQueryClient } from './QueryClientProvider';\nimport { shouldThrowError } from './utils';\nexport function useBaseQuery(options, Observer) {\n var mountedRef = React.useRef(false);\n\n var _React$useState = React.useState(0),\n forceUpdate = _React$useState[1];\n\n var queryClient = useQueryClient();\n var errorResetBoundary = useQueryErrorResetBoundary();\n var defaultedOptions = queryClient.defaultQueryObserverOptions(options); // Make sure results are optimistically set in fetching state before subscribing or updating options\n\n defaultedOptions.optimisticResults = true; // Include callbacks in batch renders\n\n if (defaultedOptions.onError) {\n defaultedOptions.onError = notifyManager.batchCalls(defaultedOptions.onError);\n }\n\n if (defaultedOptions.onSuccess) {\n defaultedOptions.onSuccess = notifyManager.batchCalls(defaultedOptions.onSuccess);\n }\n\n if (defaultedOptions.onSettled) {\n defaultedOptions.onSettled = notifyManager.batchCalls(defaultedOptions.onSettled);\n }\n\n if (defaultedOptions.suspense) {\n // Always set stale time when using suspense to prevent\n // fetching again when directly mounting after suspending\n if (typeof defaultedOptions.staleTime !== 'number') {\n defaultedOptions.staleTime = 1000;\n } // Set cache time to 1 if the option has been set to 0\n // when using suspense to prevent infinite loop of fetches\n\n\n if (defaultedOptions.cacheTime === 0) {\n defaultedOptions.cacheTime = 1;\n }\n }\n\n if (defaultedOptions.suspense || defaultedOptions.useErrorBoundary) {\n // Prevent retrying failed query if the error boundary has not been reset yet\n if (!errorResetBoundary.isReset()) {\n defaultedOptions.retryOnMount = false;\n }\n }\n\n var _React$useState2 = React.useState(function () {\n return new Observer(queryClient, defaultedOptions);\n }),\n observer = _React$useState2[0];\n\n var result = observer.getOptimisticResult(defaultedOptions);\n React.useEffect(function () {\n mountedRef.current = true;\n errorResetBoundary.clearReset();\n var unsubscribe = observer.subscribe(notifyManager.batchCalls(function () {\n if (mountedRef.current) {\n forceUpdate(function (x) {\n return x + 1;\n });\n }\n })); // Update result to make sure we did not miss any query updates\n // between creating the observer and subscribing to it.\n\n observer.updateResult();\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, [errorResetBoundary, observer]);\n React.useEffect(function () {\n // Do not notify on updates because of changes in the options because\n // these changes should already be reflected in the optimistic result.\n observer.setOptions(defaultedOptions, {\n listeners: false\n });\n }, [defaultedOptions, observer]); // Handle suspense\n\n if (defaultedOptions.suspense && result.isLoading) {\n throw observer.fetchOptimistic(defaultedOptions).then(function (_ref) {\n var data = _ref.data;\n defaultedOptions.onSuccess == null ? void 0 : defaultedOptions.onSuccess(data);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(data, null);\n }).catch(function (error) {\n errorResetBoundary.clearReset();\n defaultedOptions.onError == null ? void 0 : defaultedOptions.onError(error);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(undefined, error);\n });\n } // Handle error boundary\n\n\n if (result.isError && !errorResetBoundary.isReset() && !result.isFetching && shouldThrowError(defaultedOptions.suspense, defaultedOptions.useErrorBoundary, [result.error, observer.getCurrentQuery()])) {\n throw result.error;\n } // Handle result property usage tracking\n\n\n if (defaultedOptions.notifyOnChangeProps === 'tracked') {\n result = observer.trackResult(result, defaultedOptions);\n }\n\n return result;\n}","import { InfiniteQueryObserver } from '../core/infiniteQueryObserver';\nimport { parseQueryArgs } from '../core/utils';\nimport { useBaseQuery } from './useBaseQuery'; // HOOK\n\nexport function useInfiniteQuery(arg1, arg2, arg3) {\n var options = parseQueryArgs(arg1, arg2, arg3);\n return useBaseQuery(options, InfiniteQueryObserver);\n}","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","export default {\n disabled: false\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import React from 'react';\nexport default React.createContext(null);","import * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n // Can we get/set cookies on document.cookie?\r\n return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n document.cookie.split(';').forEach(function (c) {\r\n document.cookie = c\r\n .replace(/^ +/, '')\r\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n if (typeof cookies === 'string') {\r\n return cookie.parse(cookies, options);\r\n }\r\n else if (typeof cookies === 'object' && cookies !== null) {\r\n return cookies;\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n if (typeof doNotParse === 'undefined') {\r\n // We guess if the cookie start with { or [, it has been serialized\r\n doNotParse =\r\n !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n }\r\n return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n if (options === void 0) { options = {}; }\r\n var cleanValue = cleanupCookieValue(value);\r\n if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n try {\r\n return JSON.parse(cleanValue);\r\n }\r\n catch (e) {\r\n // At least we tried\r\n }\r\n }\r\n // Ignore clean value if we failed the deserialization\r\n // It is not relevant anymore to trim those values\r\n return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n // express prepend j: before serializing a cookie\r\n if (value && value[0] === 'j' && value[1] === ':') {\r\n return value.substr(2);\r\n }\r\n return value;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n function Cookies(cookies, options) {\r\n var _this = this;\r\n this.changeListeners = [];\r\n this.HAS_DOCUMENT_COOKIE = false;\r\n this.cookies = parseCookies(cookies, options);\r\n new Promise(function () {\r\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n }).catch(function () { });\r\n }\r\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n if (!this.HAS_DOCUMENT_COOKIE) {\r\n return;\r\n }\r\n this.cookies = cookie.parse(document.cookie, parseOptions);\r\n };\r\n Cookies.prototype._emitChange = function (params) {\r\n for (var i = 0; i < this.changeListeners.length; ++i) {\r\n this.changeListeners[i](params);\r\n }\r\n };\r\n Cookies.prototype.get = function (name, options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n return readCookie(this.cookies[name], options);\r\n };\r\n Cookies.prototype.getAll = function (options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n var result = {};\r\n for (var name_1 in this.cookies) {\r\n result[name_1] = readCookie(this.cookies[name_1], options);\r\n }\r\n return result;\r\n };\r\n Cookies.prototype.set = function (name, value, options) {\r\n var _a;\r\n if (typeof value === 'object') {\r\n value = JSON.stringify(value);\r\n }\r\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, value, options);\r\n }\r\n this._emitChange({ name: name, value: value, options: options });\r\n };\r\n Cookies.prototype.remove = function (name, options) {\r\n var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n this.cookies = __assign({}, this.cookies);\r\n delete this.cookies[name];\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, '', finalOptions);\r\n }\r\n this._emitChange({ name: name, value: undefined, options: options });\r\n };\r\n Cookies.prototype.addChangeListener = function (callback) {\r\n this.changeListeners.push(callback);\r\n };\r\n Cookies.prototype.removeChangeListener = function (callback) {\r\n var idx = this.changeListeners.indexOf(callback);\r\n if (idx >= 0) {\r\n this.changeListeners.splice(idx, 1);\r\n }\r\n };\r\n return Cookies;\r\n}());\r\nexport default Cookies;\r\n","import Cookies from './Cookies';\r\nexport default Cookies;\r\n","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+SWNvbnMvTWFydGluaTwvdGl0bGU+CiAgICA8ZyBpZD0iSWNvbnMvTWFydGluaSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPHBhdGggZD0iTTExLjc4MSwyMyBDNS43ODEsMjMgNS43ODEsMjEuNTk5IDUuNzgxLDIxIEM1Ljc4MSwxOS44MjMgNy4xNjIsMTkuMjcxIDguOTEsMTguNTcxIEM5LjQ5LDE4LjMzOSAxMC40MTQsMTcuOTcgMTAuNzgxLDE3LjcyNCBMMTAuNzgxLDEzLjM1MSBMMywzLjYyNSBMMy41MzksMi4wMyBDMy43MDcsMS45ODggNy43MDUsMSAxMS43ODEsMSBDMTUuODU3LDEgMTkuODU1LDEuOTg4IDIwLjAyMywyLjAzIEwyMC41NjIsMy42MjUgTDE1LjI4OCwxMC4yMTggTDEzLjcyNSw4Ljk2OSBMMTcuOTg3LDMuNjQyIEMxNi40OTQsMy4zNjEgMTQuMTI0LDMgMTEuNzgxLDMgQzkuNDMzLDMgNy4wNjYsMy4zNiA1LjU3NSwzLjY0MiBMMTIuNTYyLDEyLjM3NSBMMTIuNzgxLDEzIEwxMi43ODEsMTggQzEyLjc4MSwxOS4xNzcgMTEuNCwxOS43MjkgOS42NTIsMjAuNDI5IEM5LjM5LDIwLjUzMyA5LjA1OCwyMC42NjYgOC43MzksMjAuODAzIEM5LjU2NCwyMC45MiAxMC42OTIsMjEgMTEuNzgxLDIxIEMxMy42MzUsMjEgMTUuNjA0LDIwLjc3MSAxNS45OTMsMjAuNTEgQzE1LjkyNCwyMC41NTcgMTUuNzgxLDIwLjczNyAxNS43ODEsMjEgTDE3Ljc4MSwyMSBDMTcuNzgxLDIxLjU5OSAxNy43ODEsMjMgMTEuNzgxLDIzIiBpZD0iRmlsbC0xIiBmaWxsPSJ3aGl0ZSI+PC9wYXRoPgogICAgPC9nPgo8L3N2Zz4K\"","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+SWNvbnMvTWFydGluaTwvdGl0bGU+CiAgICA8ZyBpZD0iSWNvbnMvTWFydGluaSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPHBhdGggZD0iTTExLjc4MSwyMyBDNS43ODEsMjMgNS43ODEsMjEuNTk5IDUuNzgxLDIxIEM1Ljc4MSwxOS44MjMgNy4xNjIsMTkuMjcxIDguOTEsMTguNTcxIEM5LjQ5LDE4LjMzOSAxMC40MTQsMTcuOTcgMTAuNzgxLDE3LjcyNCBMMTAuNzgxLDEzLjM1MSBMMywzLjYyNSBMMy41MzksMi4wMyBDMy43MDcsMS45ODggNy43MDUsMSAxMS43ODEsMSBDMTUuODU3LDEgMTkuODU1LDEuOTg4IDIwLjAyMywyLjAzIEwyMC41NjIsMy42MjUgTDE1LjI4OCwxMC4yMTggTDEzLjcyNSw4Ljk2OSBMMTcuOTg3LDMuNjQyIEMxNi40OTQsMy4zNjEgMTQuMTI0LDMgMTEuNzgxLDMgQzkuNDMzLDMgNy4wNjYsMy4zNiA1LjU3NSwzLjY0MiBMMTIuNTYyLDEyLjM3NSBMMTIuNzgxLDEzIEwxMi43ODEsMTggQzEyLjc4MSwxOS4xNzcgMTEuNCwxOS43MjkgOS42NTIsMjAuNDI5IEM5LjM5LDIwLjUzMyA5LjA1OCwyMC42NjYgOC43MzksMjAuODAzIEM5LjU2NCwyMC45MiAxMC42OTIsMjEgMTEuNzgxLDIxIEMxMy42MzUsMjEgMTUuNjA0LDIwLjc3MSAxNS45OTMsMjAuNTEgQzE1LjkyNCwyMC41NTcgMTUuNzgxLDIwLjczNyAxNS43ODEsMjEgTDE3Ljc4MSwyMSBDMTcuNzgxLDIxLjU5OSAxNy43ODEsMjMgMTEuNzgxLDIzIiBpZD0iRmlsbC0xIiBmaWxsPSIjNDc0MDQwIj48L3BhdGg+CiAgICA8L2c+Cjwvc3ZnPg==\"","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+SWNvbnMvV2luZSBnbGFzczwvdGl0bGU+CiAgICA8ZyBpZD0iSWNvbnMvV2luZS1nbGFzcyIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPHBhdGggZD0iTTEyLjExMzI1NDYsMjQgQzcuNDczMjU0NjUsMjQgNy4xMTMyNTQ2NSwyMS43MDQgNy4xMTMyNTQ2NSwyMSBDNy4xMTMyNTQ2NSwyMC4zNTEgNy40MjAyNTQ2NSwxOC4zNDUgMTEuMTEzMjU0NiwxOC4wMzkgTDExLjExMzI1NDYsMTQuNTM3IEM4LjEwMDI1NDY1LDEyLjQzNiAzLjk2MTI1NDY1LDcuNDg3IDcuMTUwMjU0NjUsMS42NzMgQzcuNDE0MjU0NjUsMC41NjMgOS4wODAyNTQ2NSwwIDEyLjExMzI1NDYsMCBDMTMuMjA4MjU0NiwwIDE2LjYxNDI1NDYsMC4xMjUgMTcuMDY0MjU0NiwxLjY1MSBDMTkuMTA1MjU0Niw1LjM1NSAxOC40NDgyNTQ2LDkuMjY4IDE1LjIwNTI1NDYsMTIuNjg4IEwxMy43NTQyNTQ2LDExLjMxMyBDMTYuNDU3MjU0Niw4LjQ2MiAxNi45NTkyNTQ2LDUuNDk2IDE1LjI0NTI1NDYsMi40OTYgQzE1LjIzNzI1NDYsMi40ODMgMTUuMjMwMjU0NiwyLjQ3IDE1LjIyMzI1NDYsMi40NTcgQzE0Ljg0MTI1NDYsMi4yNzIgMTMuNzE2MjU0NiwyIDEyLjExMzI1NDYsMiBDMTAuMzg2MjU0NiwyIDkuMzc5MjU0NjUsMi4yMzQgOS4wMzUyNTQ2NSwyLjM4OCBDOS4wMTkyNTQ2NSwyLjQyNSA5LjAwMjI1NDY1LDIuNDYxIDguOTgxMjU0NjUsMi40OTYgQzUuNTEyMjU0NjUsOC41NjcgMTIuMzUxMjU0NiwxMi45NjggMTIuNjQ0MjU0NiwxMy4xNTMgQzEyLjkzNTI1NDYsMTMuMzM2IDEzLjExMzI1NDYsMTMuNjU2IDEzLjExMzI1NDYsMTQgTDEzLjExMzI1NDYsMTkgQzEzLjExMzI1NDYsMTkuNTUyIDEyLjY2NjI1NDYsMjAgMTIuMTEzMjU0NiwyMCBDMTAuMDUxMjU0NiwyMCA5LjExMzI1NDY1LDIwLjUxOSA5LjExMzI1NDY1LDIxIEM5LjExMzI1NDY1LDIxLjQ4MSAxMC4wNTEyNTQ2LDIyIDEyLjExMzI1NDYsMjIgQzE0LjE3NTI1NDYsMjIgMTUuMTEzMjU0NiwyMS40ODEgMTUuMTEzMjU0NiwyMSBMMTcuMTEzMjU0NiwyMSBDMTcuMTEzMjU0NiwyMS43MDQgMTYuNzUzMjU0NiwyNCAxMi4xMTMyNTQ2LDI0IEwxMi4xMTMyNTQ2LDI0IFoiIGlkPSJGaWxsLTEiIGZpbGw9IndoaXRlIj48L3BhdGg+CiAgICA8L2c+Cjwvc3ZnPgo=\"","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+SWNvbnMvV2luZSBnbGFzczwvdGl0bGU+CiAgICA8ZyBpZD0iSWNvbnMvV2luZS1nbGFzcyIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPHBhdGggZD0iTTEyLjExMzI1NDYsMjQgQzcuNDczMjU0NjUsMjQgNy4xMTMyNTQ2NSwyMS43MDQgNy4xMTMyNTQ2NSwyMSBDNy4xMTMyNTQ2NSwyMC4zNTEgNy40MjAyNTQ2NSwxOC4zNDUgMTEuMTEzMjU0NiwxOC4wMzkgTDExLjExMzI1NDYsMTQuNTM3IEM4LjEwMDI1NDY1LDEyLjQzNiAzLjk2MTI1NDY1LDcuNDg3IDcuMTUwMjU0NjUsMS42NzMgQzcuNDE0MjU0NjUsMC41NjMgOS4wODAyNTQ2NSwwIDEyLjExMzI1NDYsMCBDMTMuMjA4MjU0NiwwIDE2LjYxNDI1NDYsMC4xMjUgMTcuMDY0MjU0NiwxLjY1MSBDMTkuMTA1MjU0Niw1LjM1NSAxOC40NDgyNTQ2LDkuMjY4IDE1LjIwNTI1NDYsMTIuNjg4IEwxMy43NTQyNTQ2LDExLjMxMyBDMTYuNDU3MjU0Niw4LjQ2MiAxNi45NTkyNTQ2LDUuNDk2IDE1LjI0NTI1NDYsMi40OTYgQzE1LjIzNzI1NDYsMi40ODMgMTUuMjMwMjU0NiwyLjQ3IDE1LjIyMzI1NDYsMi40NTcgQzE0Ljg0MTI1NDYsMi4yNzIgMTMuNzE2MjU0NiwyIDEyLjExMzI1NDYsMiBDMTAuMzg2MjU0NiwyIDkuMzc5MjU0NjUsMi4yMzQgOS4wMzUyNTQ2NSwyLjM4OCBDOS4wMTkyNTQ2NSwyLjQyNSA5LjAwMjI1NDY1LDIuNDYxIDguOTgxMjU0NjUsMi40OTYgQzUuNTEyMjU0NjUsOC41NjcgMTIuMzUxMjU0NiwxMi45NjggMTIuNjQ0MjU0NiwxMy4xNTMgQzEyLjkzNTI1NDYsMTMuMzM2IDEzLjExMzI1NDYsMTMuNjU2IDEzLjExMzI1NDYsMTQgTDEzLjExMzI1NDYsMTkgQzEzLjExMzI1NDYsMTkuNTUyIDEyLjY2NjI1NDYsMjAgMTIuMTEzMjU0NiwyMCBDMTAuMDUxMjU0NiwyMCA5LjExMzI1NDY1LDIwLjUxOSA5LjExMzI1NDY1LDIxIEM5LjExMzI1NDY1LDIxLjQ4MSAxMC4wNTEyNTQ2LDIyIDEyLjExMzI1NDYsMjIgQzE0LjE3NTI1NDYsMjIgMTUuMTEzMjU0NiwyMS40ODEgMTUuMTEzMjU0NiwyMSBMMTcuMTEzMjU0NiwyMSBDMTcuMTEzMjU0NiwyMS43MDQgMTYuNzUzMjU0NiwyNCAxMi4xMTMyNTQ2LDI0IEwxMi4xMTMyNTQ2LDI0IFoiIGlkPSJGaWxsLTEiIGZpbGw9IiM0NzQwNDAiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+\"","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst PartytownSnippet = \"/* Partytown 0.5.4 - MIT builder.io */\\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,\\\"/\\\"==(a=(o.lib||\\\"/~partytown/\\\")+(o.debug?\\\"debug/\\\":\\\"\\\"))[0]&&(s=e.querySelectorAll('script[type=\\\"text/partytown\\\"]'),i!=t?i.dispatchEvent(new CustomEvent(\\\"pt1\\\",{detail:t})):(d=setTimeout(w,1e4),e.addEventListener(\\\"pt0\\\",f),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||\\\"partytown-sw.js\\\"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener(\\\"statechange\\\",(function(t){\\\"activated\\\"==t.target.state&&h()}))}),console.error):w())))}function h(t){c=e.createElement(t?\\\"script\\\":\\\"iframe\\\"),t||(c.setAttribute(\\\"style\\\",\\\"display:block;width:0;height:0;border:0;visibility:hidden\\\"),c.setAttribute(\\\"aria-hidden\\\",!0)),c.src=a+\\\"partytown-\\\"+(t?\\\"atomics.js?v=0.5.4\\\":\\\"sandbox-sw.html?\\\"+Date.now()),e.body.appendChild(c)}function w(t,n){for(f(),t=0;t<s.length;t++)(n=e.createElement(\\\"script\\\")).innerHTML=s[t].innerHTML,e.head.appendChild(n);c&&c.parentNode.removeChild(c)}function f(){clearTimeout(d)}o=t.partytown||{},i==t&&(o.forward||[]).map((function(e){p=t,e.split(\\\".\\\").map((function(e,n,i){p=p[i[n]]=n+1<i.length?\\\"push\\\"==i[n+1]?[]:p[i[n]]||{}:function(){(t._ptf=t._ptf||[]).push(i,arguments)}}))})),\\\"complete\\\"==e.readyState?u():(t.addEventListener(\\\"DOMContentLoaded\\\",u),t.addEventListener(\\\"load\\\",u))}(window,document,navigator,top,window.crossOriginIsolated);\";\n\nconst createSnippet = (config, snippetCode) => {\n const { forward = [], ...filteredConfig } = config || {};\n const configStr = JSON.stringify(filteredConfig, (k, v) => {\n if (typeof v === 'function') {\n v = String(v);\n if (v.startsWith(k + '(')) {\n v = 'function ' + v;\n }\n }\n return v;\n });\n return [\n `!(function(w,p,f,c){`,\n Object.keys(filteredConfig).length > 0\n ? `c=w[p]=Object.assign(w[p]||{},${configStr});`\n : `c=w[p]=w[p]||{};`,\n `c[f]=(c[f]||[])`,\n forward.length > 0 ? `.concat(${JSON.stringify(forward)})` : ``,\n `})(window,'partytown','forward');`,\n snippetCode,\n ].join('');\n};\n\n/**\n * The `type` attribute for Partytown scripts, which does two things:\n *\n * 1. Prevents the `<script>` from executing on the main thread.\n * 2. Is used as a selector so the Partytown library can find all scripts to execute in a web worker.\n *\n * @public\n */\nconst SCRIPT_TYPE = `text/partytown`;\n\n/**\n * Function that returns the Partytown snippet as a string, which can be\n * used as the innerHTML of the inlined Partytown script in the head.\n *\n * @public\n */\nconst partytownSnippet = (config) => createSnippet(config, PartytownSnippet);\n\nexports.SCRIPT_TYPE = SCRIPT_TYPE;\nexports.partytownSnippet = partytownSnippet;\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","var tr = Object.defineProperty;\nvar nr = (t, n, i) => n in t ? tr(t, n, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[n] = i;\nvar g = (t, n, i) => nr(t, typeof n != \"symbol\" ? n + \"\" : n, i);\nvar bt = { 0: 8203, 1: 8204, 2: 8205, 3: 8290, 4: 8291, 5: 8288, 6: 65279, 7: 8289, 8: 119155, 9: 119156, a: 119157, b: 119158, c: 119159, d: 119160, e: 119161, f: 119162 }, ze = { 0: 8203, 1: 8204, 2: 8205, 3: 65279 }, Tt = new Array(4).fill(String.fromCodePoint(ze[0])).join(\"\"), pt = \"\\0\";\nfunction rr(t) {\n let n = JSON.stringify(t);\n return `${Tt}${Array.from(n).map((i) => {\n let a = i.charCodeAt(0);\n if (a > 255) throw new Error(`Only ASCII edit info can be encoded. Error attempting to encode ${n} on character ${i} (${a})`);\n return Array.from(a.toString(4).padStart(4, \"0\")).map((s) => String.fromCodePoint(ze[s])).join(\"\");\n }).join(\"\")}`;\n}\nfunction ir(t) {\n return !Number.isNaN(Number(t)) || /[a-z]/i.test(t) && !/\\d+(?:[-:\\/]\\d+){2}(?:T\\d+(?:[-:\\/]\\d+){1,2}(\\.\\d+)?Z?)?/.test(t) ? !1 : !!Date.parse(t);\n}\nfunction sr(t) {\n try {\n new URL(t, t.startsWith(\"/\") ? \"https://acme.com\" : void 0);\n } catch {\n return !1;\n }\n return !0;\n}\nfunction ar(t, n, i = \"auto\") {\n return i === !0 || i === \"auto\" && (ir(t) || sr(t)) ? t : `${t}${rr(n)}`;\n}\nvar or = Object.fromEntries(Object.entries(ze).map((t) => t.reverse())), gt = Object.fromEntries(Object.entries(bt).map((t) => t.reverse())), cr = `${Object.values(bt).map((t) => `\\\\u{${t.toString(16)}}`).join(\"\")}`, $e = new RegExp(`[${cr}]{4,}`, \"gu\");\nfunction lr(t) {\n let n = t.match($e);\n if (n) return ur(n[0], !0)[0];\n}\nfunction ur(t, n = !1) {\n let i = Array.from(t);\n if (i.length % 2 === 0) {\n if (i.length % 4 || !t.startsWith(Tt)) return fr(i, n);\n } else throw new Error(\"Encoded data has invalid length\");\n let a = [];\n for (let s = i.length * 0.25; s--; ) {\n let c = i.slice(s * 4, s * 4 + 4).map((u) => or[u.codePointAt(0)]).join(\"\");\n a.unshift(String.fromCharCode(parseInt(c, 4)));\n }\n if (n) {\n a.shift();\n let s = a.indexOf(pt);\n return s === -1 && (s = a.length), [JSON.parse(a.slice(0, s).join(\"\"))];\n }\n return a.join(\"\").split(pt).filter(Boolean).map((s) => JSON.parse(s));\n}\nfunction fr(t, n) {\n var i;\n let a = [];\n for (let d = t.length * 0.5; d--; ) {\n let h = `${gt[t[d * 2].codePointAt(0)]}${gt[t[d * 2 + 1].codePointAt(0)]}`;\n a.unshift(String.fromCharCode(parseInt(h, 16)));\n }\n let s = [], c = [a.join(\"\")], u = 10;\n for (; c.length; ) {\n let d = c.shift();\n try {\n if (s.push(JSON.parse(d)), n) return s;\n } catch (h) {\n if (!u--) throw h;\n let f = +((i = h.message.match(/\\sposition\\s(\\d+)$/)) == null ? void 0 : i[1]);\n if (!f) throw h;\n c.unshift(d.substring(0, f), d.substring(f));\n }\n }\n return s;\n}\nfunction dr(t) {\n var n;\n return { cleaned: t.replace($e, \"\"), encoded: ((n = t.match($e)) == null ? void 0 : n[0]) || \"\" };\n}\nfunction Oe(t, n) {\n return ar(t, n);\n}\nfunction pr(t) {\n return lr(t);\n}\nfunction Wr(t) {\n return dr(t);\n}\nvar gr = Object.prototype.hasOwnProperty, hr = Object.prototype.toString, Er = function(t, n, i) {\n if (hr.call(n) !== \"[object Function]\")\n throw new TypeError(\"iterator must be a function\");\n var a = t.length;\n if (a === +a)\n for (var s = 0; s < a; s++)\n n.call(i, t[s], s, t);\n else\n for (var c in t)\n gr.call(t, c) && n.call(i, t[c], c, t);\n}, yr = Er, H = m;\nfunction m(t, n, i) {\n if (arguments.length === 3)\n return m.set(t, n, i);\n if (arguments.length === 2)\n return m.get(t, n);\n var a = m.bind(m, t);\n for (var s in m)\n m.hasOwnProperty(s) && (a[s] = m[s].bind(a, t));\n return a;\n}\nm.get = function(t, n) {\n for (var i = Array.isArray(n) ? n : m.parse(n), a = 0; a < i.length; ++a) {\n var s = i[a];\n if (!(typeof t == \"object\" && s in t))\n throw new Error(\"Invalid reference token: \" + s);\n t = t[s];\n }\n return t;\n};\nm.set = function(t, n, i) {\n var a = Array.isArray(n) ? n : m.parse(n), s = a[0];\n if (a.length === 0)\n throw Error(\"Can not set the root object\");\n for (var c = 0; c < a.length - 1; ++c) {\n var u = a[c];\n typeof u != \"string\" && typeof u != \"number\" && (u = String(u)), !(u === \"__proto__\" || u === \"constructor\" || u === \"prototype\") && (u === \"-\" && Array.isArray(t) && (u = t.length), s = a[c + 1], u in t || (s.match(/^(\\d+|-)$/) ? t[u] = [] : t[u] = {}), t = t[u]);\n }\n return s === \"-\" && Array.isArray(t) && (s = t.length), t[s] = i, this;\n};\nm.remove = function(t, n) {\n var i = Array.isArray(n) ? n : m.parse(n), a = i[i.length - 1];\n if (a === void 0)\n throw new Error('Invalid JSON pointer for remove: \"' + n + '\"');\n var s = m.get(t, i.slice(0, -1));\n if (Array.isArray(s)) {\n var c = +a;\n if (a === \"\" && isNaN(c))\n throw new Error('Invalid array index: \"' + a + '\"');\n Array.prototype.splice.call(s, c, 1);\n } else\n delete s[a];\n};\nm.dict = function(t, n) {\n var i = {};\n return m.walk(t, function(a, s) {\n i[s] = a;\n }, n), i;\n};\nm.walk = function(t, n, i) {\n var a = [];\n i = i || function(s) {\n var c = Object.prototype.toString.call(s);\n return c === \"[object Object]\" || c === \"[object Array]\";\n }, function s(c) {\n yr(c, function(u, d) {\n a.push(String(d)), i(u) ? s(u) : n(u, m.compile(a)), a.pop();\n });\n }(t);\n};\nm.has = function(t, n) {\n try {\n m.get(t, n);\n } catch {\n return !1;\n }\n return !0;\n};\nm.escape = function(t) {\n return t.toString().replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n};\nm.unescape = function(t) {\n return t.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n};\nm.parse = function(t) {\n if (t === \"\")\n return [];\n if (t.charAt(0) !== \"/\")\n throw new Error(\"Invalid JSON pointer: \" + t);\n return t.substring(1).split(/\\//).map(m.unescape);\n};\nm.compile = function(t) {\n return t.length === 0 ? \"\" : \"/\" + t.map(m.escape).join(\"/\");\n};\nconst mr = ({\n pointer: t,\n mappings: n,\n data: i,\n hiddenStrings: a\n}) => {\n const s = n[t];\n delete n[t];\n const c = _t(i, t);\n for (const u of c) {\n n[u] = s;\n const d = H.get(i, u), h = Oe(d, a);\n H.set(i, u, h);\n }\n}, _t = (t, n = \"\") => {\n const i = [], a = H.get(t, n);\n if (a.content)\n for (let s = 0; s < a.content.length; s++)\n a.content[s].nodeType === \"text\" ? i.push(`${n}/content/${s}/value`) : i.push(..._t(t, `${n}/content/${s}`));\n return i;\n}, Ge = ({\n entityId: t,\n entityType: n,\n space: i,\n environment: a,\n field: s,\n locale: c,\n editorInterface: u,\n fieldType: d,\n targetOrigin: h,\n platform: f\n}) => {\n const E = {\n origin: \"contentful.com\",\n href: `${`${h || \"https://app.contentful.com\"}/spaces/${i}/environments/${a}`}/${n === \"Entry\" ? \"entries\" : \"assets\"}/${t}/?focusedField=${s}&focusedLocale=${c}&source=vercel-content-link`,\n contentful: {\n space: i,\n environment: a,\n field: s,\n locale: c,\n entity: t,\n entityType: n,\n editorInterface: u,\n fieldType: d\n }\n };\n return f === \"vercel\" && delete E.contentful, f === \"contentful\" && delete E.href, E;\n}, vt = (t) => [\"builtin\", \"sidebar-builtin\", \"editor-builtin\"].includes(t), St = (t) => br.includes(t);\nfunction At(t) {\n if (typeof structuredClone == \"function\")\n return structuredClone(t);\n try {\n return JSON.parse(JSON.stringify(t));\n } catch (n) {\n return console.warn(\"Failed to clone data:\", t, n), t;\n }\n}\nconst br = [\n \"singleLine\",\n \"tagEditor\",\n \"listInput\",\n \"checkbox\",\n \"richTextEditor\",\n \"multipleLine\"\n];\nfunction Be(t, n, i, a, s, c, u) {\n const d = u ? n[u] : n;\n switch (t) {\n case \"Symbol\": {\n const h = Oe(d, i);\n H.set(a, s, h);\n break;\n }\n case \"Text\": {\n const h = Oe(d, i);\n H.set(a, s, h);\n break;\n }\n case \"RichText\": {\n mr({\n pointer: \"\",\n mappings: c,\n data: d,\n hiddenStrings: i\n });\n break;\n }\n case \"Array\": {\n const h = d.map((f) => typeof f == \"string\" ? Oe(f, i) : f);\n H.set(a, s, h);\n break;\n }\n }\n}\nconst Xr = (t, n, i) => {\n if (!t || !t.extensions || !t.extensions.contentSourceMaps)\n return console.error(\n \"GraphQL response does not contain Content Source Maps information.\",\n t\n ), t;\n const a = At(\n t\n ), {\n spaces: s,\n environments: c,\n editorInterfaces: u,\n fields: d,\n locales: h,\n entries: f,\n assets: E,\n mappings: b,\n fieldTypes: I\n } = a.extensions.contentSourceMaps, R = a;\n for (const O in b) {\n const { source: v } = b[O], N = \"entry\" in v ? f[v.entry] : E[v.asset], G = \"entry\" in v ? \"Entry\" : \"Asset\";\n if (!N)\n return a;\n const x = s[N.space], B = c[N.environment], ae = N.id, de = d[v.field], re = h[v.locale], ie = u[v.editorInterface], pe = I[v.fieldType];\n if (!(vt(ie.widgetNamespace) && !St(ie.widgetId)) && H.has(R, O)) {\n const ge = H.get(R, O);\n if (ge !== null) {\n const oe = Ge({\n entityId: ae,\n entityType: G,\n space: x,\n environment: B,\n field: de,\n locale: re,\n editorInterface: ie,\n fieldType: pe,\n targetOrigin: n,\n platform: i\n });\n Be(pe, ge, oe, R, O, b);\n }\n }\n }\n return a;\n}, Ae = (t, n, i, a, s) => {\n if (!t.fields)\n return;\n const { contentSourceMaps: c } = t.sys;\n if (!c) {\n console.error(\"Content source maps data is missing\");\n return;\n }\n const { mappings: u } = c;\n for (const d in u) {\n const { source: h } = u[d], f = t.sys.space.sys.id, E = t.sys.environment.sys.id, b = t.sys.id, I = t.sys.type, R = n[h.fieldType], O = i[h.editorInterface];\n if (vt(O.widgetNamespace) && !St(O.widgetId))\n continue;\n const v = d.startsWith(\"/\") ? d : `/${d}`;\n if (H.has(t, v)) {\n const N = H.get(t, v);\n if (N === null)\n return;\n const G = v.split(\"/\").pop();\n if (!G) {\n console.error(\"Field name could not be extracted from the pointer\", v);\n return;\n }\n const x = t.sys.locale;\n if (x) {\n const B = Ge({\n entityId: b,\n entityType: I,\n space: f,\n environment: E,\n field: G,\n locale: x,\n editorInterface: O,\n fieldType: R,\n targetOrigin: a,\n platform: s\n });\n Be(R, N, B, t, v, u);\n } else\n Object.keys(N).forEach((B) => {\n const ae = Ge({\n entityId: b,\n entityType: I,\n space: f,\n environment: E,\n field: G,\n locale: B,\n editorInterface: O,\n fieldType: R,\n targetOrigin: a,\n platform: s\n });\n Be(\n R,\n N,\n ae,\n t,\n `${v}/${B}`,\n u,\n B\n );\n });\n }\n }\n}, Qr = (t, n, i) => {\n var a;\n const s = At(\n t\n );\n if (s.sys && \"items\" in s) {\n const c = s;\n if (!((a = c.sys) != null && a.contentSourceMapsLookup))\n return console.error(\"Content source maps lookup data is missing\"), c;\n const {\n contentSourceMapsLookup: { fieldTypes: u, editorInterfaces: d }\n } = c.sys, { items: h, includes: f } = c;\n h.forEach(\n (E) => Ae(E, u, d, n, i)\n ), f && f.Entry && f.Entry.forEach(\n (E) => Ae(E, u, d, n, i)\n ), f && f.Asset && f.Asset.forEach(\n (E) => Ae(E, u, d, n, i)\n );\n } else {\n const c = s;\n if (!c.sys.contentSourceMapsLookup)\n return console.error(\"Content source maps lookup data is missing\"), c;\n Ae(\n c,\n c.sys.contentSourceMapsLookup.fieldTypes,\n c.sys.contentSourceMapsLookup.editorInterfaces,\n n,\n i\n );\n }\n return s;\n}, It = \"4.5.6\";\nlet Ot = !1;\nfunction ht(t) {\n Ot = t;\n}\nconst xe = (t) => (...n) => {\n Ot && console[t](...n);\n}, W = {\n error: xe(\"error\"),\n warn: xe(\"warn\"),\n log: xe(\"log\")\n};\nfunction Tr(t, n = 500) {\n let i = window.location.href;\n const s = setInterval(() => {\n const c = window.location.href;\n c !== i && (i = c, t(c));\n }, n);\n return () => clearInterval(s);\n}\nconst _r = \"live-preview-editor\", vr = \"live-preview-sdk\";\nfunction F(t, n, i) {\n const a = {\n ...n,\n method: t,\n source: vr,\n location: window.location.href,\n version: It\n };\n W.log(\"Send message\", a), i.forEach((s) => {\n var c;\n (c = window.top) == null || c.postMessage(a, s);\n });\n}\nfunction Sr(t, n = 100) {\n let i;\n return (...a) => {\n clearTimeout(i), i = setTimeout(() => {\n t.apply(this, a);\n }, n);\n };\n}\nfunction Ar() {\n var t;\n try {\n return ((t = window.top) == null ? void 0 : t.location.href) !== window.location.href;\n } catch {\n return !0;\n }\n}\nfunction Ir() {\n return `${performance.now()}-${Math.random().toString(36).slice(2)}`;\n}\nfunction Or(t) {\n return typeof t.data != \"object\" || !t.data ? !1 : \"source\" in t.data && t.data.source === _r;\n}\nvar Ie = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction Cr(t) {\n return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, \"default\") ? t.default : t;\n}\nvar Ce = { exports: {} };\nCe.exports;\n(function(t, n) {\n var i = 200, a = \"__lodash_hash_undefined__\", s = 1, c = 2, u = 9007199254740991, d = \"[object Arguments]\", h = \"[object Array]\", f = \"[object AsyncFunction]\", E = \"[object Boolean]\", b = \"[object Date]\", I = \"[object Error]\", R = \"[object Function]\", O = \"[object GeneratorFunction]\", v = \"[object Map]\", N = \"[object Number]\", G = \"[object Null]\", x = \"[object Object]\", B = \"[object Promise]\", ae = \"[object Proxy]\", de = \"[object RegExp]\", re = \"[object Set]\", ie = \"[object String]\", pe = \"[object Symbol]\", ge = \"[object Undefined]\", oe = \"[object WeakMap]\", Pe = \"[object ArrayBuffer]\", he = \"[object DataView]\", Lt = \"[object Float32Array]\", Rt = \"[object Float64Array]\", Ut = \"[object Int8Array]\", Mt = \"[object Int16Array]\", jt = \"[object Int32Array]\", xt = \"[object Uint8Array]\", $t = \"[object Uint8ClampedArray]\", Gt = \"[object Uint16Array]\", Bt = \"[object Uint32Array]\", zt = /[\\\\^$.*+?()[\\]{}|]/g, Ft = /^\\[object .+?Constructor\\]$/, Pt = /^(?:0|[1-9]\\d*)$/, T = {};\n T[Lt] = T[Rt] = T[Ut] = T[Mt] = T[jt] = T[xt] = T[$t] = T[Gt] = T[Bt] = !0, T[d] = T[h] = T[Pe] = T[E] = T[he] = T[b] = T[I] = T[R] = T[v] = T[N] = T[x] = T[de] = T[re] = T[ie] = T[oe] = !1;\n var He = typeof Ie == \"object\" && Ie && Ie.Object === Object && Ie, Ht = typeof self == \"object\" && self && self.Object === Object && self, V = He || Ht || Function(\"return this\")(), Ve = n && !n.nodeType && n, Ye = Ve && !0 && t && !t.nodeType && t, Ke = Ye && Ye.exports === Ve, we = Ke && He.process, Je = function() {\n try {\n return we && we.binding && we.binding(\"util\");\n } catch {\n }\n }(), qe = Je && Je.isTypedArray;\n function Vt(e, r) {\n for (var o = -1, l = e == null ? 0 : e.length, _ = 0, p = []; ++o < l; ) {\n var A = e[o];\n r(A, o, e) && (p[_++] = A);\n }\n return p;\n }\n function Yt(e, r) {\n for (var o = -1, l = r.length, _ = e.length; ++o < l; )\n e[_ + o] = r[o];\n return e;\n }\n function Kt(e, r) {\n for (var o = -1, l = e == null ? 0 : e.length; ++o < l; )\n if (r(e[o], o, e))\n return !0;\n return !1;\n }\n function Jt(e, r) {\n for (var o = -1, l = Array(e); ++o < e; )\n l[o] = r(o);\n return l;\n }\n function qt(e) {\n return function(r) {\n return e(r);\n };\n }\n function Zt(e, r) {\n return e.has(r);\n }\n function Wt(e, r) {\n return e == null ? void 0 : e[r];\n }\n function Xt(e) {\n var r = -1, o = Array(e.size);\n return e.forEach(function(l, _) {\n o[++r] = [_, l];\n }), o;\n }\n function Qt(e, r) {\n return function(o) {\n return e(r(o));\n };\n }\n function kt(e) {\n var r = -1, o = Array(e.size);\n return e.forEach(function(l) {\n o[++r] = l;\n }), o;\n }\n var en = Array.prototype, tn = Function.prototype, Ee = Object.prototype, De = V[\"__core-js_shared__\"], Ze = tn.toString, z = Ee.hasOwnProperty, We = function() {\n var e = /[^.]+$/.exec(De && De.keys && De.keys.IE_PROTO || \"\");\n return e ? \"Symbol(src)_1.\" + e : \"\";\n }(), Xe = Ee.toString, nn = RegExp(\n \"^\" + Ze.call(z).replace(zt, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\"\n ), Qe = Ke ? V.Buffer : void 0, ye = V.Symbol, ke = V.Uint8Array, et = Ee.propertyIsEnumerable, rn = en.splice, X = ye ? ye.toStringTag : void 0, tt = Object.getOwnPropertySymbols, sn = Qe ? Qe.isBuffer : void 0, an = Qt(Object.keys, Object), Ne = se(V, \"DataView\"), ce = se(V, \"Map\"), Le = se(V, \"Promise\"), Re = se(V, \"Set\"), Ue = se(V, \"WeakMap\"), le = se(Object, \"create\"), on = ee(Ne), cn = ee(ce), ln = ee(Le), un = ee(Re), fn = ee(Ue), nt = ye ? ye.prototype : void 0, Me = nt ? nt.valueOf : void 0;\n function Q(e) {\n var r = -1, o = e == null ? 0 : e.length;\n for (this.clear(); ++r < o; ) {\n var l = e[r];\n this.set(l[0], l[1]);\n }\n }\n function dn() {\n this.__data__ = le ? le(null) : {}, this.size = 0;\n }\n function pn(e) {\n var r = this.has(e) && delete this.__data__[e];\n return this.size -= r ? 1 : 0, r;\n }\n function gn(e) {\n var r = this.__data__;\n if (le) {\n var o = r[e];\n return o === a ? void 0 : o;\n }\n return z.call(r, e) ? r[e] : void 0;\n }\n function hn(e) {\n var r = this.__data__;\n return le ? r[e] !== void 0 : z.call(r, e);\n }\n function En(e, r) {\n var o = this.__data__;\n return this.size += this.has(e) ? 0 : 1, o[e] = le && r === void 0 ? a : r, this;\n }\n Q.prototype.clear = dn, Q.prototype.delete = pn, Q.prototype.get = gn, Q.prototype.has = hn, Q.prototype.set = En;\n function Y(e) {\n var r = -1, o = e == null ? 0 : e.length;\n for (this.clear(); ++r < o; ) {\n var l = e[r];\n this.set(l[0], l[1]);\n }\n }\n function yn() {\n this.__data__ = [], this.size = 0;\n }\n function mn(e) {\n var r = this.__data__, o = be(r, e);\n if (o < 0)\n return !1;\n var l = r.length - 1;\n return o == l ? r.pop() : rn.call(r, o, 1), --this.size, !0;\n }\n function bn(e) {\n var r = this.__data__, o = be(r, e);\n return o < 0 ? void 0 : r[o][1];\n }\n function Tn(e) {\n return be(this.__data__, e) > -1;\n }\n function _n(e, r) {\n var o = this.__data__, l = be(o, e);\n return l < 0 ? (++this.size, o.push([e, r])) : o[l][1] = r, this;\n }\n Y.prototype.clear = yn, Y.prototype.delete = mn, Y.prototype.get = bn, Y.prototype.has = Tn, Y.prototype.set = _n;\n function k(e) {\n var r = -1, o = e == null ? 0 : e.length;\n for (this.clear(); ++r < o; ) {\n var l = e[r];\n this.set(l[0], l[1]);\n }\n }\n function vn() {\n this.size = 0, this.__data__ = {\n hash: new Q(),\n map: new (ce || Y)(),\n string: new Q()\n };\n }\n function Sn(e) {\n var r = Te(this, e).delete(e);\n return this.size -= r ? 1 : 0, r;\n }\n function An(e) {\n return Te(this, e).get(e);\n }\n function In(e) {\n return Te(this, e).has(e);\n }\n function On(e, r) {\n var o = Te(this, e), l = o.size;\n return o.set(e, r), this.size += o.size == l ? 0 : 1, this;\n }\n k.prototype.clear = vn, k.prototype.delete = Sn, k.prototype.get = An, k.prototype.has = In, k.prototype.set = On;\n function me(e) {\n var r = -1, o = e == null ? 0 : e.length;\n for (this.__data__ = new k(); ++r < o; )\n this.add(e[r]);\n }\n function Cn(e) {\n return this.__data__.set(e, a), this;\n }\n function wn(e) {\n return this.__data__.has(e);\n }\n me.prototype.add = me.prototype.push = Cn, me.prototype.has = wn;\n function J(e) {\n var r = this.__data__ = new Y(e);\n this.size = r.size;\n }\n function Dn() {\n this.__data__ = new Y(), this.size = 0;\n }\n function Nn(e) {\n var r = this.__data__, o = r.delete(e);\n return this.size = r.size, o;\n }\n function Ln(e) {\n return this.__data__.get(e);\n }\n function Rn(e) {\n return this.__data__.has(e);\n }\n function Un(e, r) {\n var o = this.__data__;\n if (o instanceof Y) {\n var l = o.__data__;\n if (!ce || l.length < i - 1)\n return l.push([e, r]), this.size = ++o.size, this;\n o = this.__data__ = new k(l);\n }\n return o.set(e, r), this.size = o.size, this;\n }\n J.prototype.clear = Dn, J.prototype.delete = Nn, J.prototype.get = Ln, J.prototype.has = Rn, J.prototype.set = Un;\n function Mn(e, r) {\n var o = _e(e), l = !o && Zn(e), _ = !o && !l && je(e), p = !o && !l && !_ && ft(e), A = o || l || _ || p, C = A ? Jt(e.length, String) : [], w = C.length;\n for (var S in e)\n z.call(e, S) && !(A && // Safari 9 has enumerable `arguments.length` in strict mode.\n (S == \"length\" || // Node.js 0.10 has enumerable non-index properties on buffers.\n _ && (S == \"offset\" || S == \"parent\") || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n p && (S == \"buffer\" || S == \"byteLength\" || S == \"byteOffset\") || // Skip index properties.\n Vn(S, w))) && C.push(S);\n return C;\n }\n function be(e, r) {\n for (var o = e.length; o--; )\n if (ot(e[o][0], r))\n return o;\n return -1;\n }\n function jn(e, r, o) {\n var l = r(e);\n return _e(e) ? l : Yt(l, o(e));\n }\n function ue(e) {\n return e == null ? e === void 0 ? ge : G : X && X in Object(e) ? Pn(e) : qn(e);\n }\n function rt(e) {\n return fe(e) && ue(e) == d;\n }\n function it(e, r, o, l, _) {\n return e === r ? !0 : e == null || r == null || !fe(e) && !fe(r) ? e !== e && r !== r : xn(e, r, o, l, it, _);\n }\n function xn(e, r, o, l, _, p) {\n var A = _e(e), C = _e(r), w = A ? h : q(e), S = C ? h : q(r);\n w = w == d ? x : w, S = S == d ? x : S;\n var U = w == x, $ = S == x, D = w == S;\n if (D && je(e)) {\n if (!je(r))\n return !1;\n A = !0, U = !1;\n }\n if (D && !U)\n return p || (p = new J()), A || ft(e) ? st(e, r, o, l, _, p) : zn(e, r, w, o, l, _, p);\n if (!(o & s)) {\n var M = U && z.call(e, \"__wrapped__\"), j = $ && z.call(r, \"__wrapped__\");\n if (M || j) {\n var Z = M ? e.value() : e, K = j ? r.value() : r;\n return p || (p = new J()), _(Z, K, o, l, p);\n }\n }\n return D ? (p || (p = new J()), Fn(e, r, o, l, _, p)) : !1;\n }\n function $n(e) {\n if (!ut(e) || Kn(e))\n return !1;\n var r = ct(e) ? nn : Ft;\n return r.test(ee(e));\n }\n function Gn(e) {\n return fe(e) && lt(e.length) && !!T[ue(e)];\n }\n function Bn(e) {\n if (!Jn(e))\n return an(e);\n var r = [];\n for (var o in Object(e))\n z.call(e, o) && o != \"constructor\" && r.push(o);\n return r;\n }\n function st(e, r, o, l, _, p) {\n var A = o & s, C = e.length, w = r.length;\n if (C != w && !(A && w > C))\n return !1;\n var S = p.get(e);\n if (S && p.get(r))\n return S == r;\n var U = -1, $ = !0, D = o & c ? new me() : void 0;\n for (p.set(e, r), p.set(r, e); ++U < C; ) {\n var M = e[U], j = r[U];\n if (l)\n var Z = A ? l(j, M, U, r, e, p) : l(M, j, U, e, r, p);\n if (Z !== void 0) {\n if (Z)\n continue;\n $ = !1;\n break;\n }\n if (D) {\n if (!Kt(r, function(K, te) {\n if (!Zt(D, te) && (M === K || _(M, K, o, l, p)))\n return D.push(te);\n })) {\n $ = !1;\n break;\n }\n } else if (!(M === j || _(M, j, o, l, p))) {\n $ = !1;\n break;\n }\n }\n return p.delete(e), p.delete(r), $;\n }\n function zn(e, r, o, l, _, p, A) {\n switch (o) {\n case he:\n if (e.byteLength != r.byteLength || e.byteOffset != r.byteOffset)\n return !1;\n e = e.buffer, r = r.buffer;\n case Pe:\n return !(e.byteLength != r.byteLength || !p(new ke(e), new ke(r)));\n case E:\n case b:\n case N:\n return ot(+e, +r);\n case I:\n return e.name == r.name && e.message == r.message;\n case de:\n case ie:\n return e == r + \"\";\n case v:\n var C = Xt;\n case re:\n var w = l & s;\n if (C || (C = kt), e.size != r.size && !w)\n return !1;\n var S = A.get(e);\n if (S)\n return S == r;\n l |= c, A.set(e, r);\n var U = st(C(e), C(r), l, _, p, A);\n return A.delete(e), U;\n case pe:\n if (Me)\n return Me.call(e) == Me.call(r);\n }\n return !1;\n }\n function Fn(e, r, o, l, _, p) {\n var A = o & s, C = at(e), w = C.length, S = at(r), U = S.length;\n if (w != U && !A)\n return !1;\n for (var $ = w; $--; ) {\n var D = C[$];\n if (!(A ? D in r : z.call(r, D)))\n return !1;\n }\n var M = p.get(e);\n if (M && p.get(r))\n return M == r;\n var j = !0;\n p.set(e, r), p.set(r, e);\n for (var Z = A; ++$ < w; ) {\n D = C[$];\n var K = e[D], te = r[D];\n if (l)\n var dt = A ? l(te, K, D, r, e, p) : l(K, te, D, e, r, p);\n if (!(dt === void 0 ? K === te || _(K, te, o, l, p) : dt)) {\n j = !1;\n break;\n }\n Z || (Z = D == \"constructor\");\n }\n if (j && !Z) {\n var ve = e.constructor, Se = r.constructor;\n ve != Se && \"constructor\" in e && \"constructor\" in r && !(typeof ve == \"function\" && ve instanceof ve && typeof Se == \"function\" && Se instanceof Se) && (j = !1);\n }\n return p.delete(e), p.delete(r), j;\n }\n function at(e) {\n return jn(e, Qn, Hn);\n }\n function Te(e, r) {\n var o = e.__data__;\n return Yn(r) ? o[typeof r == \"string\" ? \"string\" : \"hash\"] : o.map;\n }\n function se(e, r) {\n var o = Wt(e, r);\n return $n(o) ? o : void 0;\n }\n function Pn(e) {\n var r = z.call(e, X), o = e[X];\n try {\n e[X] = void 0;\n var l = !0;\n } catch {\n }\n var _ = Xe.call(e);\n return l && (r ? e[X] = o : delete e[X]), _;\n }\n var Hn = tt ? function(e) {\n return e == null ? [] : (e = Object(e), Vt(tt(e), function(r) {\n return et.call(e, r);\n }));\n } : kn, q = ue;\n (Ne && q(new Ne(new ArrayBuffer(1))) != he || ce && q(new ce()) != v || Le && q(Le.resolve()) != B || Re && q(new Re()) != re || Ue && q(new Ue()) != oe) && (q = function(e) {\n var r = ue(e), o = r == x ? e.constructor : void 0, l = o ? ee(o) : \"\";\n if (l)\n switch (l) {\n case on:\n return he;\n case cn:\n return v;\n case ln:\n return B;\n case un:\n return re;\n case fn:\n return oe;\n }\n return r;\n });\n function Vn(e, r) {\n return r = r ?? u, !!r && (typeof e == \"number\" || Pt.test(e)) && e > -1 && e % 1 == 0 && e < r;\n }\n function Yn(e) {\n var r = typeof e;\n return r == \"string\" || r == \"number\" || r == \"symbol\" || r == \"boolean\" ? e !== \"__proto__\" : e === null;\n }\n function Kn(e) {\n return !!We && We in e;\n }\n function Jn(e) {\n var r = e && e.constructor, o = typeof r == \"function\" && r.prototype || Ee;\n return e === o;\n }\n function qn(e) {\n return Xe.call(e);\n }\n function ee(e) {\n if (e != null) {\n try {\n return Ze.call(e);\n } catch {\n }\n try {\n return e + \"\";\n } catch {\n }\n }\n return \"\";\n }\n function ot(e, r) {\n return e === r || e !== e && r !== r;\n }\n var Zn = rt(/* @__PURE__ */ function() {\n return arguments;\n }()) ? rt : function(e) {\n return fe(e) && z.call(e, \"callee\") && !et.call(e, \"callee\");\n }, _e = Array.isArray;\n function Wn(e) {\n return e != null && lt(e.length) && !ct(e);\n }\n var je = sn || er;\n function Xn(e, r) {\n return it(e, r);\n }\n function ct(e) {\n if (!ut(e))\n return !1;\n var r = ue(e);\n return r == R || r == O || r == f || r == ae;\n }\n function lt(e) {\n return typeof e == \"number\" && e > -1 && e % 1 == 0 && e <= u;\n }\n function ut(e) {\n var r = typeof e;\n return e != null && (r == \"object\" || r == \"function\");\n }\n function fe(e) {\n return e != null && typeof e == \"object\";\n }\n var ft = qe ? qt(qe) : Gn;\n function Qn(e) {\n return Wn(e) ? Mn(e) : Bn(e);\n }\n function kn() {\n return [];\n }\n function er() {\n return !1;\n }\n t.exports = Xn;\n})(Ce, Ce.exports);\nvar wr = Ce.exports;\nconst Dr = /* @__PURE__ */ Cr(wr);\nvar y = /* @__PURE__ */ ((t) => (t.FIELD_ID = \"data-contentful-field-id\", t.ENTRY_ID = \"data-contentful-entry-id\", t.ASSET_ID = \"data-contentful-asset-id\", t.LOCALE = \"data-contentful-locale\", t.SPACE = \"data-contentful-space\", t.ENVIRONMENT = \"data-contentful-environment\", t))(y || {}), ne = /* @__PURE__ */ ((t) => (t.MOUSE_MOVE = \"MOUSE_MOVE\", t.SCROLL_START = \"SCROLL_START\", t.SCROLL_END = \"SCROLL_END\", t.RESIZE_START = \"RESIZE_START\", t.RESIZE_END = \"RESIZE_END\", t.TAGGED_ELEMENTS = \"TAGGED_ELEMENTS\", t.INSPECTOR_MODE_CHANGED = \"INSPECTOR_MODE_CHANGED\", t))(ne || {}), Ct = { 0: 8203, 1: 8204, 2: 8205, 3: 8290, 4: 8291, 5: 8288, 6: 65279, 7: 8289, 8: 119155, 9: 119156, a: 119157, b: 119158, c: 119159, d: 119160, e: 119161, f: 119162 }, wt = { 0: 8203, 1: 8204, 2: 8205, 3: 65279 };\nnew Array(4).fill(String.fromCodePoint(wt[0])).join(\"\");\nObject.fromEntries(Object.entries(wt).map((t) => t.reverse()));\nObject.fromEntries(Object.entries(Ct).map((t) => t.reverse()));\nvar Nr = `${Object.values(Ct).map((t) => `\\\\u{${t.toString(16)}}`).join(\"\")}`, Lr = new RegExp(`[${Nr}]{4,}`, \"gu\");\nconst Rr = (t) => {\n if (!t || t.nodeType !== Node.ELEMENT_NODE)\n return !1;\n const n = t;\n return !(!n.hasAttribute(y.FIELD_ID) || !n.hasAttribute(y.ENTRY_ID) && !n.hasAttribute(y.ASSET_ID));\n};\nfunction Ur(t, n) {\n if (!Rr(t))\n return null;\n const i = {\n fieldId: t.getAttribute(y.FIELD_ID),\n locale: t.getAttribute(y.LOCALE) ?? n.locale,\n environment: t.getAttribute(y.ENVIRONMENT) ?? n.environment,\n space: t.getAttribute(y.SPACE) ?? n.space,\n manuallyTagged: !0\n }, a = t.getAttribute(y.ENTRY_ID);\n if (a)\n return { ...i, entryId: a };\n const s = t.getAttribute(y.ASSET_ID);\n return s ? { ...i, assetId: s } : null;\n}\nfunction Dt(t, n) {\n return t.href === n.href;\n}\nfunction Mr(t, n) {\n return !(!Dt(t.sourceMap, n.sourceMap) || t.element !== n.element);\n}\nfunction jr(t) {\n let n = [];\n return typeof t.matches == \"function\" && t.matches(\"*\") && (n = [t]), [\n ...n,\n ...Array.from(t.querySelectorAll(\"*:not(script,style,meta,title)\"))\n ].map((i) => ({ node: i, text: xr(i) })).filter(({ text: i }) => !!(i && i.match(Lr)));\n}\nfunction xr(t) {\n return t.matches(\"input[type=submit], input[type=button], input[type=reset]\") ? t.value : t.matches(\"img, video\") ? t.alt : Array.from(t.childNodes).filter((n) => n.nodeType === Node.TEXT_NODE && !!n.textContent).map((n) => n.textContent).join(\"\");\n}\nfunction $r(t, n) {\n for (const i of n)\n if (i.element === t || i.element.contains(t))\n return !0;\n return !1;\n}\nfunction Fe({\n root: t = window.document,\n options: n,\n ignoreManual: i\n}) {\n const s = [...i ? [] : t.querySelectorAll(\n `[${y.ASSET_ID}][${y.FIELD_ID}], [${y.ENTRY_ID}][${y.FIELD_ID}]`\n )].map((f) => ({\n element: f,\n attributes: Ur(f, n)\n })).filter(({ attributes: f }) => f !== null), c = [], u = jr(\"body\" in t ? t.body : t);\n for (const { node: f, text: E } of u) {\n const b = pr(E);\n if (!(!b || !b.origin.includes(\"contentful.com\")) && !($r(f, s) || c.some(\n (I) => I.element.contains(f) && Dt(I.sourceMap, b)\n ))) {\n if (f.matches(\"img\")) {\n const I = f.closest(\"figure\") || f.closest(\"picture\") || f;\n c.push({ element: I, sourceMap: b });\n continue;\n }\n c.push({ element: f, sourceMap: b });\n }\n }\n const d = c.filter(\n (f, E) => c.findIndex((b) => Mr(f, b)) === E\n );\n for (const { element: f, sourceMap: E } of d) {\n if (!E.contentful) {\n W.warn(\n \"Element has missing information in their ContentSourceMap, please check if you have restricted the platform for the encoding. (Missing parameter: `contentful`)\",\n {\n element: f,\n sourceMap: E\n }\n );\n continue;\n }\n const b = {\n fieldId: E.contentful.field,\n locale: E.contentful.locale,\n space: E.contentful.space,\n environment: E.contentful.environment\n };\n E.contentful.entityType === \"Asset\" ? b.assetId = E.contentful.entity : E.contentful.entityType === \"Entry\" && (b.entryId = E.contentful.entity), s.push({\n element: f,\n attributes: b\n });\n }\n const h = s.filter(\n ({ attributes: f }) => (f == null ? void 0 : f.manuallyTagged) === !1 || !(f != null && f.manuallyTagged)\n ).length;\n return {\n taggedElements: s,\n manuallyTaggedCount: s.length - h,\n automaticallyTaggedCount: h,\n autoTaggedElements: d\n };\n}\nfunction Nt({\n options: t\n}) {\n return [\n ...new Set(\n Fe({ options: t }).taggedElements.map((n) => n.attributes && \"entryId\" in n.attributes ? n.attributes.entryId : null).filter(Boolean)\n )\n ];\n}\nclass Gr {\n constructor(n) {\n g(this, \"delay\", 300);\n g(this, \"isScrolling\", !1);\n g(this, \"scrollTimeout\");\n g(this, \"isResizing\", !1);\n g(this, \"resizeTimeout\");\n g(this, \"hoveredElement\");\n g(this, \"taggedElements\", []);\n g(this, \"manuallyTaggedCount\", 0);\n g(this, \"automaticallyTaggedCount\", 0);\n g(this, \"intersectionObserver\");\n g(this, \"observersCB\", []);\n g(this, \"cleanupCB\", []);\n /**\n * Attaches the event listeners and send the tagged elements once\n */\n g(this, \"init\", () => {\n this.cleanupCB = [\n this.addScrollListener(),\n this.addMutationListener(document.body),\n this.addResizeListener(),\n this.addHoverListener()\n ], this.updateElements();\n });\n /**\n * Cancels all listeners and observers\n */\n g(this, \"cleanup\", () => {\n this.observersCB.forEach((n) => n()), this.cleanupCB.forEach((n) => n());\n });\n // Handles incoming messages from Contentful\n g(this, \"receiveMessage\", (n) => {\n if (n.method === ne.INSPECTOR_MODE_CHANGED) {\n const { isInspectorActive: i } = n;\n i ? this.init() : this.cleanup();\n }\n });\n /** Listen for changes on the element via intersection and mutation observer */\n g(this, \"observe\", (n) => {\n this.intersectionObserver.observe(n);\n const i = this.addMutationListener(n);\n this.observersCB.push(i, () => this.intersectionObserver.unobserve(n));\n });\n /** Sends scroll start and end event to the editor, on end it also sends the tagged elements again */\n g(this, \"addScrollListener\", () => {\n const { targetOrigin: n } = this.options, i = () => {\n this.isScrolling || (this.isScrolling = !0, F(ne.SCROLL_START, {}, n)), this.scrollTimeout && clearTimeout(this.scrollTimeout), this.scrollTimeout = setTimeout(() => {\n this.isScrolling = !1, F(ne.SCROLL_END, {}, n), this.updateElements();\n }, this.delay);\n }, a = { capture: !0, passive: !0 };\n return window.addEventListener(\"scroll\", i, a), () => window.removeEventListener(\"scroll\", i, a);\n });\n /** Detects DOM changes and sends the tagged elements to the editor */\n g(this, \"addMutationListener\", (n) => {\n const i = new MutationObserver(() => {\n this.updateElements();\n });\n return i.observe(n, {\n // Content source maps\n characterData: !0,\n // Manual tagging\n attributes: !0,\n attributeFilter: [\n y.ENTRY_ID,\n y.FIELD_ID,\n y.LOCALE,\n y.SPACE,\n y.ENVIRONMENT,\n \"class\",\n \"style\"\n ],\n // Adding or removal of new nodes\n childList: !0,\n // Include children\n subtree: !0\n }), () => i.disconnect();\n });\n /** Sends resize start and end event to the editor, on end it also sends the tagged elements again */\n g(this, \"addResizeListener\", () => {\n const { targetOrigin: n } = this.options, i = new ResizeObserver(() => {\n this.isResizing || (this.isResizing = !0, F(ne.RESIZE_START, {}, n)), this.resizeTimeout && clearTimeout(this.resizeTimeout), this.resizeTimeout = setTimeout(() => {\n this.isResizing = !1, F(ne.RESIZE_END, {}, n), this.updateElements();\n }, this.delay);\n });\n return i.observe(document.body), () => i.disconnect();\n });\n /** Checks if the hovered element is an tagged entry and then sends it to the editor */\n g(this, \"addHoverListener\", () => {\n const n = Sr((a) => {\n let s;\n for (const c of a) {\n const u = c;\n if (u.nodeName === \"BODY\") break;\n const d = this.taggedElements.find((h) => h.element === u);\n if (d) {\n s = d;\n break;\n }\n }\n this.hoveredElement = s == null ? void 0 : s.element, this.updateElements();\n }, this.delay), i = (a) => {\n n(a.composedPath());\n };\n return window.addEventListener(\"mouseover\", i, { passive: !0 }), () => window.removeEventListener(\"mouseover\", i);\n });\n g(this, \"sendTaggedElements\", () => {\n F(\n ne.TAGGED_ELEMENTS,\n {\n elements: this.taggedElements.map((n) => ({\n // Important: do not add `element` as it can't be cloned by sendMessage\n coordinates: n.coordinates,\n isVisible: n.isVisible,\n attributes: n.attributes,\n isHovered: this.hoveredElement === n.element\n })),\n automaticallyTaggedCount: this.automaticallyTaggedCount,\n manuallyTaggedCount: this.manuallyTaggedCount\n },\n this.options.targetOrigin\n );\n });\n /**\n * Finds all elements that have all inspector mode attributes\n * and sends them to the editor\n */\n g(this, \"updateElements\", () => {\n const { taggedElements: n, manuallyTaggedCount: i, automaticallyTaggedCount: a } = Fe({\n options: this.options\n }), s = n.map(({ element: c, attributes: u }) => ({\n element: c,\n coordinates: c.getBoundingClientRect(),\n attributes: u,\n isVisible: c.checkVisibility({\n checkOpacity: !0,\n checkVisibilityCSS: !0\n })\n }));\n Dr(s, this.taggedElements) || (this.observersCB.forEach((c) => c()), this.observersCB = [], this.taggedElements = s, n.forEach(({ element: c }) => this.observe(c)), this.manuallyTaggedCount = i, this.automaticallyTaggedCount = a);\n });\n this.options = n, this.intersectionObserver = new IntersectionObserver(\n (i) => {\n const a = this.taggedElements;\n for (const s of i)\n if (s.isIntersecting)\n for (const c of a)\n c.element === s.target && (c.coordinates = s.intersectionRect, c.isVisible = s.target.checkVisibility({\n checkOpacity: !0,\n checkVisibilityCSS: !0\n }));\n this.taggedElements = a, this.sendTaggedElements();\n },\n { threshold: 0.15 }\n );\n }\n}\nconst { parse: kr, stringify: Br } = JSON, zr = String, Fr = \"string\", Pr = \"object\", Hr = (t, n) => n, Et = (t, n, i) => {\n const a = zr(n.push(i) - 1);\n return t.set(i, a), a;\n}, Vr = (t, n, i) => {\n const a = Hr, s = /* @__PURE__ */ new Map(), c = [], u = [];\n let d = +Et(s, c, a.call({ \"\": t }, \"\", t)), h = !d;\n for (; d < c.length; )\n h = !0, u[d] = Br(c[d++], f, i);\n return \"[\" + u.join(\",\") + \"]\";\n function f(E, b) {\n if (h)\n return h = !h, b;\n const I = a.call(this, E, b);\n switch (typeof I) {\n case Pr:\n if (I === null) return I;\n case Fr:\n return s.get(I) || Et(s, c, I);\n }\n return I;\n }\n};\nvar P = /* @__PURE__ */ ((t) => (t.CONNECTED = \"CONNECTED\", t.DISCONNECTED = \"DISCONNECTED\", t.ERROR = \"ERROR\", t.TAGGED_FIELD_CLICKED = \"TAGGED_FIELD_CLICKED\", t.URL_CHANGED = \"URL_CHANGED\", t.SUBSCRIBED = \"SUBSCRIBED\", t.UNSUBSCRIBED = \"UNSUBSCRIBED\", t.ENTRY_UPDATED = \"ENTRY_UPDATED\", t.ENTRY_SAVED = \"ENTRY_SAVED\", t.DEBUG_MODE_ENABLED = \"DEBUG_MODE_ENABLED\", t))(P || {});\nfunction Yr(t, n) {\n F(\n \"TAGGED_FIELD_CLICKED\",\n {\n action: \"TAGGED_FIELD_CLICKED\",\n ...t\n },\n n\n );\n}\nfunction Kr(t, n) {\n F(\n \"TAGGED_FIELD_CLICKED\",\n {\n action: \"TAGGED_FIELD_CLICKED\",\n ...t\n },\n n\n );\n}\nclass Jr {\n constructor({ locale: n, targetOrigin: i }) {\n g(this, \"subscriptions\", /* @__PURE__ */ new Map());\n g(this, \"defaultLocale\");\n g(this, \"sendMessage\");\n this.defaultLocale = n, this.sendMessage = (a, s) => F(a, s, i);\n }\n /** Receives the data from the message event handler and calls the subscriptions */\n async receiveMessage(n) {\n if (n.method === P.ENTRY_UPDATED) {\n const { data: i, subscriptionId: a } = n, s = this.subscriptions.get(a);\n s ? (s.callback(i), s.data = i, this.subscriptions.set(a, s)) : W.error(\"Received an update for an unknown subscription\", {\n subscriptionId: a,\n data: i,\n subscriptions: this.subscriptions\n });\n }\n }\n /**\n * Subscribe to data changes from the Editor, returns a function to unsubscribe\n * Will be called once initially for the restored data\n */\n subscribe(n) {\n const i = Ir(), a = n.locale ?? this.defaultLocale;\n this.subscriptions.set(i, {\n ...n\n });\n const s = {\n locale: a,\n event: \"edit\",\n id: i,\n config: Vr(n)\n };\n return this.sendMessage(P.SUBSCRIBED, s), () => {\n this.sendMessage(P.UNSUBSCRIBED, s), this.subscriptions.delete(i);\n };\n }\n}\nclass qr {\n constructor({ locale: n, options: i }) {\n g(this, \"locale\");\n g(this, \"options\");\n g(this, \"subscription\");\n this.locale = n, this.options = i;\n }\n subscribe(n) {\n return this.subscription && W.log(\n \"There is already a subscription for the save event, the existing one will be replaced.\"\n ), this.subscription = n, () => {\n this.subscription = void 0;\n };\n }\n receiveMessage(n) {\n if (n.method === P.ENTRY_SAVED && this.subscription) {\n const { entity: i } = n;\n Nt({ options: this.options }).includes(i.sys.id) && this.subscription(i);\n }\n }\n}\nconst ei = It, yt = [\n \"https://app.contentful.com\",\n \"https://app.eu.contentful.com\",\n \"http://localhost:3001\"\n // for local debugging for Contentful engineers\n], L = class L {\n // Static method to initialize the LivePreview SDK\n static init(n) {\n var f;\n if (typeof n != \"object\" || !(n != null && n.locale))\n throw new Error(\n \"Init function have to be called with a locale configuration (for example: `ContentfulLivePreview.init({ locale: 'en-US'})`)\"\n );\n const {\n debugMode: i,\n enableInspectorMode: a,\n enableLiveUpdates: s,\n locale: c,\n environment: u,\n space: d,\n targetOrigin: h\n } = n;\n if (typeof window < \"u\") {\n if (!Ar())\n return this.liveUpdatesEnabled = !1, Promise.resolve(null);\n if (i && ht(i), typeof a == \"boolean\" && (this.inspectorModeEnabled = a), typeof s == \"boolean\" && (this.liveUpdatesEnabled = s), this.locale = c, this.space = d, this.environment = u, this.initTargetOrigin(h), this.initialized)\n return W.log(\"You have already initialized the Live Preview SDK.\"), Promise.resolve(L.inspectorMode);\n this.inspectorModeEnabled && (this.inspectorMode = new Gr({\n locale: c,\n space: d,\n environment: u,\n targetOrigin: this.targetOrigin,\n ignoreManuallyTaggedElements: (f = n.experimental) == null ? void 0 : f.ignoreManuallyTaggedElements\n })), this.liveUpdatesEnabled && (this.liveUpdates = new Jr({ locale: c, targetOrigin: this.targetOrigin }), this.saveEvent = new qr({\n locale: c,\n options: {\n locale: this.locale,\n space: this.space,\n environment: this.environment,\n targetOrigin: this.targetOrigin\n }\n })), window.addEventListener(\"message\", (O) => {\n var v, N, G;\n if (Or(O)) {\n if (W.log(\"Received message\", O.data), O.data.method === P.DEBUG_MODE_ENABLED) {\n ht(!0);\n return;\n }\n this.inspectorModeEnabled && ((v = this.inspectorMode) == null || v.receiveMessage(O.data)), this.liveUpdatesEnabled && ((N = this.liveUpdates) == null || N.receiveMessage(O.data), (G = this.saveEvent) == null || G.receiveMessage(O.data));\n }\n }), Tr(() => {\n F(\n P.URL_CHANGED,\n {\n action: P.URL_CHANGED,\n taggedElementCount: document.querySelectorAll(\n `[${y.ENTRY_ID}]`\n ).length\n },\n this.targetOrigin\n );\n });\n const { taggedElements: E, manuallyTaggedCount: b, automaticallyTaggedCount: I } = this.inspectorModeEnabled ? Fe({\n options: {\n locale: this.locale,\n space: this.space,\n environment: this.environment\n }\n }) : {\n taggedElements: [],\n manuallyTaggedCount: 0,\n automaticallyTaggedCount: 0\n }, R = E.length;\n return F(\n P.CONNECTED,\n {\n action: P.CONNECTED,\n connected: !0,\n tags: R,\n taggedElementCount: R,\n locale: this.locale,\n isInspectorEnabled: this.inspectorModeEnabled,\n isLiveUpdatesEnabled: this.liveUpdatesEnabled,\n manuallyTaggedElementCount: b,\n automaticallyTaggedElementCount: I\n },\n this.targetOrigin\n ), this.initialized = !0, Promise.resolve(L.inspectorMode);\n }\n }\n static initTargetOrigin(n) {\n if (n)\n this.targetOrigin = Array.isArray(n) ? n : [n];\n else {\n const i = window.location.ancestorOrigins, a = i ? yt.find((s) => i.contains(s)) : (\n //less consistent workaround for Firefox, where ancestorOrigins is not supported\n yt.find((s) => document.referrer.includes(s))\n );\n if (!a)\n throw new Error(\n \"The current origin is not supported. Please provide a targetOrigin in the live preview configuration.\"\n );\n this.targetOrigin = [a];\n }\n }\n static subscribe(n, i) {\n if (!this.liveUpdatesEnabled)\n return () => {\n };\n const a = typeof n == \"string\" ? n : \"edit\", s = typeof n == \"object\" ? n : i;\n if (a === \"save\") {\n if (!this.saveEvent)\n throw new Error(\n \"Save event is not initialized, please call `ContentfulLivePreview.init()` first.\"\n );\n return this.saveEvent.subscribe(s.callback);\n }\n if (!this.liveUpdates)\n throw new Error(\n \"Live updates are not initialized, please call `ContentfulLivePreview.init()` first.\"\n );\n return this.liveUpdates.subscribe(s);\n }\n // Static method to render live preview data-attributes to HTML element output\n static getProps(n) {\n const { fieldId: i, locale: a, environment: s, space: c } = n;\n if (!this.inspectorModeEnabled)\n return null;\n if (i) {\n const u = {\n ...a ? { [y.LOCALE]: a } : {},\n ...s ? { [y.ENVIRONMENT]: s } : {},\n ...c ? { [y.SPACE]: c } : {},\n [y.FIELD_ID]: i\n };\n if (a && (u[y.LOCALE] = a), n.assetId !== void 0)\n return {\n ...u,\n [y.ASSET_ID]: n.assetId\n };\n if (n.entryId !== void 0)\n return {\n ...u,\n [y.ENTRY_ID]: n.entryId\n };\n }\n return W.warn(\"Missing property for inspector mode\", { ...n }), null;\n }\n static toggleInspectorMode() {\n return this.inspectorModeEnabled = !this.inspectorModeEnabled, this.inspectorModeEnabled;\n }\n static toggleLiveUpdatesMode() {\n return this.liveUpdatesEnabled = !this.liveUpdatesEnabled, this.liveUpdatesEnabled;\n }\n static openEntryInEditor(n) {\n const i = {\n locale: this.locale,\n environment: this.environment,\n space: this.space\n };\n if (n.assetId !== void 0 && n.fieldId) {\n Kr(\n {\n ...i,\n ...n\n },\n this.targetOrigin\n );\n return;\n }\n if (n.entryId !== void 0 && n.fieldId) {\n Yr(\n {\n ...i,\n ...n\n },\n this.targetOrigin\n );\n return;\n }\n W.error(\"Please provide field id and entry id to openEntryInEditor.\");\n }\n /**\n * Returns a list of tagged entries on the page\n */\n static getEntryList() {\n return Nt({\n options: {\n locale: this.locale,\n space: this.space,\n environment: this.environment\n }\n });\n }\n};\ng(L, \"initialized\", !1), g(L, \"inspectorMode\", null), g(L, \"liveUpdates\", null), g(L, \"saveEvent\", null), g(L, \"inspectorModeEnabled\", !0), g(L, \"liveUpdatesEnabled\", !0), g(L, \"locale\"), g(L, \"space\"), g(L, \"environment\"), g(L, \"sendMessage\"), g(L, \"targetOrigin\");\nlet mt = L;\nexport {\n mt as C,\n ne as I,\n _r as L,\n ei as V,\n Xr as a,\n Wr as b,\n vr as c,\n Sr as d,\n P as e,\n Kr as f,\n Dr as i,\n Yr as o,\n Qr as u\n};\n//# sourceMappingURL=index-BI1JEOp6.js.map\n","import xe, { createContext as yr, useRef as N, useMemo as ee, useEffect as br, useState as hr, useContext as ke, useCallback as gr } from \"react\";\nimport { i as Er, C as re, d as Rr } from \"./index-BI1JEOp6.js\";\nvar Q = { exports: {} }, W = {};\n/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar Oe;\nfunction _r() {\n if (Oe) return W;\n Oe = 1;\n var u = xe, s = Symbol.for(\"react.element\"), h = Symbol.for(\"react.fragment\"), E = Object.prototype.hasOwnProperty, _ = u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, m = { key: !0, ref: !0, __self: !0, __source: !0 };\n function C(p, l, T) {\n var y, P = {}, S = null, Y = null;\n T !== void 0 && (S = \"\" + T), l.key !== void 0 && (S = \"\" + l.key), l.ref !== void 0 && (Y = l.ref);\n for (y in l) E.call(l, y) && !m.hasOwnProperty(y) && (P[y] = l[y]);\n if (p && p.defaultProps) for (y in l = p.defaultProps, l) P[y] === void 0 && (P[y] = l[y]);\n return { $$typeof: s, type: p, key: S, ref: Y, props: P, _owner: _.current };\n }\n return W.Fragment = h, W.jsx = C, W.jsxs = C, W;\n}\nvar $ = {};\n/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar je;\nfunction mr() {\n return je || (je = 1, process.env.NODE_ENV !== \"production\" && function() {\n var u = xe, s = Symbol.for(\"react.element\"), h = Symbol.for(\"react.portal\"), E = Symbol.for(\"react.fragment\"), _ = Symbol.for(\"react.strict_mode\"), m = Symbol.for(\"react.profiler\"), C = Symbol.for(\"react.provider\"), p = Symbol.for(\"react.context\"), l = Symbol.for(\"react.forward_ref\"), T = Symbol.for(\"react.suspense\"), y = Symbol.for(\"react.suspense_list\"), P = Symbol.for(\"react.memo\"), S = Symbol.for(\"react.lazy\"), Y = Symbol.for(\"react.offscreen\"), ne = Symbol.iterator, De = \"@@iterator\";\n function Ae(e) {\n if (e === null || typeof e != \"object\")\n return null;\n var r = ne && e[ne] || e[De];\n return typeof r == \"function\" ? r : null;\n }\n var x = u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n function d(e) {\n {\n for (var r = arguments.length, t = new Array(r > 1 ? r - 1 : 0), n = 1; n < r; n++)\n t[n - 1] = arguments[n];\n Fe(\"error\", e, t);\n }\n }\n function Fe(e, r, t) {\n {\n var n = x.ReactDebugCurrentFrame, i = n.getStackAddendum();\n i !== \"\" && (r += \"%s\", t = t.concat([i]));\n var f = t.map(function(o) {\n return String(o);\n });\n f.unshift(\"Warning: \" + r), Function.prototype.apply.call(console[e], console, f);\n }\n }\n var Ie = !1, We = !1, $e = !1, Ye = !1, Le = !1, ae;\n ae = Symbol.for(\"react.module.reference\");\n function Me(e) {\n return !!(typeof e == \"string\" || typeof e == \"function\" || e === E || e === m || Le || e === _ || e === T || e === y || Ye || e === Y || Ie || We || $e || typeof e == \"object\" && e !== null && (e.$$typeof === S || e.$$typeof === P || e.$$typeof === C || e.$$typeof === p || e.$$typeof === l || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n e.$$typeof === ae || e.getModuleId !== void 0));\n }\n function Ue(e, r, t) {\n var n = e.displayName;\n if (n)\n return n;\n var i = r.displayName || r.name || \"\";\n return i !== \"\" ? t + \"(\" + i + \")\" : t;\n }\n function oe(e) {\n return e.displayName || \"Context\";\n }\n function w(e) {\n if (e == null)\n return null;\n if (typeof e.tag == \"number\" && d(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"), typeof e == \"function\")\n return e.displayName || e.name || null;\n if (typeof e == \"string\")\n return e;\n switch (e) {\n case E:\n return \"Fragment\";\n case h:\n return \"Portal\";\n case m:\n return \"Profiler\";\n case _:\n return \"StrictMode\";\n case T:\n return \"Suspense\";\n case y:\n return \"SuspenseList\";\n }\n if (typeof e == \"object\")\n switch (e.$$typeof) {\n case p:\n var r = e;\n return oe(r) + \".Consumer\";\n case C:\n var t = e;\n return oe(t._context) + \".Provider\";\n case l:\n return Ue(e, e.render, \"ForwardRef\");\n case P:\n var n = e.displayName || null;\n return n !== null ? n : w(e.type) || \"Memo\";\n case S: {\n var i = e, f = i._payload, o = i._init;\n try {\n return w(o(f));\n } catch {\n return null;\n }\n }\n }\n return null;\n }\n var O = Object.assign, A = 0, ie, ue, se, fe, le, ce, ve;\n function de() {\n }\n de.__reactDisabledLog = !0;\n function Ve() {\n {\n if (A === 0) {\n ie = console.log, ue = console.info, se = console.warn, fe = console.error, le = console.group, ce = console.groupCollapsed, ve = console.groupEnd;\n var e = {\n configurable: !0,\n enumerable: !0,\n value: de,\n writable: !0\n };\n Object.defineProperties(console, {\n info: e,\n log: e,\n warn: e,\n error: e,\n group: e,\n groupCollapsed: e,\n groupEnd: e\n });\n }\n A++;\n }\n }\n function Ne() {\n {\n if (A--, A === 0) {\n var e = {\n configurable: !0,\n enumerable: !0,\n writable: !0\n };\n Object.defineProperties(console, {\n log: O({}, e, {\n value: ie\n }),\n info: O({}, e, {\n value: ue\n }),\n warn: O({}, e, {\n value: se\n }),\n error: O({}, e, {\n value: fe\n }),\n group: O({}, e, {\n value: le\n }),\n groupCollapsed: O({}, e, {\n value: ce\n }),\n groupEnd: O({}, e, {\n value: ve\n })\n });\n }\n A < 0 && d(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\");\n }\n }\n var q = x.ReactCurrentDispatcher, B;\n function L(e, r, t) {\n {\n if (B === void 0)\n try {\n throw Error();\n } catch (i) {\n var n = i.stack.trim().match(/\\n( *(at )?)/);\n B = n && n[1] || \"\";\n }\n return `\n` + B + e;\n }\n }\n var J = !1, M;\n {\n var qe = typeof WeakMap == \"function\" ? WeakMap : Map;\n M = new qe();\n }\n function pe(e, r) {\n if (!e || J)\n return \"\";\n {\n var t = M.get(e);\n if (t !== void 0)\n return t;\n }\n var n;\n J = !0;\n var i = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n var f;\n f = q.current, q.current = null, Ve();\n try {\n if (r) {\n var o = function() {\n throw Error();\n };\n if (Object.defineProperty(o.prototype, \"props\", {\n set: function() {\n throw Error();\n }\n }), typeof Reflect == \"object\" && Reflect.construct) {\n try {\n Reflect.construct(o, []);\n } catch (g) {\n n = g;\n }\n Reflect.construct(e, [], o);\n } else {\n try {\n o.call();\n } catch (g) {\n n = g;\n }\n e.call(o.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (g) {\n n = g;\n }\n e();\n }\n } catch (g) {\n if (g && n && typeof g.stack == \"string\") {\n for (var a = g.stack.split(`\n`), b = n.stack.split(`\n`), c = a.length - 1, v = b.length - 1; c >= 1 && v >= 0 && a[c] !== b[v]; )\n v--;\n for (; c >= 1 && v >= 0; c--, v--)\n if (a[c] !== b[v]) {\n if (c !== 1 || v !== 1)\n do\n if (c--, v--, v < 0 || a[c] !== b[v]) {\n var R = `\n` + a[c].replace(\" at new \", \" at \");\n return e.displayName && R.includes(\"<anonymous>\") && (R = R.replace(\"<anonymous>\", e.displayName)), typeof e == \"function\" && M.set(e, R), R;\n }\n while (c >= 1 && v >= 0);\n break;\n }\n }\n } finally {\n J = !1, q.current = f, Ne(), Error.prepareStackTrace = i;\n }\n var D = e ? e.displayName || e.name : \"\", j = D ? L(D) : \"\";\n return typeof e == \"function\" && M.set(e, j), j;\n }\n function Be(e, r, t) {\n return pe(e, !1);\n }\n function Je(e) {\n var r = e.prototype;\n return !!(r && r.isReactComponent);\n }\n function U(e, r, t) {\n if (e == null)\n return \"\";\n if (typeof e == \"function\")\n return pe(e, Je(e));\n if (typeof e == \"string\")\n return L(e);\n switch (e) {\n case T:\n return L(\"Suspense\");\n case y:\n return L(\"SuspenseList\");\n }\n if (typeof e == \"object\")\n switch (e.$$typeof) {\n case l:\n return Be(e.render);\n case P:\n return U(e.type, r, t);\n case S: {\n var n = e, i = n._payload, f = n._init;\n try {\n return U(f(i), r, t);\n } catch {\n }\n }\n }\n return \"\";\n }\n var F = Object.prototype.hasOwnProperty, ye = {}, be = x.ReactDebugCurrentFrame;\n function V(e) {\n if (e) {\n var r = e._owner, t = U(e.type, e._source, r ? r.type : null);\n be.setExtraStackFrame(t);\n } else\n be.setExtraStackFrame(null);\n }\n function Ke(e, r, t, n, i) {\n {\n var f = Function.call.bind(F);\n for (var o in e)\n if (f(e, o)) {\n var a = void 0;\n try {\n if (typeof e[o] != \"function\") {\n var b = Error((n || \"React class\") + \": \" + t + \" type `\" + o + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + typeof e[o] + \"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");\n throw b.name = \"Invariant Violation\", b;\n }\n a = e[o](r, o, n, t, null, \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\");\n } catch (c) {\n a = c;\n }\n a && !(a instanceof Error) && (V(i), d(\"%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\", n || \"React class\", t, o, typeof a), V(null)), a instanceof Error && !(a.message in ye) && (ye[a.message] = !0, V(i), d(\"Failed %s type: %s\", t, a.message), V(null));\n }\n }\n }\n var ze = Array.isArray;\n function K(e) {\n return ze(e);\n }\n function Ge(e) {\n {\n var r = typeof Symbol == \"function\" && Symbol.toStringTag, t = r && e[Symbol.toStringTag] || e.constructor.name || \"Object\";\n return t;\n }\n }\n function Xe(e) {\n try {\n return he(e), !1;\n } catch {\n return !0;\n }\n }\n function he(e) {\n return \"\" + e;\n }\n function ge(e) {\n if (Xe(e))\n return d(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\", Ge(e)), he(e);\n }\n var I = x.ReactCurrentOwner, He = {\n key: !0,\n ref: !0,\n __self: !0,\n __source: !0\n }, Ee, Re, z;\n z = {};\n function Ze(e) {\n if (F.call(e, \"ref\")) {\n var r = Object.getOwnPropertyDescriptor(e, \"ref\").get;\n if (r && r.isReactWarning)\n return !1;\n }\n return e.ref !== void 0;\n }\n function Qe(e) {\n if (F.call(e, \"key\")) {\n var r = Object.getOwnPropertyDescriptor(e, \"key\").get;\n if (r && r.isReactWarning)\n return !1;\n }\n return e.key !== void 0;\n }\n function er(e, r) {\n if (typeof e.ref == \"string\" && I.current && r && I.current.stateNode !== r) {\n var t = w(I.current.type);\n z[t] || (d('Component \"%s\" contains the string ref \"%s\". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref', w(I.current.type), e.ref), z[t] = !0);\n }\n }\n function rr(e, r) {\n {\n var t = function() {\n Ee || (Ee = !0, d(\"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)\", r));\n };\n t.isReactWarning = !0, Object.defineProperty(e, \"key\", {\n get: t,\n configurable: !0\n });\n }\n }\n function tr(e, r) {\n {\n var t = function() {\n Re || (Re = !0, d(\"%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)\", r));\n };\n t.isReactWarning = !0, Object.defineProperty(e, \"ref\", {\n get: t,\n configurable: !0\n });\n }\n }\n var nr = function(e, r, t, n, i, f, o) {\n var a = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: s,\n // Built-in properties that belong on the element\n type: e,\n key: r,\n ref: t,\n props: o,\n // Record the component responsible for creating this element.\n _owner: f\n };\n return a._store = {}, Object.defineProperty(a._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: !1\n }), Object.defineProperty(a, \"_self\", {\n configurable: !1,\n enumerable: !1,\n writable: !1,\n value: n\n }), Object.defineProperty(a, \"_source\", {\n configurable: !1,\n enumerable: !1,\n writable: !1,\n value: i\n }), Object.freeze && (Object.freeze(a.props), Object.freeze(a)), a;\n };\n function ar(e, r, t, n, i) {\n {\n var f, o = {}, a = null, b = null;\n t !== void 0 && (ge(t), a = \"\" + t), Qe(r) && (ge(r.key), a = \"\" + r.key), Ze(r) && (b = r.ref, er(r, i));\n for (f in r)\n F.call(r, f) && !He.hasOwnProperty(f) && (o[f] = r[f]);\n if (e && e.defaultProps) {\n var c = e.defaultProps;\n for (f in c)\n o[f] === void 0 && (o[f] = c[f]);\n }\n if (a || b) {\n var v = typeof e == \"function\" ? e.displayName || e.name || \"Unknown\" : e;\n a && rr(o, v), b && tr(o, v);\n }\n return nr(e, a, b, i, n, I.current, o);\n }\n }\n var G = x.ReactCurrentOwner, _e = x.ReactDebugCurrentFrame;\n function k(e) {\n if (e) {\n var r = e._owner, t = U(e.type, e._source, r ? r.type : null);\n _e.setExtraStackFrame(t);\n } else\n _e.setExtraStackFrame(null);\n }\n var X;\n X = !1;\n function H(e) {\n return typeof e == \"object\" && e !== null && e.$$typeof === s;\n }\n function me() {\n {\n if (G.current) {\n var e = w(G.current.type);\n if (e)\n return `\n\nCheck the render method of \\`` + e + \"`.\";\n }\n return \"\";\n }\n }\n function or(e) {\n return \"\";\n }\n var Ce = {};\n function ir(e) {\n {\n var r = me();\n if (!r) {\n var t = typeof e == \"string\" ? e : e.displayName || e.name;\n t && (r = `\n\nCheck the top-level render call using <` + t + \">.\");\n }\n return r;\n }\n }\n function Te(e, r) {\n {\n if (!e._store || e._store.validated || e.key != null)\n return;\n e._store.validated = !0;\n var t = ir(r);\n if (Ce[t])\n return;\n Ce[t] = !0;\n var n = \"\";\n e && e._owner && e._owner !== G.current && (n = \" It was passed a child from \" + w(e._owner.type) + \".\"), k(e), d('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', t, n), k(null);\n }\n }\n function Pe(e, r) {\n {\n if (typeof e != \"object\")\n return;\n if (K(e))\n for (var t = 0; t < e.length; t++) {\n var n = e[t];\n H(n) && Te(n, r);\n }\n else if (H(e))\n e._store && (e._store.validated = !0);\n else if (e) {\n var i = Ae(e);\n if (typeof i == \"function\" && i !== e.entries)\n for (var f = i.call(e), o; !(o = f.next()).done; )\n H(o.value) && Te(o.value, r);\n }\n }\n }\n function ur(e) {\n {\n var r = e.type;\n if (r == null || typeof r == \"string\")\n return;\n var t;\n if (typeof r == \"function\")\n t = r.propTypes;\n else if (typeof r == \"object\" && (r.$$typeof === l || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n r.$$typeof === P))\n t = r.propTypes;\n else\n return;\n if (t) {\n var n = w(r);\n Ke(t, e.props, \"prop\", n, e);\n } else if (r.PropTypes !== void 0 && !X) {\n X = !0;\n var i = w(r);\n d(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\", i || \"Unknown\");\n }\n typeof r.getDefaultProps == \"function\" && !r.getDefaultProps.isReactClassApproved && d(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\");\n }\n }\n function sr(e) {\n {\n for (var r = Object.keys(e.props), t = 0; t < r.length; t++) {\n var n = r[t];\n if (n !== \"children\" && n !== \"key\") {\n k(e), d(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\", n), k(null);\n break;\n }\n }\n e.ref !== null && (k(e), d(\"Invalid attribute `ref` supplied to `React.Fragment`.\"), k(null));\n }\n }\n var we = {};\n function Se(e, r, t, n, i, f) {\n {\n var o = Me(e);\n if (!o) {\n var a = \"\";\n (e === void 0 || typeof e == \"object\" && e !== null && Object.keys(e).length === 0) && (a += \" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.\");\n var b = or();\n b ? a += b : a += me();\n var c;\n e === null ? c = \"null\" : K(e) ? c = \"array\" : e !== void 0 && e.$$typeof === s ? (c = \"<\" + (w(e.type) || \"Unknown\") + \" />\", a = \" Did you accidentally export a JSX literal instead of a component?\") : c = typeof e, d(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\", c, a);\n }\n var v = ar(e, r, t, i, f);\n if (v == null)\n return v;\n if (o) {\n var R = r.children;\n if (R !== void 0)\n if (n)\n if (K(R)) {\n for (var D = 0; D < R.length; D++)\n Pe(R[D], e);\n Object.freeze && Object.freeze(R);\n } else\n d(\"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\");\n else\n Pe(R, e);\n }\n if (F.call(r, \"key\")) {\n var j = w(e), g = Object.keys(r).filter(function(pr) {\n return pr !== \"key\";\n }), Z = g.length > 0 ? \"{key: someKey, \" + g.join(\": ..., \") + \": ...}\" : \"{key: someKey}\";\n if (!we[j + Z]) {\n var dr = g.length > 0 ? \"{\" + g.join(\": ..., \") + \": ...}\" : \"{}\";\n d(`A props object containing a \"key\" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />`, Z, j, dr, j), we[j + Z] = !0;\n }\n }\n return e === E ? sr(v) : ur(v), v;\n }\n }\n function fr(e, r, t) {\n return Se(e, r, t, !0);\n }\n function lr(e, r, t) {\n return Se(e, r, t, !1);\n }\n var cr = lr, vr = fr;\n $.Fragment = E, $.jsx = cr, $.jsxs = vr;\n }()), $;\n}\nprocess.env.NODE_ENV === \"production\" ? Q.exports = _r() : Q.exports = mr();\nvar Cr = Q.exports;\nfunction Tr(u) {\n const s = N(u), h = N(0);\n return Er(u, s.current) || (s.current = u, h.current += 1), ee(() => s.current, [h.current]);\n}\nfunction Pr(u, s) {\n return br(u, Tr(s));\n}\nconst te = yr(null);\nfunction Or({\n children: u,\n locale: s,\n space: h,\n environment: E,\n debugMode: _ = !1,\n enableInspectorMode: m = !0,\n enableLiveUpdates: C = !0,\n targetOrigin: p,\n experimental: l\n}) {\n if (!s)\n throw new Error(\n 'ContentfulLivePreviewProvider have to be called with a locale property (for example: `<ContentfulLivePreviewProvider locale=\"en-US\">{children}</ContentfulLivePreviewProvider>`'\n );\n re.init({\n locale: s,\n space: h,\n environment: E,\n debugMode: _,\n enableInspectorMode: m,\n enableLiveUpdates: C,\n targetOrigin: p,\n experimental: l\n });\n const T = ee(\n () => ({\n locale: s,\n space: h,\n environment: E,\n debugMode: _,\n enableInspectorMode: m,\n enableLiveUpdates: C,\n targetOrigin: p\n }),\n [s, h, E, _, m, C, p]\n );\n return /* @__PURE__ */ Cr.jsx(te.Provider, { value: T, children: u });\n}\nfunction jr(u, s, h = !1) {\n const [E, _] = hr({ data: u, version: 1 }), m = N(u), C = N(Rr(_)), p = ke(te), l = typeof s == \"object\" ? s : { locale: s, skip: h }, T = ee(() => p && !p.enableLiveUpdates || l.skip ? !1 : !!(Array.isArray(u) && u.length || u && typeof u == \"object\" && Object.keys(u).length), [p, l.skip, u]);\n return Pr(() => {\n if (m.current !== u && (_({ data: u, version: 1 }), m.current = u), !!T)\n return re.subscribe(\"edit\", {\n data: u,\n locale: l.locale,\n query: l.query,\n callback: (y) => {\n C.current((P) => ({ data: y, version: P.version + 1 }));\n }\n });\n }, [u, T, l.locale, l.query]), E.data;\n}\nfunction xr(u) {\n const s = ke(te);\n return gr(\n (h) => s != null && s.enableInspectorMode ? re.getProps({ ...u, ...h }) : null,\n [s == null ? void 0 : s.enableInspectorMode, u]\n );\n}\nexport {\n Or as ContentfulLivePreviewProvider,\n xr as useContentfulInspectorMode,\n jr as useContentfulLiveUpdates,\n Pr as useDeepCompareEffectNoCheck,\n Tr as useDeepCompareMemoize\n};\n//# sourceMappingURL=react.js.map\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { KlevuConfig } from \"../config.js\";\nexport function get(url, ignoreResult = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const axios = KlevuConfig.getDefault().axios;\n if (axios) {\n return (yield axios.get(url)).data;\n }\n const res = yield fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n if (ignoreResult) {\n return undefined;\n }\n return (yield res.json());\n });\n}\nexport function post(url, data, ignoreResult = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const sendAsFormData = data instanceof FormData;\n const axios = KlevuConfig.getDefault().axios;\n if (axios) {\n try {\n const res = yield axios.post(url, data, {\n headers: sendAsFormData\n ? undefined\n : {\n \"Content-Type\": \"application/json\",\n },\n });\n return res.data;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n catch (error) {\n return error.response.data;\n }\n }\n // Fetch will always return value. Even with 500 errors.\n const res = yield fetch(url, {\n method: \"POST\",\n headers: sendAsFormData\n ? undefined\n : {\n \"Content-Type\": \"application/json\",\n },\n body: sendAsFormData ? data : JSON.stringify(data),\n });\n if (ignoreResult) {\n return undefined;\n }\n return (yield res.json());\n });\n}\n","export const isBrowser = () => ![typeof window, typeof document].includes(\"undefined\");\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { KlevuConfig, } from \"../index.js\";\nimport { get, post } from \"../connection/fetch.js\";\nimport { isBrowser } from \"../utils/isBrowser.js\";\nconst KEY_PENDING_REQUESTS = \"klevu-pending-analytics\";\nexport function KlevuEventV1Search(event) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = `${KlevuConfig.getDefault().eventsApiV1Url}n-search/search`;\n const id = addPendingRequest(url, event);\n const res = yield sendGenericPostEvent(url, event);\n if (id) {\n removePendingRequest(id);\n }\n return res;\n });\n}\nexport function KlevuEventV1ProductTracking(event) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = `${KlevuConfig.getDefault().eventsApiV1Url}productTracking`;\n const id = addPendingRequest(url, event);\n const res = yield sendGenericPostEvent(url, event);\n if (id) {\n removePendingRequest(id);\n }\n return res;\n });\n}\nexport function KlevuEventV2CheckedOutProducts(event) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = `${KlevuConfig.getDefault().eventsApiV2Url}`;\n const id = addPendingRequest(url, event);\n const res = yield sendGenericPostEvent(url, event);\n if (id) {\n removePendingRequest(id);\n }\n return res;\n });\n}\nexport function KlevuEventV1CategoryView(event) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = `${KlevuConfig.getDefault().eventsApiV1Url}categoryProductViewTracking`;\n const id = addPendingRequest(url, event);\n const res = yield sendGenericPostEvent(url, event);\n if (id) {\n removePendingRequest(id);\n }\n return res;\n });\n}\nexport function KlevuEventV1CategoryProductClick(event) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = `${KlevuConfig.getDefault().eventsApiV1Url}categoryProductClickTracking`;\n const id = addPendingRequest(url, event);\n const res = yield sendGenericPostEvent(url, event);\n if (id) {\n removePendingRequest(id);\n }\n return res;\n });\n}\nexport function KlevuEventV1BannerClick(event) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = `${KlevuConfig.getDefault().eventsApiV1Url}dataTracking`;\n const id = addPendingRequest(url, event);\n const res = yield sendGenericPostEvent(url, event);\n if (id) {\n removePendingRequest(id);\n }\n return res;\n });\n}\nexport function KlevuEventV2(data) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = KlevuConfig.getDefault().eventsApiV2Url;\n const id = addPendingRequest(url, data);\n const res = yield post(url, data, true);\n if (id) {\n removePendingRequest(id);\n }\n return res;\n });\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction sendGenericPostEvent(url, data) {\n return __awaiter(this, void 0, void 0, function* () {\n const formData = new FormData();\n for (const key in data) {\n if (data[key] !== undefined) {\n formData.append(key, data[key]);\n }\n }\n if (isBrowser() && navigator.sendBeacon) {\n if (navigator.sendBeacon(url, formData)) {\n return;\n }\n }\n return yield post(url, formData, true);\n });\n}\nfunction addPendingRequest(url, data) {\n if (!isBrowser()) {\n return;\n }\n let requests = [];\n const old = window.sessionStorage.getItem(KEY_PENDING_REQUESTS);\n if (old) {\n try {\n requests = JSON.parse(old);\n }\n catch (_a) {\n window.sessionStorage.removeItem(KEY_PENDING_REQUESTS);\n }\n }\n const id = generateUID();\n requests.push({ id, url, data });\n window.sessionStorage.setItem(KEY_PENDING_REQUESTS, JSON.stringify(requests));\n return id;\n}\nfunction removePendingRequest(id) {\n if (!isBrowser()) {\n return;\n }\n const data = window.sessionStorage.getItem(KEY_PENDING_REQUESTS);\n if (!data) {\n console.error(\"No pending requests!\");\n return;\n }\n try {\n const requests = JSON.parse(data);\n requests.splice(requests.findIndex((r) => r.id === id), 1);\n window.sessionStorage.setItem(KEY_PENDING_REQUESTS, JSON.stringify(requests));\n }\n catch (e) {\n console.error(\"Failed to save pending request\");\n }\n}\nexport function runPendingAnalyticalRequests() {\n var _a, e_1, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n if (!isBrowser()) {\n return;\n }\n const data = window.sessionStorage.getItem(KEY_PENDING_REQUESTS);\n if (!data) {\n return;\n }\n const requests = JSON.parse(data);\n try {\n for (var _d = true, requests_1 = __asyncValues(requests), requests_1_1; requests_1_1 = yield requests_1.next(), _a = requests_1_1.done, !_a; _d = true) {\n _c = requests_1_1.value;\n _d = false;\n const request = _c;\n try {\n if (request.data) {\n yield sendGenericPostEvent(request.url, request.data);\n }\n else {\n yield get(request.url, true);\n }\n removePendingRequest(request.id);\n }\n catch (e) {\n // we ignore errors here\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = requests_1.return)) yield _b.call(requests_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n}\nfunction generateUID() {\n let firstPart = (Math.random() * 46656) | 0;\n let secondPart = (Math.random() * 46656) | 0;\n firstPart = (\"000\" + firstPart.toString(36)).slice(-3);\n secondPart = (\"000\" + secondPart.toString(36)).slice(-3);\n return firstPart + secondPart;\n}\n","import { runPendingAnalyticalRequests } from \"./events/eventRequests.js\";\nimport { isBrowser } from \"./utils/index.js\";\nexport class KlevuConfig {\n constructor(config) {\n var _a;\n this.cacheMaxTTL = 600000;\n this.eventsApiV1Url = \"https://stats.ksearchnet.com/analytics/\";\n this.eventsApiV2Url = \"https://stats.ksearchnet.com/analytics/collect\";\n this.recommendationsApiUrl = \"https://config-cdn.ksearchnet.com/recommendations/\";\n this.moiApiUrl = \"https://moi-ai.ksearchnet.com/\";\n this.disableClickTracking = false;\n this.apiKey = config.apiKey;\n this.url = config.url;\n if (config.moiApiUrl) {\n this.moiApiUrl = config.moiApiUrl;\n }\n if (config.cacheMaxTTL) {\n this.cacheMaxTTL = config.cacheMaxTTL;\n }\n if (config.axios) {\n this.axios = config.axios.create();\n }\n if (config.eventsApiV1Url) {\n this.eventsApiV1Url = config.eventsApiV1Url;\n }\n if (config.eventsApiV2Url) {\n this.eventsApiV2Url = config.eventsApiV2Url;\n }\n if (config.recommendationsApiUrl) {\n this.recommendationsApiUrl = config.recommendationsApiUrl;\n }\n this.disableClickTracking = (_a = config.disableClickTrackStoring) !== null && _a !== void 0 ? _a : false;\n }\n static init(config) {\n KlevuConfig.default = new KlevuConfig(config);\n runPendingAnalyticalRequests();\n }\n static getDefault() {\n if (!KlevuConfig.default) {\n throw new Error(\"Configuration missing\");\n }\n return KlevuConfig.default;\n }\n}\nKlevuConfig.default = loadFromGlobal();\nfunction loadFromGlobal() {\n if (!isBrowser()) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cfg = window.KlevuConfig;\n if (!cfg) {\n return undefined;\n }\n return new KlevuConfig(cfg);\n}\n","/**\n * Filter types Klevu support\n */\nexport var KlevuFilterType;\n(function (KlevuFilterType) {\n KlevuFilterType[\"Options\"] = \"OPTIONS\";\n KlevuFilterType[\"Slider\"] = \"SLIDER\";\n KlevuFilterType[\"Rating\"] = \"RATING\";\n})(KlevuFilterType || (KlevuFilterType = {}));\n","export var AdvancedSortingDiretion;\n(function (AdvancedSortingDiretion) {\n AdvancedSortingDiretion[\"Ascending\"] = \"ASC\";\n AdvancedSortingDiretion[\"Descending\"] = \"DESC\";\n})(AdvancedSortingDiretion || (AdvancedSortingDiretion = {}));\n","export var KlevuFilterOrder;\n(function (KlevuFilterOrder) {\n /**\n * Sort options based on the number of records each option has in the result\n * set.\n */\n KlevuFilterOrder[\"Frequency\"] = \"FREQ\";\n /**\n * 'INDEX' will sort the options alphabetically.\n */\n KlevuFilterOrder[\"Index\"] = \"INDEX\";\n})(KlevuFilterOrder || (KlevuFilterOrder = {}));\n","export var KlevuSearchPreference;\n(function (KlevuSearchPreference) {\n KlevuSearchPreference[\"showOutOfStockProducts\"] = \"showOutOfStockProducts\";\n /**\n * \tWhether or not your store should include 'Out of Stock' products in search\n * \tresults by default can be configured within the Klevu Merchant Centre.\n * \tHowever, if you would like to override this for a particular query, please\n * \tinclude one of these flags.\n */\n KlevuSearchPreference[\"hideOutOfStockProducts\"] = \"hideOutOfStockProducts\";\n /**\n * \tThis can be used in conjunction with showOutOfStockProducts. If your store\n * \tis configured to display out of stock products, they will be displayed at\n * \tthe very end of the search results after all in stock products have been\n * \tdisplayed. By using this flag you can disable this logic, and cause all\n * \tproducts to be ranked in an order that disregards their stock status.\n */\n KlevuSearchPreference[\"disableStockSorting\"] = \"disableStockSorting\";\n /**\n * \tBy default, functional words such as prepositions, pronouns, articles,\n * \tetc. are excluded from searches. Add this flag to include these stopwords\n * \tin your search.\n */\n KlevuSearchPreference[\"includeStopwords\"] = \"includeStopwords\";\n /**\n * \tUse this flag to disable the searching of record IDs.\n */\n KlevuSearchPreference[\"excludeIds\"] = \"excludeIds\";\n /**\n * , excludeDescription Whether or not a record's 'description' is considered\n * for search results can be configured by Klevu Support on a store by store\n * basis, however if you would like to override this for a particular query,\n * please include one of these flags.\n */\n KlevuSearchPreference[\"includeDescription\"] = \"includeDescription\";\n /**\n * \tThis flag can be used in conjunction with the typeOfSearch 'DEFAULT' to\n * \tdisable the FUZZY_AND and FUZZY_OR search types from being attempted.\n */\n KlevuSearchPreference[\"disableFuzzyMatch\"] = \"disableFuzzyMatch\";\n /**\n * \tThis flag can be used in conjunction with the typeOfSearch 'DEFAULT' to\n * \tdisable the WILDCARD_AND and WILDCARD_OR search types from being\n * \tattempted.\n */\n KlevuSearchPreference[\"disableWildcard\"] = \"disableWildcard\";\n /**\n * \tThis flag can be used in conjunction with the typeOfSearch 'DEFAULT' to\n * \tdisable the WILDCARD_OR and FUZZY_OR search types from being attempted.\n */\n KlevuSearchPreference[\"disableORSearch\"] = \"disableORSearch\";\n /**\n * Enable partial match for the last word of a query, where the last word\n * searched can be a substring of any other word found in a record. This can\n * be useful for non-English languages.\n *\n * For example let's say a product has the name \"rödvinsglas\" (red wine\n * glass). If searching for \"högt glas\" (tall glass) it may not match since\n * the record has no words starting with 'glas'. By providing this flag, the\n * search would become \"högt *glas*\" meaning it would match the record since\n * it contains a word which ends with 'glas'.\n *\n */\n KlevuSearchPreference[\"partialMatch\"] = \"partialMatch\";\n /**\n * \tSimilar to partialMatch, but for all words rather than just the last. In\n * \tthe same \"rödvinsglas\" example, a search for \"högt glas\" would become\n * \t\"*högt* *glas*\", so any records containing words containing 'högt' or\n * \t'glas' would result in a match.\n */\n KlevuSearchPreference[\"partialMatchForAllWords\"] = \"partialMatchForAllWords\";\n /**\n * \tFor a query longer than one word, all the possible bigrams and trigrams\n * \t(i.e. formed out of query terms) are looked up in records and the ones\n * \thaving one or more of them are boosted higher up in the search results.\n * \tYou can use this flag to disable such boosting.\n */\n KlevuSearchPreference[\"disableWordShingles\"] = \"disableWordShingles\";\n /**\n * When a compound word is searched for, i.e. two or more individual words\n * joined together as one word, Klevu automatically disjoints them if the\n * de-compounding feature is enabled for your store.\n *\n * For example, a search for \"fairylights\" would be treated as \"fairy lights\",\n * but with the added condition that those words must appear within 5 words of\n * each other in a matching record.\n *\n * If you would prefer that the words \"fairy\" and \"light\" could be found\n * anywhere within the record, not necessarily near one another, then please\n * include this flag.\n */\n KlevuSearchPreference[\"searchCompoundsAsAndQuery\"] = \"searchCompoundsAsAndQuery\";\n /**\n * \tBy default, synonyms are treated equally to their query term. Should you\n * \twish to give higher priority to the actual terms your customer entered in\n * \tthe query over their synonyms, please include this flag in your search\n * \tpreferences.\n */\n KlevuSearchPreference[\"enableBoostingOriginalTermsInSynonyms\"] = \"enableBoostingOriginalTermsInSynonyms\";\n /**\n * It is possible to configure which facets or filters should be enabled or\n * disabled within the Klevu Merchant Centre. By including this flag, all\n * facets will be returned regardless of whether they have been disabled in\n * the KMC.\n */\n KlevuSearchPreference[\"showDisabledFacets\"] = \"showDisabledFacets\";\n /**\n * By default some filters are excluded from the results if they only have a\n * small number of results. Please use this flag to override this logic and\n * include all filters in the response.\n */\n KlevuSearchPreference[\"showFiltersWithSmallCount\"] = \"showFiltersWithSmallCount\";\n /**\n * When the typeOfRequest is 'CATNAV', the filter for 'Category' is\n * automatically excluded since you are already within the context of a\n * category. Use this flag to override this logic and return the category\n * filters even for CatNav requests.\n */\n KlevuSearchPreference[\"includeCategoryFilterInCatNav\"] = \"includeCategoryFilterInCatNav\";\n /**\n * Include the score information with the response fields: score,\n * klevu_manual_boosting, klevu_bulk_boosting and klevu_selflearning_boosting.\n */\n KlevuSearchPreference[\"enableScores\"] = \"enableScores\";\n /**\n * Use this flag to include additional information about the query execution.\n * This information is populated in the meta object of the response.\n *\n * Please note that it is not recommended to enable this flag in your\n * Production environment, as performance will be impacted.\n */\n KlevuSearchPreference[\"debugQuery\"] = \"debugQuery\";\n /**\n * @TODO: Most probably ignores manual boostin. Needs proper documentation\n */\n KlevuSearchPreference[\"ignoreManualBoosting\"] = \"ignoreManualBoosting\";\n})(KlevuSearchPreference || (KlevuSearchPreference = {}));\n","export var KlevuSearchSorting;\n(function (KlevuSearchSorting) {\n /**\n * This is the default sort order, which uses a combination of Klevu A.I. and\n * your own merchandising configuration to determine the order of the results.\n * Please read this article for more information about how Klevu ranks and\n * orders the results.\n */\n KlevuSearchSorting[\"Relevance\"] = \"RELEVANCE\";\n /**\n * Sort the results by the salePrice value of each record.\n */\n KlevuSearchSorting[\"PriceAsc\"] = \"PRICE_ASC\";\n /**\n * Sort the results by the salePrice value of each record.\n */\n KlevuSearchSorting[\"PriceDesc\"] = \"PRICE_DESC\";\n /**\n * Sort the results by the name of each record, in alphabetical order.\n */\n KlevuSearchSorting[\"NameAsc\"] = \"NAME_ASC\";\n /**\n * Sort the results by the name of each record, in alphabetical order.\n */\n KlevuSearchSorting[\"NameDesc\"] = \"NAME_DESC\";\n /**\n * Sort the results by each record's average rating, if this data has been\n * indexed in your store.\n */\n KlevuSearchSorting[\"RatingAsc\"] = \"RATING_ASC\";\n /**\n * Sort the results by each record's average rating, if this data has been\n * indexed in your store.\n */\n KlevuSearchSorting[\"RatingDesc\"] = \"RATING_DESC\";\n /**\n * Sort your records based on their published date. Please see support article\n * for important information about sorting by newness.\n */\n KlevuSearchSorting[\"NewArrivalAsc\"] = \"NEW_ARRIVAL_ASC\";\n /**\n * Sort your records based on their published date. Please see support article\n * for important information about sorting by newness.\n */\n KlevuSearchSorting[\"NewArrivalDesc\"] = \"NEW_ARRIVAL_DESC\";\n /**\n * Advanced sorting method that requires list of keys to be sorted with. Recommended use `advancedSorting()` modifier instead of specifying this\n */\n KlevuSearchSorting[\"AdvancedSorting\"] = \"ADVANCED_SORT\";\n})(KlevuSearchSorting || (KlevuSearchSorting = {}));\n","export var KlevuTypeOfRecord;\n(function (KlevuTypeOfRecord) {\n KlevuTypeOfRecord[\"Product\"] = \"KLEVU_PRODUCT\";\n KlevuTypeOfRecord[\"Cms\"] = \"KLEVU_CMS\";\n KlevuTypeOfRecord[\"Category\"] = \"KLEVU_CATEGORY\";\n KlevuTypeOfRecord[\"Image\"] = \"KLEVU_IMAGE\";\n})(KlevuTypeOfRecord || (KlevuTypeOfRecord = {}));\n","export var KlevuTypeOfRequest;\n(function (KlevuTypeOfRequest) {\n KlevuTypeOfRequest[\"Search\"] = \"SEARCH\";\n KlevuTypeOfRequest[\"Suggestion\"] = \"AUTO_SUGGESTIONS\";\n KlevuTypeOfRequest[\"CategoryNavigation\"] = \"CATNAV\";\n KlevuTypeOfRequest[\"NewArrivals\"] = \"RECS_NEW_ARRIVALS\";\n KlevuTypeOfRequest[\"SimilarProducts\"] = \"RECS_SIMILAR\";\n KlevuTypeOfRequest[\"Trending\"] = \"RECS_TRENDING\";\n KlevuTypeOfRequest[\"AlsoViewed\"] = \"RECS_ALSO_VIEWED\";\n KlevuTypeOfRequest[\"AlsoBought\"] = \"RECS_ALSO_BOUGHT\";\n KlevuTypeOfRequest[\"VisuallySimilar\"] = \"RECS_SIMILAR_IMAGES\";\n KlevuTypeOfRequest[\"Custom\"] = \"RECS_CUSTOM\";\n // Special type where we skip request to Klevu services, but run everything else\n KlevuTypeOfRequest[\"Skip\"] = \"SKIP\";\n})(KlevuTypeOfRequest || (KlevuTypeOfRequest = {}));\n","export var KlevuTypeOfSearch;\n(function (KlevuTypeOfSearch) {\n /**\n * When this value is specified, Klevu will go through a number of attempts to\n * find matching records. The first type attempted is WILDCARD_AND. If there\n * aren't any results found, Klevu tries to find products with the FUZZY_AND\n * query type.\n *\n * As long as no matches are found, Klevu will continue to fire different query\n * types in the following order:\n *\n * WILDCARD_AND\n * FUZZY_AND\n * WILDCARD_OR\n * FUZZY_OR\n * Note that when a search term only contains a single word, or more than six\n * words, the 'OR' query types will be skipped.\n */\n KlevuTypeOfSearch[\"Default\"] = \"DEFAULT\";\n /**\n * This is an 'AND' query so all words of the query must be found somewhere in a\n * record for it to be included in the results. The last word of the query will\n * have a wildcard suffix appended.\n *\n * For example, if the searched query is \"hooded jacket\", this will become\n * \"hooded jacket*\", ie. Klevu will try to find records containing the word\n * \"hooded\" AND any words beginning with \"jacket\".\n */\n KlevuTypeOfSearch[\"WildcardAnd\"] = \"WILDCARD_AND\";\n /**\n * This is the same as a WILDCARD_AND query, however a certain amount of\n * 'fuzziness' is allowed to account for spelling mistakes.\n *\n * For example, if the searched query contains spelling mistakes like \"hooder\n * jakcet\", Klevu will still be able to match any records containing the words\n * \"hooded\" AND \"jacket\".\n */\n KlevuTypeOfSearch[\"FuzzyAnd\"] = \"FUZZY_AND\";\n /**\n * This is an 'OR' query so at least one of the words in the query must be found\n * somewhere in a record for it to be included in the results. The last word of\n * the query will have a wildcard suffix appended.\n *\n * For example, if the searched query is \"hooded jacket\", this will become\n * \"hooded jacket*\", ie. Klevu will try to find records containing the word\n * \"hooded\" OR any words beginning with \"jacket\".\n */\n KlevuTypeOfSearch[\"WildcardOr\"] = \"WILDCARD_OR\";\n /**\n * This is the same as a WILDCARD_OR query, however a certain amount of\n * 'fuzziness' is allowed to account for spelling mistakes.\n *\n * For example, if the searched query contains spelling mistakes like \"hooder\n * jakcet\", Klevu will still be able to match any records containing the words\n * \"hooded\" OR \"jacket\".\n */\n KlevuTypeOfSearch[\"FuzzyOr\"] = \"FUZZY_OR\";\n /**\n * All of the exact words of a query must be found in a record for it to be\n * included in the results. No fuzziness or wildcards are included.\n *\n * For example a search for \"hooded jacket\" will only return records which\n * contain the exact terms \"hooded\" AND \"jacket\".\n */\n KlevuTypeOfSearch[\"And\"] = \"AND\";\n /**\n * At least one exact word of a query must be found in a record for it to be\n * included in a results. No fuzziness or wildcards are included.\n *\n * For example a search for \"hooded jacket\" will only return records which\n * contain one of the exact terms \"hooded\" OR \"jacket\".\n */\n KlevuTypeOfSearch[\"Or\"] = \"OR\";\n})(KlevuTypeOfSearch || (KlevuTypeOfSearch = {}));\n","/**\n * @category KlevuEvents\n * Global custom document events that @klevu/core sends\n */\nexport var KlevuDomEvents;\n(function (KlevuDomEvents) {\n /**\n * When list of last searched terms update\n */\n KlevuDomEvents[\"LastSearchUpdate\"] = \"klevu-last-search-update\";\n /**\n * When filter manager selection has changed\n */\n KlevuDomEvents[\"FilterSelectionUpdate\"] = \"klevu-filter-selection-updates\";\n /**\n * When filters have been applied from results\n */\n KlevuDomEvents[\"FiltersApplied\"] = \"klevu-filters-applied\";\n /**\n * When any click event has been fired on the page\n */\n KlevuDomEvents[\"ClickEventSent\"] = \"klevu-click-event-sent\";\n})(KlevuDomEvents || (KlevuDomEvents = {}));\n/**\n * Helper function to listen Klevu Dom events\n *\n * @example ```ts\n * import { KlevuDomEvents, KlevuListenDomEvent } from '@klevu/core'\n *\n * // Event to listen\n * const stopListen = KlevuListenDomEvent(KlevuDomEvents.LastSearchUpdate, (event) => {\n * console.log('last search updated!', event.detail)\n * })\n *\n * // stop listening\n * stopListen();\n * ```\n *\n * @category KlevuEvents\n * @param klevuDomEvent What event to listen\n * @param callback What to do when event is fired\n * @returns Function to stop listening\n */\nexport function KlevuListenDomEvent(klevuDomEvent, callback) {\n document.addEventListener(klevuDomEvent, callback);\n return () => {\n document.removeEventListener(klevuDomEvent, callback);\n };\n}\n","/**\n * Type safe version to remove nulls and undefineds from array\n *\n * usage: `myArray.filter(notEmpty)`\n *\n * @param value\n * @returns\n */\nexport function notEmpty(value) {\n return value !== null && value !== undefined;\n}\n","import { notEmpty } from \"../utils/notEmpty.js\";\nimport { isBrowser } from \"../utils/isBrowser.js\";\nimport { KlevuDomEvents } from \"../events/KlevuDomEvents.js\";\nimport { KlevuConfig } from \"../config.js\";\nconst ONE_HOUR = 36000000;\nconst STORAGE_KEY = \"klevu-last-clicks\";\n/**\n * Keeps track of last clicked products in store\n */\nclass LastClickedProducts {\n save() {\n if (KlevuConfig.getDefault().disableClickTracking) {\n return;\n }\n if (isBrowser() && window.localStorage) {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(this.clicks));\n }\n }\n restore() {\n if (isBrowser() && window.localStorage) {\n const res = window.localStorage.getItem(STORAGE_KEY);\n if (res) {\n this.clicks = JSON.parse(res);\n }\n }\n }\n constructor() {\n this.categoryCache = {};\n this.clicks = [];\n this.restore();\n }\n /**\n * Should be called when product is clicked\n *\n * @param productId\n */\n click(productId, product) {\n if (KlevuConfig.getDefault().disableClickTracking) {\n return;\n }\n this.clicks.push({\n ts: new Date(),\n id: productId,\n product,\n });\n this.save();\n if (isBrowser()) {\n document.dispatchEvent(new CustomEvent(KlevuDomEvents.ClickEventSent, {\n detail: {\n productId,\n product,\n },\n }));\n }\n }\n /**\n * Gets last clicked products so that latest click is first item in array\n *\n * @param n\n * @returns\n */\n getLastClickedLatestsFirst(n = 10) {\n if (KlevuConfig.getDefault().disableClickTracking) {\n console.warn(\"Click tracking is disabled. Returning empty array.\");\n return [];\n }\n return Array.from(this.clicks.map((i) => i.id))\n .reverse()\n .slice(0, n);\n }\n /**\n * Get last clicked products returning last clicked product first\n *\n * @param n amount of products to return\n * @returns\n */\n getProducts(n = 10) {\n if (KlevuConfig.getDefault().disableClickTracking) {\n console.warn(\"Click tracking is disabled. Returning empty array.\");\n return [];\n }\n return Array.from(this.clicks.map((i) => i.product).filter(notEmpty))\n .reverse()\n .slice(0, n);\n }\n /**\n * Get id's for personlisation of category merchandising\n *\n * @param categoryPath any string that is used to cache results\n * @returns\n */\n getCategoryPersonalisationIds(categoryPath) {\n if (KlevuConfig.getDefault().disableClickTracking) {\n console.warn(\"Click tracking is disabled. Returning empty array.\");\n return [];\n }\n const currentClicks = this.clicks;\n if (currentClicks.length < 3) {\n return [];\n }\n if (this.categoryCache[categoryPath]) {\n if (new Date(this.categoryCache[categoryPath].cached).getTime() >\n new Date().getTime() - ONE_HOUR) {\n return this.categoryCache[categoryPath].ids;\n }\n }\n const itemsToTake = Math.floor(currentClicks.length / 3) * 3;\n const ids = Array.from(currentClicks)\n .reverse()\n .slice(0, itemsToTake)\n .map((i) => i.id);\n this.categoryCache[categoryPath] = {\n cached: new Date(),\n ids,\n };\n return ids;\n }\n}\nexport const KlevuLastClickedProducts = new LastClickedProducts();\n","import { KlevuDomEvents } from \"../events/KlevuDomEvents.js\";\nimport { isBrowser } from \"../utils/index.js\";\nconst SAVE_KEY = \"klevu-last-searches\";\nlet lastSearches = [];\nif (isBrowser()) {\n const res = window.localStorage.getItem(SAVE_KEY);\n if (res) {\n lastSearches = JSON.parse(res);\n }\n}\nconst MAX_COUNT = 5;\nexport const KlevuLastSearches = {\n /**\n * Saves last searched term. If there is previous it's moved to as last item\n *\n * @param term searched term\n */\n save: (term) => {\n const lastIndex = lastSearches.findIndex((ls) => ls.term === term);\n if (lastIndex > -1) {\n lastSearches.splice(lastIndex, 1);\n }\n lastSearches.push({\n timestamp: new Date().getTime(),\n term: term,\n });\n if (lastSearches.length > MAX_COUNT * 2) {\n lastSearches = lastSearches.slice(MAX_COUNT * -2);\n }\n if (isBrowser()) {\n document.dispatchEvent(new CustomEvent(KlevuDomEvents.LastSearchUpdate));\n window.localStorage.setItem(SAVE_KEY, JSON.stringify(lastSearches));\n }\n },\n /**\n *\n * @returns five latests searches\n */\n get: () => {\n return lastSearches.slice(MAX_COUNT * -1);\n },\n};\n","import { KlevuConfig, } from \"../index.js\";\nimport { KlevuLastClickedProducts } from \"../store/lastClickedProducts.js\";\nimport { KlevuLastSearches } from \"../store/lastSearches.js\";\nimport { KlevuEventV1CategoryProductClick, KlevuEventV1CategoryView, KlevuEventV1ProductTracking, KlevuEventV1Search, KlevuEventV2, KlevuEventV2CheckedOutProducts, KlevuEventV1BannerClick, } from \"./eventRequests.js\";\n/**\n * @category KlevuEvents\n */\nexport class KlevuEvents {\n /**\n * Tell Klevu what products where bought by the user\n *\n * @param items Items user bought\n * @property amount count of bought products\n * @property product KlevuProduct that is being bought\n * @property variantId optional variantId that is being bought\n * @property override optional override any settings of sent data\n *\n */\n static buy({ user, items, }) {\n const data = {\n event: \"order_purchase\",\n event_version: \"1.0.0\",\n event_apikey: KlevuConfig.getDefault().apiKey,\n user_profile: user,\n event_data: {\n items: items.map((i) => {\n var _a, _b, _c, _d, _e, _f;\n return (Object.assign({ currency: (_a = i.product.currency) !== null && _a !== void 0 ? _a : \"USD\", item_group_id: (_b = i.product.itemGroupId) !== null && _b !== void 0 ? _b : i.product.id, item_id: i.product.id, item_name: (_c = i.product.name) !== null && _c !== void 0 ? _c : \"unknown\", item_variant_id: (_d = i.variantId) !== null && _d !== void 0 ? _d : i.product.id, unit_price: parseFloat((_e = i.product.salePrice) !== null && _e !== void 0 ? _e : \"0\"), order_id: i.orderId, order_line_id: i.orderLineId, units: i.amount }, ((_f = i.override) !== null && _f !== void 0 ? _f : {})));\n }),\n },\n };\n KlevuEventV2CheckedOutProducts(data);\n }\n /**\n * When recommendation banner is shown in the page\n *\n * @param recommendation Metadata of what recommendation is shown\n * @param products List of all products that are shown\n * @param override Ability to override any analytical keys in low level\n */\n static recommendationView({ recommendationMetadata, products, override = {}, }) {\n const data = {\n event: \"view_recs_list\",\n event_version: \"1.0.0\",\n event_apikey: KlevuConfig.getDefault().apiKey,\n event_data: {\n list_id: recommendationMetadata.recsKey,\n list_logic: recommendationMetadata.logic,\n list_name: recommendationMetadata.title,\n action: recommendationMetadata.action,\n spot_id: recommendationMetadata.spotKey,\n spot_name: recommendationMetadata.spotName,\n items: products &&\n products.map((p, index) => {\n var _a, _b;\n if (!p.id) {\n throw new Error(\"Cannot send event without product id\");\n }\n return {\n index: index + 1,\n item_id: p.id,\n item_group_id: p.itemGroupId || p.id,\n item_name: (_a = p.name) !== null && _a !== void 0 ? _a : \"unknown\",\n item_variant_id: p.variantId || p.id,\n price: (_b = p.price) !== null && _b !== void 0 ? _b : \"0\",\n currency: p.currency,\n item_brand: p.brand,\n item_category: p.category,\n };\n }),\n },\n };\n KlevuEventV2([\n Object.assign(Object.assign({}, data), override),\n ]);\n }\n /**\n * When product has been clicked in the recommendation banner\n *\n * @param recommendationMetadata Metadata of what recommendation is clicked\n * @param bannerInfo Information about the static banner that is shown\n * @param product Which product is clicked in the list\n * @param productIndexInList What is the index of the product in the list. Starting from 1\n * @param override Ability to override any analytical keys in low level\n */\n static recommendationClick({ recommendationMetadata, product, bannerInfo, productIndexInList, variantId, override = {}, }) {\n var _a, _b;\n if (product) {\n KlevuLastClickedProducts.click(product.id, product);\n }\n const data = {\n event: \"select_recs_list\",\n event_version: \"1.0.0\",\n event_apikey: KlevuConfig.getDefault().apiKey,\n event_data: {\n list_id: recommendationMetadata.recsKey,\n list_logic: recommendationMetadata.logic,\n list_name: recommendationMetadata.title,\n action: recommendationMetadata.action,\n spot_id: recommendationMetadata.spotKey,\n spot_name: recommendationMetadata.spotName,\n static_content: bannerInfo && [bannerInfo],\n items: product && [\n {\n index: productIndexInList !== null && productIndexInList !== void 0 ? productIndexInList : 1,\n item_id: product.id,\n item_group_id: product.itemGroupId || product.id,\n item_name: (_a = product.name) !== null && _a !== void 0 ? _a : \"unknown\",\n item_variant_id: variantId || product.id,\n price: (_b = product.salePrice) !== null && _b !== void 0 ? _b : \"0\",\n currency: product.currency,\n item_brand: product.brand,\n item_category: product.category,\n },\n ],\n },\n };\n KlevuEventV2([\n Object.assign(Object.assign({}, data), override),\n ]);\n }\n /**\n * When product is clicked. Do not use this for recommendations\n *\n * @param searchTerm\n * @param product\n */\n static searchProductClick({ product, searchTerm, variantId, activeFilters, override = {}, }) {\n var _a, _b;\n if (!product.id) {\n throw new Error(\"Cannot send event without product id\");\n }\n KlevuLastClickedProducts.click(product.id, product);\n const data = {\n klevu_apiKey: KlevuConfig.getDefault().apiKey,\n klevu_type: \"clicked\",\n klevu_keywords: searchTerm,\n klevu_productGroupId: product.itemGroupId || product.id,\n klevu_productId: product.id,\n klevu_productName: (_a = product.name) !== null && _a !== void 0 ? _a : \"unknown\",\n klevu_productUrl: (_b = product.url) !== null && _b !== void 0 ? _b : \"\",\n klevu_productVariantId: variantId || product.id,\n klevu_activeFilters: activeFilters,\n };\n KlevuEventV1ProductTracking(Object.assign(Object.assign({}, data), override));\n }\n /**\n * What user has last searched. This is important for Klevu to function\n * properly. Use `sendSearchEvent()` modifier with search query to send results\n *\n * @param term What was searched\n * @param totalResults Total number of results (can be found in result meta)\n * @param typeOfSearch Type of search used (can be found in result meta)\n * @param override Ability to override any analytical keys in low level\n */\n static search({ term, totalResults, typeOfSearch, activeFilters, override = {}, }) {\n KlevuLastSearches.save(term);\n const data = {\n klevu_apiKey: KlevuConfig.getDefault().apiKey,\n klevu_term: term,\n klevu_totalResults: totalResults,\n klevu_typeOfQuery: typeOfSearch,\n klevu_activeFilters: activeFilters,\n };\n KlevuEventV1Search(Object.assign(Object.assign({}, data), override));\n }\n /**\n *\n * @param categoryTitle This is the name of the category being visited. For example, Stackable Rings. The name should not include parent categories.\n * @param klevuCategory This is the complete hierarchy of the category being visited. For example, Jewellery;Rings;Stackable Rings. Please note the use of a semicolon as the separator between a parent and a child category.\n * @param products Products in the view\n * @param pageStartsFrom Offset of the first product being shown on this page. For example, if you are displaying 30 products per page and if a customer is on the 2nd page, the value here should be 30. If on the 3rd page, it will be 60.\n * @param abTestId The AB test id currently running\n * @param abTestVariantId Id of AB test variant\n * @param activeFilters The string version of active filters applied to the query that got the products.\n * @param override Ability to override any analytical keys in low level\n */\n static categoryMerchandisingView({ categoryTitle, klevuCategory, products, pageStartsFrom, abTestId, abTestVariantId, activeFilters, override = {}, }) {\n const data = {\n klevu_apiKey: KlevuConfig.getDefault().apiKey,\n klevu_categoryName: categoryTitle,\n klevu_categoryPath: klevuCategory,\n klevu_productIds: products.map((p) => p.id).join(\",\"),\n klevu_pageStartsFrom: pageStartsFrom,\n klevu_activeFilters: activeFilters,\n klevu_abTestId: abTestId,\n klevu_abTestVariantId: abTestVariantId,\n };\n KlevuEventV1CategoryView(Object.assign(Object.assign({}, data), override));\n }\n /**\n *\n * @param product Product clicked\n * @param categoryTitle This is the name of the category being visited. For example, Stackable Rings. The name should not include parent categories.\n * @param klevuCategory This is the complete hierarchy of the category being visited. For example, Jewellery;Rings;Stackable Rings. Please note the use of a semicolon as the separator between a parent and a child category.\n * @param variantId This is the child/variant ID of the clicked product. eg. 12345. For compound products with a parent and multiple child/variant products, this is the ID of the specific variant.\n * @param productPosition Position of the product on the category page when it was clicked. For example, the value would be 0 if it is the first product on the first page. The value will be 30, if it is the first product on the 2nd page with 30 products being displayed per page.\n * @param activeFilters The string version of active filters applied to the query that got the products.\n * @param override Ability to override any analytical keys in low level\n */\n static categoryMerchandisingProductClick({ product, categoryTitle, klevuCategory, variantId, productPosition, abTestId, abTestVariantId, activeFilters, override = {}, }) {\n if (!product.id) {\n throw new Error(\"Cannot send event without product id\");\n }\n KlevuLastClickedProducts.click(product.id, product);\n const data = {\n klevu_apiKey: KlevuConfig.getDefault().apiKey,\n klevu_categoryName: categoryTitle,\n klevu_productGroupId: product.itemGroupId || product.id,\n klevu_productVariantId: variantId || product.id,\n klevu_categoryPath: klevuCategory,\n klevu_productId: product.id,\n klevu_productName: product.name,\n klevu_productUrl: product.url,\n klevu_salePrice: product.salePrice,\n klevu_productSku: product.sku,\n klevu_productPosition: productPosition,\n klevu_abTestId: abTestId,\n klevu_abTestVariantId: abTestVariantId,\n klevu_activeFilters: activeFilters,\n };\n KlevuEventV1CategoryProductClick(Object.assign(Object.assign({}, data), override));\n }\n /**\n * When user clicks on the banner that is in quicksearch or on search landing page\n */\n static imageBannerClick({ term, bannerId, bannerName, imageUrl, targetUrl, override = {}, }) {\n const data = {\n klevu_apiKey: KlevuConfig.getDefault().apiKey,\n type: \"banner\",\n klevu_request: \"click\",\n klevu_term: term,\n klevu_bannerId: bannerId,\n klevu_bannerName: bannerName,\n klevu_image: imageUrl,\n klevu_target: targetUrl,\n };\n KlevuEventV1BannerClick(Object.assign(Object.assign({}, data), override));\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n/**\n *\n * @category Modifier\n * @param term Search term from input\n * @param id id of request. Response is under this is. Has to be unique across single query. Default is 'search'\n * @param options\n * @returns\n */\nexport function applyFilters(filters) {\n const query = {\n applyFilters: {\n filters,\n },\n };\n return {\n klevuModifierId: \"applyFilters\",\n modifyAfter: (queries) => __awaiter(this, void 0, void 0, function* () {\n const copy = Array.from(queries);\n if (filters.length == 0) {\n return copy;\n }\n for (const q of copy) {\n const filters = Object.assign(Object.assign({}, q.filters), { applyFilters: query.applyFilters });\n q.filters = filters;\n }\n return copy;\n }),\n };\n}\n","import { applyFilters } from \"../applyFilter/applyFilter.js\";\n/**\n * Apply filters to query based on Filter Manager\n *\n * @category Modifier\n * @param manager\n * @param options\n * @returns\n */\nexport function applyFilterWithManager(manager) {\n return applyFilters(manager.toApplyFilters());\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { KlevuFilterOrder } from \"../../models/KlevuFilterOrder.js\";\nconst defaults = {\n order: KlevuFilterOrder.Index,\n limit: 10,\n};\n/**\n * List filters that can affect given query\n *\n * @category Modifier\n * @param options\n * @returns\n */\nexport function listFilters(options) {\n const params = Object.assign(Object.assign({}, defaults), options);\n const query = {\n filtersToReturn: {\n enabled: true,\n include: params.include,\n exclude: params.exclude,\n options: {\n order: params.order,\n limit: params.limit,\n mincount: params.mincount,\n },\n rangeFilterSettings: params.rangeFilterSettings,\n },\n };\n return {\n klevuModifierId: \"listfilters\",\n modifyAfter: (queries) => __awaiter(this, void 0, void 0, function* () {\n const copy = Array.from(queries);\n for (const q of copy) {\n const filters = Object.assign(Object.assign({}, q.filters), { filtersToReturn: query.filtersToReturn });\n q.filters = filters;\n }\n return copy;\n }),\n onResult: (result) => {\n var _a, _b;\n if (!(options === null || options === void 0 ? void 0 : options.filterManager)) {\n return result;\n }\n for (const qr of (_b = (_a = result.apiResponse) === null || _a === void 0 ? void 0 : _a.queryResults) !== null && _b !== void 0 ? _b : []) {\n if (qr.filters) {\n options.filterManager.initFromListFilters(qr.filters);\n }\n }\n return result;\n },\n };\n}\n","import { KlevuEvents } from \"../../events/index.js\";\n/**\n * This modifier should be used in the case when user hits enter (or presses button) to see\n * all results from search.\n *\n * @category Modifier\n * @returns\n */\nexport function sendSearchEvent(override) {\n return {\n klevuModifierId: \"sendSearchEvent\",\n ssrOnResultFE: true,\n onResult: (res, f) => {\n var _a, _b, _c, _d;\n if (!f.params) {\n return res;\n }\n const { id, term } = f.params;\n if (!id || !term) {\n return res;\n }\n const meta = (_a = res.queriesById(id)) === null || _a === void 0 ? void 0 : _a.meta;\n if (!meta) {\n return res;\n }\n KlevuEvents.search({\n term: ((_b = meta.klevuImageData) === null || _b === void 0 ? void 0 : _b.processed) &&\n ((_d = (_c = meta.klevuImageData) === null || _c === void 0 ? void 0 : _c.processed) === null || _d === void 0 ? void 0 : _d.length) > 0\n ? \"KLEVU_IMAGE_SEARCH\"\n : term,\n totalResults: meta.totalResultsFound,\n typeOfSearch: meta.typeOfSearch,\n override,\n });\n if (!f.params) {\n f.params = {};\n }\n f.params.searchSendEventSent = true;\n return res;\n },\n };\n}\n","import { KlevuFilterType } from \"../models/index.js\";\n/**\n * build a string|undefined from active filters in format that is required by Klevu API\n *\n * @param result the api result object\n */\nexport function extractActiveFilters(result) {\n var _a;\n let selectedFiltersStr = \"\";\n let isAnyFilterSelected = false;\n if (!result.filters || result.filters.length === 0) {\n return undefined;\n }\n (_a = result.filters) === null || _a === void 0 ? void 0 : _a.forEach((filter) => {\n if (filter.type === KlevuFilterType.Slider) {\n if (!filter.start || !filter.end) {\n return;\n }\n if (filter.start != filter.min || filter.end != filter.max) {\n if (isAnyFilterSelected) {\n selectedFiltersStr += \";;\";\n }\n isAnyFilterSelected = true;\n selectedFiltersStr +=\n filter.key + \":\" + filter.start + \" - \" + filter.end;\n }\n }\n else {\n filter.options.forEach((option) => {\n if (!option.selected) {\n return;\n }\n if (isAnyFilterSelected) {\n selectedFiltersStr += \";;\";\n }\n isAnyFilterSelected = true;\n selectedFiltersStr += filter.key + \":\" + option.name;\n });\n }\n });\n return isAnyFilterSelected ? selectedFiltersStr : undefined;\n}\n","import { KlevuEvents, } from \"../../events/index.js\";\nimport { KlevuTypeOfRequest } from \"../../models/KlevuTypeOfRequest.js\";\nconst recommendationTypeOfRequests = [\n KlevuTypeOfRequest.AlsoBought,\n KlevuTypeOfRequest.AlsoViewed,\n KlevuTypeOfRequest.NewArrivals,\n KlevuTypeOfRequest.SimilarProducts,\n KlevuTypeOfRequest.Trending,\n];\n/**\n * This modifier should be used with all recommendation requests. It sends\n * correct event data to klevu backend on recommendation view\n *\n * @category Modifier\n * @returns\n */\nexport function sendRecommendationViewEvent(eventData, override) {\n return {\n klevuModifierId: \"sendMerchandisingViewEvent\",\n ssrOnResultFE: true,\n onResult: (res, f) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n // is used with kmcRecommendation query\n if (f.klevuFunctionId === \"kmcRecommendation\") {\n let products;\n if (res.queryExists((_c = (_b = (_a = f.queries) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : \"\")) {\n products = (_f = res.queriesById((_e = (_d = f.queries) === null || _d === void 0 ? void 0 : _d[0].id) !== null && _e !== void 0 ? _e : \"\")) === null || _f === void 0 ? void 0 : _f.records;\n }\n const kmcData = (_g = f.params) === null || _g === void 0 ? void 0 : _g.kmcConfig;\n if (!kmcData) {\n console.warn(\"Problem with kmcData fetching. Can't send recommendationViewEvent\");\n return res;\n }\n KlevuEvents.recommendationView({\n recommendationMetadata: Object.assign({}, kmcData.metadata),\n products,\n override,\n });\n return res;\n }\n if (!eventData) {\n throw new Error(\"Need to provider eventData parameter for custom view events\");\n }\n const queries = (_h = f.queries) === null || _h === void 0 ? void 0 : _h.filter((q) => recommendationTypeOfRequests.includes(q.typeOfRequest));\n if (!queries || (queries === null || queries === void 0 ? void 0 : queries.length) == 0) {\n return res;\n }\n const products = (_j = res.queriesById(queries[0].id)) === null || _j === void 0 ? void 0 : _j.records;\n if (!products) {\n console.warn(\"No products in result. Can't send recommendationViewEvent\");\n return res;\n }\n KlevuEvents.recommendationView({\n recommendationMetadata: eventData,\n products,\n });\n return res;\n },\n };\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { KlevuTypeOfRecord } from \"../../models/index.js\";\nimport { KlevuLastClickedProducts } from \"../../store/lastClickedProducts.js\";\n/**\n * Enable personlisation to the query\n *\n * @category Modifier\n * @param options\n * @returns\n */\nexport function personalisation(options) {\n return {\n klevuModifierId: \"personalisation\",\n modifyAfter: (queries, klevuFunc) => __awaiter(this, void 0, void 0, function* () {\n var _a;\n const copy = Array.from(queries);\n for (const q of queries) {\n if (!q.settings) {\n q.settings = {};\n }\n q.settings.personalisation = {\n enablePersonalisation: true,\n fields: options === null || options === void 0 ? void 0 : options.fields,\n };\n let records = [];\n if (options === null || options === void 0 ? void 0 : options.lastClickedProductIds) {\n records = options.lastClickedProductIds.map((pId) => ({\n id: pId,\n }));\n }\n else if (klevuFunc.klevuFunctionId === \"categoryMerchandising\" &&\n ((_a = klevuFunc.params) === null || _a === void 0 ? void 0 : _a.category)) {\n const { category } = klevuFunc.params;\n records = KlevuLastClickedProducts.getCategoryPersonalisationIds(category).map((id) => ({ id }));\n }\n else {\n records = KlevuLastClickedProducts.getLastClickedLatestsFirst().map((id) => ({ id }));\n }\n if (records.length > 0) {\n q.settings.context = {\n recentObjects: [\n {\n typeOfRecord: KlevuTypeOfRecord.Product,\n records,\n },\n ],\n };\n }\n }\n return copy;\n }),\n };\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n/**\n * Create advanced filtering to the query.\n *\n * @category Modifier\n * @param conditions Array of conditions to apply to the query.\n * @param filterType How conditions should be applied. Default is ALL_OF\n * @returns\n */\nexport function advancedFiltering(conditions, filterType = \"ALL_OF\") {\n return {\n klevuModifierId: \"advancedFiltering\",\n modifyAfter: (queries) => __awaiter(this, void 0, void 0, function* () {\n const copy = Array.from(queries);\n for (const q of copy) {\n if (!q.settings) {\n q.settings = {};\n }\n q.settings.groupCondition = {\n groupOperator: filterType,\n conditions,\n };\n }\n return copy;\n }),\n };\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { KlevuConfig } from \"../../index.js\";\nimport { get } from \"../fetch.js\";\nimport { objectToQueryParameters } from \"../../utils/index.js\";\n/**\n *\n * @param id Id of query response to find\n * @param response Raw API response from server\n * @param product Id of product to find\n * @param languageCode Language code to process in\n * @returns\n */\nexport function getAnnotationsForProduct(response, productId, languageCode) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const prod = (_a = response.records) === null || _a === void 0 ? void 0 : _a.find((s) => s.id === productId);\n if (!prod) {\n return undefined;\n }\n const paramaters = {\n query: response.meta.searchedTerm,\n title: prod.name,\n category: prod.category,\n languageCode: languageCode,\n };\n const url = \"https://nlp-services.ksearchnet.com/\" +\n KlevuConfig.getDefault().apiKey +\n \"/annotations\" +\n objectToQueryParameters(paramaters);\n return yield get(url);\n });\n}\n","/**\n * transform object to query parameters\n *\n * @param params\n */\nexport function objectToQueryParameters(params) {\n let urlData = \"?\";\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) {\n continue;\n }\n urlData += `${key}=${encodeURIComponent(value)}&`;\n }\n return urlData;\n}\n","export function KlevuGetBannersByType(banners, searchType, termOrCategory) {\n const dateFiltered = filterBannersByDate(banners);\n const typeFiltered = dateFiltered.filter((banner) => {\n switch (searchType) {\n case \"landingpage\": {\n return banner.showOnLandingPage;\n }\n case \"quicksearch\": {\n return banner.showOnQuickSearch;\n }\n case \"merchandising\": {\n return banner.showOnCategoryPage;\n }\n }\n });\n return filterBannersByTerm(typeFiltered, termOrCategory);\n}\nfunction filterBannersByTerm(banners, term) {\n return banners.filter((banner) => banner.showForTerms === null || banner.showForTerms.includes(term));\n}\nfunction filterBannersByDate(banners, date = new Date()) {\n return banners.filter((banner) => {\n const startDate = bannerDateToDate(banner.startDate);\n if (banner.endDate === \"\") {\n return startDate <= date;\n }\n const endDate = bannerDateToDate(banner.endDate, true);\n return startDate <= date && endDate >= date;\n });\n}\nfunction bannerDateToDate(date, end) {\n const [year, month, day] = date.split(\"/\");\n const jsDate = new Date(parseInt(year), parseInt(month) - 1, parseInt(day));\n if (end) {\n jsDate.setHours(23, 59, 59);\n }\n return jsDate;\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { KlevuConfig } from \"../index.js\";\nimport { isBrowser } from \"../utils/isBrowser.js\";\nimport { get } from \"./fetch.js\";\nconst url = \"https://js.klevu.com/klevu-js-v1/klevu-js-api/\";\nconst STORAGE_KEY = \"klevu-kmc-data\";\nconst STORAGE_TS_KEY = \"klevu-kmc-data-ts\";\nconst ONE_DAY = 86400000;\n/**\n * Fetches KMC settings from server. Caches data for a day.\n *\n * @category KlevuFetch\n * @param ignoreCache If true, will ignore cache and fetch data from server\n * @param cacheLength How long to cache data in milliseconds\n * @returns\n */\nexport function KlevuKMCSettings(ignoreCache, cacheLength = ONE_DAY) {\n return __awaiter(this, void 0, void 0, function* () {\n if (isBrowser() && window.localStorage && ignoreCache !== true) {\n const ts = window.localStorage.getItem(STORAGE_TS_KEY);\n const res = window.localStorage.getItem(STORAGE_KEY);\n if (res && ts && new Date().getTime() - parseInt(ts, 10) < cacheLength) {\n return JSON.parse(res);\n }\n }\n const start = `${url}${KlevuConfig.getDefault().apiKey}`;\n const res = yield Promise.all([\n get(`${start}.json`),\n get(`${start}-banner.json`),\n get(`${start}-maps.json`),\n ]);\n const data = {\n root: res[0],\n banner: res[1],\n maps: res[2],\n };\n if (isBrowser() && window.localStorage) {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(data));\n window.localStorage.setItem(STORAGE_TS_KEY, new Date().getTime().toString());\n }\n return data;\n });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { KlevuGetBannersByType } from \"../../utils/getBannersByType.js\";\nimport { KlevuKMCSettings } from \"../kmc.js\";\nexport function getBanners(responseObject, searchType) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (![\"search\", \"categoryMerchandising\"].includes(responseObject.func.klevuFunctionId)) {\n return [];\n }\n const settings = yield KlevuKMCSettings();\n if (!settings.banner) {\n return [];\n }\n switch (responseObject.func.klevuFunctionId) {\n case \"search\": {\n if (!searchType) {\n throw new Error(\"Search type (landingpage|quicksearch) is required for search query banners\");\n }\n const searchTerm = (_a = responseObject.func.params) === null || _a === void 0 ? void 0 : _a.term;\n if (!searchTerm) {\n throw new Error(\"Search term is required for search query banners\");\n }\n return KlevuGetBannersByType(settings.banner.klevu_banner, searchType, searchTerm);\n }\n case \"categoryMerchandising\": {\n const category = (_b = responseObject.func.params) === null || _b === void 0 ? void 0 : _b.category;\n if (!category) {\n return [];\n }\n return KlevuGetBannersByType(settings.banner.klevu_banner, \"merchandising\", category);\n }\n }\n throw new Error(\"Couldn't find banners for this query. Unknown query type.\");\n });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { KlevuKMCSettings } from \"../kmc.js\";\nexport function getRedirects(term) {\n return __awaiter(this, void 0, void 0, function* () {\n const settings = yield KlevuKMCSettings();\n if (!settings.maps) {\n return [];\n }\n return settings.maps.klevu_keywordUrlMap.filter((map) => map.keywords.some((k) => k === term));\n });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _KlevuResponseQueryObject_instances, _KlevuResponseQueryObject_initRedirects, _KlevuResponseQueryObject_initEventFunctions;\nimport { KlevuEvents } from \"../events/KlevuEvents.js\";\nimport { applyFilterWithManager } from \"../modifiers/index.js\";\nimport { extractActiveFilters } from \"../utils/extractActiveFilters.js\";\nimport { KlevuFetch, removeListFilters } from \"./klevuFetch.js\";\nimport { getAnnotationsForProduct } from \"./resultHelpers/getAnnotationsForProduct.js\";\nimport { getBanners } from \"./resultHelpers/getBanners.js\";\nimport { getRedirects } from \"./resultHelpers/getRedirects.js\";\n/**\n * Result object for each query. A storage for results. Can be used to fetch more data, send events etc.\n */\nexport class KlevuResponseQueryObject {\n constructor(responseObject, query, func) {\n _KlevuResponseQueryObject_instances.add(this);\n /**\n * Hooks that can be used to listen for events\n */\n this.hooks = [];\n this.responseObject = responseObject;\n this.query = query;\n this.func = func;\n __classPrivateFieldGet(this, _KlevuResponseQueryObject_instances, \"m\", _KlevuResponseQueryObject_initEventFunctions).call(this);\n __classPrivateFieldGet(this, _KlevuResponseQueryObject_instances, \"m\", _KlevuResponseQueryObject_initRedirects).call(this);\n }\n /**\n * All filters related to this query\n */\n get filters() {\n return this.query.filters;\n }\n /**\n * Id if the query\n */\n get id() {\n return this.query.id;\n }\n /**\n * Meta data of the query\n */\n get meta() {\n return this.query.meta;\n }\n /**\n * Records of the query\n */\n get records() {\n return this.query.records;\n }\n /**\n * Special parameters that are saved to query\n */\n get functionParams() {\n return this.func.params;\n }\n /**\n * Fetches page of results. If pageIndex is not defined it will fetch next page.\n *\n * @param params\n * @returns\n */\n getPage(params) {\n var _a, _b, _c, _d;\n return __awaiter(this, void 0, void 0, function* () {\n const newFunc = Object.assign({}, this.func);\n const prevQueryResponse = this.query;\n if (!newFunc.queries) {\n return undefined;\n }\n for (let i = 0; i < newFunc.queries.length; i++) {\n const prevQuery = newFunc.queries[i];\n if (!prevQuery.settings) {\n prevQuery.settings = {};\n }\n if ((params === null || params === void 0 ? void 0 : params.pageIndex) !== undefined) {\n prevQuery.settings.offset =\n prevQueryResponse.meta.noOfResults * params.pageIndex;\n }\n else {\n prevQuery.settings.offset =\n prevQueryResponse.meta.noOfResults + prevQueryResponse.meta.offset;\n }\n prevQuery.settings.limit = (_c = (_a = params === null || params === void 0 ? void 0 : params.limit) !== null && _a !== void 0 ? _a : (_b = prevQuery.settings) === null || _b === void 0 ? void 0 : _b.limit) !== null && _c !== void 0 ? _c : 5;\n newFunc.queries[i] = prevQuery;\n }\n // add previous filters with manager\n if (params === null || params === void 0 ? void 0 : params.filterManager) {\n if (!newFunc.modifiers) {\n newFunc.modifiers = [];\n }\n newFunc.modifiers.push(applyFilterWithManager(params.filterManager));\n }\n newFunc.previousResultRecords = [\n ...((_d = this.func.previousResultRecords) !== null && _d !== void 0 ? _d : []),\n ...prevQueryResponse.records,\n ];\n return yield KlevuFetch(removeListFilters(newFunc, prevQueryResponse));\n });\n }\n /**\n *\n * @returns true if there are more pages to fetch\n */\n hasNextPage() {\n return (this.query.meta.totalResultsFound >\n this.query.meta.offset + this.query.meta.noOfResults);\n }\n /**\n *\n * @returns total number of pages\n */\n getTotalPages() {\n return Math.ceil(this.query.meta.totalResultsFound / this.query.meta.offset);\n }\n annotationsById(productId, languageCode) {\n return getAnnotationsForProduct(this.query, productId, languageCode);\n }\n /**\n * @returns List of banners that were received for this query\n * @param params in case of search query you need to specify location of search\n */\n getBanners(params = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n return getBanners(this, params.searchType);\n });\n }\n /**\n * @returns List of params used in the query and the metadata that was generated during\n * the query. This is useful for example to fetching KMC metadata that was received\n * for recommendations query.\n */\n getQueryParameters() {\n return this.func.params;\n }\n}\n_KlevuResponseQueryObject_instances = new WeakSet(), _KlevuResponseQueryObject_initRedirects = function _KlevuResponseQueryObject_initRedirects() {\n if (this.func.klevuFunctionId === \"search\") {\n this.getRedirects = () => {\n var _a;\n if (!((_a = this.func.params) === null || _a === void 0 ? void 0 : _a.term)) {\n return Promise.resolve([]);\n }\n return getRedirects(this.func.params.term);\n };\n }\n}, _KlevuResponseQueryObject_initEventFunctions = function _KlevuResponseQueryObject_initEventFunctions() {\n var _a, _b, _c;\n switch ((_a = this.func) === null || _a === void 0 ? void 0 : _a.klevuFunctionId) {\n case \"search\": {\n this.searchClickEvent = function ({ productId, variantId, autoSendViewEvent = true, override, }) {\n var _a, _b, _c;\n if (!this.func) {\n return;\n }\n if (autoSendViewEvent && !((_a = this.func.params) === null || _a === void 0 ? void 0 : _a.searchSendEventSent)) {\n KlevuEvents.search({\n term: this.query.meta.searchedTerm,\n totalResults: this.query.meta.noOfResults,\n typeOfSearch: this.query.meta.typeOfSearch,\n activeFilters: extractActiveFilters(this.query),\n override,\n });\n if (!this.func.params) {\n this.func.params = {};\n }\n this.func.params.searchSendEventSent = true;\n }\n const record = [\n ...this.query.records,\n ...((_b = this.func.previousResultRecords) !== null && _b !== void 0 ? _b : []),\n ].find((r) => r.id === productId);\n if (!record) {\n throw new Error(`KlevuEvents: Given \"${productId}\" doesn't exists in this.querys`);\n }\n KlevuEvents.searchProductClick({\n product: record,\n searchTerm: this.query.meta.searchedTerm,\n variantId,\n });\n for (const hook of (_c = this.hooks) !== null && _c !== void 0 ? _c : []) {\n hook({ type: \"search\", productId, variantId });\n }\n };\n break;\n }\n case \"categoryMerchandising\": {\n this.categoryMerchandisingClickEvent = function ({ productId, categoryTitle, variantId, override, }) {\n var _a, _b, _c, _d, _e, _f;\n if (!this.func) {\n return;\n }\n const record = [\n ...this.query.records,\n ...((_a = this.func.previousResultRecords) !== null && _a !== void 0 ? _a : []),\n ].find((r) => r.id === productId);\n if (!record) {\n throw new Error(`KlevuEvents: Given \"${productId}\" doesn't exists in this.querys`);\n }\n const index = this.query.records.findIndex((r) => r.id === productId);\n const q = (_b = this.func.queries) === null || _b === void 0 ? void 0 : _b.find((q) => { var _a, _b; return Boolean((_b = (_a = q.settings) === null || _a === void 0 ? void 0 : _a.query) === null || _b === void 0 ? void 0 : _b.categoryPath); });\n let abTestId, abTestVariantId;\n if (!this.func.params) {\n this.func.params = {};\n }\n if (this.func.params.abtest) {\n abTestId = this.func.params.abtest.abTestId;\n abTestVariantId = this.func.params.abtest.abTestVariantId;\n }\n KlevuEvents.categoryMerchandisingProductClick({\n product: record,\n categoryTitle,\n klevuCategory: (_e = (_d = (_c = q === null || q === void 0 ? void 0 : q.settings) === null || _c === void 0 ? void 0 : _c.query) === null || _d === void 0 ? void 0 : _d.categoryPath) !== null && _e !== void 0 ? _e : \"unknown\",\n variantId,\n productPosition: index + 1,\n abTestId,\n abTestVariantId,\n activeFilters: extractActiveFilters(this.query),\n override,\n });\n for (const hook of (_f = this.hooks) !== null && _f !== void 0 ? _f : []) {\n hook({ type: \"categoryMerchandising\", productId, variantId });\n }\n };\n break;\n }\n case \"kmcRecommendation\": {\n if (!((_b = this.func.params) === null || _b === void 0 ? void 0 : _b.kmcConfig)) {\n break;\n }\n const config = (_c = this.func.params) === null || _c === void 0 ? void 0 : _c.kmcConfig;\n if (config.metadata.action === \"HIDE_RECOMMENDATION\") {\n break;\n }\n if (config.metadata.action === \"STATIC_CONTENT\") {\n if (!config.staticContent) {\n break;\n }\n this.recommendationBannerClickEvent = function ({ resolution }) {\n var _a;\n if (!config.staticContent || config.staticContent.length === 0) {\n return;\n }\n const image = (_a = config.staticContent[0].image.find((image) => image.resolution === resolution)) !== null && _a !== void 0 ? _a : config.staticContent[0].image[0];\n if (!image) {\n return;\n }\n KlevuEvents.recommendationClick({\n recommendationMetadata: config.metadata,\n bannerInfo: {\n resolution,\n index: 1,\n banner_alt_tag: image.altTag,\n banner_image_url: image.url,\n content_type: \"image\",\n },\n });\n };\n break;\n }\n this.recommendationClickEvent = function ({ productId, variantId, override, }) {\n var _a, _b;\n if (!this.func) {\n return;\n }\n const record = [\n ...this.query.records,\n ...((_a = this.func.previousResultRecords) !== null && _a !== void 0 ? _a : []),\n ].find((r) => r.id === productId);\n if (!record) {\n throw new Error(`KlevuEvents: Given \"${productId}\" doesn't exists in this.querys`);\n }\n if (!config) {\n throw new Error(\"KlevuEvents: Recommendation kmcConfig not available\");\n }\n const index = this.query.records.findIndex((r) => r.id === productId);\n KlevuEvents.recommendationClick({\n recommendationMetadata: config.metadata,\n product: record,\n productIndexInList: index + 1,\n variantId,\n override,\n });\n for (const hook of (_b = this.hooks) !== null && _b !== void 0 ? _b : []) {\n hook({ type: \"recommendation\", productId, variantId });\n }\n };\n }\n }\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { KlevuConfig } from \"../index.js\";\nimport { KlevuTypeOfRequest, } from \"../models/index.js\";\nimport { injectFilterResult } from \"../modifiers/injectFilterResult/injectFilterResult.js\";\nimport { KlevuFetchCache } from \"../store/klevuFetchCache.js\";\nimport { post } from \"./fetch.js\";\nimport { KlevuResponseObject } from \"./responseObject.js\";\nexport const klevuFetchCache = new KlevuFetchCache();\nexport class KlevuFetchOption {\n constructor(params = {}) {\n this.params = params;\n }\n}\n/**\n * Function that makes query to KlevuBackend. It can take amount of queries.\n *\n * @category KlevuFetch\n * @param functions list of functions to execute\n * @returns Tools to operate results\n */\nexport function KlevuFetch(...functionPromises) {\n var _a, _b, _c, _d, _e;\n return __awaiter(this, void 0, void 0, function* () {\n if (functionPromises.length < 1) {\n throw new Error(\"At least one fetch function should be provided to fetch.\");\n }\n const option = functionPromises.find((f) => f instanceof KlevuFetchOption);\n const functionPromisesWithoutOptions = functionPromises.filter((f) => !(f instanceof KlevuFetchOption));\n const functions = yield Promise.all(functionPromisesWithoutOptions);\n const { recordQueries, suggestionQueries } = yield cleanAndProcessFunctions(functions);\n const withOverride = functions.find((f) => Boolean(f.configOverride));\n const payload = {\n context: {\n apiKeys: [\n (_b = (_a = withOverride === null || withOverride === void 0 ? void 0 : withOverride.configOverride) === null || _a === void 0 ? void 0 : _a.apiKey) !== null && _b !== void 0 ? _b : KlevuConfig.getDefault().apiKey,\n ],\n },\n recordQueries: recordQueries.length > 0 ? recordQueries : undefined,\n suggestions: suggestionQueries.length > 0 ? suggestionQueries : undefined,\n };\n const cached = klevuFetchCache.check(payload);\n let response;\n const withoutSkip = recordQueries.filter((q) => q.typeOfRequest !== KlevuTypeOfRequest.Skip);\n if (withoutSkip.length > 0 || suggestionQueries.length > 0) {\n if (cached) {\n response = cached;\n }\n else {\n const res = yield post((_d = (_c = withOverride === null || withOverride === void 0 ? void 0 : withOverride.configOverride) === null || _c === void 0 ? void 0 : _c.url) !== null && _d !== void 0 ? _d : KlevuConfig.getDefault().url, payload);\n if (!res) {\n throw new Error(\"Couldn't fetch data\");\n }\n response = res;\n if (((_e = res.meta) === null || _e === void 0 ? void 0 : _e.responseCode) == 200) {\n klevuFetchCache.cache(payload, response);\n }\n }\n }\n return new KlevuResponseObject(response !== null && response !== void 0 ? response : {\n meta: {\n qTime: 0,\n responseCode: 204,\n },\n queryResults: recordQueries.map((r) => ({\n id: r.id,\n meta: {},\n records: [],\n })),\n suggestionResults: [],\n }, functions, option);\n });\n}\nfunction cleanAndProcessFunctions(functions) {\n return __awaiter(this, void 0, void 0, function* () {\n const recordQueries = [];\n const suggestionQueries = [];\n for (const f of functions) {\n if (f.queries) {\n let qs = [...f.queries];\n if (f.modifiers) {\n for (const modifier of f.modifiers) {\n if (modifier.modifyAfter) {\n qs = yield modifier.modifyAfter(qs, f);\n }\n }\n }\n recordQueries.push(...qs);\n }\n if (f.suggestions) {\n suggestionQueries.push(...f.suggestions);\n }\n }\n // Check for duplicate id's\n for (const query of recordQueries) {\n if (recordQueries.filter((q) => q.id === query.id).length !== 1) {\n throw new Error(\"Duplicate ids in request. Please provider unique ids for requests\");\n }\n }\n return {\n recordQueries,\n suggestionQueries,\n };\n });\n}\n/**\n * Removes list filters from query\n *\n * @param f\n * @param prevQueryResult\n * @returns\n */\nexport function removeListFilters(f, prevQueryResult) {\n var _a;\n f.queries = (_a = f.queries) === null || _a === void 0 ? void 0 : _a.map((q) => {\n var _a, _b;\n if ((_a = q.filters) === null || _a === void 0 ? void 0 : _a.filtersToReturn) {\n (_b = q.filters) === null || _b === void 0 ? true : delete _b.filtersToReturn;\n }\n return q;\n });\n if (f.modifiers) {\n const index = f.modifiers.findIndex((m) => m.klevuModifierId == \"listfilters\");\n if (index > -1) {\n f.modifiers.splice(index, 1);\n }\n f.modifiers.push(injectFilterResult(prevQueryResult));\n }\n return f;\n}\n","/**\n * Internal function to inject listFilter results back to result object when they are removed in next() function\n * Should not be used outside of library itself\n *\n * @category Modifier\n * @param prevQuery\n * @returns\n */\nexport function injectFilterResult(prevQuery) {\n return {\n klevuModifierId: \"injectFilteResult\",\n onResult: (response) => {\n var _a, _b;\n const copy = Object.assign({}, response);\n const found = (_b = (_a = copy.apiResponse) === null || _a === void 0 ? void 0 : _a.queryResults) === null || _b === void 0 ? void 0 : _b.find((q) => q.id === prevQuery.id);\n if (found) {\n found.filters = prevQuery.filters;\n }\n return copy;\n },\n };\n}\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _KlevuResponseObject_instances, _KlevuResponseObject_functions, _KlevuResponseObject_queryObjects, _KlevuResponseObject_buildQueryObjects;\nimport { KlevuResponseQueryObject } from \"./responseQueryObject.js\";\n/**\n * This class is used to access the response data from Klevu API\n * It builds up the state of the result and it can be used to do various things with the data\n */\nexport class KlevuResponseObject {\n constructor(response, functions, options, checkProcessedFunctions) {\n _KlevuResponseObject_instances.add(this);\n _KlevuResponseObject_functions.set(this, void 0);\n _KlevuResponseObject_queryObjects.set(this, {});\n this.apiResponse = response;\n __classPrivateFieldSet(this, _KlevuResponseObject_functions, functions, \"f\");\n if (checkProcessedFunctions &&\n this.packProcessedFunctionsToString() !== checkProcessedFunctions) {\n throw new Error(\"Processed functions are not the same as on the backend\");\n }\n __classPrivateFieldGet(this, _KlevuResponseObject_instances, \"m\", _KlevuResponseObject_buildQueryObjects).call(this);\n for (const f of functions) {\n if (f.modifiers) {\n for (const modifier of f.modifiers) {\n if (!modifier.onResult) {\n continue;\n }\n if (!(options === null || options === void 0 ? void 0 : options.params.isSSR) ||\n (options.params.isSSR && !modifier.ssrOnResultFE)) {\n modifier.onResult(this, f);\n }\n else if ((options === null || options === void 0 ? void 0 : options.params.FEHydrate) && modifier.ssrOnResultFE) {\n modifier.onResult(this, f);\n }\n }\n }\n }\n }\n /**\n * Get suggestions by id\n *\n * @param id\n * @returns\n */\n suggestionsById(id) {\n var _a;\n return (_a = this.apiResponse.suggestionResults) === null || _a === void 0 ? void 0 : _a.find((q) => q.id === id);\n }\n /**\n * Get query results by id\n * @param id query id used\n * @returns\n */\n queriesById(id) {\n if (!__classPrivateFieldGet(this, _KlevuResponseObject_queryObjects, \"f\")[id]) {\n throw new Error(`Query with id ${id} not found`);\n }\n return __classPrivateFieldGet(this, _KlevuResponseObject_queryObjects, \"f\")[id];\n }\n /**\n * Check if query exists. This should be used as queriesById can throw an error\n *\n * @param id query id used\n * @returns\n */\n queryExists(id) {\n return !!__classPrivateFieldGet(this, _KlevuResponseObject_queryObjects, \"f\")[id];\n }\n /**\n *\n * @returns String that can be used to compare if the same functions were used to create this response\n */\n packProcessedFunctionsToString() {\n return __classPrivateFieldGet(this, _KlevuResponseObject_functions, \"f\")\n .map((f) => {\n var _a, _b;\n return `${f.klevuFunctionId},${(_a = f.queries) === null || _a === void 0 ? void 0 : _a.map((q) => q.id)},${(_b = f.modifiers) === null || _b === void 0 ? void 0 : _b.map((m) => m.klevuModifierId)}`;\n })\n .join(\";\");\n }\n}\n_KlevuResponseObject_functions = new WeakMap(), _KlevuResponseObject_queryObjects = new WeakMap(), _KlevuResponseObject_instances = new WeakSet(), _KlevuResponseObject_buildQueryObjects = function _KlevuResponseObject_buildQueryObjects() {\n var _a;\n for (const q of (_a = this.apiResponse.queryResults) !== null && _a !== void 0 ? _a : []) {\n const func = __classPrivateFieldGet(this, _KlevuResponseObject_functions, \"f\").find((f) => { var _a; return (_a = f.queries) === null || _a === void 0 ? void 0 : _a.some((qu) => q.id == qu.id || q.id == `${qu.id}-fallback`); });\n if (func) {\n __classPrivateFieldGet(this, _KlevuResponseObject_queryObjects, \"f\")[q.id] = new KlevuResponseQueryObject(this, q, func);\n }\n }\n};\n","import { KlevuConfig } from \"../config.js\";\nimport { isBrowser } from \"../utils/isBrowser.js\";\n/**\n * @ignore\n */\nexport class KlevuFetchCache {\n constructor() {\n this._cache = new Map();\n this._timestamp = new Map();\n }\n /**\n * checks if cache has value and returns it\n *\n * @param key\n * @param force For testing purposes\n * @returns undefined if not cached\n */\n check(key, force = false) {\n // never cache on node server\n if (!force && !isBrowser()) {\n return undefined;\n }\n const hash = this.hash(key);\n if (!this._cache.has(hash)) {\n return undefined;\n }\n const cached = this._cache.get(hash);\n const ts = this._timestamp.get(hash);\n if (cached && ts) {\n if (new Date().getTime() < ts) {\n return JSON.parse(cached);\n }\n this._cache.delete(hash);\n this._timestamp.delete(hash);\n }\n return undefined;\n }\n cache(key, data, timetocache = KlevuConfig.getDefault().cacheMaxTTL) {\n const hash = this.hash(key);\n this._cache.set(hash, JSON.stringify(data));\n this._timestamp.set(hash, new Date().getTime() + timetocache);\n }\n hash(input) {\n return Array.from(JSON.stringify(input)).reduce((s, c) => (Math.imul(31, s) + c.charCodeAt(0)) | 0, 0);\n }\n}\n","/**\n * cleans query term to improve search results\n *\n * @param term search term to be cleaned\n */\nexport function cleanSearchQuery(term) {\n return (term\n // whitespace\n .replace(/\\s{2,}/g, \" \")\n // extra spaces\n .replace(/\\s\\s+/g, \" \")\n // white space in end\n .trim()\n // to lowercase\n .toLocaleLowerCase());\n}\n","import { KlevuTypeOfRecord, KlevuTypeOfRequest, } from \"../../models/index.js\";\nimport { cleanSearchQuery } from \"../../utils/index.js\";\nconst defaults = {\n id: \"search\",\n limit: 5,\n typeOfRecords: [KlevuTypeOfRecord.Product],\n};\n/**\n * Create a basic search to Klevu backend. Default ID for this query is `search`\n *\n *\n * @category Query\n * @param term Search term from input\n * @param options {@link KlevuSearchOptions}\n * @returns\n */\nexport function search(term, options, ...modifiers) {\n const params = Object.assign(Object.assign({}, defaults), options);\n const cleanedTerm = cleanSearchQuery(term);\n const query = {\n id: params.id,\n typeOfRequest: KlevuTypeOfRequest.Search,\n settings: Object.assign({ query: {\n term: cleanedTerm,\n } }, params),\n };\n return {\n klevuFunctionId: \"search\",\n params: Object.assign(Object.assign({}, params), { term }),\n queries: [query],\n modifiers,\n };\n}\n","import { KlevuTypeOfRequest } from \"../../models/index.js\";\nimport { cleanSearchQuery } from \"../../utils/index.js\";\nconst defaults = {\n id: \"suggestions\",\n limit: 5,\n};\n/**\n * Return suggestion on given search term\n *\n * @category Query\n * @param term search term\n * @param options\n * @returns\n */\nexport function suggestions(term, options) {\n const params = Object.assign(Object.assign({}, defaults), options);\n const query = Object.assign({ typeOfRequest: KlevuTypeOfRequest.Suggestion, query: cleanSearchQuery(term) }, params);\n return {\n klevuFunctionId: \"suggestions\",\n suggestions: [query],\n };\n}\n","import { search } from \"../search/search.js\";\nimport { KlevuTypeOfRecord, } from \"../../index.js\";\n/**\n * Create a trending products search query. Id for this query is `trendingProducts`\n *\n * @category Query\n * @param options {@link search}\n * @returns See {@link KlevuFetchFunction}\n *\n * @example Simple example\n * ```\n * const result = await KlevuFetch(\n * trendingProducts()\n * )\n *\n * console.log(result.getQueries(\"trendingProducts\").records)\n * ```\n */\nexport function trendingProducts(options, ...modifiers) {\n return search(\"*\", Object.assign({ id: \"trendingProducts\", typeOfRecords: [KlevuTypeOfRecord.Product] }, options), ...modifiers);\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { KlevuConfig } from \"../../config.js\";\nimport { KlevuLastClickedProducts } from \"../../store/lastClickedProducts.js\";\nimport { personalisation } from \"../../modifiers/personalisation/personalisation.js\";\nimport { KlevuTypeOfRecord } from \"../../models/KlevuTypeOfRecord.js\";\nimport { get } from \"../../connection/fetch.js\";\nimport { KlevuTypeOfRequest } from \"../../models/KlevuTypeOfRequest.js\";\nvar KMCRecommendationPagetype;\n(function (KMCRecommendationPagetype) {\n KMCRecommendationPagetype[\"Home\"] = \"HOME\";\n KMCRecommendationPagetype[\"Category\"] = \"CATEGORY\";\n KMCRecommendationPagetype[\"Product\"] = \"PRODUCT\";\n KMCRecommendationPagetype[\"Checkout\"] = \"CHECKOUT\";\n})(KMCRecommendationPagetype || (KMCRecommendationPagetype = {}));\nexport var KMCRecommendationLogic;\n(function (KMCRecommendationLogic) {\n KMCRecommendationLogic[\"Trending\"] = \"TRENDING\";\n KMCRecommendationLogic[\"TrendingPersonalized\"] = \"TRENDING_PERSONALIZED\";\n KMCRecommendationLogic[\"NewestArrivals\"] = \"NEWEST_ARRIVALS\";\n KMCRecommendationLogic[\"RecentlyViewed\"] = \"RECENTLY_VIEWED\";\n KMCRecommendationLogic[\"HandPicked\"] = \"HAND_PICKED\";\n KMCRecommendationLogic[\"OtherAlsoViewed\"] = \"OTHER_ALSO_VIEWED\";\n KMCRecommendationLogic[\"Similar\"] = \"SIMILAR\";\n KMCRecommendationLogic[\"BoughtTogether\"] = \"BOUGHT_TOGETHER\";\n KMCRecommendationLogic[\"BoughtTogetherPDP\"] = \"BOUGHT_TOGETHER_PDP\";\n KMCRecommendationLogic[\"VisuallySimilar\"] = \"VISUALLY_SIMILAR\";\n KMCRecommendationLogic[\"Custom\"] = \"CUSTOM_LOGIC\";\n})(KMCRecommendationLogic || (KMCRecommendationLogic = {}));\n/**\n * Fetches products based on KMC recommendation. Provide id created in KMC\n *\n * @category RecommendationQuery\n * @param recommendationId Id of recommendation in the backend\n * @returns\n */\nexport function kmcRecommendation(recommendationId, options, ...modifiers) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n let kmcConfig;\n try {\n let advFilterParams = \"\";\n if ((options === null || options === void 0 ? void 0 : options.categoryPath) ||\n (options === null || options === void 0 ? void 0 : options.currentProductId) ||\n (options === null || options === void 0 ? void 0 : options.itemGroupId)) {\n advFilterParams = \"?\";\n advFilterParams += options.categoryPath\n ? `&cp=${options.categoryPath}`\n : \"\";\n advFilterParams += options.currentProductId\n ? `&pid=${options.currentProductId}`\n : \"\";\n advFilterParams += options.itemGroupId\n ? `&gpid=${options.itemGroupId}`\n : \"\";\n }\n const conf = KlevuConfig.getDefault();\n kmcConfig = yield get(`${conf.recommendationsApiUrl}${conf.apiKey}/settings/${recommendationId}${advFilterParams}`);\n }\n catch (e) {\n console.warn(\"Failed to fetch given KMC recommendation\");\n return {\n klevuFunctionId: \"kmcRecommendation\",\n };\n }\n if (!kmcConfig) {\n throw new Error(\"Couldn't fetch KMC config\");\n }\n const configOverride = new KlevuConfig({\n apiKey: KlevuConfig.getDefault().apiKey,\n url: `https://${kmcConfig.search.basePath}`,\n });\n if (kmcConfig.metadata.action === \"HIDE_RECOMMENDATION\" ||\n kmcConfig.metadata.action === \"STATIC_CONTENT\") {\n return {\n klevuFunctionId: \"kmcRecommendation\",\n queries: [\n {\n id: (_a = options === null || options === void 0 ? void 0 : options.id) !== null && _a !== void 0 ? _a : \"kmcRecommendation\",\n typeOfRequest: KlevuTypeOfRequest.Skip,\n },\n ],\n params: {\n kmcConfig,\n },\n };\n }\n const payload = JSON.parse(kmcConfig.search.payload);\n const queries = payload.recordQueries.map((query) => {\n var _a;\n return (Object.assign(Object.assign({}, query), { id: (_a = options === null || options === void 0 ? void 0 : options.id) !== null && _a !== void 0 ? _a : \"kmcrecommendation\" }));\n });\n if (kmcConfig.metadata.pageType === KMCRecommendationPagetype.Home &&\n kmcConfig.metadata.logic === KMCRecommendationLogic.RecentlyViewed) {\n const last10 = KlevuLastClickedProducts.getLastClickedLatestsFirst(10);\n for (const q of queries) {\n if (!q.settings) {\n q.settings = {};\n }\n q.settings.customANDQuery = `id:(${last10.join(\" OR \")})`;\n q.settings.topIds = last10.map((id) => ({ key: \"id\", value: id }));\n }\n }\n if (kmcConfig.metadata.pageType === KMCRecommendationPagetype.Category &&\n [\n KMCRecommendationLogic.Trending,\n KMCRecommendationLogic.TrendingPersonalized,\n KMCRecommendationLogic.NewestArrivals,\n KMCRecommendationLogic.Custom,\n ].includes(kmcConfig.metadata.logic)) {\n if (!options || !options.categoryPath) {\n throw new Error(\"'categoryPath' is required for Category recommendation\");\n }\n for (const q of queries) {\n if (!q.settings) {\n q.settings = {};\n }\n if (!q.settings.query) {\n q.settings.query = {};\n }\n q.settings.query.categoryPath = options === null || options === void 0 ? void 0 : options.categoryPath;\n }\n }\n if (kmcConfig.metadata.logic === KMCRecommendationLogic.TrendingPersonalized) {\n modifiers.push(personalisation());\n }\n if (kmcConfig.metadata.pageType === KMCRecommendationPagetype.Product &&\n [\n KMCRecommendationLogic.OtherAlsoViewed,\n KMCRecommendationLogic.Similar,\n ].includes(kmcConfig.metadata.logic)) {\n if (!options || !options.currentProductId) {\n throw new Error(\"'currentProductId' is required for Product recommendation\");\n }\n for (const q of queries) {\n if (!q.settings) {\n q.settings = {};\n }\n if (!q.settings.context) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n q.settings.context = {};\n }\n if (options.itemGroupId) {\n q.settings.excludeIds = [\n {\n key: \"itemGroupId\",\n value: options.itemGroupId,\n },\n ];\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n q.settings.context.recentObjects = [\n {\n typeOfRecord: KlevuTypeOfRecord.Product,\n records: [\n {\n id: options.currentProductId,\n },\n ],\n },\n ];\n }\n }\n if (kmcConfig.metadata.pageType === KMCRecommendationPagetype.Product &&\n [\n KMCRecommendationLogic.BoughtTogetherPDP,\n KMCRecommendationLogic.Custom,\n ].includes(kmcConfig.metadata.logic)) {\n if (!options || !options.currentProductId) {\n throw new Error(\"'currentProductId' is required for Product recommendation\");\n }\n for (const q of queries) {\n if (!q.settings) {\n q.settings = {};\n }\n if (!q.settings.context) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n q.settings.context = {};\n }\n if (options.itemGroupId) {\n q.settings.excludeIds = [\n {\n key: \"itemGroupId\",\n value: options.itemGroupId,\n },\n ];\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n q.settings.context.recentObjects = [\n {\n typeOfRecord: KlevuTypeOfRecord.Product,\n records: [\n {\n id: options.currentProductId,\n },\n ],\n },\n ];\n }\n }\n // only VisuallySimilar uses sourceObjects\n if (kmcConfig.metadata.pageType === KMCRecommendationPagetype.Product &&\n kmcConfig.metadata.logic === KMCRecommendationLogic.VisuallySimilar) {\n if (!options || !options.currentProductId) {\n throw new Error(\"'currentProductId' is required for Product recommendation\");\n }\n for (const q of queries) {\n if (!q.settings) {\n q.settings = {};\n }\n if (!q.settings.context) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n q.settings.context = {};\n }\n if (options.itemGroupId) {\n q.settings.excludeIds = [\n {\n key: \"itemGroupId\",\n value: options.itemGroupId,\n },\n ];\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n q.settings.context.sourceObjects = [\n {\n typeOfRecord: KlevuTypeOfRecord.Product,\n records: [\n {\n id: options.currentProductId,\n },\n ],\n },\n ];\n if (options.itemGroupId) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n q.settings.context.sourceObjects[0].records.push({\n itemGroupId: options.itemGroupId,\n });\n }\n }\n }\n if (kmcConfig.metadata.pageType === KMCRecommendationPagetype.Checkout &&\n [\n KMCRecommendationLogic.BoughtTogether,\n KMCRecommendationLogic.Custom,\n ].includes(kmcConfig.metadata.logic)) {\n if (!options || !options.cartProductIds) {\n throw new Error(\"'cartProductIds' is required for Checkout recommendation\");\n }\n for (const q of queries) {\n if (!q.settings) {\n q.settings = {};\n }\n if (!q.settings.context) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n q.settings.context = {};\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n q.settings.context.recentObjects = [\n {\n typeOfRecord: KlevuTypeOfRecord.Product,\n records: options.cartProductIds.map((id) => ({ id })),\n },\n ];\n }\n }\n if (kmcConfig.metadata.productThreshold) {\n modifiers.push({\n klevuModifierId: \"kmcThreshold\",\n onResult: (response) => {\n var _a, _b;\n const copy = Object.assign({}, response);\n for (const qr of (_b = (_a = copy.apiResponse) === null || _a === void 0 ? void 0 : _a.queryResults) !== null && _b !== void 0 ? _b : []) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (qr.records.length < kmcConfig.metadata.productThreshold) {\n qr.records = [];\n }\n }\n return response;\n },\n });\n }\n return {\n klevuFunctionId: \"kmcRecommendation\",\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n queries,\n params: {\n kmcConfig,\n },\n modifiers,\n configOverride,\n };\n });\n}\n","import { KlevuDomEvents } from \"../events/KlevuDomEvents.js\";\nimport { KlevuFilterType, } from \"../models/KlevuApiRawResponse.js\";\nimport { isBrowser } from \"../utils/isBrowser.js\";\n/**\n * Filter manager is used to store and handle filters (facets) in the results easily.\n * It can be easily used with applyFilterWithFilterManager() and listFilters() modifiers\n */\nexport class FilterManager {\n /**\n * @deprecated use filters instead. This doesn't take into account order of options and sliders\n */\n get options() {\n return this.filters.filter((filter) => filter.type === KlevuFilterType.Options);\n }\n /**\n * @deprecated use filters instead. This doesn't take into account order of options and sliders\n */\n get sliders() {\n return this.filters.filter((filter) => filter.type === KlevuFilterType.Slider);\n }\n /**\n * Manager can be initialized with existing options and sliders\n *\n * @param initialValues initialize manager with values\n */\n constructor(initialValues) {\n var _a;\n this.filters = [];\n this.filters = (_a = initialValues === null || initialValues === void 0 ? void 0 : initialValues.filters) !== null && _a !== void 0 ? _a : [];\n }\n initFromListFilters(filters) {\n this.filters = filters;\n if (isBrowser()) {\n document.dispatchEvent(new CustomEvent(KlevuDomEvents.FiltersApplied, {\n detail: {\n filters: this.filters,\n },\n }));\n }\n }\n /**\n * clear current options and sliders\n */\n clear() {\n this.filters = [];\n }\n /**\n * Gets current state of filters\n *\n * @returns current state\n */\n getCurrentState() {\n return {\n filters: this.filters,\n };\n }\n setState(state) {\n this.filters = state.filters;\n }\n /**\n * Function to select filters in filter manager\n *\n * Sends a Dom event on change\n *\n * @param key Key of option\n * @param value value of option to toggle\n */\n toggleOption(key, value) {\n const suboption = this.getOptionByKeyCreateIfNotExists(key, value);\n const prevSeleted = suboption.selected;\n suboption.selected = !suboption.selected;\n if (isBrowser()) {\n document.dispatchEvent(new CustomEvent(KlevuDomEvents.FilterSelectionUpdate, {\n detail: {\n key,\n name: value,\n selected: !prevSeleted,\n },\n }));\n }\n }\n /**\n * Select given option\n *\n * @param key key of filter to select\n * @param value value of option to select\n * @returns\n */\n selectOption(key, value) {\n const suboption = this.getOptionByKeyCreateIfNotExists(key, value);\n suboption.selected = true;\n if (isBrowser()) {\n document.dispatchEvent(new CustomEvent(KlevuDomEvents.FilterSelectionUpdate, {\n detail: {\n key,\n name: value,\n selected: true,\n },\n }));\n }\n }\n /**\n * Deselect given option\n *\n * @param key key of filter to deselect\n * @param value value of option to deselect\n * @returns\n */\n deselectOption(key, value) {\n const suboption = this.getOptionByKeyCreateIfNotExists(key, value);\n suboption.selected = false;\n if (isBrowser()) {\n document.dispatchEvent(new CustomEvent(KlevuDomEvents.FilterSelectionUpdate, {\n detail: {\n key,\n name: value,\n selected: false,\n },\n }));\n }\n }\n /**\n * Sets `selected` key of all options to false\n *\n * @param key Optional key to lmit clearing to one option\n * @returns\n */\n clearOptionSelections(key) {\n if (key) {\n const option = this.filters.find((o) => o.key === key);\n if (option && FilterManager.isKlevuFilterResultOptions(option)) {\n option.options.forEach((o) => (o.selected = false));\n }\n return;\n }\n this.filters.forEach((option) => {\n if (option && FilterManager.isKlevuFilterResultOptions(option)) {\n option.options.forEach((o2) => (o2.selected = false));\n }\n });\n if (isBrowser()) {\n document.dispatchEvent(new CustomEvent(KlevuDomEvents.FilterSelectionUpdate));\n }\n }\n /**\n * Function to update slide in filter manager\n *\n * Sends a Dom event on change\n *\n * @param key Key of slide\n * @param min Min value of slide\n * @param max Max value of slide\n */\n updateSlide(key, min, max) {\n const slideIndex = this.filters.findIndex((s) => s.key === key);\n let slider;\n if (slideIndex === -1) {\n slider = {\n key,\n end: max.toString(),\n start: min.toString(),\n min: min.toString(),\n max: max.toString(),\n label: key,\n type: KlevuFilterType.Slider,\n };\n this.filters.push(slider);\n }\n else if (!FilterManager.isKlevuFilterResultSlider(this.filters[slideIndex])) {\n throw new Error(`Filter ${key} is not a slider filter.`);\n }\n else {\n slider = this.filters[slideIndex];\n slider.start = min.toString();\n slider.end = max.toString();\n }\n if (isBrowser()) {\n document.dispatchEvent(new CustomEvent(KlevuDomEvents.FilterSelectionUpdate, {\n detail: {\n key: key,\n name: slider.label,\n start: min.toString(),\n end: max.toString(),\n },\n }));\n }\n }\n /**\n * Populate filter manager with filters from Klevu API\n * @returns\n */\n toApplyFilters() {\n const filters = [];\n for (const filter of this.filters) {\n if (FilterManager.isKlevuFilterResultOptions(filter) ||\n FilterManager.isKlevuFilterResultRating(filter)) {\n const selected = filter.options.filter((subOption) => subOption.selected === true);\n if (selected.length === 0) {\n continue;\n }\n filters.push({\n key: filter.key,\n values: selected.map((s) => s.value),\n settings: {\n singleSelect: false,\n },\n });\n }\n else if (FilterManager.isKlevuFilterResultSlider(filter)) {\n if (!filter.start || !filter.end) {\n continue;\n }\n filters.push({\n key: filter.key,\n values: [filter.start, filter.end],\n settings: {\n singleSelect: false,\n },\n });\n }\n }\n return filters;\n }\n /**\n * Get current selection by key\n *\n * @param key\n * @returns\n */\n currentSelection(key) {\n const opt = this.filters.find((o) => o.key === key);\n if (opt &&\n (FilterManager.isKlevuFilterResultOptions(opt) ||\n FilterManager.isKlevuFilterResultRating(opt))) {\n const selectedOptions = opt.options.filter((subOpt) => subOpt.selected === true);\n return selectedOptions.map((s) => s.value);\n }\n if (opt &&\n FilterManager.isKlevuFilterResultSlider(opt) &&\n opt.start &&\n opt.end) {\n return [opt.start, opt.end];\n }\n return undefined;\n }\n /**\n * Changes current selection of filters to a URL param string\n *\n * @returns string of URL params\n */\n toURLParams() {\n const params = new URLSearchParams();\n for (const filter of this.filters) {\n if (FilterManager.isKlevuFilterResultOptions(filter) ||\n FilterManager.isKlevuFilterResultRating(filter)) {\n const selected = filter.options.filter((subOption) => subOption.selected === true);\n if (selected.length === 0) {\n continue;\n }\n params.append(`o_${filter.key}`, selected.map((s) => s.value).join(\",\"));\n }\n else if (FilterManager.isKlevuFilterResultSlider(filter)) {\n if (!filter.start || !filter.end) {\n continue;\n }\n params.append(`s_${filter.key}`, `${filter.start}-${filter.end}`);\n }\n }\n return params.toString();\n }\n /**\n * Set current selection of filters from a URL param string\n *\n * @param params URLSearchParams to read from\n */\n readFromURLParams(params) {\n this.clearOptionSelections();\n for (const [key, value] of params.entries()) {\n if (key.startsWith(\"o\")) {\n const optionKey = key.substring(2);\n value.split(\",\").forEach((v) => this.selectOption(optionKey, v));\n }\n else if (key.startsWith(\"s\")) {\n const sliderKey = key.substring(2);\n this.updateSlide(sliderKey, parseFloat(value.split(\"-\")[0]), parseFloat(value.split(\"-\")[1]));\n }\n }\n }\n /**\n * Quickly get all selected options and sliders\n *\n * @returns Array of selected filters, with key, label, type and value\n */\n selectedFilters() {\n const selectedFilters = [];\n for (const filter of this.filters) {\n if (FilterManager.isKlevuFilterResultOptions(filter) ||\n FilterManager.isKlevuFilterResultRating(filter)) {\n const selected = filter.options.filter((subOption) => subOption.selected === true);\n if (selected.length === 0) {\n continue;\n }\n for (const option of selected) {\n selectedFilters.push({\n key: filter.key,\n label: filter.label,\n type: filter.type,\n value: option.value,\n });\n }\n }\n else if (FilterManager.isKlevuFilterResultSlider(filter)) {\n if (!filter.start || !filter.end) {\n continue;\n }\n selectedFilters.push({\n key: filter.key,\n label: filter.label,\n type: filter.type,\n value: `${filter.start}-${filter.end}`,\n });\n }\n }\n return selectedFilters;\n }\n /**\n * Get option by key and sub option name. If doesn't exist, create it.\n *\n * @param key\n * @returns\n */\n getOptionByKeyCreateIfNotExists(key, value) {\n const optionIndex = this.filters.findIndex((o) => o.key === key);\n let option;\n if (optionIndex === -1) {\n option = {\n key,\n label: key,\n options: [],\n type: KlevuFilterType.Options,\n };\n this.filters.push(option);\n }\n else if (!FilterManager.isKlevuFilterResultOptions(this.filters[optionIndex]) &&\n !FilterManager.isKlevuFilterResultRating(this.filters[optionIndex])) {\n throw new Error(`Filter ${key} is not an option filter.`);\n }\n else {\n option = this.filters[optionIndex];\n }\n const subOptionIndex = option.options.findIndex((o) => o.value === value);\n if (subOptionIndex === -1) {\n option.options.push({\n count: 1,\n name: value,\n selected: false,\n value: value,\n });\n return option.options[option.options.length - 1];\n }\n return option.options[subOptionIndex];\n }\n /**\n * Is given variable a slider filter\n * @param filter\n * @returns\n */\n static isKlevuFilterResultSlider(filter) {\n return filter.type === KlevuFilterType.Slider;\n }\n /**\n * Is given variable an option filter\n * @param filter\n * @returns\n */\n static isKlevuFilterResultOptions(filter) {\n return filter.type === KlevuFilterType.Options;\n }\n /**\n * Is given variable an rating filter\n * @param filter\n * @returns\n */\n static isKlevuFilterResultRating(filter) {\n return filter.type === KlevuFilterType.Rating;\n }\n}\n","\"client export\"\nimport t from\"prop-types\";import e from\"react\";import{resolve as n,Location as r,Link as o}from\"@gatsbyjs/reach-router\";import{applyTrailingSlashOption as s}from\"gatsby-page-utils/apply-trailing-slash-option\";function i(){return i=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},i.apply(this,arguments)}function a(t){let e=t||\"/\",n=\"\",r=\"\";const o=e.indexOf(\"#\");-1!==o&&(r=e.slice(o),e=e.slice(0,o));const s=e.indexOf(\"?\");return-1!==s&&(n=e.slice(s),e=e.slice(0,s)),{pathname:e,search:\"?\"===n?\"\":n,hash:\"#\"===r?\"\":r}}const c=/^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/,l=t=>{if(\"string\"==typeof t)return!(t=>c.test(t))(t)},p=()=>\"production\"!==process.env.NODE_ENV?\"undefined\"!=typeof __PATH_PREFIX__?__PATH_PREFIX__:void 0:__PATH_PREFIX__;function h(t,e=(()=>\"production\"!==process.env.NODE_ENV?\"undefined\"!=typeof __BASE_PATH__?__BASE_PATH__:void 0:__BASE_PATH__)()){var n;if(!l(t))return t;if(t.startsWith(\"./\")||t.startsWith(\"../\"))return t;const r=null!=(n=null!=e?e:p())?n:\"/\";return`${null!=r&&r.endsWith(\"/\")?r.slice(0,-1):r}${t.startsWith(\"/\")?t:`/${t}`}`}const f=t=>null==t?void 0:t.startsWith(\"/\"),u=()=>\"undefined\"!=typeof __TRAILING_SLASH__?__TRAILING_SLASH__:void 0,_=(t,e)=>\"number\"==typeof t?t:l(t)?f(t)?function(t){const e=h(t),n=u();if(\"always\"===n||\"never\"===n){const{pathname:t,search:r,hash:o}=a(e);return`${s(t,n)}${r}${o}`}return e}(t):function(t,e){if(f(t))return t;const r=u(),o=n(t,e);return\"always\"===r||\"never\"===r?s(o,r):o}(t,e):t,d=[\"to\",\"getProps\",\"onClick\",\"onMouseEnter\",\"activeClassName\",\"activeStyle\",\"innerRef\",\"partiallyActive\",\"state\",\"replace\",\"_location\"];function m(t){return h(t,p())}const y={activeClassName:t.string,activeStyle:t.object,partiallyActive:t.bool};function v(t){/*#__PURE__*/return e.createElement(r,null,({location:n})=>/*#__PURE__*/e.createElement(b,i({},t,{_location:n})))}class b extends e.Component{constructor(t){super(t),this.defaultGetProps=({isPartiallyCurrent:t,isCurrent:e})=>(this.props.partiallyActive?t:e)?{className:[this.props.className,this.props.activeClassName].filter(Boolean).join(\" \"),style:i({},this.props.style,this.props.activeStyle)}:null;let e=!1;\"undefined\"!=typeof window&&window.IntersectionObserver&&(e=!0),this.state={IOSupported:e},this.abortPrefetch=null,this.handleRef=this.handleRef.bind(this)}_prefetch(){let t=window.location.pathname+window.location.search;this.props._location&&this.props._location.pathname&&(t=this.props._location.pathname+this.props._location.search);const e=a(_(this.props.to,t)),n=e.pathname+e.search;if(t!==n)return ___loader.enqueue(n)}componentWillUnmount(){if(!this.io)return;const{instance:t,el:e}=this.io;this.abortPrefetch&&this.abortPrefetch.abort(),t.unobserve(e),t.disconnect()}handleRef(t){this.props.innerRef&&Object.prototype.hasOwnProperty.call(this.props.innerRef,\"current\")?this.props.innerRef.current=t:this.props.innerRef&&this.props.innerRef(t),this.state.IOSupported&&t&&(this.io=((t,e)=>{const n=new window.IntersectionObserver(n=>{n.forEach(n=>{t===n.target&&e(n.isIntersecting||n.intersectionRatio>0)})});return n.observe(t),{instance:n,el:t}})(t,t=>{t?this.abortPrefetch=this._prefetch():this.abortPrefetch&&this.abortPrefetch.abort()}))}render(){const t=this.props,{to:n,getProps:r=this.defaultGetProps,onClick:s,onMouseEnter:c,state:p,replace:h,_location:f}=t,u=function(t,e){if(null==t)return{};var n,r,o={},s=Object.keys(t);for(r=0;r<s.length;r++)e.indexOf(n=s[r])>=0||(o[n]=t[n]);return o}(t,d);\"production\"===process.env.NODE_ENV||l(n)||console.warn(`External link ${n} was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links`);const m=_(n,f.pathname);return l(m)?/*#__PURE__*/e.createElement(o,i({to:m,state:p,getProps:r,innerRef:this.handleRef,onMouseEnter:t=>{c&&c(t);const e=a(m);___loader.hovering(e.pathname+e.search)},onClick:t=>{if(s&&s(t),!(0!==t.button||this.props.target||t.defaultPrevented||t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)){t.preventDefault();let e=h;const n=encodeURI(m)===f.pathname;\"boolean\"!=typeof h&&n&&(e=!0),window.___navigate(m,{state:p,replace:e})}return!0}},u)):/*#__PURE__*/e.createElement(\"a\",i({href:m},u))}}b.propTypes=i({},y,{onClick:t.func,to:t.string.isRequired,replace:t.bool,state:t.object});var w=e.forwardRef((t,n)=>/*#__PURE__*/e.createElement(v,i({innerRef:n},t)));const P=(t,e)=>{window.___navigate(_(t,window.location.pathname),e)};export{w as default,P as navigate,a as parsePath,m as withAssetPrefix,h as withPrefix};\n//# sourceMappingURL=index.modern.mjs.map\n","\"client export\"\nimport t,{useEffect as e}from\"react\";import{Location as n,useLocation as r}from\"@gatsbyjs/reach-router\";function o(){return o=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},o.apply(this,arguments)}const a=new Map,l={get:t=>a.get(t)||[],set(t,e){const n=a.get(t)||[];n.push(e),a.set(t,n)},delete(t){a.delete(t)}},s=\"undefined\"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(t){const e=Date.now();return setTimeout(function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})},1)};var c;!function(t){t.postHydrate=\"post-hydrate\",t.idle=\"idle\",t.offMainThread=\"off-main-thread\"}(c||(c={}));const i=new Set([\"src\",\"strategy\",\"dangerouslySetInnerHTML\",\"children\",\"onLoad\",\"onError\"]),u=new Set,d=new Map;function f(e){/*#__PURE__*/return t.createElement(n,null,()=>/*#__PURE__*/t.createElement(p,e))}function p(n){const{src:a,strategy:i=c.postHydrate}=n||{},{pathname:u}=r();if(e(()=>{let t;switch(i){case c.postHydrate:t=y(n);break;case c.idle:s(()=>{t=y(n)});break;case c.offMainThread:{const t=b(n);l.set(u,t)}}return()=>{const{script:e,loadCallback:n,errorCallback:r}=t||{};n&&(null==e||e.removeEventListener(\"load\",n)),r&&(null==e||e.removeEventListener(\"error\",r)),null==e||e.remove()}},[]),i===c.offMainThread){const e=m(n),r=b(n);return\"undefined\"==typeof window&&l.set(u,r),/*#__PURE__*/t.createElement(\"script\",e?o({type:\"text/partytown\",\"data-strategy\":i,crossOrigin:\"anonymous\"},r,{dangerouslySetInnerHTML:{__html:m(n)}}):o({type:\"text/partytown\",src:h(a),\"data-strategy\":i,crossOrigin:\"anonymous\"},r))}return null}function y(t){const{id:e,src:n,strategy:r=c.postHydrate,onLoad:a,onError:l}=t||{},s=e||n,i=[\"load\",\"error\"],f={load:a,error:l};if(s){for(const t of i)if(null!=f&&f[t]){var p;const e=d.get(s)||{},{callbacks:n=[]}=(null==e?void 0:e[t])||{};var y,h;n.push(null==f?void 0:f[t]),null!=e&&null!=(p=e[t])&&p.event?null==f||null==(y=f[t])||y.call(f,null==e||null==(h=e[t])?void 0:h.event):d.set(s,o({},e,{[t]:{callbacks:n}}))}if(u.has(s))return null}const v=m(t),k=b(t),w=document.createElement(\"script\");e&&(w.id=e),w.dataset.strategy=r;for(const[t,e]of Object.entries(k))w.setAttribute(t,e);v&&(w.textContent=v),n&&(w.src=n);const C={};if(s){for(const t of i){const e=e=>g(e,s,t);w.addEventListener(t,e),C[`${t}Callback`]=e}u.add(s)}return document.body.appendChild(w),{script:w,loadCallback:C.loadCallback,errorCallback:C.errorCallback}}function m(t){const{dangerouslySetInnerHTML:e,children:n=\"\"}=t||{},{__html:r=\"\"}=e||{};return r||n}function b(t){const e={};for(const[n,r]of Object.entries(t))i.has(n)||(e[n]=r);return e}function h(t){if(t)return`/__third-party-proxy?url=${encodeURIComponent(t)}`}function g(t,e,n){const r=d.get(e)||{};for(const e of(null==r||null==(o=r[n])?void 0:o.callbacks)||[]){var o;e(t)}d.set(e,{[n]:{event:t}})}export{f as Script,c as ScriptStrategy,l as collectedScriptsByPage,u as scriptCache,d as scriptCallbackCache};\n//# sourceMappingURL=index.modern.mjs.map\n","// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n","/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n,\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n,\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n,\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n,\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: s,\n};\n\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: l,\n};\n\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l,\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n","/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const isNeg = input < 0;\n let padded;\n if (isNeg) {\n padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n } else {\n padded = (\"\" + input).padStart(n, \"0\");\n }\n return padded;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseFloating(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseFloat(string);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// covert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n return +d;\n}\n\nexport function weeksInWeekYear(weekYear) {\n const p1 =\n (weekYear +\n Math.floor(weekYear / 4) -\n Math.floor(weekYear / 100) +\n Math.floor(weekYear / 400)) %\n 7,\n last = weekYear - 1,\n p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;\n return p1 === 4 || p2 === 3 ? 53 : 52;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > 60 ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = { timeZoneName: offsetFormat, ...intlOpts };\n\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find((m) => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n\nexport const ianaRegex =\n /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\n","import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return [...monthsNarrow];\n case \"short\":\n return [...monthsShort];\n case \"long\":\n return [...monthsLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\",\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [...weekdaysNarrow];\n case \"short\":\n return [...weekdaysShort];\n case \"long\":\n return [...weekdaysLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return [...erasNarrow];\n case \"short\":\n return [...erasShort];\n case \"long\":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"],\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hourCycle\",\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n","import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS,\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: false, val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n formatDateTime(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n formatDateTimeParts(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.formatToParts();\n }\n\n resolvedOptions(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = { ...this.opts };\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = (opts) => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hourCycle: \"h12\" }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = (token) => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = (length) =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = (token) => {\n // Where possible: http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // fractional seconds\n case \"uu\":\n return this.num(Math.floor(dt.millisecond / 10), 2);\n case \"uuu\":\n return this.num(Math.floor(dt.millisecond / 100));\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = (token) => {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"w\":\n return \"week\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n default:\n return null;\n }\n },\n tokenToString = (lildur) => (token) => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n","export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n","import { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n get ianaName() {\n return this.name;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get isUniversal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n","import { formatOffset, parseZoneInfo } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class SystemZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {SystemZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new SystemZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"system\";\n }\n\n /** @override **/\n get name() {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"system\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import { formatOffset, parseZoneInfo, isUndefined, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n era: \"short\",\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n era: 3,\n hour: 4,\n minute: 5,\n second: 6,\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i];\n const pos = typeToPos[type];\n\n if (type === \"era\") {\n filled[pos] = value;\n } else if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @deprecated This method returns false for some valid IANA names. Use isValidZone instead.\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return this.isValidZone(s);\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n if (!zone) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /** @override **/\n get type() {\n return \"iana\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name);\n let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date);\n\n if (adOrBc === \"BC\") {\n year = -Math.abs(year) + 1;\n }\n\n // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n const adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0,\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /** @override **/\n get isValid() {\n return this.valid;\n }\n}\n","import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /** @override **/\n get type() {\n return \"fixed\";\n }\n\n /** @override **/\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n get ianaName() {\n if (this.fixed === 0) {\n return \"Etc/UTC\";\n } else {\n return `Etc/GMT${formatOffset(-this.fixed, \"narrow\")}`;\n }\n }\n\n /** @override **/\n offsetName() {\n return this.name;\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /** @override **/\n get isUniversal() {\n return true;\n }\n\n /** @override **/\n offset() {\n return this.fixed;\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n","/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"local\" || lowered === \"system\") return defaultZone;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && input.offset && typeof input.offset === \"number\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n","import SystemZone from \"./zones/systemZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nlet now = () => Date.now(),\n defaultZone = \"system\",\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n throwOnInvalid;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * Use the value \"system\" to reset this value to the system's time zone.\n * @type {string}\n */\n static set defaultZone(zone) {\n defaultZone = zone;\n }\n\n /**\n * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\n * The default value is the system's time zone (the one set on the machine that runs this code).\n * @type {Zone}\n */\n static get defaultZone() {\n return normalizeZone(defaultZone, SystemZone.instance);\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n }\n}\n","import { padStart, roundTo, hasRelative } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n// todo - remap caching\n\nlet intlLFCache = {};\nfunction getCachedLF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlLFCache[key];\n if (!dtf) {\n dtf = new Intl.ListFormat(locString, opts);\n intlLFCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else {\n sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\n return sysLocaleCache;\n }\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n const smaller = localeStr.substring(0, uIndex);\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n } catch (e) {\n options = getCachedDTF(smaller).resolvedOptions();\n }\n\n const { numberingSystem, calendar } = options;\n // return the smaller one so that we can append the calendar and numbering overrides to it\n return [smaller, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (outputCalendar || numberingSystem) {\n localeStr += \"-u\";\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2016, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, defaultOK, englishFn, intlFn) {\n const mode = loc.listingMode(defaultOK);\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\"\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n const { padTo, floor, ...otherOpts } = opts;\n\n if (!forceSimple || Object.keys(otherOpts).length > 0) {\n const intlOpts = { useGrouping: false, ...opts };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n\n let z;\n if (dt.zone.isUniversal) {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata.\n // So we have to make do. Two cases:\n // 1. The format options tell us to show the zone. We can't do that, so the best\n // we can do is format the date in UTC.\n // 2. The format options don't tell us to show the zone. Then we can adjust them\n // the time and tell the formatter to show it to us in UTC, so that the time is right\n // and the bad zone doesn't show up.\n z = \"UTC\";\n if (opts.timeZoneName) {\n this.dt = dt;\n } else {\n this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1000);\n }\n }\n } else if (dt.zone.type === \"system\") {\n this.dt = dt;\n } else {\n this.dt = dt;\n z = dt.zone.name;\n }\n\n const intlOpts = { ...this.opts };\n if (z) {\n intlOpts.timeZone = z;\n }\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n\n format() {\n return this.dtf.format(this.dt.toJSDate());\n }\n\n formatToParts() {\n return this.dtf.formatToParts(this.dt.toJSDate());\n }\n\n resolvedOptions() {\n return this.dtf.resolvedOptions();\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = { style: \"long\", ...opts };\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN);\n }\n\n static create(locale, numberingSystem, outputCalendar, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale;\n // the system locale is useful for human readable strings but annoying for parsing/formatting known formats\n const localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\n const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\n const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar);\n }\n\n constructor(locale, numbering, outputCalendar, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode() {\n const isActuallyEn = this.isEnglish();\n const hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone({ ...alts, defaultToEN: true });\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone({ ...alts, defaultToEN: false });\n }\n\n months(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.months, () => {\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, \"month\"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays((dt) =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems(defaultOK = true) {\n return listStuff(\n this,\n undefined,\n defaultOK,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hourCycle: \"h12\" };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n (dt) => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map((dt) =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find((m) => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n listFormatter(opts = {}) {\n return getCachedLF(this.intl, opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\")\n );\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n}\n","import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n ianaRegex,\n isUndefined,\n parseFloating,\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return (m) =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [{ ...mergedVals, ...val }, zone || mergedZone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/;\nconst isoExtendedZone = `(?:${offsetRegex.source}?(?:\\\\[(${ianaRegex.source})\\\\])?)?`;\nconst isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\nconst isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);\nconst isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`);\nconst isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\nconst isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\nconst isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\nconst extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\nconst extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\nconst sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\nconst sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n);\nconst sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1),\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3]),\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration =\n /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] =\n match;\n\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseFloating(yearStr)),\n months: maybeNegate(parseFloating(monthStr)),\n weeks: maybeNegate(parseFloating(weekStr)),\n days: maybeNegate(parseFloating(dayStr)),\n hours: maybeNegate(parseFloating(hourStr)),\n minutes: maybeNegate(parseFloating(minuteStr)),\n seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds),\n },\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n};\n\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr),\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr,\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, \" \")\n .replace(/(\\s\\s+)/g, \" \")\n .trim();\n}\n\n// http date\n\nconst rfc1123 =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 =\n /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeAndOffset = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\n/*\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n","import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration, parseISOTimeOnly } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo,\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nexport const lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000,\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000,\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 },\n },\n casualMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000,\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000,\n },\n\n ...lowOrderMatrix,\n },\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4,\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000,\n },\n ...lowOrderMatrix,\n };\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : { ...dur.values, ...(alts.values || {}) },\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n };\n return new Duration(conf);\n}\n\nfunction antiTrunc(n) {\n return n < 0 ? Math.floor(n) : Math.ceil(n);\n}\n\n// NB: mutates parameters\nfunction convert(matrix, fromMap, fromUnit, toMap, toUnit) {\n const conv = matrix[toUnit][fromUnit],\n raw = fromMap[fromUnit] / conv,\n sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]),\n // ok, so this is wild, but see the matrix in the tests\n added =\n !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw);\n toMap[toUnit] += added;\n fromMap[fromUnit] -= added * conv;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n reverseUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n convert(matrix, vals, previous, vals, current);\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration#fromMillis}, {@link Duration#fromObject}, or {@link Duration#fromISO}.\n * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = accurate ? accurateMatrix : casualMatrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject({ milliseconds: count }, opts);\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {Object} [opts=[]] - options for creating this Duration\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromObject(obj, opts = {}) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit),\n loc: Locale.fromObject(opts),\n conversionAccuracy: opts.conversionAccuracy,\n });\n }\n\n /**\n * Create a Duration from DurationLike.\n *\n * @param {Object | number | Duration} durationLike\n * One of:\n * - object with keys like 'years' and 'hours'.\n * - number representing milliseconds\n * - Duration instance\n * @return {Duration}\n */\n static fromDurationLike(durationLike) {\n if (isNumber(durationLike)) {\n return Duration.fromMillis(durationLike);\n } else if (Duration.isDuration(durationLike)) {\n return durationLike;\n } else if (typeof durationLike === \"object\") {\n return Duration.fromObject(durationLike);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationLike} of type ${typeof durationLike}`\n );\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\",\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `w` for weeks\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * Tokens can be escaped by wrapping with single quotes.\n * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = {\n ...opts,\n floor: opts.round !== false && opts.floor !== false,\n };\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a string representation of a Duration with all units included.\n * To modify its behavior use the `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat\n * @param opts - On option object to override the formatting. Accepts the same keys as the options parameter of the native `Int.NumberFormat` constructor, as well as `listStyle`.\n * @example\n * ```js\n * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })\n * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'\n * dur.toHuman({ listStyle: \"long\" }) //=> '1 day, 5 hours, and 6 minutes'\n * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 day, 5 hr, 6 min'\n * ```\n */\n toHuman(opts = {}) {\n const l = orderedUnits\n .map((unit) => {\n const val = this.values[unit];\n if (isUndefined(val)) {\n return null;\n }\n return this.loc\n .numberFormatter({ style: \"unit\", unitDisplay: \"long\", ...opts, unit: unit.slice(0, -1) })\n .format(val);\n })\n .filter((n) => n);\n\n return this.loc\n .listFormatter({ type: \"conjunction\", style: opts.listStyle || \"narrow\", ...opts })\n .format(l);\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject() {\n if (!this.isValid) return {};\n return { ...this.values };\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\",\n ...opts,\n };\n\n const value = this.shiftTo(\"hours\", \"minutes\", \"seconds\", \"milliseconds\");\n\n let fmt = opts.format === \"basic\" ? \"hhmm\" : \"hh:mm\";\n\n if (!opts.suppressSeconds || value.seconds !== 0 || value.milliseconds !== 0) {\n fmt += opts.format === \"basic\" ? \"ss\" : \":ss\";\n if (!opts.suppressMilliseconds || value.milliseconds !== 0) {\n fmt += \".SSS\";\n }\n }\n\n let str = value.toFormat(fmt);\n\n if (opts.includePrefix) {\n str = \"T\" + str;\n }\n\n return str;\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n return this.as(\"milliseconds\");\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hour\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) };\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem }),\n opts = { loc };\n\n if (conversionAccuracy) {\n opts.conversionAccuracy = conversionAccuracy;\n }\n\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map((u) => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n // plus anything further down the chain that should be rolled up in to this\n for (const down in vals) {\n if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) {\n convert(this.matrix, vals, down, built, k);\n }\n }\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n return clone(this, { values: built }, true).normalize();\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n","import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link Interval#fromDateTimes}, {@link Interval#after}, {@link Interval#before}, or {@link Interval#fromISO}.\n * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval#merge}, {@link Interval#xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd,\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `<start>/<end>`, `<start>/<duration>`, and `<duration>/<end>` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @return {number}\n */\n count(unit = \"milliseconds\") {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit),\n end = this.end.startOf(unit);\n return Math.floor(end.diff(start, unit).get(unit)) + 1;\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...DateTime} dateTimes - the unit of time to count.\n * @return {Array}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter((d) => this.contains(d))\n .sort(),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {Array}\n */\n splitBy(duration) {\n const dur = Duration.fromDurationLike(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits((x) => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {Array}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Return whether this Interval engulfs the start and end of the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static merge(intervals) {\n const [found, final] = intervals\n .sort((a, b) => a.s - b.s)\n .reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map((i) => [\n { time: i.s, type: \"s\" },\n { time: i.e, type: \"e\" },\n ]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {Array}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map((i) => this.intersection(i))\n .filter((i) => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} – ${this.e.toISO()})`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format string.\n * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime#toFormat} for details.\n * @param {Object} opts - options\n * @param {string} [opts.separator = ' – '] - a separator to place between the start and end representations\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" – \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n","import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now().setZone(zone).set({ month: 12 });\n\n return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone#isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> 'Ù¡'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'RabiÊ» I'\n * @return {Array}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link Info#months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {Array}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n * @return {Array}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link Info#weekdays}\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {Array}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n * @return {Array}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n * @return {Array}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `relative`: whether this environment supports relative time formatting\n * @example Info.features() //=> { relative: false }\n * @return {Object}\n */\n static features() {\n return { relative: hasRelative() };\n }\n}\n","import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf(\"day\").valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"quarters\", (a, b) => b.quarter - a.quarter],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n },\n ],\n [\"days\", dayDiff],\n ];\n\n const results = {};\n let lowestOrder, highWater;\n\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n let delta = differ(cursor, later);\n highWater = cursor.plus({ [unit]: delta });\n\n if (highWater > later) {\n cursor = cursor.plus({ [unit]: delta - 1 });\n delta -= 1;\n } else {\n cursor = highWater;\n }\n\n results[unit] = delta;\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function (earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n (u) => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(results, opts);\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n","const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|å››|五|å…|七|å…«|ä¹]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\",\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881],\n};\n\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n return new RegExp(`${numberingSystems[numberingSystem || \"latn\"]}${append}`);\n}\n","import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = (i) => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `[ ${NBSP}]`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex((i) => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex,\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = (t) => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\", false), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\", false), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true, false), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true, false), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false, false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false, false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n case \"uu\":\n return simple(oneOrTwo);\n case \"uuu\":\n return intUnit(one);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false, false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false, false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true, false), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true, false), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP,\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\",\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\",\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\",\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\",\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour: {\n numeric: \"h\",\n \"2-digit\": \"hh\",\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\",\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\",\n },\n};\n\nfunction tokenForPart(part, locale, formatOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n return {\n literal: true,\n val: value,\n };\n }\n\n const style = formatOpts[type];\n\n let val = partTypeStyleToTokenVal[type];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val,\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = (token) => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone = null;\n let specificOffset;\n if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n }\n\n if (!isUndefined(matches.Z)) {\n if (!zone) {\n zone = new FixedOffsetZone(matches.Z);\n }\n specificOffset = matches.Z;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone, specificOffset];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n\n if (!formatOpts) {\n return token;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const parts = formatter.formatDateTimeParts(getDummyDateTime());\n\n const tokens = parts.map((p) => tokenForPart(p, locale, formatOpts));\n\n if (tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nfunction expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport function explainFromTokens(locale, input, format) {\n const tokens = expandMacroTokens(Formatter.parseFormat(format), locale),\n units = tokens.map((t) => unitForToken(t, locale)),\n disqualifyingUnit = units.find((t) => t.invalidReason);\n\n if (disqualifyingUnit) {\n return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };\n } else {\n const [regexString, handlers] = buildRegex(units),\n regex = RegExp(regexString, \"i\"),\n [rawMatches, matches] = match(input, regex, handlers),\n [result, zone, specificOffset] = matches\n ? dateTimeFromMatches(matches)\n : [null, null, undefined];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return { input, tokens, regex, rawMatches, matches, result, zone, specificOffset };\n }\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, specificOffset, invalidReason];\n}\n","import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger,\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nfunction dayOfWeek(year, month, day) {\n const d = new Date(Date.UTC(year, month - 1, day));\n\n if (year < 100 && year >= 0) {\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n\n const js = d.getUTCDay();\n\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex((i) => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = dayOfWeek(year, month, day);\n\n let weekNumber = Math.floor((ordinal - weekday + 10) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear);\n } else if (weekNumber > weeksInWeekYear(year)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return { weekYear, weekNumber, weekday, ...timeObject(gregObj) };\n}\n\nexport function weekToGregorian(weekData) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = dayOfWeek(weekYear, 1, 4),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(weekData) };\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData;\n const ordinal = computeOrdinal(year, month, day);\n return { year, ordinal, ...timeObject(gregData) };\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData;\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(ordinalData) };\n}\n\nexport function hasInvalidWeekData(obj) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.week);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n","import Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS,\n padStart,\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport { parseFromTokens, explainFromTokens } from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData,\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError,\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid,\n };\n return new DateTime({ ...current, ...alts, old: current });\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds(),\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = {\n ...inst.c,\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7,\n },\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds,\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\n const { setZone, zone } = opts;\n if (parsed && Object.keys(parsed).length !== 0) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(parsed, {\n ...opts,\n zone: interpretationZone,\n specificOffset,\n });\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true,\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\nfunction toISODate(o, extended) {\n const longFormat = o.c.year > 9999 || o.c.year < 0;\n let c = \"\";\n if (longFormat && o.c.year >= 0) c += \"+\";\n c += padStart(o.c.year, longFormat ? 6 : 4);\n\n if (extended) {\n c += \"-\";\n c += padStart(o.c.month);\n c += \"-\";\n c += padStart(o.c.day);\n } else {\n c += padStart(o.c.month);\n c += padStart(o.c.day);\n }\n return c;\n}\n\nfunction toISOTime(\n o,\n extended,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n) {\n let c = padStart(o.c.hour);\n if (extended) {\n c += \":\";\n c += padStart(o.c.minute);\n if (o.c.second !== 0 || !suppressSeconds) {\n c += \":\";\n }\n } else {\n c += padStart(o.c.minute);\n }\n\n if (o.c.second !== 0 || !suppressSeconds) {\n c += padStart(o.c.second);\n\n if (o.c.millisecond !== 0 || !suppressMilliseconds) {\n c += \".\";\n c += padStart(o.c.millisecond, 3);\n }\n }\n\n if (includeOffset) {\n if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\n c += \"Z\";\n } else if (o.o < 0) {\n c += \"-\";\n c += padStart(Math.trunc(-o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(-o.o % 60));\n } else {\n c += \"+\";\n c += padStart(Math.trunc(o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(o.o % 60));\n }\n }\n\n if (extendedZone) {\n c += \"[\" + o.zone.ianaName + \"]\";\n }\n return c;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\",\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\",\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, opts) {\n const zone = normalizeZone(opts.zone, Settings.defaultZone),\n loc = Locale.fromObject(opts),\n tsNow = Settings.now();\n\n let ts, o;\n\n // assume we have the higher-order units\n if (!isUndefined(obj.year)) {\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const offsetProvis = zone.offset(tsNow);\n [ts, o] = objToTS(obj, offsetProvis, zone);\n } else {\n ts = tsNow;\n }\n\n return new DateTime({ ts, zone, loc, o });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = (unit) => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\nfunction lastOpts(argList) {\n let opts = {},\n args;\n if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\n opts = argList[argList.length - 1];\n args = Array.from(argList).slice(0, argList.length - 1);\n } else {\n args = Array.from(argList);\n }\n return [opts, args];\n}\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime#local}, {@link DateTime#utc}, and (most flexibly) {@link DateTime#fromObject}. To create one from a standard string format, use {@link DateTime#fromISO}, {@link DateTime#fromHTTP}, and {@link DateTime#fromRFC2822}. To create one from a custom string format, use {@link DateTime#fromFormat}. To create one from a native JS date, use {@link DateTime#fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\n * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\n * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n const ot = zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local({ zone: \"America/New_York\" }) //~> now, in US east coast time\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12, { locale: \"fr\" }) //~> 2017-03-12T00:00:00, with a French locale\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" }) //~> 2017-03-12T05:00:00, in UTC\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @param {Object} options - configuration options for the DateTime\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" }) //~> 2017-03-12T05:45:00Z with a French locale\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\n * @return {DateTime}\n */\n static utc() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n\n opts.zone = FixedOffsetZone.utcInstance;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options),\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {Object} opts - options for creating this DateTime\n * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @return {DateTime}\n */\n static fromObject(obj, opts = {}) {\n obj = obj || {};\n const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const tsNow = Settings.now(),\n offsetProvis = !isUndefined(opts.specificOffset)\n ? opts.specificOffset\n : zoneToUse.offset(tsNow),\n normalized = normalizeObject(obj, normalizeUnit),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber,\n loc = Locale.fromObject(opts);\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc,\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n }),\n [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is an instance of DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.isUniversal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1, day: 1 }).offset ||\n this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOptions(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link DateTime#setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnit),\n settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian({ ...gregorianToWeek(this.c), ...normalized });\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized });\n } else {\n mixed = { ...this.toObject(), ...normalized };\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link DateTime#plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit) {\n if (!this.isValid) return this;\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n o.weekday = 1;\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString({ locale: 'en-gb' }); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO({\n format = \"extended\",\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset = true,\n extendedZone = false,\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n const ext = format === \"extended\";\n\n let c = toISODate(this, ext);\n c += \"T\";\n c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\n return c;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return toISODate(this, format === \"extended\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n extendedZone = false,\n format = \"extended\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n let c = includePrefix ? \"T\" : \"\";\n return (\n c +\n toISOTime(\n this,\n format === \"extended\",\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n )\n );\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {\n let fmt = \"HH:mm:ss.SSS\";\n\n if (includeZone || includeOffset) {\n if (includeOffsetSpace) {\n fmt += \" \";\n }\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += \"ZZ\";\n }\n }\n\n return toTechFormat(this, fmt, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns the epoch seconds (as a whole number) of this DateTime.\n * @return {number}\n */\n toUnixInteger() {\n return this.isValid ? Math.floor(this.ts / 1000) : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = { ...this.c };\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\"created by diffing an invalid DateTime\");\n }\n\n const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link DateTime#diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return adjustedToZone.startOf(unit) <= inputMs && inputMs <= adjustedToZone.endOf(unit);\n }\n\n /**\n * Equality check\n * Two DateTimes are equal iff they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 dÃa\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({}, { zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(base, this.plus(padding), {\n ...options,\n numeric: \"always\",\n units,\n unit,\n });\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {\n ...options,\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true,\n });\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link DateTime#toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__assign","assign","t","s","i","n","arguments","length","apply","this","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","push","o","indexOf","getOwnPropertySymbols","propertyIsEnumerable","SuppressedError","globalThis","window","self","__esModule","default","exports","defineProperty","locked","Map","addToLocked","get","set","unshift","isLocked","has","lock","unlock","setTimeout","delete","getInstance","instance","a","r","c","throw","return","key","Error","getItem","clear","localStorage","removeItem","setItem","keySync","getItemSync","clearSync","removeItemSync","setItemSync","u","Math","floor","random","l","acquiredIatSet","Set","storageHandler","id","Date","now","toString","acquireLock","bind","releaseLock","releaseLock__private__","waitForSomethingToChange","refreshLockWhileAcquired","waiters","h","m","JSON","stringify","iat","timeoutKey","timeAcquired","timeRefreshed","parse","add","lockCorrector","removeEventListener","removeFromWaiting","clearTimeout","addEventListener","addToWaiting","max","filter","notifyWaiters","slice","forEach","includes","timeoutInSeconds","name","version","constructor","super","error","error_description","static","state","appState","popup","mfa_token","audience","scope","w","crypto","from","getRandomValues","Uint8Array","k","btoa","clientId","URLSearchParams","keys","reduce","client_id","decodeURIComponent","atob","split","map","charCodeAt","join","replace","async","fetch","ok","json","O","auth","timeout","fetchUrl","fetchOptions","useFormData","MessageChannel","port1","onmessage","data","close","postMessage","port2","S","AbortController","signal","race","abort","finally","I","T","baseUrl","auth0Client","method","headers","j","Boolean","trim","C","prefix","suffix","toKey","z","remove","allKeys","startsWith","enclosedCache","x","cache","keyManifest","nowProvider","getIdTokenCacheKey","id_token","decodedToken","getCacheKeys","matchExistingCacheKey","expiresAt","refresh_token","wrapCacheEntry","expires_in","fromKey","Z","storage","cookieDomain","storageKey","create","save","daysUntilExpire","K","W","R","encodeURIComponent","expires","setMilliseconds","getMilliseconds","toUTCString","domain","path","secure","sameSite","charAt","document","cookie","encode","getAll","U","L","D","X","location","protocol","N","J","sessionStorage","V","M","String","fromCharCode","Uint16Array","buffer","substring","Blob","type","URL","createObjectURL","F","Worker","A","B","manifestKey","createManifestKeyFrom","size","$","memory","localstorage","q","Q","openUrl","onRedirect","ee","te","userCache","defaultOptions","authorizationParams","useRefreshTokensFallback","_releaseLockOnPageHide","options","subtle","cacheLocation","console","warn","httpTimeoutMs","httpTimeoutInSeconds","cookieStorage","legacySameSiteCookie","orgHintCookieName","isAuthenticatedCookieName","sessionCheckExpiryDays","useCookiesForTransactions","useRefreshTokens","transactionManager","cacheManager","domainUrl","test","tokenIssuer","issuer","workerUrl","worker","_url","_authorizeUrl","__raw","encoded","header","payload","signature","claims","user","iss","sub","alg","aud","isArray","azp","nonce","max_age","auth_time","exp","leeway","setUTCSeconds","nbf","parseInt","organization","org_id","toLowerCase","org_name","E","_processOrgHint","digest","TextEncoder","response_type","response_mode","redirect_uri","code_challenge","code_challenge_method","code_verifier","url","screenX","innerWidth","screenY","innerHeight","open","_prepareAuthorizeUrl","origin","href","setInterval","closed","clearInterval","response","fromPayload","authorizeTimeoutInSeconds","_requestToken","grant_type","code","nonceIn","_getIdTokenFromCache","fragment","getTokenSilently","cacheMode","_getTokenSilently","detailedResponse","access_token","_getEntryFromCache","_getTokenUsingRefreshToken","_getTokenFromIFrame","oauthTokenScope","loginWithPopup","getUser","_buildLogoutUrl","logoutParams","federated","prompt","crossOriginIsolated","createElement","setAttribute","style","display","contains","removeChild","source","appendChild","logout","message","setIdToken","getIdToken","_verifyIdToken","_saveEntryInCache","initialAuthState","isAuthenticated","isLoading","stub","initialContext","buildAuthorizeUrl","buildLogoutUrl","getAccessTokenSilently","getAccessTokenWithPopup","getIdTokenClaims","loginWithRedirect","handleRedirectCallback","Auth0Context","createContext","OAuthError","_super","_this","__","__extends","CODE_RE","STATE_RE","ERROR_RE","normalizeErrorFn","fallbackMessage","loginError","tokenError","deprecateRedirectUri","_a","redirectUri","reducer","action","undefined","defaultOnRedirectCallback","history","replaceState","title","returnTo","pathname","Auth0Provider","opts","children","skipRedirectCallback","onRedirectCallback","_b","context","clientOpts","__rest","client","useState","toAuth0ClientOptions","_c","useReducer","dispatch","didInitialise","useRef","useEffect","current","error_1","searchParams","search","checkSession","useCallback","config","error_2","token","error_3","error_4","getTokenWithPopup","error_5","contextValue","useMemo","Provider","useAuth0","useContext","defaultOnRedirecting","defaultOnBeforeAuthentication","defaultReturnTo","concat","withAuthenticationRequired","Component","props","onRedirecting","onBeforeAuthentication","loginOptions","_d","_e","_extends","target","getLocation","_source$location","hash","host","hostname","port","canUseDOM","encodeURI","decodeURI","createHistory","listeners","transitioning","resolveTransition","_onTransitionComplete","listen","listener","popstateListener","fn","navigate","to","_ref","_ref$replace","go","pushState","transition","res","createMemorySource","initialPath","searchIndex","initialLocation","substr","index","stack","states","entries","uri","_uri$split","_uri$split$","_uri$split2","_uri$split2$","newIndex","globalHistory","obj","_invariant","_invariant2","string","pick","routes","match","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","missed","route","params","routeSegments","routeSegment","uriSegment","isSplat","dynamicMatch","paramRe","exec","reservedNames","isDynamic","segment","rankRoute","score","isRootSegment","SEGMENT_POINTS","sort","addQuery","_len","query","_key","Accordion","ref","childrenProp","classes","className","_props$defaultExpande","defaultExpanded","_props$disabled","disabled","expandedProp","expanded","onChange","_props$square","square","_props$TransitionComp","TransitionComponent","TransitionProps","other","_useControlled","controlled","_useControlled2","setExpandedState","handleChange","event","_React$Children$toArr","_React$Children$toArr2","summary","toggle","root","rounded","in","role","theme","duration","transitions","shortest","position","left","top","right","height","content","opacity","backgroundColor","palette","divider","margin","marginTop","marginBottom","disabledBackground","borderRadius","borderTopLeftRadius","shape","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","AccordionContext","AccordionDetails","padding","spacing","AccordionSummary","expandIcon","focusVisibleClassName","_props$IconButtonProp","IconButtonProps","onClick","_React$useContext","_React$useContext$dis","focusRipple","disableRipple","component","focusVisible","focused","edge","tabIndex","minHeight","cursor","focus","disabledOpacity","flexGrow","transform","Backdrop","_props$invisible","invisible","transitionDuration","zIndex","alignItems","justifyContent","bottom","WebkitTapHighlightColor","getChildMapping","mapFn","Children","child","isValidElement","mapper","getProp","prop","getNextChildMapping","nextProps","prevChildMapping","onExited","nextChildMapping","prev","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","cloneElement","exit","enter","values","TransitionGroup","_React$Component","handleExited","isMounting","firstRender","_proto","componentDidMount","mounted","setState","componentWillUnmount","getDerivedStateFromProps","appear","node","currentChildMapping","render","_this$props","childFactory","TransitionGroupContext","propTypes","defaultProps","useEnhancedEffect","_props$pulsate","pulsate","rippleX","rippleY","rippleSize","inProp","_props$onExited","_React$useState","leaving","setLeaving","rippleClassName","ripple","rippleVisible","ripplePulsate","rippleStyles","width","childClassName","childLeaving","childPulsate","useEventCallback","timeoutId","TouchRipple","_props$center","center","centerProp","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","startTimerCommit","container","startCommit","cb","oldRipples","start","_options$pulsate","_options$center","_options$fakeElement","fakeElement","element","rect","getBoundingClientRect","clientX","clientY","touches","round","sqrt","pow","sizeX","abs","clientWidth","sizeY","clientHeight","stop","persist","withStyles","overflow","pointerEvents","animation","easing","easeInOut","animationDuration","shorter","flip","ButtonBase","buttonRefProp","buttonRef","_props$centerRipple","centerRipple","_props$component","_props$disableRipple","_props$disableTouchRi","disableTouchRipple","_props$focusRipple","onBlur","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","onDragLeave","_props$tabIndex","TouchRippleProps","_props$type","rippleRef","setFocusVisible","_useIsFocusVisible","useIsFocusVisible","isFocusVisible","onBlurVisible","focusVisibleRef","useRippleHandler","rippleAction","eventCallback","skipRippleAction","handleMouseDown","handleDragLeave","handleMouseUp","handleMouseLeave","preventDefault","handleTouchStart","handleTouchEnd","handleTouchMove","handleBlur","handleFocus","currentTarget","isNonNativeButton","button","tagName","keydownRef","handleKeyDown","handleKeyUp","defaultPrevented","ComponentProp","buttonProps","handleUserRef","useForkRef","handleOwnRef","handleRef","_React$useState2","mountedState","setMountedState","enableTouchRipple","outline","border","userSelect","verticalAlign","textDecoration","color","borderStyle","colorAdjust","mapEventPropToEvent","eventProp","_props$disableReactTr","disableReactTree","_props$mouseEvent","mouseEvent","onClickAway","_props$touchEvent","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","handleClickAway","insideReactTree","documentElement","clickedRootScrollbar","insideDOM","composedPath","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","doc","mappedMouseEvent","Collapse","collapsedHeight","_props$collapsedSize","collapsedSize","collapsedSizeProp","_props$disableStrictM","disableStrictModeCompat","onEnter","onEntered","onEntering","onExit","onExiting","_props$timeout","timer","wrapperRef","autoTransitionDuration","enableStrictModeCompat","unstable_strictMode","normalizedTransitionCallback","callback","nodeOrAppearing","maybeAppearing","_ref2","isAppearing","handleEnter","handleEntering","wrapperHeight","mode","duration2","getAutoHeightDuration","handleEntered","handleExit","handleExiting","addEndListener","nodeOrNext","maybeNext","childProps","entered","hidden","wrapper","wrapperInner","muiSupportAuto","visibility","oppositeDirection","defaultTransitionDuration","Drawer","_props$anchor","anchor","anchorProp","BackdropProps","_props$elevation","elevation","_props$ModalProps","ModalProps","BackdropPropsProp","onClose","_props$open","_props$PaperProps","PaperProps","SlideProps","_props$transitionDura","_props$variant","variant","direction","isHorizontal","getAnchor","drawer","paper","docked","slidingDrawer","BackdropComponent","modal","flex","overflowY","flexDirection","WebkitOverflowScrolling","paperAnchorLeft","paperAnchorRight","paperAnchorTop","maxHeight","paperAnchorBottom","paperAnchorDockedLeft","borderRight","paperAnchorDockedTop","borderBottom","paperAnchorDockedRight","borderLeft","paperAnchorDockedBottom","borderTop","styles","entering","defaultTimeout","Fade","foreignRef","transitionProps","webkitTransition","getScale","Grow","autoTimeout","_getTransitionProps","delay","_getTransitionProps2","IconButton","_props$edge","_props$color","_props$disableFocusRi","disableFocusRipple","_props$size","edgeStart","edgeEnd","textAlign","fontSize","typography","pxToRem","active","hoverOpacity","marginLeft","marginRight","colorInherit","colorPrimary","primary","main","colorSecondary","secondary","sizeSmall","Link","TypographyClasses","_props$underline","underline","handlerRef","underlineNone","underlineHover","underlineAlways","List","_props$dense","dense","_props$disablePadding","disablePadding","subheader","listStyle","paddingTop","paddingBottom","ListContext","ListItem","_props$alignItems","_props$autoFocus","autoFocus","_props$button","componentProp","_props$ContainerCompo","ContainerComponent","_props$ContainerProps","ContainerProps","ContainerClassName","_props$disableGutters","disableGutters","_props$divider","_props$selected","selected","childContext","listItemRef","hasSecondaryAction","componentProps","gutters","alignItemsFlexStart","secondaryAction","boxSizing","backgroundClip","paddingLeft","paddingRight","hover","ariaHidden","show","removeAttribute","getPaddingRight","getComputedStyle","ariaHiddenSiblings","mountNode","currentNode","nodesToExclude","blacklist","blacklistTagNames","nodeType","findIndexOf","containerInfo","idx","some","item","handleContainer","fixedNodes","restoreStyle","restorePaddings","disableScrollLock","ownerDocument","ownerWindow","scrollHeight","isOverflowing","scrollbarSize","getScrollbarSize","el","querySelectorAll","parent","parentElement","scrollContainer","nodeName","removeProperty","setProperty","ModalManager","modals","containers","modalIndex","modalRef","hiddenSiblingNodes","hiddenSiblings","getAttribute","getHiddenSiblings","containerIndex","restore","splice","nextTop","_props$disableAutoFoc","disableAutoFocus","_props$disableEnforce","disableEnforceFocus","_props$disableRestore","disableRestoreFocus","getDoc","isEnabled","ignoreNextEnforceFocus","sentinelStart","sentinelEnd","nodeToRestore","rootRef","prevOpenRef","activeElement","hasAttribute","contain","hasFocus","loopFocus","keyCode","shiftKey","interval","defaultManager","inProps","useTheme","getThemeProps","_props$BackdropCompon","_props$closeAfterTran","closeAfterTransition","_props$disableBackdro","disableBackdropClick","_props$disableEscapeK","disableEscapeKeyDown","_props$disablePortal","disablePortal","_props$disableScrollL","_props$hideBackdrop","hideBackdrop","_props$keepMounted","keepMounted","_props$manager","manager","onBackdropClick","onEscapeKeyDown","onRendered","exited","setExited","mountNodeRef","hasTransition","getHasTransition","getModal","handleMounted","mount","scrollTop","handleOpen","resolvedContainer","getContainer","isTopModal","handlePortalRef","handleClose","inlineStyle","createChainedFunction","Portal","stopPropagation","Paper","outlined","elevations","shadows","shadow","boxShadow","background","text","setMountNode","setTranslateValue","fakeTransform","computedStyle","getPropertyValue","offsetX","offsetY","transformValues","getTranslateValue","webkitTransform","Slide","_props$direction","childrenRef","handleRefIntermediary","easeOut","sharp","updatePosition","handleResize","Toolbar","breakpoints","up","regular","mixins","toolbar","defaultVariantMapping","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","Typography","_props$align","align","_props$display","_props$gutterBottom","gutterBottom","_props$noWrap","noWrap","_props$paragraph","paragraph","_props$variantMapping","variantMapping","caption","overline","srOnly","alignLeft","alignCenter","alignRight","alignJustify","textOverflow","whiteSpace","colorTextPrimary","colorTextSecondary","colorError","displayInline","displayBlock","clamp","min","decomposeColor","re","RegExp","colors","hexToRgb","marker","parseFloat","recomposeColor","getContrastRatio","foreground","lumA","getLuminance","lumB","rgb","hslToRgb","val","Number","toFixed","emphasize","coefficient","darken","lighten","alpha","createBreakpoints","_breakpoints$values","xs","sm","md","lg","xl","_breakpoints$unit","unit","_breakpoints$step","between","end","endIndex","down","upperbound","only","createMixins","_toolbar","black","white","A100","A200","A400","A700","light","hint","selectedOpacity","focusOpacity","activatedOpacity","dark","icon","addLightOrDark","intent","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","createPalette","_palette$primary","_palette$secondary","_palette$error","_palette$warning","warning","_palette$info","info","_palette$success","success","_palette$type","_palette$contrastThre","contrastThreshold","_palette$tonalOffset","getContrastText","augmentColor","mainShade","lightShade","darkShade","contrastText","types","deepmerge","common","grey","roundWithDeprecationWarning","caseAllCaps","textTransform","defaultFontFamily","createTypography","_ref$fontFamily","fontFamily","_ref$fontSize","_ref$fontWeightLight","fontWeightLight","_ref$fontWeightRegula","fontWeightRegular","_ref$fontWeightMedium","fontWeightMedium","_ref$fontWeightBold","fontWeightBold","_ref$htmlFontSize","htmlFontSize","allVariants","pxToRem2","coef","buildVariant","fontWeight","lineHeight","letterSpacing","casing","variants","clone","createShadow","createSpacing","spacingInput","mui","args","argument","output","createTheme","_options$breakpoints","breakpointsInput","_options$mixins","mixinsInput","_options$palette","paletteInput","_options$typography","typographyInput","muiTheme","overrides","acc","defaultTheme","easeIn","short","standard","complex","enteringScreen","leavingScreen","formatMs","milliseconds","_options$duration","durationOption","_options$easing","easingOption","_options$delay","animatedProp","constant","stylesOrCreator","mobileStepper","speedDial","appBar","snackbar","tooltip","reflow","getTransitionProps","_props$style","transitionDelay","capitalize","toUpperCase","funcs","func","_len2","_key2","SvgIcon","_props$fontSize","htmlColor","titleAccess","_props$viewBox","viewBox","focusable","muiName","fill","flexShrink","colorAction","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeLarge","createSvgIcon","displayName","debounce","wait","debounced","that","later","scrollDiv","offsetWidth","deprecatedPropType","validator","reason","requirePropFactory","componentNameInError","unsupportedProp","propName","componentName","propFullName","isMuiElement","muiNames","defaultView","setRef","useId","idOverride","defaultId","setDefaultId","useControlled","defaultProp","isControlled","valueState","setValue","newValue","refA","refB","refValue","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","tel","email","password","number","date","month","week","time","datetime","metaKey","altKey","ctrlKey","handlePointerDown","handleVisibilityChange","visibilityState","matches","readOnly","isContentEditable","handleBlurVisible","_interopRequireDefault","_interopRequireWildcard","React","_default","enumerable","_utils","injectFirstNode","jss","generateClassName","sheetsManager","disableGeneration","sheetsCache","sheetsRegistry","StylesContext","StylesProvider","_props$injectFirst","injectFirst","_props$disableGenerat","localOptions","outerOptions","insertionPoint","head","createComment","insertBefore","firstChild","plugins","localTheme","outerTheme","mergeOuterLocalTheme","hasSymbol","for","pseudoClasses","createGenerateClassName","_options$disableGloba","disableGlobal","_options$productionPr","productionPrefix","_options$seed","seed","seedPrefix","ruleCounter","getNextCounterId","rule","styleSheet","link","createStyles","ServerStyleSheets","serverGenerateClassName","dangerouslySetInnerHTML","__html","withThemeCreator","withTheme","WithTheme","innerRef","fnValuesNs","fnRuleNs","onCreateRule","decl","onProcessStyle","fnValues","onUpdate","sheet","styleRule","fnRule","_prop","at","atPrefix","GlobalContainerRule","selector","isProcessed","rules","process","getRule","addRule","onProcessRule","replaceRule","newRule","GlobalPrefixedRule","createRule","separatorRegExp","addScope","parts","scoped","handleNestedGlobalContainerRule","handlePrefixedGlobalRule","parentRegExp","refRegExp","getReplaceRef","replaceParentRefs","nestedProp","parentProp","parentSelectors","nestedSelectors","nested","getOptions","prevOptions","nestingLevel","replaceRef","isNested","isNestedConditional","uppercasePattern","msPattern","toHyphenLower","hName","convertCase","converted","fallbacks","onChangeValue","hyphenatedProp","px","CSS","ms","percent","addCamelCasedVersion","regExp","str","newObj","units","inset","motion","perspective","gap","grid","iterate","innerProp","_innerProp","isNaN","camelCasedOptions","js","css","vendor","browser","isTouch","jsCssMap","Moz","Webkit","appearence","noPrefill","supportedProperty","toUpper","camelize","pascalize","mask","longhand","textOrientation","writingMode","breakPropsOld","inlineLogicalOld","newProp","unprefixed","prefixed","pascalized","scrollSnap","overscrollBehavior","propMap","order","flex2012","propMap$1","propKeys","prefixCss","flex2009","multiple","propertyDetectors","computed","key$1","err","el$1","cache$1","transitionProperties","transPropsRegExp","prefixTransitionCallback","p1","p2","prefixedValue","supportedValue","property","cacheKey","prefixStyle","changeProp","supportedProp","changeValue","supportedValue$1","atRule","supportedKeyframes","prop0","prop1","newStyle","jssPreset","key1","key2","subCache","indexCounter","increment","getStylesCreator","themingEnabled","stylesWithOverrides","getClasses","stylesOptions","cacheClasses","lastProp","lastJSS","generate","mergeClasses","baseClasses","newClasses","attach","stylesCreator","sheetManager","refs","staticSheet","dynamicStyles","generateId","createStyleSheet","dynamicSheet","update","_ref3","detach","_ref4","removeStyleSheet","useSynchronousEffect","currentKey","makeStyles","classNamePrefixOption","classNamePrefix","_options$defaultTheme","stylesOptions2","meta","useStyles","shouldUpdate","nextClasses","omit","input","fields","styled","filterProps","StyledComponent","classNameProp","spread","FinalComponent","ThemeContext","_options$withTheme","WithStyles","more","defaultBreakpoints","handleBreakpoints","propValue","styleFromPropValue","themeBreakpoints","_themeBreakpoints","breakpoint","properties","directions","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","_prop$split","_prop$split2","dir","arg","spacingKeys","createUnarySpacing","themeSpacing","getStyleFromPropValue","cssProperties","transformer","cssProperty","transformed","getValue","merge","isPlainObject","formatMuiErrorMessage","module","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","defaults","Cancel","onCanceled","requestData","requestHeaders","responseType","cancelToken","unsubscribe","isFormData","request","XMLHttpRequest","username","unescape","Authorization","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","responseText","status","statusText","paramsSerializer","onreadystatechange","readyState","responseURL","onabort","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","xsrfHeaderName","setRequestHeader","isUndefined","onDownloadProgress","onUploadProgress","upload","cancel","subscribe","aborted","send","Axios","mergeConfig","axios","createInstance","defaultConfig","extend","instanceConfig","CancelToken","isCancel","VERSION","all","promises","isAxiosError","__CANCEL__","executor","resolvePromise","promise","_listeners","onfulfilled","_resolve","throwIfRequested","InterceptorManager","dispatchRequest","validators","interceptors","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","responseInterceptorChain","chain","shift","newConfig","onFulfilled","onRejected","getUri","handlers","use","eject","isAbsoluteURL","combineURLs","requestedURL","enhanceError","transformData","throwIfCancellationRequested","transformRequest","adapter","transformResponse","toJSON","description","fileName","lineNumber","columnNumber","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","isURLSearchParams","isObject","rawValue","parser","encoder","isString","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","serializedParams","isDate","toISOString","hashmarkIndex","relativeURL","write","isNumber","toGMTString","originURL","msie","navigator","userAgent","urlParsingNode","resolveURL","requestURL","parsed","normalizedName","ignoreDuplicateOf","line","arr","thing","deprecatedWarnings","formatMessage","opt","desc","schema","allowUnknown","getPrototypeOf","isFunction","FormData","ArrayBuffer","isView","pipe","product","assignValue","stripBOM","pairs","dec","decode","pair","tryDecode","enc","fieldContentRegExp","maxAge","isFinite","httpOnly","option","hasHtmlSuffix","endsWith","hasXmlSuffix","hasPdfSuffix","_scrollHandler","ScrollHandler","_useScrollRestoration","useScrollRestoration","ScrollContext","_assertThisInitialized2","_inheritsLoose2","nodeInterop","_getRequireWildcardCache","hasPropertyDescriptor","getOwnPropertyDescriptor","_propTypes","_sessionStorage","WeakMap","cacheBabelInterop","cacheNodeInterop","SessionStorage","_stateStorage","_isTicking","_latestKnownScrollY","scrollListener","scrollY","requestAnimationFrame","_saveScroll","windowScroll","prevProps","shouldUpdateScroll","scrollTo","scrollToHash","getElementById","scrollIntoView","prevRouterProps","routerProps","scrollPosition","_this$props$location","componentDidUpdate","_this$props$location2","isRequired","object","GATSBY_ROUTER_SCROLL_STATE","stateKey","getStateKey","storedValue","stateKeyBase","identifier","_reachRouter","useLocation","_react","useLayoutEffect","onScroll","onInitialClientRender","getForwards","collectedScripts","flatMap","script","forward","injectPartytownSnippet","existingSnippet","querySelector","existingSandbox","forwards","_getForwards","snippet","dataset","partytown","innerHTML","_integration","partytownSnippet","components","plugin","require","getResourceURLsForPathname","loadPage","loadPageSync","api","defaultReturn","argTransform","results","previous","on","handler","off","emit","evt","mitt","pathAndSearch","pathCache","matchPaths","trimPathname","rawPathname","newRawPathname","qs","stripPrefix","__BASE_PATH__","absolutify","setMatchPaths","findMatchPath","trimmedPathname","cleanPath","pickPaths","matchPath","originalPath","normalizePagePath","grabMatchParams","findPath","redirect","maybeGetBrowserRedirect","toPath","foundPath","StaticQueryContext","StaticQueryServerContext","StaticQueryDataRenderer","staticQueryData","finalData","StaticQuery","Consumer","useStaticQuery","_currentValue","prefetchPathname","loader","graphql","supportedPrefetchStrategy","feature","fakeLink","relList","supports","support","onload","getElementsByTagName","getElementsByName","parentNode","req","preFetched","catch","PageResourceStatus","Success","createPageDataUrl","rawPath","maybeSearch","doFetch","BOT_REGEX","toPageResources","pageData","page","componentChunkName","webpackCompilationHash","staticQueryHashes","getServerDataError","BaseLoader","loadComponent","inFlightNetworkRequests","pageDb","inFlightDb","staticQueryDb","pageDataDb","partialHydrationDb","isPrefetchQueueRunning","prefetchQueued","prefetchTriggered","prefetchCompleted","memoizedGet","inFlightPromise","setApiRunner","apiRunner","prefetchDisabled","fetchPageDataJson","loadObj","pagePath","retries","jsonPayload","notFound","internalServerError","fetchPartialHydrationJson","loadPageDataJson","loadPartialHydrationJson","loadAppData","allData","finalResult","componentChunkPromise","pageResources","createdAt","staticQueryBatchPromise","staticQueryHash","staticQueryResults","staticQueryResultsMap","emitter","withErrorDetails","shouldPrefetch","connection","effectiveType","saveData","doesConnectionSupportPrefetch","prefetch","defer","abortC","findIndex","_processNextPrefetchBatch","requestIdleCallback","toPrefetch","prefetches","dPromise","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","as","hovering","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","__PATH_PREFIX__","ProdLoader","asyncRequires","chunkName","exportType","log","componentUrls","setLoader","_loader","publicLoader","enqueue","getStaticQueryResults","FireCallbackInEffect","VALID_NODE_NAMES","isEqualNode","oldTag","newTag","HTMLElement","cloneTag","cloneNode","hiddenRoot","onHeadRendered","validHeadNodes","seenIds","childNodes","attributes","clonedNode","attr","indexOfPreviouslyInsertedNode","existingHeadElements","append","newHeadNodes","oldNodes","newNodes","onStale","onNew","existingHeadElement","indexInNewNodes","newNode","diffNodes","headHandlerForBrowser","pageComponent","pageComponentProps","Head","headExportValidator","reactDOMUtils","LocationProvider","pageContext","prevHeadNodes","removePrevHeadElements","PageRenderer","__params","pageElement","partialHydration","PropTypes","RouteAnnouncerProps","clip","maybeRedirect","___replace","nextRoute","onPreRouteUpdate","prevLocation","onRouteUpdate","parsePath","___swUpdated","___webpackCompilationHash","serviceWorker","controller","gatsbyApi","reachNavigate","getSavedScrollPosition","oldPathname","RouteAnnouncer","announcementRef","pageName","pageHeadings","textContent","newAnnouncement","innerText","compareLocationProps","nextLocation","RouteUpdates","shouldComponentUpdate","shallowDiffers","_i","EnsureResources","prevState","loadResources","nextState","shallowCompare","hydrate","___emitter","___loader","___push","___navigate","reloadStorageKey","apiRunnerAsync","RouteHandler","BaseContext","baseuri","basepath","DataContext","GatsbyRoot","Location","LocationHandler","Router","browserLoc","getSessionStorage","reload","SiteRoot","App","onClientEntryRanRef","performance","mark","focusEl","defaultRenderer","renderer","runRender","rootElement","doScroll","InternalPageRenderer","reactDomClient","redirectMap","redirectIgnoreCaseMap","redirects","ignoreCase","fromPath","register","reg","installingWorker","installing","___failedResources","pluginOptions","_gatsby","wrapRootElement","_styles","_materialUiPluginCacheEndpoint","jssStyles","hasEntries","stylesProvider","CookieInformation","culture","Helmet","src","getLanguageFromPathName","pathName","defaultLanguage","startIndex","lang","wrapPageElement","html","WebkitFontSmoothing","MozOsxFontSmoothing","_props$children","breakPoints","fontStyle","navigationLink","descriptionRow","gray","lightGray","lighterGray","mediumGray","darkGray","blue","lightBlue","red","darkRed","green","lightGreen","breadcrumbs","linkBlock","defaultColumn","defaultRow","headingFontFamily","category","hoverText","footer","logoBarBackground","columns","list","texts","bottomWidth","paddingYDesktop","backgroundDesktop","borderBottomColor","navigation","activeLink","activeLinkBorder","subMenuBackground","subMenuBulletPoints","icons","quickSearch","inputContainer","hideButton","mobileNavigation","xIconBackground","logoBarBottomBorder","navigationElementBorder","subNavigationTitleBackground","subNavigationTitleColor","productPage","informationBackground","tasteProfiles","orange","yellow","brown","pink","darkBrown","brightOrange","purple","lightPink","mainInfo","accordion","information","detailesKey","mediaPrint","accordionSummary","accordionDescriptions","maxWidth","accordionAttributes","informationRow","productInfo","price","imageSide","alignContent","flexWrap","flexBasis","informations","basicInformation","review","articlePadding","labelBackground","quote","memoryListButton","badge","actionButton","addToList","removefromList","inList","pageTemplates","landingPage","viinimaaNavigationBreakpoint","otherPageTemplates","custobarSubscriptionForm","siteNotifications","monopolyPrice","reducedPriceColor","languageSelector","linkBlockModule","imageWrapper","textWrapper","table","row","even","listElementCard","slider","arrowBotton","hr","imageSpotLink","innerDot","day","shortDescription","MuiAccordion","MuiAccordionSummary","MuiAppBar","MuiToolbar","MuiDrawer","MuiLink","MuiDialog","MuiButton","minWidth","containedPrimary","outlinedPrimary","MuiBreadcrumbs","separator","MuiDialogContent","MuiInputBase","borderColor","adornedStart","adornedEnd","MuiInputLabel","shrink","MuiFormLabel","asterisk","MuiFormHelperText","MuiCheckbox","MuiRadio","MuiFormControl","MuiTypography","MuiList","MuiCollapse","MuiPaginationItem","textPrimary","MuiSlider","thumb","track","PrivateValueLabel","circle","offset","MuiIconButton","MuiContainer","MuiInput","disableUnderline","checkedIcon","CheckBoxOutlined","white50","mediumGray2","darkBlue","darkGreen","darkPurple","lightPurple","lighterRed","darkerBrown","lightBrown","lightYellow","brightBlue","brightYellow","brightGreen","brightBrown","brandColors","forest","petrolium","fire","lightpink","textColors","bodyText","headingColor","mutedText","disabledText","lightText","backgroundColors","grayLight","grayMid","grayDark","overlay","formColors","inputBorder","inputBackground","inputActiveBackground","inputActiveBorder","inputBorderRadius","bibendumPrimaryTheme","textFontFamilies","fontTypography","fontBody1","fontBody2","fontHeadings","fontBotton","textFontSizesMobile","fontSizeLeadText","fontSizeTypography","fontSizeButton","fontSizeBody1","fontSizeBody2","fontSizeH1","fontSizeH2","fontSizeH3","fontSizeH4","textFontSizesDesktop","textFontWeight","textLineHeightsMobile","lineHeightLeadText","lineHeightQuote","lineHeightBody1","lineHeightBody2","lineHeightHeadings","textLineHeightsDesktop","mobile","desktop","linkColors","linkHover","linkPressed","iconColors","iconColor","primaryButtonColors","primaryButtonBackground","primaryButtonBackgroundGradient","primaryButtonHoveredBackground","primaryButtonPressedBackground","primaryButtonDisabledBackground","primaryButtonContents","secondaryButtonColors","secondaryButtonBackground","secondaryButtonHoveredBackground","secondaryButtonPressedBackground","secondaryButtonDisabledBackground","secondaryButtonContents","outlinedButtonColors","outlinedButton","outlinedButtonHovered","outlinedButtonPressed","outlinedButtonDisabled","outlinedButtonHoveredBackground","buttonSettings","buttonPaddingDesktop","buttonPaddingMobile","notificationColors","infoBackground","successBackground","warningBackground","errorBackground","infoContents","successContents","warningContents","errorContents","titleFontSize","cell","widthDesktop","philipsonSoderbergPrimaryTheme","secondaryButtonHoveredbackground","secondaryButtonPressedbackground","secondaryButtonDisabledbackground","outlinedButtonContents","backgroundGradient","tamarillo","pirateGold","goldLight","blossaPrimaryTheme","valhallaPrimaryTheme","accent","BackgroundImage","paddingYMobile","primaryDark","gammeldanskPrimaryTheme","primaryLight","wennercoPrimaryTheme","textMargins","textMarginBottomH1","primaryColor","golden","lightBeige","koskenkorvaPrimaryTheme","xIconBackgroundHover","secondaryColor","beigeLight","opAndersonPrimaryTheme","fontButton","blueLight","skagerrakPrimaryTheme","bodyTextWhite","secondaryButtonHoveredContents","secondaryButtonPressedContents","secondaryButtonDisabledContents","violet","beige","wineworldFinlandPrimaryTheme","LinieAquavitPrimaryTheme","highlightedText","highlight","SocialwinesPrimaryTheme","primaryButtonBorder","primaryButtonHoverContents","primaryButtonHoverBorder","subtitle","startIcon","brandPrimaryTheme","isEqual","siteId","siteIds","muted","closeButton","iconBackground","summaryBackground","summaryText","recipePage","fofNavigationBreakpoint","contained","backgroundColro","MuiTable","MuiTableHead","MuiTableRow","MuiTableCell","ThemeProvider","viinimaaTheme","folkofolkTheme","anoraProTheme","brandSite","brandsTheme","CookiesProvider","QueryClient","queries","staleTime","retry","refetchOnWindowFocus","ReactQueryProvider","QueryClientProvider","I18nextProvider","i18n","defaultNS","_inherits","subClass","superClass","writable","configurable","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","consoleLogger","Logger","concreteLogger","init","logger","debug","bool","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","baseLogger","EventEmitter","observers","events","cloned","observer","_cloned","rej","makeString","copy","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","setPath","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","regexEscape","_entityMap","isIE10","userAgentData","chars","ownKeys$1","_objectSpread$1","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","valueOf","_isNativeReflectConstruct","Super","NewTarget","deepFind","keySeparator","paths","mix","joinedPath","ResourceStore","_EventEmitter","ns","ignoreJSONStructure","lng","silent","addNamespaces","resources","addResource","deep","pack","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","getDataByLanguage","find","postProcessor","processors","addPostProcessor","handle","translator","processor","ownKeys$2","_objectSpread$2","_createSuper$1","_isNativeReflectConstruct$1","checkedLoadedFor","Translator","services","language","interpolation","resolved","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","matched","ki","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","_this2","overloadTranslationOptionHandler","returnDetails","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValue","isValidLookup","missingKeyNoValueFallbackToKey","resForMissing","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","defaultVariables","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","interpolate","na","nest","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsZeroSuffixLookup","ordinal","shouldUseIntlApi","needsContextHandling","codes","hasLoadedNamespace","possibleKey","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","pluralSeparator","contextKey","contextSeparator","returnNull","returnEmptyString","resourceStore","LanguageUtil","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","part","cleanCode","load","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","isSupportedCode","lngOnly","supportedLng","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","deprecatedJsonVersions","suffixesOrder","zero","one","two","few","many","createRules","numbers","plurals","PluralResolver","compatibilityJSON","Intl","PluralRules","_unused","resolvedOptions","pluralCategories","pluralCategory1","pluralCategory2","pluralCategory","prepend","select","getSuffixRetroCompatible","noAbs","simplifyPluralSuffix","returnSuffix","ownKeys$3","_objectSpread$3","Interpolator","format","escapeValue","iOpts","escape","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","regex","safeValue","todo","matchedVar","temp","lastIndex","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","formatters","doReduce","elem","ownKeys$4","_objectSpread$4","Formatter","formats","NumberFormat","currency","DateTimeFormat","relativetime","RelativeTimeFormat","range","ListFormat","_format","mem","_parseFormatStr","formatStr","formatName","formatOptions","optStr","_opt$split","_opt$split2","parseFormatStr","formatted","valOptions","formatParams","locale","ownKeys$5","_objectSpread$5","_createSuper$2","_isNativeReflectConstruct$2","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","queue","languages","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","pendingCount","loaded","errors","addResourceBundle","_getLastOfPath2","removePending","loadedKeys","fcName","tried","queueLoad","loadOne","prepareLoading","_this5","fallbackValue","isUpdate","initImmediate","preload","partialBundledLanguages","ret","tDescription","transformOptions","ownKeys$6","_objectSpread$6","_createSuper$3","_isNativeReflectConstruct$3","noop","bindMemberFunctions","inst","getOwnPropertyNames","I18n","modules","external","isInitialized","isClone","defOpts","createClassOnDemand","ClassOrObject","formatter","lu","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","finish","initializedStoreOnce","changeLanguage","usedCallback","resolvedLanguage","setResolvedLanguage","li","lngInLngs","hasLanguageSomeTranslations","isLanguageChangingTo","setLngProps","setLng","getBestMatchFromCodes","cacheUserLanguage","detect","keyPrefix","fixedT","rest","resultKey","_this$translator","_this$translator2","exists","_this6","lastLng","loadNotPending","loadState","precheck","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","membersToCopy","reloadResources","getFixedT","setDefaultNamespace","loadNamespaces","loadLanguages","initReactI18next","en","translation","fi","sv","da","de","settings","TranslationProvider","GoogleTagManager","getTime","dl","FrosmoScript","isSSR","charset","hj","_hjSettings","hjid","hjsv","rel","themeFaciconQuery","cloudinaryImage","publicId","themeFaviconQuery","GATSBY_META_DOMAIN_VERIFICATION_CODE","KlevuInit","KlevuConfig","apiKey","RootWrapper","ContentSearchContext","GATSBY_AUTH0_DOMAIN","GATSBY_AUTH0_CLIENTID","GATSBY_AUTH0_REDIRECT_URI","enableInspectorMode","SnackbarContent","_props$role","emphasis","Snackbar","_props$anchorOrigin","anchorOrigin","vertical","horizontal","_props$autoHideDurati","autoHideDuration","ClickAwayListenerProps","ContentProps","_props$disableWindowB","disableWindowBlurListener","onMouseEnter","resumeHideDuration","timerAutoHide","setAutoHideTimer","autoHideDurationParam","handlePause","handleResume","ClickAwayListener","top1","bottom1","top3","bottom3","right3","left3","anchorOriginTopCenter","anchorOriginBottomCenter","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft","defaultIconMapping","SuccessOutlined","ReportProblemOutlined","ErrorOutline","InfoOutlined","Close","Alert","_props$closeText","closeText","_props$iconMapping","iconMapping","_props$severity","severity","getColor","getBackgroundColor","standardSuccess","standardInfo","standardWarning","standardError","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","filledSuccess","filledInfo","filledWarning","filledError","Message","removeMessage","useMessage","closeMessage","Check","messageTypes","fillColor","MessageQueue","messages","AdditionalNavigation","closeDrawer","isDrawerOpen","drawerData","useDrawer","drawerOpen","navigationElements","activeNavigationElementTitle","activeNavigationElement","pageReference","getActiveNavigationElement","handleNavigationElementClick","clsx","iconButton","NavigationElements","onNavigationElementClick","PageWrapper","viewPage","ActiveNavigationContext","activeNav","updateActiveNav","clearActiveNav","initialState","ActiveNavigationProvider","navData","useActiveNavigation","ContentContext","getContentData","ContentProvider","channel","articlePageNodes","landingPageNodes","advancedPageNodes","brandNodes","recipePageNodes","productNodes","categorytNodes","filterByChannel","nodes","articlePages","landingPages","advancedPages","brands","recipePages","products","categories","useContent","getSearchTerm","getSelectedCheckboxes","getResults","updateSearchTerm","updateSelectedCheckboxes","updateResults","clearSearch","searchTerm","pageTitle","selectedCheckboxes","ContentSearchContextProvider","useContentSearchContext","isNil","DialogContext","dialogData","openDialog","closeDialog","isDialogOpen","DialogProvider","useDialog","DrawerContext","openDrawer","DrawerProvider","KlevuSearchContext","updateIsInputOpen","isInputReady","isInputOpen","KlevuSearchProvider","useKlevuSearch","MessageContext","createErrorMessage","createInfoMessage","createWarningMessage","createSuccessMessage","MessageProvider","PopUpContext","hasBeenClosed","openPopUp","closePopUp","isPopUpOpen","PopUpProvider","usePopUp","otherProps","internal","GatsbyLink","ListItemSecondaryAction","getNavigationElement","navigationElementId","navigationElement","useTranslation","parentNavigationElement","setParentNavigationElement","filteredNavigationElements","getFilteredNavigationElements","handleBackClick","handleIconClick","handleLinkClick","parentPage","Visible","subNavigationTitleBar","subNavigationTitleWrapper","subNavigationTitle","KeyboardArrowRight","listItem","listItemTextLeft","BackIconWrapper","KeyboardArrowLeft","listItemBottom","subNavigationElements","listItemTextRight","activeClassName","secondaryActionRight","iconWrapper","buttonBase","getParentNavigationElements","setActiveMainNavigation","wines","updateFunction","fofNavigationTitle","spirits","parenntElement","mainNavigationElement","subNavigationTitleLink","activeWines","activeSpirits","WineIconWhite","alt","image","loading","MartiniIconWhite","isMainNav","partiallyActive","MartiniIcon","arrowIcon","WineIcon","topLevelElements","subNavigationItems","parentId","ExpandMore","topLevelLink","accordionDetails","subNavigationLink","parentElementLink","subNavigationElement","linkWithoutAccordion","visible","contentfulContentTypes","Entry","PageUnion","LandingPage","CampaignPage","ContentfulProductPage","AdvancedPage","ArticlePage","RecipePage","Navigation","NavigationElement","LinkBlockModule","ImageModule","VideoModule","ProductListModule","FeaturedProductModule","LatestArticlesModule","ContactPersonModule","HeroImageModule","AccordionModule","ContentListModule","MediaGalleryModule","LeadTextModule","TableModule","ButtonLinkModule","SocialMediaElementModule","PreparationSection","PreparationStep","ProductReference","Channel","Ingredient","AssetModule","SEOData","Category","Brand","TextBlock","Table","RowStructure","ColumnStructure","CustobarSubscription","FormModule","SearchModule","InspirationalAreaModule","PopUpModule","AnalyticsModule","Theme","IdentifierModule","AudioModule","IFrameModule","InstagramFeedModule","EventCalendarModule","Event","OrderFormModule","magentoContentTypes","Product","Attribute","secondaryThemeTypes","AnoraPurple","AnoraYellow","AnoraDarkBlue","AnoraWhite","AnoraLightBlue","AnoraGreen","AnoraTransparent","Warning","Info","Viinimaa","Folkofolk","AnoraPro","Bibendum","Blossa","PhilipsonSoderberg","Valhalla","Gammeldansk","Wennerco","Koskenkorva","OpAnderson","Skagerrak","WineworldFinland","LinieAquavit","Socialwines","Breakpoint","blossaNavigationBreakpoint","gammeldanskNavigationBreakpoint","contentPageMaxWidth","productDefaultImage","awards","siteMaintenanceMode","ActiveMode","subscribeNewsletterPage","ViinimaaRedirectURL","FolkofolkRedirectURL","anoraProUnprotectedPages","login","registration","thankYouForRegistering","termsOfUse","privacy","contactInformation","contactForm","channels","languageCode","slugs","ContentfulArticlePage","MagentoProduct","localization","defaultLanguageCode","ContentfulCampaign","viinimaaSettings","folkofolkSettings","anoraProSettings","bibendumSettings","blossaSettings","philipsonSoderbergSettings","valhallaSettings","gammeldanskSettings","wennercoSettings","koskenkorvaSettings","opAndersonSettings","skagerrakSettings","wineworldFinlandSettings","linieAquavitSettings","socialwinesSettings","lightRed","lighterRed2","lightYellow2","primaryTheme","filters","campaignPage","darkColor","lightColor","whiteTransparent","darkerGray","lightBlueTransparent","lighterBlue","lightGreenTransparent","lighterGreen","lighterYellow","lightYellowTransparent","lighterYellow2","darkOrange","brightyellow","rnds8","rng","msCrypto","uuid","byteToHex","buf","rnds","getProductBrand","productData","brand","getProductCategory","getProductsCurrencyCode","productsData","dataLayer","pushFacebookCategory","campaign_category","productClick","ecommerce","items","item_name","item_id","item_brand","item_category","item_list_name","quantity","viewProduct","viewProducts","viewCart","currencyCode","totalPrice","getProductsTotalPrice","productIndex","addToCart","removeFromCart","purchaseProduct","customerToken","createCustobarOrder","AnoraConversionEvent","transaction_id","affiliation","purchaseProductFromCart","subscribeNewsletter","clickPrintButton","filterProducts","searchUsage","searchResultCount","searchType","searchResults","viewVideo","clickAmazonAffiliateLink","submitCampaignPageForm","viewCampaign","campaignData","creative_name","creative_slot","promotion_id","promotion_name","getProductPrice","getProductReducedPrice","getUtmCampaignFromPath","locationSearch","getWindowLocationSearch","utmCampainID","param","utmCampaignID","customer_token","product_category","product_id","product_tags","product_title","product_type","product_price","product_brand","utm_campaign","pageBrowseEvent","cstbr","saleId","DateTime","toFormat","sale_id","getWindowHref","getWindowPathName","base","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","allSegments","segments","insertParams","_path$split","pathBase","_path$split$","constructedPath","_params$location","_params$location$sear","searchSplit","_objectWithoutProperties","_classCallCheck","Constructor","ReferenceError","createNamedContext","Ctx","LocationContext","_temp","getContext","unlisten","_props$history","componentDidCatch","isRedirect","_navigate","unmounted","ServerLocation","baseContext","locationContext","RouterImpl","_React$PureComponent","_props","_navigate2","domProps","array","createRoute","FocusWrapper","FocusHandler","wrapperProps","FocusContext","requestFocus","FocusHandlerImpl","initialRender","focusHandlerCount","_React$Component2","_temp2","shouldFocus","myURIChanged","navigatedUpToMe","_props2","_props2$component","Comp","forwardRef","_ref5","_ref6","_props$getProps","getProps","anchorProps","encodedHref","isCurrent","isPartiallyCurrent","shouldNavigate","shouldReplace","_location$state","restState","obj1","obj2","obj1Keys","every","RedirectRequest","redirectTo","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","Redirect","_ref7","Match","_ref8","_ref9","_ref10","resolvedPath","useNavigate","useParams","useMatch","stripSlashes","elementPath","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","inheritedComponent","targetStatics","sourceStatics","descriptor","$$typeof","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","condition","argIndex","framesToPop","_typeof","isBrowser","plainObjectConstrurctor","cloneStyle","declCopy","by","toCssValue","cssValue","getWhitespaceSymbols","linebreak","space","indentStr","indent","toCss","_options$indent","Infinity","_getWhitespaceSymbols","fallback","_value","_prop2","_value2","allowEmpty","escapeRegex","nativeEscape","BaseStyleRule","Renderer","force","isEmpty","isDefined","renderable","attached","StyleRule","_BaseStyleRule","selectorText","_proto2","applyTo","setSelector","pluginStyleRule","defaultToStringOptions","atRegExp","ConditionalRule","atMatch","RuleList","keyRegExp","pluginConditionalRule","defaultToStringOptions$1","nameRegExp","KeyframesRule","frames","nameMatch","keyRegExp$1","findReferencedKeyframe","keyframes","refKeyframe","pluginKeyframesRule","KeyframeRule","pluginKeyframeRule","FontFaceRule","keyRegExp$2","pluginFontFaceRule","ViewportRule","pluginViewportRule","SimpleRule","keysMap","defaultUpdateOptions","forceUpdateOptions","raw","counter","ruleOptions","_this$options","oldRule","oldIndex","nameOrSelector","unregister","updateOne","_this$options2","nextValue","_nextValue","_prevValue","StyleSheet","deployed","deploy","insertRule","deleteRule","addRules","added","_this$rules","PluginsRegistry","registry","onProcessSheet","processedValue","newPlugin","SheetsRegistry","sheets","globalThis$1","Function","moduleId","createGenerateId","jssId","minify","memoize","cssRule","attributeStyleMap","indexOfImportantFlag","cssValueWithoutImportantFlag","getHead","findPrevNode","findHigherSheet","findHighestSheet","nextSibling","comment","nodeValue","findCommentNode","getNonce","_insertRule","appendRule","cssRules","getValidRuleInsertionIndex","maxIndex","DomRenderer","hasInsertedRules","media","nextNode","insertionPointElement","insertStyle","insertRules","nativeParent","latestNativeParent","_insertionIndex","refCssRule","ruleStr","insertionIndex","nativeRule","getRules","instanceCounter","Jss","setup","createJss","hasCSSTOMSupport","getDynamicStyles","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entry","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","setCacheAdd","setCacheHas","SetCache","__data__","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","iteratee","predicate","resIndex","baseTimes","isArguments","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","accumulator","initAccum","eq","baseForOwn","baseEach","createBaseEach","collection","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","baseFor","createBaseFor","castPath","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","toStringTag","baseFindIndex","baseIsNaN","strictIndexOf","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","bitmask","customizer","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","matchData","noCustomizer","objValue","srcValue","COMPARE_PARTIAL_FLAG","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","isLength","typedArrayTags","baseMatches","baseMatchesProperty","identity","isPrototype","nativeKeys","isArrayLike","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","baseGet","eachFunc","arrayMap","isSymbol","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","stringToPath","baseSlice","coreJsData","iterable","baseIteratee","findIndexFunc","arraySome","cacheHas","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","symbolValueOf","tag","byteLength","byteOffset","convert","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","freeGlobal","baseGetAllKeys","getSymbols","isKeyable","baseIsNative","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","nativeGetSymbols","symbol","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","Ctor","ctorString","hasFunc","reHasUnicode","nativeCreate","spreadableSymbol","isConcatSpreadable","reIsUint","reIsDeepProp","reIsPlainProp","uid","maskSrcKey","IE_PROTO","assocIndexOf","getMapData","overArg","freeExports","freeModule","freeProcess","nodeUtil","binding","freeSelf","LARGE_ARRAY_SIZE","asciiToArray","hasUnicode","unicodeToArray","memoizeCapped","rePropName","reEscapeChar","subString","reWhitespace","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","copyArray","baseFilter","createFind","toInteger","nativeMax","arrayEach","castFunction","baseHasIn","hasPath","baseIndexOf","guard","baseIsArguments","stubFalse","Buffer","baseKeys","baseIsRegExp","baseUnary","nodeIsRegExp","isRegExp","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseMap","resolver","memoized","Cache","baseProperty","basePropertyDeep","arrayReduce","baseReduce","castSlice","isIterateeCall","stringToArray","limit","toNumber","INFINITY","toFinite","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","idCounter","baseValues","CookiesContext","Cookies","clock","_class","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","classCallCheck","createClass","protoProps","staticProps","objectWithoutProperties","possibleConstructorReturn","encodeSpecialCharacters","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","currentTime","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","attribute","indexToSave","tags","headElement","tagNodes","indexToDelete","newElement","cssText","createTextNode","existingTag","generateElementAttributesAsString","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","mapStateOnServer","_ref$title","noscript","HelmetSideEffects","HelmetExport","HelmetWrapper","inherits","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_child$props","initAttributes","convertReactPropstoHtmlAttributes","defaultTitle","titleTemplate","peek","rewind","mappedState","renderStatic","hasElementType","hasMap","hasSet","hasArrayBuffer","equal","it","flags","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","i18nInstance","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","I18nContext","getDefaults","ReportNamespaces","usedNamespaces","getI18n","setDefaults","react","setI18n","_console","alreadyWarned","warnOnce","initialized","oldI18nextHasLoadedNamespace","isNewerI18next","usePrevious","ignore","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","retNotReady","ready","i18nOptions","addUsedNamespaces","getT","nsMode","_useState","_useState2","setT","joinedNS","previousJoinedNS","isMounted","boundReset","isInitial","focusManager","_Subscribable","FocusManager","_window","onSubscribe","cleanup","setEventListener","onUnsubscribe","_this$cleanup","hasListeners","_this$cleanup2","setFocused","isFocused","infiniteQueryBehavior","onFetch","fetchFn","_context$fetchOptions","_context$fetchOptions2","_context$fetchOptions3","_context$fetchOptions4","_context$state$data","_context$state$data2","refetchPage","fetchMore","pageParam","isFetchingNextPage","isFetchingPreviousPage","oldPages","pages","oldPageParams","pageParams","abortController","abortSignal","newPageParams","cancelled","queryFn","buildNewPages","fetchPage","manual","queryFnContext","queryKey","queryFnResult","getNextPageParam","_manual","_param","getPreviousPageParam","shouldFetchFirstPage","_loop","_param2","finalPromise","hasNextPage","nextPageParam","hasPreviousPage","previousPageParam","getLogger","setLogger","newLogger","Mutation","mutationId","mutationCache","getDefaultState","addObserver","removeObserver","retryer","continue","execute","restored","variables","onMutate","executeMutation","onSuccess","onSettled","onError","_this$options$retry","mutationFn","onFail","onPause","onContinue","retryDelay","failureCount","isPaused","onMutationUpdate","notify","NotifyManager","transactions","notifyFn","batchNotifyFn","batch","flush","schedule","batchCalls","setNotifyFunction","setBatchNotifyFunction","notifyManager","onlineManager","OnlineManager","onOnline","online","setOnline","isOnline","onLine","Query","abortSignalConsumed","hadObservers","setOptions","queryHash","scheduleGc","_this$options$cacheTi","cacheTime","setDefaultOptions","clearGcTimeout","gcTimeout","optionalRemove","isFetching","setData","updater","_this$options$isDataE","prevData","isDataEqual","structuralSharing","dataUpdatedAt","updatedAt","setStateOptions","_this$retryer","destroy","isActive","enabled","isStale","isInvalidated","getCurrentResult","isStaleByTime","_this$retryer2","shouldFetchOnWindowFocus","refetch","_this$retryer3","shouldFetchOnReconnect","isTransportCancelable","revert","cancelRetry","getObserversCount","invalidate","_this$options$behavio","_abortController$abor","cancelRefetch","_this$retryer4","continueRetry","_this$options$behavio2","behavior","revertState","fetchMeta","onQueryUpdate","initialData","initialDataUpdatedAt","hasData","dataUpdateCount","errorUpdateCount","errorUpdatedAt","fetchFailureCount","_action$meta","_action$dataUpdatedAt","QueryCache","queriesMap","build","_options$queryHash","defaultQueryOptions","getQueryDefaults","queryInMap","arg1","arg2","exact","findAll","MutationCache","mutations","mutation","defaultMutationOptions","mutationKey","getMutationDefaults","resumePausedMutations","pausedMutations","queryCache","queryDefaults","mutationDefaults","unsubscribeFocus","unsubscribeOnline","unmount","_this$unsubscribeFocu","_this$unsubscribeOnli","fetching","isMutating","getQueryData","_this$queryCache$find","getQueriesData","queryKeyOrFilters","getQueryCache","setQueryData","parsedOptions","defaultedOptions","setQueriesData","getQueryState","_this$queryCache$find2","removeQueries","resetQueries","arg3","_parseFilterArgs3","refetchFilters","refetchQueries","cancelQueries","_parseFilterArgs4","_parseFilterArgs4$","cancelOptions","invalidateQueries","_filters$refetchActiv","_filters$refetchInact","_parseFilterArgs5","refetchActive","inactive","refetchInactive","_parseFilterArgs6","throwOnError","fetchQuery","prefetchQuery","fetchInfiniteQuery","prefetchInfiniteQuery","cancelMutations","getMutationCache","getDefaultOptions","setQueryDefaults","_this$queryDefaults$f","setMutationDefaults","_this$mutationDefault","_defaulted","defaultQueryObserverOptions","defaultRetryDelay","isCancelable","CancelledError","isCancelledError","Retryer","cancelFn","continueFn","promiseResolve","promiseReject","isResolved","outerResolve","outerReject","run","promiseOrValue","_config$retry","_config$retryDelay","shouldRetry","continueResolve","Subscribable","isServer","functionalUpdate","isValidTimeout","ensureQueryKeyArray","timeUntilStale","parseQueryArgs","isQueryKey","parseMutationArgs","parseFilterArgs","matchQuery","stale","hashQueryKeyByOptions","partialMatchKey","queryStatusFilter","mapQueryStatusFilter","matchMutation","hashQueryKey","queryKeyHashFn","asArray","partialDeepEqual","replaceEqualDeep","aSize","bItems","bSize","equalItems","shallowEqualObjects","hasObjectPrototype","ctor","prot","sleep","scheduleMicrotask","getAbortController","unstable_batchedUpdates","defaultContext","QueryClientSharingContext","getQueryClientContext","contextSharing","ReactQueryClientContext","useQueryClient","queryClient","_ref$contextSharing","Context","MutationObserver","bindMethods","updateResult","mutate","_this$currentMutation","currentMutation","notifyOptions","currentResult","mutateOptions","isSuccess","isError","isIdle","shouldThrowError","suspense","_useErrorBoundary","useMutation","mountedRef","forceUpdate","obsRef","useErrorBoundary","mutateAsync","QueryObserver","trackedProps","selectError","currentQuery","shouldFetchOnMount","executeFetch","updateTimers","shouldFetchOn","refetchOnReconnect","clearTimers","prevQuery","updateQuery","shouldFetchOptionally","updateStaleTimeout","nextRefetchInterval","computeRefetchInterval","currentRefetchInterval","updateRefetchInterval","getOptimisticResult","createResult","trackResult","trackedResult","trackProp","getNextResult","getCurrentQuery","fetchOptimistic","clearStaleTimeout","staleTimeoutId","_this$options$refetch","refetchInterval","nextInterval","clearRefetchInterval","refetchIntervalId","refetchIntervalInBackground","prevResult","prevResultState","currentResultState","prevResultOptions","currentResultOptions","queryChange","queryInitialState","currentQueryInitialState","prevQueryResult","previousQueryResult","isPreviousData","isPlaceholderData","optimisticResults","fetchOnMount","fetchOptionally","keepPreviousData","selectFn","selectResult","placeholderData","isFetched","isFetchedAfterMount","isRefetching","isLoadingError","isRefetchError","shouldNotifyListeners","notifyOnChangeProps","notifyOnChangePropsExclusions","includedProps","typedKey","changed","isIncluded","isExcluded","defaultNotifyOptions","retryOnMount","shouldLoadOnMount","refetchOnMount","field","InfiniteQueryObserver","_QueryObserver","fetchNextPage","fetchPreviousPage","_options$cancelRefetc","_options$cancelRefetc2","_state$data","_state$data2","_state$fetchMeta","_state$fetchMeta$fetc","_state$fetchMeta2","_state$fetchMeta2$fet","createValue","_isReset","clearReset","isReset","QueryErrorResetBoundaryContext","useBaseQuery","Observer","errorResetBoundary","useInfiniteQuery","ex","React__default","_defineProperty","reducePropsToState","handleStateChangeOnClient","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","recordedState","UNSAFE_componentWillMount","PureComponent","getDisplayName","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appearStatus","unmountOnExit","mountOnEnter","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","appearing","maybeNode","timeouts","enterTimeout","safeSetState","onTransitionEnd","setNextCallback","doesNotHaveTimeoutOrListener","maybeNextCallback","readCookie","cleanValue","cleanupCookieValue","doNotParse","isParsingCookie","changeListeners","HAS_DOCUMENT_COOKIE","parseCookies","_updateBrowserValues","parseOptions","_emitChange","name_1","finalOptions","addChangeListener","removeChangeListener","len","arr2","_defineProperties","_s","_arr","_n","_setPrototypeOf","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arrayLikeToArray","minLen","SCRIPT_TYPE","snippetCode","filteredConfig","configStr","createSnippet","_arrayLikeToArray","_arrayWithHoles","_assertThisInitialized","_createClass","_inheritsLoose","_iterableToArray","iter","_nonIterableRest","excluded","sourceSymbolKeys","_objectWithoutPropertiesLoose","sourceKeys","_slicedToArray","_toArray","_toConsumableArray","iterableToArray","_unsupportedIterableToArray","tr","bt","ze","Tt","fromCodePoint","pt","or","fromEntries","gt","cr","$e","lr","codePointAt","fr","ur","pr","gr","yr","dict","walk","compile","It","Ot","ht","xe","Ie","global","Cr","Ce","ie","pe","oe","Pe","he","Ft","Pt","He","Ht","Ve","Ye","Ke","we","Je","qe","Kt","Zt","Xt","kt","tn","Ee","De","Ze","We","Xe","nn","Qe","ye","ke","et","rn","tt","sn","an","Qt","Ne","se","ce","Le","Re","Ue","le","cn","ln","un","nt","Me","Y","me","Mn","Zn","je","ft","Jt","Vn","be","ot","ue","Pn","qn","rt","fe","st","zn","dt","ve","Se","Fn","xn","$n","ut","Kn","ct","Bn","Jn","Yt","jn","Qn","Hn","Te","Yn","Wt","Vt","lt","qt","Wn","Dr","FIELD_ID","ENTRY_ID","ASSET_ID","LOCALE","SPACE","ENVIRONMENT","ne","MOUSE_MOVE","SCROLL_START","SCROLL_END","RESIZE_START","RESIZE_END","TAGGED_ELEMENTS","INSPECTOR_MODE_CHANGED","Ct","wt","Nr","Lr","Ur","Node","ELEMENT_NODE","fieldId","environment","manuallyTagged","entryId","assetId","Dt","xr","TEXT_NODE","$r","Fe","ignoreManual","jr","sourceMap","closest","Mr","contentful","entityType","entity","taggedElements","manuallyTaggedCount","automaticallyTaggedCount","autoTaggedElements","Nt","Gr","cleanupCB","addScrollListener","addMutationListener","addResizeListener","addHoverListener","updateElements","observersCB","isInspectorActive","intersectionObserver","observe","unobserve","targetOrigin","isScrolling","scrollTimeout","capture","passive","characterData","attributeFilter","childList","subtree","disconnect","ResizeObserver","isResizing","resizeTimeout","Sr","hoveredElement","elements","coordinates","isVisible","isHovered","checkVisibility","checkOpacity","checkVisibilityCSS","IntersectionObserver","isIntersecting","intersectionRect","sendTaggedElements","threshold","kr","Br","zr","Hr","Et","Vr","CONNECTED","DISCONNECTED","ERROR","TAGGED_FIELD_CLICKED","URL_CHANGED","SUBSCRIBED","UNSUBSCRIBED","ENTRY_UPDATED","ENTRY_SAVED","DEBUG_MODE_ENABLED","Jr","defaultLocale","sendMessage","subscriptionId","subscriptions","qr","subscription","receiveMessage","sys","debugMode","enableLiveUpdates","Ar","liveUpdatesEnabled","inspectorModeEnabled","initTargetOrigin","inspectorMode","ignoreManuallyTaggedElements","experimental","liveUpdates","saveEvent","G","Tr","taggedElementCount","connected","isInspectorEnabled","isLiveUpdatesEnabled","manuallyTaggedElementCount","automaticallyTaggedElementCount","ancestorOrigins","yt","referrer","Kr","mt","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","__self","__source","_owner","jsx","jsxs","ignoreResult","sendAsFormData","post","__asyncValues","asyncIterator","__values","KEY_PENDING_REQUESTS","KlevuEventV2","eventsApiV2Url","addPendingRequest","removePendingRequest","sendGenericPostEvent","formData","sendBeacon","requests","old","firstPart","secondPart","generateUID","cacheMaxTTL","eventsApiV1Url","recommendationsApiUrl","moiApiUrl","disableClickTracking","disableClickTrackStoring","e_1","requests_1_1","requests_1","e_1_1","runPendingAnalyticalRequests","KlevuFilterType","AdvancedSortingDiretion","KlevuFilterOrder","KlevuTypeOfSearch","KlevuDomEvents","cfg","loadFromGlobal","KlevuSearchPreference","KlevuSearchSorting","KlevuTypeOfRecord","KlevuTypeOfRequest","KlevuListenDomEvent","klevuDomEvent","STORAGE_KEY","clicks","categoryCache","click","productId","ts","dispatchEvent","CustomEvent","ClickEventSent","detail","getLastClickedLatestsFirst","getProducts","getCategoryPersonalisationIds","categoryPath","currentClicks","cached","ids","itemsToTake","SAVE_KEY","lastSearches","KlevuLastSearches","term","ls","timestamp","MAX_COUNT","LastSearchUpdate","KlevuEventV2CheckedOutProducts","event_version","event_apikey","user_profile","event_data","_f","item_group_id","itemGroupId","item_variant_id","variantId","unit_price","salePrice","order_id","orderId","order_line_id","orderLineId","amount","override","recommendationMetadata","list_id","recsKey","list_logic","logic","list_name","spot_id","spotKey","spot_name","spotName","bannerInfo","productIndexInList","static_content","activeFilters","klevu_apiKey","klevu_type","klevu_keywords","klevu_productGroupId","klevu_productId","klevu_productName","klevu_productUrl","klevu_productVariantId","klevu_activeFilters","KlevuEventV1ProductTracking","totalResults","typeOfSearch","klevu_term","klevu_totalResults","klevu_typeOfQuery","KlevuEventV1Search","categoryTitle","klevuCategory","pageStartsFrom","abTestId","abTestVariantId","klevu_categoryName","klevu_categoryPath","klevu_productIds","klevu_pageStartsFrom","klevu_abTestId","klevu_abTestVariantId","KlevuEventV1CategoryView","productPosition","klevu_salePrice","klevu_productSku","sku","klevu_productPosition","KlevuEventV1CategoryProductClick","bannerId","bannerName","imageUrl","targetUrl","klevu_request","klevu_bannerId","klevu_bannerName","klevu_image","klevu_target","KlevuEventV1BannerClick","applyFilterWithManager","applyFilters","klevuModifierId","modifyAfter","toApplyFilters","Index","listFilters","filtersToReturn","include","exclude","mincount","rangeFilterSettings","onResult","filterManager","apiResponse","queryResults","initFromListFilters","sendSearchEvent","ssrOnResultFE","queriesById","klevuImageData","processed","totalResultsFound","searchSendEventSent","selectedFiltersStr","isAnyFilterSelected","Slider","klevuFunc","personalisation","enablePersonalisation","records","lastClickedProductIds","pId","klevuFunctionId","recentObjects","typeOfRecord","advancedFiltering","conditions","filterType","groupCondition","groupOperator","getAnnotationsForProduct","prod","paramaters","searchedTerm","urlData","objectToQueryParameters","KlevuGetBannersByType","banners","termOrCategory","dateFiltered","banner","startDate","bannerDateToDate","endDate","filterBannersByDate","showForTerms","filterBannersByTerm","showOnLandingPage","showOnQuickSearch","showOnCategoryPage","year","jsDate","setHours","KlevuKMCSettings","ignoreCache","cacheLength","maps","_KlevuResponseQueryObject_instances","_KlevuResponseQueryObject_initRedirects","_KlevuResponseQueryObject_initEventFunctions","__classPrivateFieldGet","receiver","kind","KlevuResponseQueryObject","responseObject","hooks","functionParams","getPage","newFunc","prevQueryResponse","pageIndex","noOfResults","modifiers","previousResultRecords","removeListFilters","getTotalPages","ceil","annotationsById","getBanners","klevu_banner","getQueryParameters","WeakSet","getRedirects","klevu_keywordUrlMap","keywords","searchClickEvent","autoSendViewEvent","record","hook","categoryMerchandisingClickEvent","abtest","kmcConfig","metadata","staticContent","recommendationBannerClickEvent","resolution","banner_alt_tag","altTag","banner_image_url","content_type","recommendationClickEvent","_KlevuResponseObject_instances","_KlevuResponseObject_functions","_KlevuResponseObject_queryObjects","_KlevuResponseObject_buildQueryObjects","__classPrivateFieldSet","functions","checkProcessedFunctions","packProcessedFunctionsToString","modifier","FEHydrate","suggestionsById","suggestionResults","queryExists","qu","klevuFetchCache","_cache","_timestamp","check","timetocache","imul","functionPromises","functionPromisesWithoutOptions","recordQueries","suggestionQueries","suggestions","cleanAndProcessFunctions","withOverride","configOverride","apiKeys","typeOfRequest","responseCode","qTime","cleanSearchQuery","toLocaleLowerCase","typeOfRecords","cleanedTerm","trendingProducts","KMCRecommendationPagetype","KMCRecommendationLogic","FilterManager","Options","sliders","initialValues","FiltersApplied","getCurrentState","toggleOption","suboption","getOptionByKeyCreateIfNotExists","prevSeleted","FilterSelectionUpdate","selectOption","deselectOption","clearOptionSelections","isKlevuFilterResultOptions","o2","updateSlide","slideIndex","isKlevuFilterResultSlider","isKlevuFilterResultRating","subOption","singleSelect","currentSelection","subOpt","toURLParams","readFromURLParams","optionKey","sliderKey","selectedFilters","optionIndex","subOptionIndex","Rating","activeStyle","_location","defaultGetProps","IOSupported","abortPrefetch","_prefetch","io","intersectionRatio","didTimeout","timeRemaining","postHydrate","idle","offMainThread","strategy","loadCallback","errorCallback","onLoad","callbacks","LuxonError","InvalidDateTimeError","toMessage","InvalidIntervalError","InvalidDurationError","ConflictingSpecificationError","InvalidUnitError","InvalidArgumentError","ZoneIsAbstractError","DATE_SHORT","DATE_MED","DATE_MED_WITH_WEEKDAY","weekday","DATE_FULL","DATE_HUGE","TIME_SIMPLE","hour","minute","TIME_WITH_SECONDS","second","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","hourCycle","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","isInteger","hasRelative","bestBy","best","integerBetween","padStart","padded","parseInteger","parseFloating","parseMillis","fraction","roundTo","digits","towardZero","factor","trunc","isLeapYear","daysInYear","daysInMonth","modMonth","floorMod","objToLocalTS","UTC","millisecond","setUTCFullYear","getUTCFullYear","weeksInWeekYear","weekYear","last","untruncateYear","parseZoneInfo","offsetFormat","timeZone","intlOpts","modified","formatToParts","signedOffset","offHourStr","offMinuteStr","offHour","offMin","is","asNumber","numericValue","normalizeObject","normalizer","normalized","formatOffset","hours","minutes","sign","RangeError","timeObject","ianaRegex","monthsLong","monthsShort","monthsNarrow","months","weekdaysLong","weekdaysShort","weekdaysNarrow","weekdays","meridiems","erasLong","erasShort","erasNarrow","eras","stringifyTokens","splits","tokenToString","literal","macroTokenToFormatOpts","DD","DDD","DDDD","ttt","tttt","TT","TTT","TTTT","ff","fff","ffff","FF","FFF","FFFF","fmt","currentFull","bracketed","formatOpts","loc","systemLoc","formatWithSystemDefault","redefaultToSystem","dtFormatter","formatDateTime","formatDateTimeParts","num","forceSimple","padTo","numberFormatter","formatDateTimeFromString","knownEnglish","listingMode","useDateTimeFormatter","outputCalendar","extract","isOffsetFixed","allowZ","isValid","zone","meridiem","standalone","maybeMacro","era","parseFormat","offsetName","zoneName","weekNumber","quarter","formatDurationFromString","dur","tokenToField","tokens","realTokens","lildur","mapped","shiftTo","Invalid","explanation","Zone","ianaName","isUniversal","equals","otherZone","singleton","SystemZone","getTimezoneOffset","dtfCache","typeToPos","ianaZoneCache","IANAZone","isValidZone","valid","NaN","dtf","hour12","adOrBc","filled","pos","partsOffset","fMonth","fDay","fYear","fadOrBc","fHour","fMinute","fSecond","hackyOffset","asTS","over","FixedOffsetZone","utcInstance","fixed","InvalidZone","normalizeZone","defaultZone","lowered","parseSpecifier","throwOnInvalid","defaultNumberingSystem","defaultOutputCalendar","Settings","numberingSystem","Locale","resetCache","intlLFCache","intlDTCache","getCachedDTF","locString","intlNumCache","intlRelCache","sysLocaleCache","listStuff","defaultOK","englishFn","intlFn","PolyNumberFormatter","intl","otherOpts","useGrouping","minimumIntegerDigits","inf","getCachedINF","PolyDateFormatter","gmtOffset","offsetZ","fromMillis","toJSDate","PolyRelFormatter","isEnglish","rtf","cacheKeyOpts","getCachedRTF","numeric","narrow","years","quarters","weeks","days","seconds","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","defaultToEN","specifiedLocale","localeR","numberingSystemR","outputCalendarR","numbering","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","localeStr","uIndex","smaller","calendar","parseLocaleString","intlConfigString","weekdaysCache","monthsCache","meridiemCache","eraCache","fastNumbersCached","fastNumbers","isActuallyEn","hasNoWeirdness","alts","redefaultToEN","utc","mapMonths","mapWeekdays","matching","relFormatter","listFormatter","getCachedLF","combineRegexes","regexes","full","combineExtractors","extractors","mergedVals","mergedZone","patterns","extractor","simpleParse","offsetRegex","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","extractISOWeekData","extractISOOrdinalData","sqlTimeRegex","sqlTimeExtensionRegex","extractISOTime","extractISOOffset","local","fullOffset","extractIANAZone","isoTimeOnly","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","negativeSeconds","maybeNegate","obsOffsets","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","fromStrings","weekdayStr","rfc2822","extractRFC2822","obsOffset","milOffset","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDateAndTime","extractISOTimeAndOffset","extractISOTimeOnly","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOTimeOffsetAndIANAZone","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","conf","conversionAccuracy","Duration","matrix","fromMap","fromUnit","toMap","toUnit","conv","antiTrunc","accurate","invalid","isLuxonDuration","fromObject","normalizeUnit","durationLike","isDuration","parseISODuration","parseISOTimeOnly","fmtOpts","toHuman","unitDisplay","toObject","toISO","toISOTime","millis","toMillis","suppressMilliseconds","suppressSeconds","includePrefix","plus","fromDurationLike","minus","negate","mapUnits","reconfigure","normalize","vals","normalizeValues","built","accumulated","lastUnit","own","ak","negated","invalidReason","invalidExplanation","v1","v2","Interval","isLuxonInterval","builtStart","friendlyDateTime","builtEnd","validateError","validateStartEnd","fromDateTimes","startIsValid","endIsValid","fromISO","after","before","toDuration","startOf","diff","hasSame","isAfter","dateTime","isBefore","splitAt","dateTimes","sorted","splitBy","divideEqually","numberOfParts","overlaps","abutsStart","abutsEnd","engulfs","intersection","union","intervals","final","sofar","currentCount","ends","difference","xor","toISODate","dateFormat","mapEndpoints","proto","setZone","locObj","relative","dayDiff","earlier","utcDayStart","toUTC","keepLocalTime","highWater","lowestOrder","differs","differ","delta","highOrderDiffs","remainingMillis","lowerOrderUnits","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","digitRegex","intUnit","deser","parseDigits","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","oneOf","strings","groups","simple","partTypeStyleToTokenVal","long","dayperiod","dayPeriod","dummyDateTimeCache","maybeExpandMacroToken","tokenForPart","explainFromTokens","expandMacroTokens","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","unitate","unitForToken","disqualifyingUnit","regexString","buildRegex","rawMatches","matchIndex","specificOffset","toField","dateTimeFromMatches","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","getUTCDay","computeOrdinal","uncomputeOrdinal","month0","gregorianToWeek","gregObj","weekToGregorian","weekData","weekdayOfJan4","yearInDays","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","hasInvalidGregorianData","validYear","validMonth","validDay","hasInvalidTimeData","validHour","validMinute","validSecond","validMillisecond","MAX_DATE","unsupportedZone","possiblyCachedWeekData","fixOffset","localTS","tz","utcGuess","o3","tsToObj","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","objToTS","adjustTime","oPre","millisToAdd","parseDataToDateTime","parsedZone","interpretationZone","toTechFormat","extended","longFormat","includeOffset","extendedZone","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedWeekUnits","orderedOrdinalUnits","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","tsNow","offsetProvis","diffRelative","calendary","lastOpts","argList","_zone","isLuxonDateTime","zoneToUse","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","useWeekData","defaultValues","objNow","foundFirst","higherOrderInvalid","validWeek","validWeekday","hasInvalidWeekData","validOrdinal","hasInvalidOrdinalData","gregorian","tsFinal","offsetFinal","parseISODate","preprocessRFC2822","parseRFC2822Date","parseHTTPDate","localeToUse","fromOpts","parseFromTokens","fromFormat","parseSQL","monthShort","monthLong","weekdayShort","weekdayLong","offsetNameShort","offsetNameLong","isInDST","isInLeapYear","resolvedLocaleOptions","toLocal","keepCalendarTime","newTS","offsetGuess","asObj","setLocale","settingWeekStuff","mixed","normalizedUnit","endOf","toLocaleString","toLocaleParts","ext","toISOWeekDate","toRFC2822","toHTTP","toSQLDate","toSQLTime","includeZone","includeOffsetSpace","toSQL","toSeconds","toUnixInteger","toBSON","includeConfig","otherDateTime","durOpts","otherIsLater","diffed","diffNow","until","inputMs","adjustedToZone","toRelative","toRelativeCalendar","isDateTime","fromFormatExplain","dateTimeish","fromJSDate"],"sourceRoot":""}