{"version":3,"file":"vendor.js","mappings":";iHAgBA,SAASA,EAAMC,EAAGC,GACdC,KAAKF,EAAIA,EACTE,KAAKD,EAAIA,EAhBbE,EAAOC,QAAUL,EAmBjBA,EAAMM,UAAY,CAOdC,MAAO,WAAa,OAAO,IAAIP,EAAMG,KAAKF,EAAGE,KAAKD,IAQlDM,IAAS,SAASC,GAAK,OAAON,KAAKI,QAAQG,KAAKD,IAQhDE,IAAS,SAASF,GAAK,OAAON,KAAKI,QAAQK,KAAKH,IAQhDI,YAAgB,SAASJ,GAAK,OAAON,KAAKI,QAAQO,aAAaL,IAQ/DM,WAAgB,SAASN,GAAK,OAAON,KAAKI,QAAQS,YAAYP,IAQ9DQ,KAAS,SAASC,GAAK,OAAOf,KAAKI,QAAQY,MAAMD,IAQjDE,IAAS,SAASF,GAAK,OAAOf,KAAKI,QAAQc,KAAKH,IAQhDI,OAAS,SAASC,GAAK,OAAOpB,KAAKI,QAAQiB,QAAQD,IASnDE,aAAe,SAASF,EAAEd,GAAK,OAAON,KAAKI,QAAQmB,cAAcH,EAAEd,IAOnEkB,QAAS,SAASC,GAAK,OAAOzB,KAAKI,QAAQsB,SAASD,IASpDE,KAAS,WAAa,OAAO3B,KAAKI,QAAQwB,SAQ1CC,KAAS,WAAa,OAAO7B,KAAKI,QAAQ0B,SAO1CC,MAAS,WAAa,OAAO/B,KAAKI,QAAQ4B,UAQ1CC,IAAK,WACD,OAAOC,KAAKC,KAAKnC,KAAKF,EAAIE,KAAKF,EAAIE,KAAKD,EAAIC,KAAKD,IASrDqC,OAAQ,SAASC,GACb,OAAOrC,KAAKF,IAAMuC,EAAMvC,GACjBE,KAAKD,IAAMsC,EAAMtC,GAQ5BuC,KAAM,SAAShC,GACX,OAAO4B,KAAKC,KAAKnC,KAAKuC,QAAQjC,KAUlCiC,QAAS,SAASjC,GACd,IAAIkC,EAAKlC,EAAER,EAAIE,KAAKF,EAChB2C,EAAKnC,EAAEP,EAAIC,KAAKD,EACpB,OAAOyC,EAAKA,EAAKC,EAAKA,GAQ1BC,MAAO,WACH,OAAOR,KAAKS,MAAM3C,KAAKD,EAAGC,KAAKF,IAQnC8C,QAAS,SAASC,GACd,OAAOX,KAAKS,MAAM3C,KAAKD,EAAI8C,EAAE9C,EAAGC,KAAKF,EAAI+C,EAAE/C,IAQ/CgD,UAAW,SAASD,GAChB,OAAO7C,KAAK+C,aAAaF,EAAE/C,EAAG+C,EAAE9C,IAUpCgD,aAAc,SAASjD,EAAGC,GACtB,OAAOmC,KAAKS,MACR3C,KAAKF,EAAIC,EAAIC,KAAKD,EAAID,EACtBE,KAAKF,EAAIA,EAAIE,KAAKD,EAAIA,IAG9B2B,SAAU,SAASD,GACf,IAAI3B,EAAI2B,EAAE,GAAKzB,KAAKF,EAAI2B,EAAE,GAAKzB,KAAKD,EAChCA,EAAI0B,EAAE,GAAKzB,KAAKF,EAAI2B,EAAE,GAAKzB,KAAKD,EAGpC,OAFAC,KAAKF,EAAIA,EACTE,KAAKD,EAAIA,EACFC,MAGXO,KAAM,SAASD,GAGX,OAFAN,KAAKF,GAAKQ,EAAER,EACZE,KAAKD,GAAKO,EAAEP,EACLC,MAGXS,KAAM,SAASH,GAGX,OAFAN,KAAKF,GAAKQ,EAAER,EACZE,KAAKD,GAAKO,EAAEP,EACLC,MAGXgB,MAAO,SAASD,GAGZ,OAFAf,KAAKF,GAAKiB,EACVf,KAAKD,GAAKgB,EACHf,MAGXkB,KAAM,SAASH,GAGX,OAFAf,KAAKF,GAAKiB,EACVf,KAAKD,GAAKgB,EACHf,MAGXW,aAAc,SAASL,GAGnB,OAFAN,KAAKF,GAAKQ,EAAER,EACZE,KAAKD,GAAKO,EAAEP,EACLC,MAGXa,YAAa,SAASP,GAGlB,OAFAN,KAAKF,GAAKQ,EAAER,EACZE,KAAKD,GAAKO,EAAEP,EACLC,MAGX4B,MAAO,WAEH,OADA5B,KAAKkB,KAAKlB,KAAKiC,OACRjC,MAGX8B,MAAO,WACH,IAAI/B,EAAIC,KAAKD,EAGb,OAFAC,KAAKD,EAAIC,KAAKF,EACdE,KAAKF,GAAKC,EACHC,MAGXqB,QAAS,SAASqB,GACd,IAAIM,EAAMd,KAAKc,IAAIN,GACfO,EAAMf,KAAKe,IAAIP,GACf5C,EAAIkD,EAAMhD,KAAKF,EAAImD,EAAMjD,KAAKD,EAC9BA,EAAIkD,EAAMjD,KAAKF,EAAIkD,EAAMhD,KAAKD,EAGlC,OAFAC,KAAKF,EAAIA,EACTE,KAAKD,EAAIA,EACFC,MAGXuB,cAAe,SAASmB,EAAOpC,GAC3B,IAAI0C,EAAMd,KAAKc,IAAIN,GACfO,EAAMf,KAAKe,IAAIP,GACf5C,EAAIQ,EAAER,EAAIkD,GAAOhD,KAAKF,EAAIQ,EAAER,GAAKmD,GAAOjD,KAAKD,EAAIO,EAAEP,GACnDA,EAAIO,EAAEP,EAAIkD,GAAOjD,KAAKF,EAAIQ,EAAER,GAAKkD,GAAOhD,KAAKD,EAAIO,EAAEP,GAGvD,OAFAC,KAAKF,EAAIA,EACTE,KAAKD,EAAIA,EACFC,MAGXgC,OAAQ,WAGJ,OAFAhC,KAAKF,EAAIoC,KAAKH,MAAM/B,KAAKF,GACzBE,KAAKD,EAAImC,KAAKH,MAAM/B,KAAKD,GAClBC,OAefH,EAAMqD,QAAU,SAAU9B,GACtB,OAAIA,aAAavB,EACNuB,EAEP+B,MAAMC,QAAQhC,GACP,IAAIvB,EAAMuB,EAAE,GAAIA,EAAE,IAEtBA,6FCxRXiC,SAASC,iBAAiB,oBAAoB,KAC3C,IAAEC,GAAAA,EAUAC,EAAAA,OATCC,OACCC,QAAO,CAACC,EAASC,KAChB,MAAM3D,EAASsD,EAAEK,GAAQC,QAIzB,OAHI5D,GACF0D,EAAQG,KAAK7D,GAER0D,IACN,IACFI,KAAK9D,KAA2B,IAAfA,EAAO+D,KAAgB/D,EAAO+D,QAAU/D,EAAOgE,QAGrEZ,SAASa,gBAAgBC,UAAUC,OAAO,YAE1C,MAAMC,EAAa,KACjB,MAAMC,EAAajB,SAASkB,cAAc,gBAEtCD,GACFjB,SAASa,gBAAgBM,MAAMC,YAAY,uBAA3C,UAAsEH,EAAWI,aAAjF,QAIJL,IAEAM,OAAOrB,iBAAiB,SAAUsB,GAAAA,CAASP,EAAY,MAGvDhB,SAASwB,iBAAiB,UAAUC,SAASC,IAC3C,MAAMC,EAAMD,EAAGC,IAEXA,EAAIC,SAAS,qBACfF,EAAGC,IAAMA,EAAIE,QAAQ,kBAAmB,4EC9D9C,IAAIC,EAAsC,WAStC,OARAA,EAAWC,OAAOC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIlF,KADTiF,EAAIG,UAAUF,GACOJ,OAAOjF,UAAUyF,eAAeC,KAAKN,EAAGjF,KACzDgF,EAAEhF,GAAKiF,EAAEjF,IAEjB,OAAOgF,GAEJH,EAASW,MAAM9F,KAAM0F,YAE5BK,EAAgD,SAAUC,EAAIC,EAAMC,GACpE,GAAIA,GAA6B,IAArBR,UAAUC,OAAc,IAAK,IAA4BQ,EAAxBX,EAAI,EAAGY,EAAIH,EAAKN,OAAYH,EAAIY,EAAGZ,KACxEW,GAAQX,KAAKS,IACRE,IAAIA,EAAKhD,MAAMhD,UAAUkG,MAAMR,KAAKI,EAAM,EAAGT,IAClDW,EAAGX,GAAKS,EAAKT,IAGrB,OAAOQ,EAAGM,OAAOH,GAAMhD,MAAMhD,UAAUkG,MAAMR,KAAKI,KAE3CM,EAAM,SAAUC,EAAKC,EAAKC,GAEjC,QADoB,IAAhBA,IAA0BA,GAAc,IACvCF,IAAQC,GAAsB,iBAARD,GAAmC,iBAARC,EAClD,OAAOD,EACX,IAAIpG,EAAQ+E,EAAS,GAAIqB,GACzB,IAAK,IAAIG,KAAQF,EACTA,EAAIb,eAAee,KACfF,EAAIE,aAAiBxD,OAASqD,EAAIG,aAAiBxD,MACnD/C,EAAMuG,GAAQD,EAAcX,EAAcA,EAAc,GAAIS,EAAIG,IAAO,GAAOF,EAAIE,IAAO,GAAQF,EAAIE,GAE3E,iBAAdF,EAAIE,IAA2C,iBAAdH,EAAIG,GACjDvG,EAAMuG,GAAQJ,EAAIC,EAAIG,GAAOF,EAAIE,GAAOD,GAGxCtG,EAAMuG,GAAQF,EAAIE,IAI9B,OAAOvG,GCtCP,EAAgD,SAAU4F,EAAIC,EAAMC,GACpE,GAAIA,GAA6B,IAArBR,UAAUC,OAAc,IAAK,IAA4BQ,EAAxBX,EAAI,EAAGY,EAAIH,EAAKN,OAAYH,EAAIY,EAAGZ,KACxEW,GAAQX,KAAKS,IACRE,IAAIA,EAAKhD,MAAMhD,UAAUkG,MAAMR,KAAKI,EAAM,EAAGT,IAClDW,EAAGX,GAAKS,EAAKT,IAGrB,OAAOQ,EAAGM,OAAOH,GAAMhD,MAAMhD,UAAUkG,MAAMR,KAAKI,KA8BtD,QA5Ba,CAETW,SAAU,GAEVC,UAAW,KAEXC,UAAW,CACPC,MAAO,KACPC,SAAU,KACVC,gBAAiB,KACjBC,YAAa,KACbC,oBAAqB,KACrBC,gBAAiB,MAErBC,SAAU,SAAU/G,EAAGgH,GAGnB,IAFA,IAAIC,OAAY,IAAPD,EAAgB,GAAKA,EAAIE,EAAKD,EAAGE,QAASA,OAAiB,IAAPD,GAAuBA,EAAIE,EAAKH,EAAGI,SAAUA,OAAkB,IAAPD,GAAwBA,EACzIE,EAAO,GACFC,EAAK,EAAGA,EAAKnC,UAAUC,OAAQkC,IACpCD,EAAKC,EAAK,GAAKnC,UAAUmC,GAE7B,IAAIC,EAAM9H,KAAK8G,UAAUxG,KACJ,oBAATyH,KAAuBA,KAAKzH,GAAK,aACtB,IAAX,EAAA0H,EAAyB,EAAAA,EAAO1H,GAAK,MACjD,GAAImH,IAAYK,EACZ,MAAM,IAAIG,MAAM3H,EAAI,mBACxB,OAAOqH,GAAYG,EAAM,IAAKA,EAAII,KAAKpC,MAAMgC,EAAK,EAAc,MAAC,GAASF,GAAM,KAAaE,ICjCrG,IAAIK,EAAU,SAAUC,EAASC,EAAMC,EAAUC,GAC7C,IAAKH,EAAQI,iBACT,OAAO,EACX,IAAIC,EAAUL,EAAQI,iBAAiBH,GACvC,SAAII,GAAWA,EAAQ9C,OAAS,KAC5B2C,EAASG,EAAQC,UAAU,IACvBH,EAAaI,eACbJ,EAAaI,cAAcN,GAC/BO,EAAMC,UAAUC,OAAOT,GACnBO,EAAMC,UAAUE,KAAO,IACvBH,EAAMI,SAASC,aACXV,EAAaW,sBACbX,EAAaW,yBAGd,IAgBXN,EAAQ,CACRC,UAAW,IAAIM,IACfH,SAAU,KACVI,QAAS,SAAUf,EAAMC,GACrB,GAAKD,GAASC,EAAd,CAEA,IAAIC,EAAe,WAAc,cAAe,CAAEd,SAAS,KAlBhD,SAAUc,EAAcc,GAUvC,OATKT,EAAMI,UAAYT,GAAgBc,IACnCT,EAAMI,SAAW,IAAIK,GAAU,SAAUjB,GACrCQ,EAAMC,UAAU/D,SAAQ,SAAUwD,EAAUD,GACxCF,EAAQC,EAASC,EAAMC,EAAUC,SAGrCA,EAAaW,sBACbX,EAAaW,wBAEdN,EAAMI,UAUJM,CAAaf,EADF,WAAc,sBAAuB,CAAEd,SAAS,OAG3DU,EAAQI,EAAcF,EAAMC,EAAUC,KACnCK,EAAMC,UAAUE,KAAO,GACvBH,EAAMI,SAASI,QAAQ,CAAEG,WAAY,CAAC,WAAY,aACtDX,EAAMC,UAAUW,IAAInB,EAAMC,QAItC,UCjDO,ICIHmB,EACA,SAA4BC,GACxB1J,KAAK0J,MAAQA,GCNjB,EAAsC,WAStC,OARA,EAAWtE,OAAOC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIlF,KADTiF,EAAIG,UAAUF,GACOJ,OAAOjF,UAAUyF,eAAeC,KAAKN,EAAGjF,KACzDgF,EAAEhF,GAAKiF,EAAEjF,IAEjB,OAAOgF,GAEJ,EAASQ,MAAM9F,KAAM0F,YAE5B,EAAgD,SAAUM,EAAIC,EAAMC,GACpE,GAAIA,GAA6B,IAArBR,UAAUC,OAAc,IAAK,IAA4BQ,EAAxBX,EAAI,EAAGY,EAAIH,EAAKN,OAAYH,EAAIY,EAAGZ,KACxEW,GAAQX,KAAKS,IACRE,IAAIA,EAAKhD,MAAMhD,UAAUkG,MAAMR,KAAKI,EAAM,EAAGT,IAClDW,EAAGX,GAAKS,EAAKT,IAGrB,OAAOQ,EAAGM,OAAOH,GAAMhD,MAAMhD,UAAUkG,MAAMR,KAAKI,KAOtD,SAAS0D,EAAmBC,GACxB,IAAItC,EAEJ,YADgB,IAAZsC,IAAsBA,EAAU,IAI5B,QAHAtC,EAAKlC,OAAOgD,QAAQwB,GAASC,MAAK,SAAUvC,GAEhD,OADQA,EAAG,GACFwC,gBANS,eAM6BA,wBAC5B,IAAPxC,OAAgB,EAASA,EAAG,GAEhD,SAASyC,EAAiBC,GACtB,MAAO,yBAAyBC,KAAKD,GAOzC,IAAIE,EAA0B,WAC1B,SAASA,EAASC,EAAMC,EAAUC,EAAWC,EAAYC,EAAcC,QACjD,IAAdH,IAAwBA,EAAY,IAAIlB,UACzB,IAAfmB,IAAyBA,EAAa,SACrB,IAAjBC,IAA2BA,EAAe,SACvB,IAAnBC,IAA6BA,EAAiB,IAClDxK,KAAKmK,KAAOA,EACZnK,KAAKoK,SAAWA,EAChBpK,KAAKqK,UAAYA,EACjBrK,KAAKsK,WAAaA,EAClBtK,KAAKuK,aAAeA,EACpBvK,KAAKwK,eAAiBA,EA0Q1B,OAxQAN,EAASO,QAAU,SAAUC,EAAKC,GAG9B,YAFY,IAARD,IAAkBA,EAAM,SACZ,IAAZC,IAAsBA,EAAU,IAC7B,IAAIT,EAASQ,EAAKC,IAE7BT,EAAS/J,UAAUyK,YAAc,SAAUtD,GACvC,IAAIC,OAAY,IAAPD,EAAgB,GAAKA,EAAIE,EAAKD,EAAGmD,IAAKA,OAAa,IAAPlD,EAAgBxH,KAAKmK,KAAO3C,EAAIE,EAAKH,EAAGoD,QAASA,OAAiB,IAAPjD,EAAgB1H,KAAKoK,SAAW1C,EAAImD,EAAKtD,EAAGuD,SAAUA,OAAkB,IAAPD,EAAgB7K,KAAKqK,UAAYQ,EAAIE,EAAKxD,EAAGyD,UAAWA,OAAmB,IAAPD,EAAgB/K,KAAKsK,WAAaS,EAAIE,EAAK1D,EAAG2D,YAAaA,OAAqB,IAAPD,EAAgBjL,KAAKuK,aAAeU,EAAIE,EAAK5D,EAAG6D,cAAeA,OAAuB,IAAPD,EAAgBnL,KAAKwK,eAAiBW,EACnb,OAAO,IAAIjB,EAASQ,EAAK,EAAS,GAAIC,GAAU,IAAIxB,IAAI2B,GAAW,EAAc,GAAIE,GAAW,GAAO,EAAc,GAAIE,GAAa,GAAO,EAAc,GAAIE,GAAe,KAOlLlB,EAAS/J,UAAUyG,SAAW,SAAU+D,EAASU,GAG7C,YAFc,IAAVA,IAAoBA,GAAQ,GAChC,WAAgBA,EAAQ9E,EAAI,WAAeoE,GAAWA,EAC/C3K,MASXkK,EAAS/J,UAAU0G,UAAY,SAAUyE,GAErC,OADA,YAAiBA,EACVtL,MASXkK,EAAS/J,UAAU2G,UAAY,SAAUA,GAErC,OADA,YAAiB,EAAS,EAAS,GAAI,aAAiBA,GACjD9G,MAOXkK,EAAS/J,UAAUuK,IAAM,SAAUA,EAAKxF,GAEpC,QADgB,IAAZA,IAAsBA,GAAU,GAChCA,EACA,OAAOlF,KAAK4K,YAAY,CAAEF,IAAKA,IACnC,IAAIa,EAAQvL,KAAKmK,KAAKoB,MAAM,KAC5B,OAAOvL,KAAK4K,YAAY,CACpBF,IAAKa,EAAM5F,OAAS,EAChB4F,EAAM,GAAKb,EAAM,IAAMa,EAAM,GAC7BvL,KAAKmK,KAAOO,KAQxBR,EAAS/J,UAAUwK,QAAU,SAAUA,EAASU,GAE5C,YADc,IAAVA,IAAoBA,GAAQ,GACzBrL,KAAK4K,YAAY,CAAED,QAASU,EAAQ9E,EAAIvG,KAAKoK,SAAUO,GAAWA,KAqB7ET,EAAS/J,UAAUqL,MAAQ,SAAUC,EAAIvG,GAErC,YADgB,IAAZA,IAAsBA,GAAU,GAC7BlF,KAAK4K,YAAY,CAAEF,IAAKgB,EAAkB1L,KAAKmK,KAAMsB,EAAIvG,MAMpEgF,EAAS/J,UAAUyJ,QAAU,SAAU+B,GACnC,OAAO3L,KAAK4K,YAAY,CAAED,QAASpE,EAAIvG,KAAKoK,SAAU,CAAER,QAAS+B,GAAgB,QAMrFzB,EAAS/J,UAAUyL,OAAS,SAAUC,GAClC,OAAO7L,KAAK4J,QAAQ,CAAEkC,OAAQD,KAMlC3B,EAAS/J,UAAU4L,QAAU,SAAUF,GACnC,IAAIvE,EACJ,OAAOtH,KAAK4J,UAAStC,EAAK,IAAO0E,gBAAuBH,EAAavE,KAMzE4C,EAAS/J,UAAU8L,KAAO,SAAUJ,GAChC,OAAO7L,KAAK4J,QAAQ,CAAEsC,cAAeL,KAOzC3B,EAAS/J,UAAUgM,QAAU,SAAUC,EAASD,GAC5C,IAAIE,EAAS,IAAIlD,IAAInJ,KAAKqK,WAE1B,OADAgC,EAAO7C,IAAI4C,EAASD,GACbnM,KAAK4K,YAAY,CAAEE,SAAUuB,KAMxCnC,EAAS/J,UAAUmM,OAAS,SAAUC,GAClC,OAAOvM,KAAK4K,YAAY,CAAED,QAAS,EAAS,EAAS,GAAI3K,KAAKoK,UAAW,CAAEkC,OAAQC,EAAWD,YAMlGpC,EAAS/J,UAAUqM,QAAU,SAAUC,EAAWC,GAE9C,YADc,IAAVA,IAAoBA,GAAQ,GACzB1M,KAAK4K,YAAY,CAAEI,UAAW0B,EAAQ,CAACD,GAAa,EAAc,EAAc,GAAIzM,KAAKsK,YAAY,GAAO,CAACmC,IAAY,MAKpIvC,EAAS/J,UAAUwM,MAAQ,SAAUrE,EAAUoE,GAE3C,YADc,IAAVA,IAAoBA,GAAQ,GACzB1M,KAAK4K,YAAY,CACpBQ,cAAesB,EAAQ,CAACpE,GAAY,EAAc,EAAc,GAAItI,KAAKwK,gBAAgB,GAAO,CAAClC,IAAW,MAMpH4B,EAAS/J,UAAU+K,YAAc,SAAUA,EAAawB,GAEpD,YADc,IAAVA,IAAoBA,GAAQ,GACzB1M,KAAK4K,YAAY,CACpBM,YAAawB,EAAQxB,EAAc,EAAc,EAAc,GAAIlL,KAAKuK,cAAc,GAAOW,GAAa,MAGlHhB,EAAS/J,UAAUmL,OAAS,SAAUA,EAAQX,EAASiC,QACnC,IAAZjC,IAAsBA,EAAU,SACvB,IAATiC,IAAmBA,EAAO,MAC9B,IAAIC,EAAO7M,KAAK2K,QAAQ,EAAS,EAAS,GAAIA,GAAU,CAAEW,OAAQA,KAE9DwB,EAAcnD,EAAmBkD,EAAKzC,SAASR,SAC/CmD,EAA0B,iBAATH,KAAuBC,EAAKzC,SAASR,UAAYkD,GAAe/C,EAAiB+C,IAKtG,ODxNc,SAAUE,GAC5B,IAAItC,EAAMsC,EAAS7C,KAAME,EAAY2C,EAAS3C,UAAWW,EAAYgC,EAAS1C,WAAYY,EAAc8B,EAASzC,aAAc0C,EAAOD,EAAS5C,SAC3IU,EAAW,IAAI3B,IAAIkB,GACnB6C,EAAe3G,EAAI,WAAe0G,GAClCE,EAAkB,WAAc,kBAAmB,CAAE1F,SAAS,EAAOE,UAAU,KAC9EuF,EAAqB,QAAKC,IAC3BD,EAAqB,OAAIC,EAAgBb,QAG7C,IAAIc,EAAU,CACVC,IAAK,KACLX,MAAO,WACCU,EAAQC,MACRC,aAAaF,EAAQC,KACrBD,EAAQC,IAAM,QAKtBE,ED7BsB,SAAUrC,GAAe,OAAO,SAAUsC,GACpE,OAA+B,IAAvBtC,EAAYvF,OAChB6H,EACuB,IAAvBtC,EAAYvF,OACRuF,EAAY,GAAGsC,GACftC,EAAYuC,aAAY,SAAUC,EAAKC,EAAMC,GACzC,OAAQA,IAAQ1C,EAAYvF,OAAS,EAAKgI,EAAKD,EAAIF,IAAkBG,EAAKD,OCuBnEG,CAAiB3C,EAAjB2C,CAA8B,WAAc,SAA5CA,CAAsDnD,EAAKwC,GAE1EY,EAAkBP,EACjBQ,OAAM,SAAUrE,GACjB,MAAM,IAAID,EAAmBC,MAE5BsE,MAAK,SAAUC,GAEhB,GADAb,EAAQV,SACHuB,EAASC,GAAI,CACd,GAAsB,WAAlBD,EAASE,KAAmB,CAC5B,IAAIC,EAAM,IAAInG,MAAM,mBAGpB,MAFAmG,EAAY,OAAIH,EAASI,OACzBD,EAAc,SAAIH,EACZG,EAEV,OAAOH,EAAS,aAAkB,UAAUD,MAAK,SAAUM,GAEvD,IAAIF,EAAM,IAAInG,MAAMqG,GAIpB,MAHAF,EAAI,aAAkB,QAAUE,EAChCF,EAAY,OAAIH,EAASI,OACzBD,EAAc,SAAIH,EACZG,KAGd,OAAOH,KAiBPM,EAAa,SAAUC,GAAW,OAAO,SAAUC,GAAM,OAAOD,EAEhDV,EAAgBE,MAAK,SAAUU,GAAK,OAAOA,GAAKA,EAAEF,QAAeR,MAAK,SAAUU,GAAK,OAAOD,EAAKA,EAAGC,GAAKA,KAEzGZ,EAAgBE,MAAK,SAAUU,GAAK,OAAOD,EAAKA,EAAGC,GAAKA,MAjBzDX,OAAM,SAAUK,GAC3BhB,EAAQV,QACR,IAAIhD,EAAQ0E,aAAe3E,EAAqB2E,EAAI1E,MAAQ0E,EAC5D,GAAIA,aAAe3E,GAAsBqB,EAAS6D,IAAI,eAClD,OAAO7D,EAAS8D,IAAI,cAAb9D,CAA4BpB,EAAOsD,GACzC,GAAIlC,EAAS6D,IAAIjF,EAAM2E,QACxB,OAAOvD,EAAS8D,IAAIlF,EAAM2E,OAAnBvD,CAA2BpB,EAAOsD,GACxC,GAAIlC,EAAS6D,IAAIjF,EAAMrB,MACxB,OAAOyC,EAAS8D,IAAIlF,EAAMrB,KAAnByC,CAAyBpB,EAAOsD,GAEvC,MAAMtD,OAQdmF,EAAgB,CAIhB/G,IAAKyG,EAAW,MAIhBO,KAAMP,EAAW,QAIjBQ,KAAMR,EAAW,QAIjBS,SAAUT,EAAW,YAIrBU,YAAaV,EAAW,eAIxBW,KAAMX,EAAW,QAMjB3F,MAAO,SAAU6F,GAEb,OADAlB,EAAaS,MAAK,SAAUlG,GAAO,OAAO,UAAcA,EAAI4C,IAAK+D,MAC1DI,GAQXM,WAAY,SAAUC,EAAM7C,GAIxB,YAHmB,IAAfA,IAAyBA,EAAaY,GAC1CC,EAAQV,QACRU,EAAQC,IAAM8B,YAAW,WAAc,OAAO5C,EAAW8C,UAAYD,GAC9DP,GAKXtC,WAAY,WAAc,MAAO,CAACY,EAAiB0B,IAInDnF,MAAO,SAAU0C,EAASqC,GAEtB,OADA3D,EAAStB,IAAI4C,EAASqC,GACfI,GAKXS,WAAY,SAAUb,GAAM,OAAOI,EAAcnF,MAAM,IAAK+E,IAI5Dc,aAAc,SAAUd,GAAM,OAAOI,EAAcnF,MAAM,IAAK+E,IAI9De,UAAW,SAAUf,GAAM,OAAOI,EAAcnF,MAAM,IAAK+E,IAI3DgB,SAAU,SAAUhB,GAAM,OAAOI,EAAcnF,MAAM,IAAK+E,IAI1DrB,QAAS,SAAUqB,GAAM,OAAOI,EAAcnF,MAAM,IAAK+E,IAIzDiB,cAAe,SAAUjB,GAAM,OAAOI,EAAcnF,MAAM,IAAK+E,IAI/DkB,WAAY,SAAUlB,GAAM,OAAOI,EAAcnF,MAAM,cAAe+E,IAItEmB,QAAS,SAAUnB,GAAM,OAAOI,EAAcnF,MAAM,aAAc+E,KAEtE,OAAOzD,EAAUtH,QAAO,SAAUmM,EAAOtM,GAAK,OAAOA,EAAEsM,EAAO7C,KAAc6B,GC6DjEiB,EAJPjD,EACKD,EACGG,EAAUF,EAAKiC,KAAKlC,EAAME,GACtBD,EAAKD,KAAKA,GAFVC,GAIPrC,eACA9G,QAAO,SAAUgK,EAAKC,GAAQ,OAAOA,EAAKD,EAAKA,EAAIvD,KAAMuD,EAAItD,YAAcyC,KAKpF3C,EAAS/J,UAAUyO,IAAM,SAAUjE,GAC/B,OAAO3K,KAAKsL,OAAO,MAAOX,IAK9BT,EAAS/J,UAAU2I,OAAS,SAAU6B,GAClC,OAAO3K,KAAKsL,OAAO,SAAUX,IAKjCT,EAAS/J,UAAU4P,IAAM,SAAUnD,EAAMjC,GACrC,OAAO3K,KAAKsL,OAAO,MAAOX,EAASiC,IAKvC1C,EAAS/J,UAAU6P,KAAO,SAAUpD,EAAMjC,GACtC,OAAO3K,KAAKsL,OAAO,OAAQX,EAASiC,IAKxC1C,EAAS/J,UAAU8P,MAAQ,SAAUrD,EAAMjC,GACvC,OAAO3K,KAAKsL,OAAO,QAASX,EAASiC,IAKzC1C,EAAS/J,UAAU+P,KAAO,SAAUvF,GAChC,OAAO3K,KAAKsL,OAAO,OAAQX,IAK/BT,EAAS/J,UAAU8M,KAAO,SAAUtC,GAChC,OAAO3K,KAAKsL,OAAO,UAAWX,IAKlCT,EAAS/J,UAAUgQ,OAAS,SAAUxF,GAClC,OAAO3K,KAAKsL,OAAOtL,KAAKoK,SAASkB,OAAQX,IAM7CT,EAAS/J,UAAUyM,KAAO,SAAUwD,GAChC,OAAOpQ,KAAK4K,YAAY,CAAED,QAAS,EAAS,EAAS,GAAI3K,KAAKoK,UAAW,CAAEwC,KAAMwD,OAOrFlG,EAAS/J,UAAU2O,KAAO,SAAUuB,EAAUvD,GAC1C,IAAIwD,EAAqB3G,EAAmB3J,KAAKoK,SAASR,SAC1D,OAAO5J,KAAK+L,QAAQe,GAChB/C,EAAiBuG,IAAuBA,GA9QpC,oBA+QO1D,KAAK2D,KAAKC,UAAUH,KASvCnG,EAAS/J,UAAU6O,SAAW,SAAUyB,EAAYC,GAEhD,YADkB,IAAdA,IAAwBA,GAAY,GACjC1Q,KAAK4M,KAAK+D,EAAgBF,EAAYC,KAQjDxG,EAAS/J,UAAUyQ,QAAU,SAAUC,GACnC,OAAO7Q,KACF4M,KAAsB,iBAAViE,EAAqBA,GAqEtBJ,EArE6CI,EAsE1DzL,OAAO3B,KAAKgN,GACd1M,KAAI,SAAU+M,GACf,IAAI9G,EAAQyG,EAAWK,GACvB,OAAI9G,aAAiB7G,MACV6G,EAAMjG,KAAI,SAAUgN,GAAK,OAAOC,EAAiBF,EAAKC,MAAOE,KAAK,KAEtED,EAAiBF,EAAK9G,MAE5BiH,KAAK,OA7EDlF,QAAQ,qCAoErB,IAAwB0E,GAlEbvG,EArRkB,GAyRzBwB,EAAoB,SAAUhB,EAAKe,EAAIvG,GACvC,IAAIgM,EACJ,GAAkB,iBAAPzF,EACPyF,EAAczF,MAEb,CACD,IAAI0F,EAAM,WAAc,kBAAmB,CAAExJ,UAAU,IACvD,IAAK,IAAImJ,KAAOrF,EACZ,GAAIA,EAAGqF,aAAgB3N,MACnB,IAAK,IAAI0E,EAAK,EAAGP,EAAKmE,EAAGqF,GAAMjJ,EAAKP,EAAG3B,OAAQkC,IAAM,CACjD,IAAIuJ,EAAM9J,EAAGO,GACbsJ,EAAIE,OAAOP,EAAKM,QAIpBD,EAAIE,OAAOP,EAAKrF,EAAGqF,IAG3BI,EAAcC,EAAIG,WAEtB,IAAI/F,EAAQb,EAAIa,MAAM,KACtB,OAAK2F,EAEDhM,GAAWqG,EAAM5F,OAAS,EACnB4F,EAAM,GAAK,IAAM2F,EACrBxG,EAAM,IAAMwG,EAHRhM,EAAUqG,EAAM,GAAKb,GAKpC,SAASiG,EAAgBF,EAAYC,EAAW1B,EAAUuC,GA0BtD,YAzBkB,IAAdb,IAAwBA,GAAY,QACvB,IAAb1B,IAAuBA,EAAW,WAAc,WAAY,CAAErH,UAAU,UAC1D,IAAd4J,IAAwBA,EAAY,IACxCnM,OAAOgD,QAAQqI,GAAY3L,SAAQ,SAAUwC,GACzC,IAAIwJ,EAAMxJ,EAAG,GAAI0C,EAAQ1C,EAAG,GACxBkK,EAAUD,EAAU7N,QAAO,SAAUgK,EAAK+D,GAAY,OAAQ/D,EAAM,GAAGpH,OAAOoH,EAAK,KAAKpH,OAAOmL,EAAU,KAAOA,IAAc,MAElI,GADAD,EAAUA,EAAU,GAAGlL,OAAOkL,EAAS,KAAKlL,OAAOwK,EAAK,KAAOA,EAC3D9G,aAAiB7G,MACjB,IAAK,IAAI0E,EAAK,EAAG6J,EAAU1H,EAAOnC,EAAK6J,EAAQ/L,OAAQkC,IAAM,CACzD,IAAI8J,EAAOD,EAAQ7J,GACnBmH,EAASqC,OAAOG,EAAU,KAAMG,QAG/BjB,GACY,iBAAV1G,GACJ0G,aAAqBvN,OACnBuN,EAAUzL,SAAS6L,GAMxB9B,EAASqC,OAAOG,EAASxH,GALX,OAAVA,GACA2G,EAAgB3G,EAAO0G,EAAW1B,EAAU,EAAc,EAAc,GAAIuC,GAAW,GAAO,CAACT,IAAM,OAO1G9B,EAEX,SAASgC,EAAiBF,EAAK9G,GAC3B,OAAO4H,mBAAmBd,GACtB,IACAc,mBAAoC,iBAAV5H,EACtBuG,KAAKC,UAAUxG,GACf,GAAKA,GC7XjB,IAAIS,EAAUP,EAASO,QACvBA,EAAiB,QAAIP,EAASO,QAM9B,MCNA,EDMA,ICNwB7D,SAAS,CAC/BgD,QAAS,CAAE,mBAAoB,kECHjC,MAgBA,EAhBuB,CAACiI,EAAIC,KAC1B,MAAMC,GAAQ,IAAIC,MAAOC,UACnBC,EAAS,IAAI9M,OAEb+M,EAAO,MACK,IAAIH,MAAOC,UACHF,GAEfD,EAAQD,EAAGhM,OAAUqM,EAAOlI,MAAQrF,OAAOyN,sBAAsBD,IAK5E,OAFAD,EAAOlI,MAAQrF,OAAOyN,sBAAsBD,GAErCD,iDCRT,IAAIG,EAAgB,SAAuB/M,EAAGzC,EAAGyP,EAAGC,GAElD,OADAjN,GAAKiN,EAAI,GACD,EAAUD,EAAI,EAAIhN,EAAIA,EAAIzC,GAE1ByP,EAAI,KADZhN,GACsBA,EAAI,GAAK,GAAKzC,GAGlC2P,EAA4B,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAwB,SAAUC,GAC5F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAyB,mBAAXF,QAAyBE,EAAIC,cAAgBH,QAAUE,IAAQF,OAAOtS,UAAY,gBAAkBwS,GAuJ3H,QApJa,WAIX,IAAIE,OAAU,EAEVd,OAAQ,EACRe,OAAO,EAEPC,OAAS,EACTC,OAAS,EACTC,OAAO,EAEPC,OAAW,EACXC,OAAW,EAEXC,OAAY,EACZC,OAAc,EAEdC,OAAO,EAEPhL,OAAW,EAIf,SAASiL,IACP,OAAO5O,OAAO6O,SAAW7O,OAAO8O,YAKlC,SAASC,EAAIb,GACX,OAAOA,EAAQc,wBAAwBD,IAAM3B,EAK/C,SAASI,EAAKyB,GAEPR,IACHA,EAAYQ,GAOdN,EAAON,EAHPK,EAAcO,EAAcR,EAGDrB,EAAOmB,EAAUC,GAG5CxO,OAAOkP,SAAS,EAAGP,GAGnBD,EAAcF,EAAWxO,OAAOyN,sBAAsBD,IAQtDxN,OAAOkP,SAAS,EAAG9B,EAAQmB,GAGvBL,GAAWI,IAEbJ,EAAQiB,aAAa,WAAY,MAGjCjB,EAAQkB,SAIc,mBAAbzL,GACTA,IAIF8K,GAAY,GA+Dd,OA1DA,SAAcY,GACZ,IAAIrJ,EAAUjF,UAAUC,OAAS,QAAsBsO,IAAjBvO,UAAU,GAAmBA,UAAU,GAAK,GAalF,OAVAyN,EAAWxI,EAAQwI,UAAY,IAC/BJ,EAASpI,EAAQoI,QAAU,EAC3BzK,EAAWqC,EAAQrC,SACnB0K,EAASrI,EAAQqI,QAAUX,EAC3BY,EAAOtI,EAAQsI,OAAQ,EAGvBlB,EAAQwB,SAGkB,IAAXS,EAAyB,YAAcxB,EAAQwB,IAE5D,IAAK,SACHnB,OAAUoB,EACVhB,GAAO,EACPH,EAAOf,EAAQiC,EACf,MAIF,IAAK,SAEHlB,EAAOY,EADPb,EAAUmB,GAEV,MAIF,IAAK,SACHnB,EAAUxP,SAASkB,cAAcyP,GACjClB,EAAOY,EAAIb,GAQf,OAHAK,EAAWJ,EAAOf,EAAQgB,EAGlBP,EAAQ7H,EAAQwI,WAEtB,IAAK,SACHA,EAAWxI,EAAQwI,SACnB,MAGF,IAAK,WACHA,EAAWxI,EAAQwI,SAASD,GAKhCvO,OAAOyN,sBAAsBD,IASjB+B,GClKVC,EAAgB,KACpB,IAAIpB,EAAS,EAEb,MAAMzO,EAAajB,SAASkB,cAAc,gBAM1C,OAJID,IACFyO,GAAUzO,EAAWI,cAGhBqO,GAiBT,EAdiB,SAACiB,GAAiC,IAAzBI,EAAyB,uDAAN,EAC3C,MAAMC,GAAgC,EAAnBF,IAEfH,EAAOM,QAAQC,eACjBH,EAAmBI,SAASR,EAAOM,QAAQC,eAG7C,IAAIxB,EAASsB,EAAaD,EAE1B,OAAO,IAAIK,SAASjI,IAClBkI,EAAKV,EAAQ,CAAEb,SAAU,IAAKJ,OAAAA,EAAQzK,SAAUkE,qDCxB7C,MAAMmI,EAAgB,iBAAkBtR,SAASa,yFCExD,MAkBA,GACEF,IAAK,KAAM,EACXC,IAnBM,MACJ2Q,EAAAA,EAAAA,IAAG,QAAS,2BAA4BC,IACvBA,EAAEb,OAAOc,QAAQ,oBAEzB3Q,UAAU4Q,OAAO,cAG1B1R,SAASC,iBAAiB,SAAUuR,IAC7BA,EAAEb,OAAOc,QAAQ,qBACpBzR,SAASwB,iBAAiB,oBAAoBC,SAASC,IACrDA,EAAGZ,UAAUC,OAAO,+ECmB9B,QATA,SAAmBtE,GAClB,MAA8B,iBAAhB6E,OAAOqQ,KAClBlV,aAAa6E,OAAOqQ,KACd,OAANlV,GACa,iBAANA,GACe,iBAAfA,EAAEmV,UACa,iBAAfnV,EAAEoV,UCcb,EAjBA,SAAkBlB,EAAQmB,GAGxB,QAFiB,IAAZA,IAAqBA,EAAU9R,UAEhC2Q,aAAkB7Q,MAAS,OAAO6Q,EAAOoB,OAAO,GACpD,GAAI,EAAUpB,GAAW,MAAO,CAACA,GACjC,GCNqBlU,EDMHkU,ECLfqB,EAAoBjQ,OAAOjF,UAAUmR,SAASzL,KAAK/F,GAGrB,iBAApB6E,OAAO2Q,SAClBxV,aAAa6E,OAAO2Q,SACd,OAANxV,GACa,iBAANA,GACa,iBAAbA,EAAE6F,QANA,gDAOHsE,KAAKoL,KACG,IAAbvV,EAAE6F,QAAgB,EAAU7F,EAAE,KDJJ,OAAOqD,MAAMhD,UAAUkG,MAAMR,KAAKmO,GCNjE,IAAuBlU,EAClBuV,EDMH,GAAsB,iBAAXrB,EACT,IACE,IAAIxI,EAAQ2J,EAAQtQ,iBAAiBmP,GACrC,OAAO7Q,MAAMhD,UAAUkG,MAAMR,KAAK2F,GAClC,MAAO4C,GACP,MAAO,GAGX,MAAO,IEFT,SAASmH,EAAOC,GACf,GAAIA,EAAO5C,cAAgBzP,MAC1B,MAAM,IAAIsS,UAAU,mBAErB,GAAsB,KAAlBD,EAAO7P,OACV,OAAO6P,EAER,GAAsB,IAAlBA,EAAO7P,OAAc,CACxB,IAAI+P,EAASC,IAOb,OANAD,EAAO,GAAKF,EAAO,GACnBE,EAAO,GAAKF,EAAO,GACnBE,EAAO,GAAKF,EAAO,GACnBE,EAAO,GAAKF,EAAO,GACnBE,EAAO,IAAMF,EAAO,GACpBE,EAAO,IAAMF,EAAO,GACbE,EAER,MAAM,IAAIE,WAAW,8CAWtB,SAASD,IAER,IADA,IAAID,EAAS,GACJlQ,EAAI,EAAGA,EAAI,GAAIA,IACvBA,EAAI,GAAK,EAAIkQ,EAAO5R,KAAK,GAAK4R,EAAO5R,KAAK,GAE3C,OAAO4R,EAwER,SAASG,EAASpU,EAAG3B,GAKpB,IAJA,IAAIgW,EAAKP,EAAO9T,GACZsU,EAAKR,EAAOzV,GACZkW,EAAU,GAELxQ,EAAI,EAAGA,EAAI,EAAGA,IAEtB,IADA,IAAIyQ,EAAM,CAACH,EAAGtQ,GAAIsQ,EAAGtQ,EAAI,GAAIsQ,EAAGtQ,EAAI,GAAIsQ,EAAGtQ,EAAI,KACtC0Q,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC3B,IAAInV,EAAQ,EAAJmV,EACJC,EAAM,CAACJ,EAAGhV,GAAIgV,EAAGhV,EAAI,GAAIgV,EAAGhV,EAAI,GAAIgV,EAAGhV,EAAI,IAC3CqV,EACHH,EAAI,GAAKE,EAAI,GAAKF,EAAI,GAAKE,EAAI,GAAKF,EAAI,GAAKE,EAAI,GAAKF,EAAI,GAAKE,EAAI,GAEpEH,EAAQxQ,EAAIzE,GAAKqV,EAInB,OAAOJ,EAcR,SAASK,EAAMb,GACd,GAAsB,iBAAXA,EAAqB,CAC/B,IAAIc,EAAQd,EAAOc,MAAM,0BACzB,GAAIA,EAEH,OAAOf,EADGe,EAAM,GAAG/K,MAAM,MAAMxH,IAAIwS,aAIrC,OAAOZ,IA2ER,SAASa,EAAMC,EAAQC,GACtB,IAAIhB,EAASC,IAKb,OAHAD,EAAO,GAAKe,EACZf,EAAO,GAAwB,iBAAZgB,EAAuBA,EAAUD,EAE7Cf,EChPR,IACKiB,EADDtP,GACCsP,EAAQ3E,KAAK4E,MAEV,SAAUtO,GAChB,IAAIuO,EAAc7E,KAAK4E,MACnBC,EAAcF,EAAQ,IACzBA,EAAQE,EACRvO,EAASuO,IAET1H,YAAW,WAAc,OAAO9H,EAASiB,KAAc,KAU1D,QALY3D,OAAOyN,uBAClBzN,OAAOmS,6BACPnS,OAAOoS,0BACP1P,ECzBD,IAAIT,EAAW,CACdkL,MAAO,EACPoB,SAAU,IACVC,SAAU,IACVH,OAAQ,6BACRgE,SAAU,EACVC,QAAS,EACTC,OAAQ,SACR/V,OAAQ,CACPrB,EAAG,EACHC,EAAG,EACHoX,EAAG,GAEJX,MAAO,EACPY,SAAS,EACTC,UAAWhU,SAASa,gBACpBoT,SAAS,EACTC,QAAQ,EACRC,OAAO,EACPC,SAAU,SACVC,WAAY,EACZC,WAAY,CACXjE,IAAK,EACLkE,MAAO,EACPC,OAAQ,EACRC,KAAM,GAEPC,WAAY,aACZC,YAAa,aACbC,YAAa,aACbC,aAAc,cA6BXC,EAZJ,WACC9U,SAASa,gBAAgBC,UAAU9D,IAAI,MAEnCgD,SAASuJ,KACZvJ,SAASuJ,KAAKpI,MAAM4T,OAAS,OAE7B/U,SAASC,iBAAiB,oBAAoB,WAC7CD,SAASuJ,KAAKpI,MAAM4T,OAAS,WAK5BD,EA1BJ,WAGC,OAFA9U,SAASa,gBAAgBC,UAAUC,OAAO,MAEnC,CACNiU,MAAO,aACPC,QAAS,aACTC,OAAQ,aACRC,KAAM,aACFC,WACH,OAAO,KAmBV,SAASC,EAAS5Y,GACjB,OACO,OAANA,GACAA,aAAasF,SACZtF,EAAE8S,cAAgBxN,QACoB,oBAAtCA,OAAOjF,UAAUmR,SAASzL,KAAK/F,IAIlC,SAAS6Y,EAAKC,EAAYtQ,GACzB,GAAIoQ,EAASE,GAEZ,OADWxT,OAAO3B,KAAKmV,GACX9T,SAAQ,SAAUgM,GAAO,OAAOxI,EAASsQ,EAAW9H,GAAMA,EAAK8H,MAE5E,GAAIA,aAAsBzV,MACzB,OAAOyV,EAAW9T,SAAQ,SAAU6M,EAAMnM,GAAK,OAAO8C,EAASqJ,EAAMnM,EAAGoT,MAEzE,MAAM,IAAInD,UAAU,+CAGrB,SAASoD,EAAOC,GAEf,IADA,IAAIC,EAAU,GAAIC,EAAMtT,UAAUC,OAAS,EACnCqT,KAAQ,GAAID,EAASC,GAAQtT,UAAWsT,EAAM,GAEtD,GAAIhZ,KAAK4S,YAAYqG,OAASC,QAAS,CACtC,IAAIC,EAAS,mBAAqBL,EAClCC,EAAQjU,SAAQ,SAAUsU,GAAU,OAAQD,GAAU,QAAUC,KAChEF,QAAQG,IAAIF,EAAQ,oBAItB,SAASG,IACR,IAAIC,EAASvZ,KAOTwZ,EAL8B,CACjCC,OAAQ,GACRC,MAAO,IAIJC,EAN8B,CACjCF,OAAQ,GACRC,MAAO,IAKJE,EAP8B,CACjCH,OAAQ,GACRC,MAAO,IAUR,IACCf,EAAK,EAAE,iBAAiB,SAAUkB,GACjC,IAAIC,EAAKtF,SAASqF,EAAKE,aAAa,eACpCP,EAAWC,OAAO3V,KAAKgW,MAEvB,MAAOjF,GACR,MAAMA,EAKP8D,EAAK3Y,KAAKga,MAAMC,UAAU,SAAUpH,IACY,IAA3C2G,EAAWC,OAAOS,QAAQrH,EAAQiH,KACrCN,EAAWE,MAAM5V,KAAK+O,EAAQiH,OAIhCnB,EAAKa,EAAWE,OAAO,SAAUS,GAAW,cAAcZ,EAAOS,MAAMC,SAASE,MAKhFxB,EAAK3Y,KAAKga,MAAMC,UAAU,SAAUpH,IACuB,IAAtD+G,EAAaH,OAAOS,QAAQrH,EAAQuH,cACvCR,EAAaH,OAAO3V,KAAK+O,EAAQuH,aAE9BvH,EAAQjN,eAAe,cAC+B,IAArD+T,EAAYF,OAAOS,QAAQrH,EAAQwH,SAASP,KAC/CH,EAAYF,OAAO3V,KAAK+O,EAAQwH,SAASP,OAQ5CnB,EAAK3Y,KAAKga,MAAMM,YAAY,SAAUjD,IACc,IAA/CuC,EAAaH,OAAOS,QAAQ7C,EAAUyC,KACzCF,EAAaF,MAAM5V,KAAKuT,EAAUyC,OAIpCnB,EAAKiB,EAAaF,OAAO,SAAUS,GAClC,IAAIT,EAAQH,EAAOS,MAAMM,WAAWH,GAASN,KAC7CH,EAAMa,oBAAoB,SAAUhB,EAAOiB,UAC3Cd,EAAMa,oBAAoB,SAAUhB,EAAOiB,iBACpCjB,EAAOS,MAAMM,WAAWH,MAMhCxB,EAAK3Y,KAAKga,MAAMS,WAAW,SAAUJ,IACa,IAA7CV,EAAYF,OAAOS,QAAQG,EAASP,KACvCH,EAAYD,MAAM5V,KAAKuW,EAASP,OAIlCnB,EAAKgB,EAAYD,OAAO,SAAUS,GAAW,cAAcZ,EAAOS,MAAMS,UAAUN,MAGnF,IAAIO,EAAqB,WACxB,IAAIC,EAAa,GACbnW,EAAQnB,SAASa,gBAAgBM,MAErC,SAASoW,EAAuBvS,EAAMmN,GAGrC,QAFgB,IAAXA,IAAoBA,EAAShR,GAE9B6D,GAAwB,iBAATA,EAAmB,CACrC,GAAIsS,EAAWtS,GACd,OAAOsS,EAAWtS,GAEnB,GAA4B,iBAAjBmN,EAAOnN,GACjB,OAAQsS,EAAWtS,GAAQA,EAE5B,GAA2C,iBAAhCmN,EAAQ,WAAanN,GAC/B,OAAQsS,EAAWtS,GAAQ,WAAaA,EAEzC,MAAM,IAAIuN,WAAY,mBAAsBvN,EAAO,qBAEpD,MAAM,IAAIoN,UAAU,sBAKrB,OAFAmF,EAAuBC,WAAa,WAAc,OAAQF,EAAa,IAEhEC,EAxBiB,GA2BzB,SAASpW,EAAMqO,GACd,IAAIiI,EAAWnW,OAAOoW,iBAAiBlI,EAAQgH,MAC3CmB,EAAWF,EAASE,SACpBC,EAASpI,EAAQoI,OAKjBC,EAAS,GAETC,GADctI,EAAQgH,KAAKE,aAAa,UAAY,IAC1BzD,MAAM,4BAA8B,GAElE4E,EAAOJ,SAAWK,EAAcA,EAAYpX,KAAI,SAAUtC,GAAK,OAAOA,EAAE2Z,UAAWnK,KAAK,MAAQ,IAAM,GAEtGiK,EAAOG,UAAYF,EAAYG,MAAK,SAAU7Z,GAAK,OAAOA,EAAE6U,MAAM,gCAC/D4E,EAAOJ,SACPK,EAAY7U,OAAQ,CAAC,wBAAwBvC,KAAI,SAAUtC,GAAK,OAAOA,EAAE2Z,UAAWnK,KAAK,MAAQ,IAKpG,IF5BgBvO,EACZ6Y,EACA7F,EE0BA8F,EAAkBjF,WAAWuE,EAAS7D,SACtCwE,EAAiBC,MAAMnF,WAAW0E,EAAOhE,UAE1CV,WAAWuE,EAAS7D,SADpBV,WAAW0E,EAAOhE,SAGjBA,EAAU,CACb6D,SAAUU,IAAoBC,EAAiB,YAAcD,EAAkB,IAAO,GACtFH,UAAWG,IAAoBC,EAAiB,YAAcA,EAAgB,IAAO,IAMlFE,EAAkB,GAEtB,GAAIpF,WAAW0E,EAAO/H,UAAW,CAChC,IAAI0I,EAAyB,QAAlBX,EAAO/D,QAAsC,WAAlB+D,EAAO/D,OAAsB,IAAM,IAMrEhE,EAAW+H,EAAO/H,SACA,QAAlB+H,EAAO/D,QAAsC,SAAlB+D,EAAO/D,SACrChE,EAAW,KAAKjJ,KAAKiJ,GAAYA,EAAS2I,OAAO,GAAM,IAAM3I,GAG9D,IAAI7F,EAAM6F,EAASoD,MAAM,gCACrBtM,EAAQqD,EAAI,GAGhB,OAFWA,EAAI,IAGd,IAAK,KACJ6F,EAAWsB,SAASsG,EAASgB,UAAY9R,EACzC,MACD,IAAK,KACJkJ,EAAWlJ,EACX,MACD,IAAK,IAWJkJ,EACU,MAAT0I,EACI/I,EAAQgH,KAAKlG,wBAAwByE,OAASpO,EAAS,IACvD6I,EAAQgH,KAAKlG,wBAAwBoI,MAAQ/R,EAAS,IAC3D,MACD,QACC,MAAM,IAAI4L,WAAW,0CAGV,MAATgG,EACHD,EAAgB7X,KFiHnB,SAAoBoP,GACnB,IAAIwC,EAASC,IAEb,OADAD,EAAO,IAAMxC,EACNwC,EEpHgBsG,CAAW9I,IAEhCyI,EAAgB7X,KFmGnB,SAAoBoP,GACnB,IAAIwC,EAASC,IAEb,OADAD,EAAO,IAAMxC,EACNwC,EEtGgBuG,CAAW/I,IAI9B+H,EAAO9Z,OAAOrB,GAAK6b,EAAgB7X,MF7FvBpB,EE6FoCuY,EAAO9Z,OAAOrB,EF5F9Dyb,EAAQrZ,KAAKga,GAAK,IAAMxZ,GACxBgT,EAASC,KAEN,GAAKD,EAAO,IAAMxT,KAAKc,IAAIuY,GAClC7F,EAAO,GAAKA,EAAO,GAAKxT,KAAKe,IAAIsY,GACjC7F,EAAO,KAAO,EAEPA,IEsFHuF,EAAO9Z,OAAOpB,GAAK4b,EAAgB7X,KF7ExC,SAAiBpB,GAChB,IAAI6Y,EAAQrZ,KAAKga,GAAK,IAAMxZ,EACxBgT,EAASC,IAMb,OAJAD,EAAO,GAAKA,EAAO,IAAMxT,KAAKc,IAAIuY,GAClC7F,EAAO,GAAKA,EAAO,GAAKxT,KAAKe,IAAIsY,GACjC7F,EAAO,KAAO,EAEPA,EEqEqCyG,CAAQlB,EAAO9Z,OAAOpB,IAC9Dkb,EAAO9Z,OAAOgW,GAAKwE,EAAgB7X,KF7DxC,SAAiBpB,GAChB,IAAI6Y,EAAQrZ,KAAKga,GAAK,IAAMxZ,EACxBgT,EAASC,IAMb,OAJAD,EAAO,GAAKA,EAAO,GAAKxT,KAAKc,IAAIuY,GACjC7F,EAAO,GAAKA,EAAO,GAAKxT,KAAKe,IAAIsY,GACjC7F,EAAO,KAAO,EAEPA,EEqDqC0G,CAAQnB,EAAO9Z,OAAOgW,IAC7C,IAAjB8D,EAAOzE,QACW,IAAjByE,EAAOzE,MAeVmF,EAAgB7X,KAAK0S,EAAM,OAE3BmF,EAAgB7X,KAAK0S,EAAMyE,EAAOzE,SAIpC,IAAI6F,EAAY,GAChB,GAAIV,EAAgBhW,OAAQ,CAC3B0W,EAAUC,SAAW5B,EAAmB,aAKxC2B,EAAUvB,SAAW,CACpByB,IAAKzB,EAASuB,EAAUC,UACxB5G,OAAQW,EAAMyE,EAASuB,EAAUC,YAGlCX,EAAgBa,QAAQH,EAAUvB,SAASpF,QAC3C,IAAIM,EAAU2F,EAAgBjY,OAAOmS,GAErCwG,EAAUhB,UAAY,CACrBoB,QAAWJ,EAAkB,SAAI,cAAiBrG,EAAQ/E,KAAK,MAAS,KACxEyL,MAASL,EAAkB,SAAI,cAAiBA,EAAUvB,SAASpF,OAAOzE,KAAK,MAAS,WAGzFoL,EAAUhB,UAAY,CACrBoB,QAAS,GACTC,MAAO,IAOT,IAAIC,EAAa,GACjB,GAAI1F,EAAQoE,WAAagB,EAAUhB,UAAUoB,QAAS,CACrDE,EAAWL,SAAW5B,EAAmB,cACzCiC,EAAW7B,SAAWA,EAAS6B,EAAWL,UAC1CK,EAAWC,UAAY,GAEvB,IAAI9K,EAAQmJ,EAAOnJ,MACfqB,EAAW8H,EAAO9H,SAClBH,EAASiI,EAAOjI,OAEhBiE,EAAQoE,WACXsB,EAAWC,UAAU9Y,KAAK,CACzB+Y,QAAU,WAAc1J,EAAW,IAAQ,KAAOH,EAAS,IAAOlB,EAAQ,IAAQ,IAClFgL,QAAU,WAAc3J,EAAW,IAAQ,KAAOH,EAAS,QAIzDqJ,EAAUhB,UAAUoB,SACvBE,EAAWC,UAAU9Y,KAAK,CACzB+Y,QAAWR,EAAkB,SAAI,IAAOlJ,EAAW,IAAQ,KAAOH,EAAS,IAAOlB,EAAQ,IAAQ,IAClGgL,QAAWT,EAAkB,SAAI,IAAOlJ,EAAW,IAAQ,KAAOH,EAAS,QAS5E2J,EAAW7B,WAAa6B,EAAW7B,SAASxE,MAAM,mBAGlDqG,EAAWC,UAAUJ,QAAQ,CAC5BK,QAASF,EAAW7B,SACpBgC,QAASH,EAAW7B,WAItB,IAAIiC,EAAWJ,EAAWC,UAAUlZ,QACnC,SAAUsZ,EAAaC,EAAUzX,GAGhC,OAFAwX,EAAYH,SAAiB,IAANrX,EAAUyX,EAASJ,QAAW,KAAQI,EAAgB,QAC7ED,EAAYF,SAAiB,IAANtX,EAAUyX,EAASH,QAAW,KAAQG,EAAgB,QACtED,IAER,CACCH,QAAS,GACTC,QAAS,KAIXH,EAAWtB,UAAY,CACtBwB,QAAWF,EAAmB,SAAI,KAAQI,EAAgB,QAAI,IAC9DD,QAAWH,EAAmB,SAAI,KAAQI,EAAgB,QAAI,UAG/DJ,EAAWtB,UAAY,CACtBwB,QAAS,GACTC,QAAS,IAIX,MAAO,CACN5B,OAAQA,EACRjE,QAASA,EACT+D,SAAUA,EACVqB,UAAWA,EACXM,WAAYA,GAWd,SAASO,EAAYnY,EAAIoY,GACxBA,EAAY5R,MAAM,KAAKzG,SAAQ,SAAUsY,GACxC,IAAI/P,EAAM+P,EAAK7R,MAAM,KACjB+Q,EAAWjP,EAAI,GACfrD,EAAQqD,EAAIhH,MAAM,GAClBiW,GAAYtS,IACfjF,EAAGP,MAAM8X,EAASlB,QAAUpR,EAAMiH,KAAK,SAK1C,SAASoH,EAAMrE,GACd,IAEIqJ,EAFA9D,EAASvZ,KAGb,IACC2Y,EAAK,EAAE3E,IAAS,SAAU6F,GACzB,IAAIC,EAAKD,EAAKE,aAAa,cAC3B,GAAW,OAAPD,EAAa,CAChBuD,GAAQ,EACR,IAAIxK,EAAU0G,EAAOS,MAAMC,SAASH,GAChCjH,EAAQyK,eACX3Y,OAAO2I,aAAauF,EAAQyK,cAAc3G,OAE3CuG,EAAWrK,EAAQgH,KAAMhH,EAAQ0K,OAAOrC,OAAOG,WAC/CxB,EAAK2D,gBAAgB,qBACdjE,EAAOS,MAAMC,SAASH,OAG9B,MAAOjF,GACR,OAAOgE,EAAOhT,KAAK7F,KAAM,gBAAiB6U,EAAEiE,SAG7C,GAAIuE,EACH,IACC/D,EAAMzT,KAAK7F,MACV,MAAO6U,GACR,OAAOgE,EAAOhT,KAAK7F,KAAM,gBAAiB6U,EAAEiE,UAK/C,SAASR,IACR,IAAIiB,EAASvZ,KAKb2Y,EAAK3Y,KAAKga,MAAMC,UAAU,SAAUpH,GACnCqK,EAAWrK,EAAQgH,KAAMhH,EAAQ0K,OAAOrC,OAAOG,WAC/CxI,EAAQgH,KAAK2D,gBAAgB,iBAM9B7E,EAAK3Y,KAAKga,MAAMM,YAAY,SAAUjD,GACrC,IAAIrD,EACHqD,EAAUwC,OAASxW,SAASa,gBAAkBS,OAAS0S,EAAUwC,KAClE7F,EAAOuG,oBAAoB,SAAUhB,EAAOiB,UAC5CxG,EAAOuG,oBAAoB,SAAUhB,EAAOiB,aAM7Cxa,KAAKga,MAAQ,CACZM,WAAY,GACZL,SAAU,GACVwD,QAAS,GACThD,UAAW,IAIb,SAASiD,EAAW1J,GAEnB,IADA,IAAI2J,EAAU,GAAI3E,EAAMtT,UAAUC,OAAS,EACnCqT,KAAQ,GAAI2E,EAAS3E,GAAQtT,UAAWsT,EAAM,GAEtD,GAAIN,EAAS1E,GAaZ,OAZA2E,EAAKgF,GAAS,SAAUnI,GACvBmD,EAAKnD,GAAQ,SAAUoI,EAAM9M,GACxB4H,EAASkF,IACP5J,EAAOlD,IAAS4H,EAAS1E,EAAOlD,MACpCkD,EAAOlD,GAAO,IAEf4M,EAAW1J,EAAOlD,GAAM8M,IAExB5J,EAAOlD,GAAO8M,QAIV5J,EAEP,MAAM,IAAIyB,UAAU,qCAItB,SAASoI,EAASC,GAGjB,YAFe,IAAVA,IAAmBA,EAAQC,UAAUC,WAEnC,4BAA4B/T,KAAK6T,GAGzC,IACKG,EADDC,GACCD,EAAM,EACH,WAAc,OAAOA,MAG7B,SAASE,IACR,IAAI5E,EAASvZ,KAEbsZ,EAAMzT,KAAK7F,MAEX2Y,EAAK3Y,KAAKga,MAAMC,UAAU,SAAUpH,GACnC,IAAI0K,EAAS,CAAC1K,EAAQ0K,OAAOrC,OAAOG,WAEhCxI,EAAQuL,SACXb,EAAOzZ,KAAK+O,EAAQ0K,OAAOtG,QAAQ6D,UACnCyC,EAAOzZ,KAAK+O,EAAQ0K,OAAOlB,UAAUhB,UAAUqB,OAC/C7J,EAAQwL,UAAW,IAEnBd,EAAOzZ,KAAK+O,EAAQ0K,OAAOtG,QAAQoE,WACnCkC,EAAOzZ,KAAK+O,EAAQ0K,OAAOlB,UAAUhB,UAAUoB,SAC/C5J,EAAQwL,UAAW,GAGpBnB,EAAWrK,EAAQgH,KAAM0D,EAAOnI,QAAO,SAAU7P,GAAK,MAAa,KAANA,KAAa0L,KAAK,SAGhF0H,EAAK3Y,KAAKga,MAAMM,YAAY,SAAUjD,GACrC,IAAIrD,EACHqD,EAAUwC,OAASxW,SAASa,gBAAkBS,OAAS0S,EAAUwC,KAClE7F,EAAO1Q,iBAAiB,SAAUiW,EAAOiB,UACzCxG,EAAO1Q,iBAAiB,SAAUiW,EAAOiB,aAQ1Cxa,KAAKwa,WAMLxa,KAAKse,YAAc,KAGpB,SAASC,EAAQ1L,EAAS2L,QACV,IAAVA,IAAmBA,EAAQ,IAEhC,IAAIC,EAAWD,EAAMC,UAAYze,KAAKye,SAClC5B,EACyB,WAA5BhK,EAAQoI,OAAOxD,UACc,WAA5B5E,EAAQoI,OAAOxD,UAAyBgH,GACZ,SAA5B5L,EAAQoI,OAAOxD,WAAwB5E,EAAQ6L,KAE7CC,EAAe9L,EAAQuL,UAAYvL,EAAQwL,SAC3CO,GAAe/L,EAAQuL,SAAWvL,EAAQwL,UAAYxL,EAAQoI,OAAOzD,MAEzE,OAAIgH,EAAMjG,QAAUoG,EACZE,EAAchZ,KAAK7F,KAAM6S,EAASgK,GAGtC2B,EAAMhH,OAASoH,EACXE,EAAajZ,KAAK7F,KAAM6S,QADhC,EAKD,SAASgM,EAAchM,EAASgK,GAC/B,IAAIU,EAAS,CACZ1K,EAAQ0K,OAAOrC,OAAOG,UACtBxI,EAAQ0K,OAAOtG,QAAQ6D,SACvBjI,EAAQ0K,OAAOlB,UAAUhB,UAAUqB,OAEhCG,EACHU,EAAOzZ,KAAK+O,EAAQ0K,OAAOZ,WAAWtB,UAAUwB,SAEhDU,EAAOzZ,KAAK+O,EAAQ0K,OAAOZ,WAAWtB,UAAUyB,SAEjDjK,EAAQwL,SAAWxL,EAAQ6L,MAAO,EAClCxB,EAAWrK,EAAQgH,KAAM0D,EAAOnI,QAAO,SAAU7P,GAAK,MAAa,KAANA,KAAa0L,KAAK,MAC/E8N,EAAkBlZ,KAAK7F,KAAM6S,EAASgK,GAGvC,SAASiC,EAAajM,GACrB,IAAI0K,EAAS,CACZ1K,EAAQ0K,OAAOrC,OAAOG,UACtBxI,EAAQ0K,OAAOtG,QAAQoE,UACvBxI,EAAQ0K,OAAOlB,UAAUhB,UAAUoB,QACnC5J,EAAQ0K,OAAOZ,WAAWtB,UAAUyB,SAErCjK,EAAQwL,UAAW,EACnBnB,EAAWrK,EAAQgH,KAAM0D,EAAOnI,QAAO,SAAU7P,GAAK,MAAa,KAANA,KAAa0L,KAAK,MAC/E8N,EAAkBlZ,KAAK7F,KAAM6S,GAG9B,SAASkM,EAAkBlM,EAASmM,GACnC,IAAIzF,EAASvZ,KAETmT,EAAW6L,EACZnM,EAAQoI,OAAO9H,SAAWN,EAAQoI,OAAOnJ,MACzCe,EAAQoI,OAAO9H,SAEd8L,EAAiBpM,EAAQwL,SAC1BxL,EAAQoI,OAAO/C,aACfrF,EAAQoI,OAAOhD,YAEdiH,EAAgBrM,EAAQwL,SACzBxL,EAAQoI,OAAOjD,YACfnF,EAAQoI,OAAOlD,WAEdoH,EAAU,EACVtM,EAAQyK,gBACX6B,EAAUnN,KAAK4E,MAAQ/D,EAAQyK,cAAcvL,MAC7CpN,OAAO2I,aAAauF,EAAQyK,cAAc3G,QAG3CsI,EAAepM,EAAQgH,MAEvBhH,EAAQyK,cAAgB,CACvBvL,MAAOC,KAAK4E,MACZD,MAAOhS,OAAOwK,YAAW,WACxB+P,EAAcrM,EAAQgH,MACtBhH,EAAQyK,cAAgB,KACpBzK,EAAQwL,WAAaxL,EAAQoI,OAAOzD,OAAS3E,EAAQoI,OAAO7D,SAC/DiB,EAAMxS,KAAK0T,EAAQ1G,EAAQgH,QAE1B1G,EAAWgM,IAIhB,SAAS9E,EAASxH,EAAS4L,GAM1B,QALkB,IAAbA,IAAsBA,EAAWze,KAAKye,WAKtC5L,EAAQuL,SAAWvL,EAAQwL,UAAYxL,EAAQoI,OAAOzD,MAC1D,OAAO+G,EAAQ1Y,KAAK7F,KAAM6S,EAAS,CAAE2E,OAAO,IAG7C,IAAI4H,EAAMpf,KAAKga,MAAMS,UAAU5H,EAAQwH,SAASP,IAC5CtU,EAAIqN,EAAQwH,SAASgF,MAEzB,GAAID,EAAK,CACR,IAAIhB,EAAU,IAAIkB,EAAcF,EAAK,UAAWpf,KAAKga,OACjDqE,EAAW,IAAIiB,EAAcF,EAAK,WAAYpf,KAAKga,OAYvD,GAVAoF,EAAIG,OAAS,CAAEnB,QAASA,EAASC,SAAUA,IAUtCA,EAASzR,KAAKjH,OAAQ,CAC1B,IAAI6Z,EAASJ,EAAIK,QAAQrB,EAAQxR,KAAK,IAClC8S,EAAc1f,KAAKga,MAAMC,SAASuF,GAEtC,GAAIE,EAGH,OAFAC,EAAI9Z,KAAK7F,KAAMof,EAAKhB,EAAQxR,KAAK,IAAK,EAAG6R,GACzCkB,EAAI9Z,KAAK7F,KAAMof,EAAKhB,EAAQxR,KAAK,GAAI,EAAI6R,GAClCF,EAAQ1Y,KAAK7F,KAAM0f,EAAa,CAAEnH,QAAQ,EAAMkG,SAAUA,IASnE,IACEW,EAAIQ,QAAQ1P,MACb1K,IAAM,GAAGc,OAAQ+X,EAASnO,MAAO2P,OACjCra,GAAK,GAAGc,OAAQ8X,EAAQxR,MAAOkT,QAG/B,OADAH,EAAI9Z,KAAK7F,KAAMof,EAAK5Z,GAAI,EAAGiZ,GACpBF,EAAQ1Y,KAAK7F,KAAM6S,EAAS,CAAE0F,QAAQ,EAAMkG,SAAUA,IAG9D,IACEW,EAAIQ,QAAQG,MACbva,IAAM,GAAGc,OAAQ+X,EAAS0B,MAAOD,SACjCta,GAAK,GAAGc,OAAQ8X,EAAQxR,MAAOiT,MAG/B,OADAF,EAAI9Z,KAAK7F,KAAMof,EAAK5Z,EAAG,EAAIiZ,GACpBF,EAAQ1Y,KAAK7F,KAAM6S,EAAS,CAAE0F,QAAQ,EAAMkG,SAAUA,KAKhE,SAASuB,EAAShJ,GACjB,IAAIxR,EAAItD,KAAK+d,IAAIjJ,GACjB,GAAK0E,MAAMlW,GAUV,MAAM,IAAIoQ,WAAW,8BATrB5V,KAAK8Z,GAAKoE,IACVle,KAAKgX,SAAW9U,KAAKge,IAAI1a,EAAG,IAC5BxF,KAAKyf,QAAU,GACfzf,KAAKuf,OAAS,GACdvf,KAAK4f,QAAU,CACd1P,MAAM,EACN6P,MAAM,GAOT,SAAST,EAAcF,EAAKzY,EAAMqT,GACjC,IAAIT,EAASvZ,KAEbA,KAAKkQ,KAAO,GACZlQ,KAAK4M,KAAO,GACZ5M,KAAK+f,KAAO,GAEZpH,EAAKyG,EAAIK,SAAS,SAAU3F,EAAIuF,GAC/B,IAAIxM,EAAUmH,EAAMC,SAASH,GACzBjH,GAAWA,EAAQlM,IACtB4S,EAAO3M,KAAK9I,KAAKub,MAIfrf,KAAK4M,KAAKjH,QACbgT,EAAKyG,EAAIK,SAAS,SAAU3F,EAAIuF,GAC/B,IAAIxM,EAAUmH,EAAMC,SAASH,GACzBjH,IAAYA,EAAQlM,KACnB0Y,EAAQ9F,EAAO3M,KAAK,GACvB2M,EAAOrJ,KAAKpM,KAAKub,GAEjB9F,EAAOwG,KAAKjc,KAAKub,OAOtB,SAASM,EAAIP,EAAK5Z,EAAG2a,EAAW1B,GAC/B,IAAIlF,EAASvZ,KAET4f,EAAU,CAAC,OAAQ,KAAM,QAAQ,EAAIO,GACrCX,EAASJ,EAAIK,QAAQja,EAAI2a,GACzBT,EAAc1f,KAAKga,MAAMC,SAASuF,GAEtCJ,EAAIQ,QAAQA,IAAW,EAEvBzQ,YAAW,WACViQ,EAAIQ,QAAQA,IAAW,EACnBF,GACHrF,EAASxU,KAAK0T,EAAQmG,EAAajB,KAElCW,EAAIpI,UAGR,SAASuB,EAAOvE,EAAQrJ,EAASyV,GAChC,IAAI7G,EAASvZ,UACI,IAAZ2K,IAAqBA,EAAU,SACnB,IAAZyV,IAAqBA,GAAU,GAEpC,IACIC,EADAC,EAAkB,GAElBtJ,EAAWrM,EAAQqM,UAAYpQ,EAASoQ,SAE5C,IACKA,IACHqJ,EAAc,IAAIL,EAAShJ,IAG5B,IAAIuJ,EAAQ,EAAEvM,GACd,IAAKuM,EAAM5a,OACV,MAAM,IAAIsC,MAAM,0BAGjB,IAAIgS,EAAWsG,EAAM7c,QAAO,SAAU8c,EAAeC,GACpD,IAAI5N,EAAU,GACV6N,EAAaD,EAAY1G,aAAa,cAEtC2G,GACHhD,EAAW7K,EAAS0G,EAAOS,MAAMC,SAASyG,IAO1CxD,EAAWrK,EAAQgH,KAAMhH,EAAQ0K,OAAOrC,OAAOJ,YAE/CjI,EAAQiH,GAAKoE,IACbrL,EAAQgH,KAAO4G,EACf5N,EAAQ6L,MAAO,EACf7L,EAAQwL,UAAW,EACnBxL,EAAQuL,SAAU,GAGnB,IAAInD,EAASyC,EAAW,GAAI7K,EAAQoI,QAAU1B,EAAO3S,SAAU+D,GAE/D,IAAMsQ,EAAO1D,QAAUsG,MAAiB5C,EAAO3D,UAAYuG,IAI1D,OAHI6C,GACHrI,EAAMxS,KAAK0T,EAAQ1G,GAEb2N,EAGR,IAQIpG,EARAuG,EAAgB,EAAE1F,EAAO5D,WAAW,GACxC,IAAKsJ,EACJ,MAAM,IAAI1Y,MAAM,sBAEjB,OAAK0Y,EAAcC,SAASH,IAM3BrG,EAwEJ,SAAwBP,GAEvB,IADA,IAAIgH,EAAc,GAAI7H,EAAMtT,UAAUC,OAAS,EACvCqT,KAAQ,GAAI6H,EAAa7H,GAAQtT,UAAWsT,EAAM,GAE1D,IAAIc,EAAK,KAQT,OAPAnB,EAAKkI,GAAa,SAAUjI,GAC3BD,EAAKC,GAAY,SAAUvB,GACf,OAAPyC,GAAezC,EAAUwC,OAASA,IACrCC,EAAKzC,EAAUyC,UAIXA,EApFUgH,CACbH,EACAL,EACA/G,EAAOS,MAAMM,YAEM,OAAhBF,IACHA,EAAc8D,IACdoC,EAAgBxc,KAAK,CAAEgW,GAAIM,EAAaP,KAAM8G,KAIhD9N,EAAQoI,OAASA,EACjBpI,EAAQuH,YAAcA,EACtBvH,EAAQ0K,OAAS/Y,EAAMqO,GAEnBwN,IACHxN,EAAQwH,SAAW,CAClBP,GAAIuG,EAAYvG,GAChBuF,MAAOgB,EAAYZ,QAAQ9Z,QAE5B0a,EAAYZ,QAAQ3b,KAAK+O,EAAQiH,KAGlC0G,EAAc1c,KAAK+O,GACZ2N,GA7BCA,IA8BN,IAOH7H,EAAKsB,GAAU,SAAUpH,GACxB0G,EAAOS,MAAMC,SAASpH,EAAQiH,IAAMjH,EACpCA,EAAQgH,KAAK/F,aAAa,aAAcjB,EAAQiH,OAEhD,MAAOjF,GACR,OAAOgE,EAAOhT,KAAK7F,KAAM,iBAAkB6U,EAAEiE,SAO9CH,EAAK2H,GAAiB,SAAUjJ,GAC/BkC,EAAOS,MAAMM,WAAWjD,EAAUyC,IAAM,CACvCA,GAAIzC,EAAUyC,GACdD,KAAMxC,EAAUwC,SAGdwG,IACHrgB,KAAKga,MAAMS,UAAU4F,EAAYvG,IAAMuG,IAOxB,IAAZD,IACHpgB,KAAKga,MAAMyD,QAAQ3Z,KAAK,CAAEkQ,OAAQA,EAAQrJ,QAASA,IAM/C3K,KAAKse,aACR3Z,OAAO2I,aAAatN,KAAKse,aAE1Bte,KAAKse,YAAc3Z,OAAOwK,WAAWgP,EAAWjW,KAAKlI,MAAO,IAuB9D,SAASwY,IACR,IAAIe,EAASvZ,KAEb2Y,EAAK3Y,KAAKga,MAAMyD,SAAS,SAAUsD,GAClCxI,EAAO1S,KAAK0T,EAAQwH,EAAO/M,OAAQ+M,EAAOpW,SAAS,MAGpDwT,EAAWtY,KAAK7F,MAGjB,IAgJIghB,EACAC,EACAC,EACAC,EACAC,EACAnG,EACAhC,EACAtR,EAtJA0Z,EAAWnf,KAAKof,MADL,SAAUxhB,GAAK,OAAQA,EAAI,IAAMA,EAAI,KAAOA,GAG3D,SAASyhB,EAAYvN,EAAQwN,GAK5B,IAAIpJ,EAASoJ,EAAcxN,EAAO6F,KAAK4H,aAAezN,EAAO6F,KAAKnV,aAC9DqX,EAAQyF,EAAcxN,EAAO6F,KAAK6H,YAAc1N,EAAO6F,KAAK8H,YAE5DC,EAAY,EACZC,EAAa,EACbhI,EAAO7F,EAAO6F,KAElB,GACM6B,MAAM7B,EAAK+H,aACfA,GAAa/H,EAAK+H,WAEdlG,MAAM7B,EAAKgI,cACfA,GAAchI,EAAKgI,YAEpBhI,EAAOA,EAAKiI,mBACJjI,GAET,MAAO,CACNkI,OAAQ,CACPrO,IAAKkO,EACLhK,MAAOiK,EAAa9F,EACpBlE,OAAQ+J,EAAYxJ,EACpBN,KAAM+J,GAEPzJ,OAAQA,EACR2D,MAAOA,GAIT,SAASiG,EAAY3K,GACpB,IAAI3D,EAAKoE,EAQT,OAPIT,EAAUwC,OAASxW,SAASa,iBAC/BwP,EAAM/O,OAAO8O,YACbqE,EAAOnT,OAAOsd,cAEdvO,EAAM2D,EAAUwC,KAAKqI,UACrBpK,EAAOT,EAAUwC,KAAKsI,YAEhB,CAAEzO,IAAKA,EAAKoE,KAAMA,GAG1B,SAASsK,EAAiBvP,QACR,IAAZA,IAAqBA,EAAU,IAEpC,IAAIwE,EAAYrX,KAAKga,MAAMM,WAAWzH,EAAQuH,aAC9C,GAAK/C,EAAL,CAEA,IAAIK,EAAaxV,KAAKge,IAAI,EAAGhe,KAAKmgB,IAAI,EAAGxP,EAAQoI,OAAOvD,aACpDC,EAAa9E,EAAQoI,OAAOtD,WAE5B2K,EACEzP,EAAQ0P,SAASR,OAAOrO,IAAMb,EAAQ0P,SAASnK,OAASV,EAD1D4K,EAEIzP,EAAQ0P,SAASR,OAAOnK,MAAQ/E,EAAQ0P,SAASxG,MAAQrE,EAF7D4K,EAGKzP,EAAQ0P,SAASR,OAAOlK,OAAShF,EAAQ0P,SAASnK,OAASV,EAHhE4K,EAIGzP,EAAQ0P,SAASR,OAAOjK,KAAOjF,EAAQ0P,SAASxG,MAAQrE,EAG3D8K,EACEnL,EAAUkL,SAASR,OAAOrO,IAAM2D,EAAUoL,OAAO/O,IAAMiE,EAAWjE,IADpE8O,EAEInL,EAAUkL,SAASR,OAAOnK,MAAQP,EAAUoL,OAAO3K,KAAOH,EAAWC,MAFzE4K,EAIFnL,EAAUkL,SAASR,OAAOlK,OAASR,EAAUoL,OAAO/O,IAAMiE,EAAWE,OAJnE2K,EAKGnL,EAAUkL,SAASR,OAAOjK,KAAOT,EAAUoL,OAAO3K,KAAOH,EAAWG,KAG3E,OACEwK,EAAoBE,GACpBF,EAAsBE,GACtBF,EAAuBE,GACvBF,EAAqBE,GACM,UAA5B3P,EAAQ0K,OAAOvC,UAIjB,SAASR,EACRkI,EACAzI,GAEA,IAAIV,EAASvZ,UACE,IAAV0iB,IAAmBA,EAAQ,CAAEvU,KAAM,cACtB,IAAb8L,IAAsBA,EAAWja,KAAKga,MAAMC,UAEjD,GAAI,WACH,IAAIP,EAAuB,SAAfgJ,EAAMvU,MAAkC,WAAfuU,EAAMvU,KAE3CwK,EAAKY,EAAOS,MAAMM,YAAY,SAAUjD,GACnCqC,IACHrC,EAAUkL,SAAWhB,EAAY1b,KAAK0T,EAAQlC,GAAW,IAE1D,IAAIoL,EAAST,EAAYnc,KAAK0T,EAAQlC,GAClCA,EAAUoL,SACbpL,EAAU8I,UAAY,CACrBrgB,EAAGuhB,EAASoB,EAAO3K,KAAOT,EAAUoL,OAAO3K,MAC3C/X,EAAGshB,EAASoB,EAAO/O,IAAM2D,EAAUoL,OAAO/O,OAG5C2D,EAAUoL,OAASA,KASpB9J,EAAKsB,GAAU,SAAUpH,IACpB6G,QAA8BzF,IAArBpB,EAAQ0P,YACpB1P,EAAQ0P,SAAWhB,EAAY1b,KAAK0T,EAAQ1G,IAE7CA,EAAQuL,QAAUgE,EAAiBvc,KAAK0T,EAAQ1G,MAGjD8F,EAAKsB,GAAU,SAAUpH,GACpBA,EAAQwH,SACXA,EAASxU,KAAK0T,EAAQ1G,GAEtB0L,EAAQ1Y,KAAK0T,EAAQ1G,MAIvB0G,EAAOkF,UAAW,KAyBpB,SAASkE,EAAahY,GAGrB,IAaIiY,EATJ,QANiB,IAAZjY,IAAqBA,EAAU,SAGnB,IAAT3K,MACPoF,OAAOyd,eAAe7iB,QAAU2iB,EAAaxiB,UAG7C,OAAO,IAAIwiB,EAAahY,GAGzB,IAAKgY,EAAaG,cAEjB,OADAjK,EAAOhT,KAAK7F,KAAM,wBAAyB,kCACpCmY,IAIR,IACCyK,EACGlF,EAAW,GADLzC,GAESrU,EADQ+D,GAEzB,MAAOkK,GAER,OADAgE,EAAOhT,KAAK7F,KAAM,yBAA0B6U,EAAEiE,SACvCX,IAGR,IAEC,IADgB,EAAEyK,EAAOvL,WAAW,GAEnC,MAAM,IAAIpP,MAAM,sBAEhB,MAAO4M,GAER,OADAgE,EAAOhT,KAAK7F,KAAM6U,EAAEiE,SACbX,IAKR,QAFA8C,EAAS2H,GAEIrL,QAAUsG,MAAiB5C,EAAO3D,UAAYuG,KAC1DhF,EAAOhT,KACN7F,KACA,2BACC,YAAeib,EAAc,QAC7B,WAAcA,EAAa,QAEtB9C,MAGRA,IAEAnY,KAAKga,MAAQ,CACZM,WAAY,GACZL,SAAU,GACVwD,QAAS,GACThD,UAAW,IAGZza,KAAKye,UAAW,EAEhBuC,EAAgBA,GAAiBxG,EAAStS,KAAKlI,MAC/CihB,EAAeA,GAAgB3I,EAAQpQ,KAAKlI,MAC5CkhB,EAAcA,GAAe3I,EAAOrQ,KAAKlI,MACzCmhB,EAAaA,GAAc9I,EAAMnQ,KAAKlI,MACtCohB,EAAYA,GAAa5I,EAAKtQ,KAAKlI,MAEnCoF,OAAO2d,eAAe/iB,KAAM,WAAY,CAAE4O,IAAK,WAAc,OAAOoS,KACpE5b,OAAO2d,eAAe/iB,KAAM,UAAW,CAAE4O,IAAK,WAAc,OAAOqS,KACnE7b,OAAO2d,eAAe/iB,KAAM,SAAU,CAAE4O,IAAK,WAAc,OAAOsS,KAClE9b,OAAO2d,eAAe/iB,KAAM,QAAS,CAAE4O,IAAK,WAAc,OAAOuS,KACjE/b,OAAO2d,eAAe/iB,KAAM,OAAQ,CAAE4O,IAAK,WAAc,OAAOwS,KAEhEhc,OAAO2d,eAAe/iB,KAAM,WAAY,CAAE4O,IAAK,WAAc,OAAOqM,KACpE7V,OAAO2d,eAAe/iB,KAAM,UAAW,CAAE4O,IAAK,WAAc,MAnF/C,WAoFbxJ,OAAO2d,eAAe/iB,KAAM,OAAQ,CAAE4O,IAAK,WAAc,OAAO,KAEzDjH,IAAuBA,EAAW3H,OAG1C2iB,EAAaG,YAAc,WAAc,OAnGzC,WACC,IAAIte,EAAQnB,SAASa,gBAAgBM,MACrC,MAAO,cAAeA,GAAS,oBAAqBA,EAiGLwe,IA9FhD,WACC,IAAIxe,EAAQnB,SAASa,gBAAgBM,MACrC,MAAO,eAAgBA,GAAS,qBAAsBA,EA4FmBye,IAE1E7d,OAAO2d,eAAeJ,EAAc,QAAS,CAC5C/T,IAAK,WAAc,OAAOqK,IAAS,GACnCzP,IAAK,SAAUQ,GAAS,OAAQiP,EAAyB,kBAAVjP,EAAsBA,EAAQiP,KAG9E0J,IAEA,WC/pCM9Q,GAAK,CACTqR,KAAM,KACJrR,GAAGsR,sBAGLA,mBAAoB,KAClBR,KAAepK,OAAO,oBAAqB,CACzCrF,SAAU,OACVgE,OAAQ,SACRF,SAAU,KAGZ2L,KAAepK,OAAO,iBAAkB,CACtC/B,MAAO,GACPU,OAAQ,SACRF,SAAU,KAGZ2L,KAAepK,OAAO,kBAAmB,CACvCtB,QAAS,EACTe,YAAcjT,GAAOA,EAAGZ,UAAU9D,IAAI,gBAGxCsiB,KAAepK,OAAO,sBAAuB,CAC3CrF,SAAU,OACVgE,OAAQ,QACRF,SAAU,KAGZ2L,KAAepK,OAAO,uBAAwB,CAC5CrF,SAAU,OACVgE,OAAQ,QACRD,QAAS,EACTD,SAAU,KAGZ2L,KAAepK,OAAO,uBAAwB,CAC5CrF,SAAU,OACVgE,OAAQ,OACRF,SAAU,OAKhB,IACEhT,IAAK,KAAM,EACXC,IAAK4N,GAAGqR,sFC9CV,MAAMrR,EAAK,CACTqR,KAAM,KACJ,MAAME,EAAc/f,SAASkB,cAAc,oBAEvC6e,GACFvR,EAAGwR,gBAAgBD,IAGrBxO,EAAAA,EAAAA,IAAG,QAAS,kBAAmB/C,EAAGyR,aAClC1O,EAAAA,EAAAA,IAAG,QAAS,iCAAkC/C,EAAG0R,cAGnDF,gBAAkBte,IAChB,MAAMye,EAAaze,EAAGR,cAAc,qBAWhCif,GACe,IAAIC,kBAVN,SAAUC,EAAe1a,GACxC,IAAK,MAAM2a,KAAYD,EACC,cAAlBC,EAASxV,OACX0D,EAAG+R,mBAAmB7e,GACtBiE,EAASC,iBAQJG,QAAQoa,EAAY,CAAEK,WAAW,KAI9CP,WAAazO,IACX,MAAMb,EAAS3Q,SAASkB,cAAcsQ,EAAEb,OAAOc,QAAQ,mBAAmBR,QAAQwP,SAE9E9P,IACFnC,EAAG+R,mBAAmB5P,GAEtBA,EAAO7P,UAAU9D,IAAI,2BAIzBkjB,YAAc1O,IACZ,MAAMkP,EAAQlP,EAAEb,OAAOc,QAAQ,aAE3BiP,GACFA,EAAM5f,UAAUC,OAAO,0BAI3Bwf,mBAAqB7e,IACnB,MAAMif,EAAajf,EAAGR,cAAc,4CAC9B0f,EAASlf,EAAGR,cAAc,yCAC1B2f,EAAWnf,EAAGR,cAAc,uCAE9Byf,GACFA,EAAWlQ,aAAa,cAAe,iCAGrCmQ,GACFA,EAAOE,WAAWA,WAAWC,aAAaH,EAAQA,EAAOE,YAGvDD,GACFA,EAASC,WAAWA,WAAWC,aAAaF,EAAUA,EAASC,cAKrE,GACEngB,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,qHCrEV,MAAMmB,EAAgB7gB,EAAQ,MAExB8gB,EAAWjhB,SAASwB,iBAAiB,kBAErC0f,EAAQ,CACZD,SAAU,IAGNzS,EAAK,CACTqR,KAAM,KACJoB,EAASxf,SAASC,IAChB,MAAMyf,EAAczf,EAAGuP,QAAQkQ,YACzBC,EAAgB1f,EAAGuP,QAAQmQ,cAC3BC,EAAM3f,EAAGuP,QAAQoQ,IAEjBzX,EAAO,CACXuX,eAAgBA,GAGdC,IACFxX,EAAKwX,cAAgBA,GAGvB,MAAME,EAAU,IAAIN,EAAcO,QAAQ7f,EAAI2f,EAAKzX,GACnD0X,EAAQE,IAAM9f,EAEdwf,EAAMD,SAASxgB,KAAK6gB,MAGtB9S,EAAGiT,cAEHC,EAAAA,EAAAA,GAAelT,EAAGmT,OAAQ,MAG5BF,WAAY,KACVngB,OAAOrB,iBAAiB,SAAUsB,GAAAA,CAASiN,EAAGmT,OAAQ,OAGxDA,OAAQ,KACNT,EAAMD,SAASxf,SAAQ,CAAC6f,EAAStF,KAC3B4F,IAAAA,IAAUN,EAAQE,OACpBF,EAAQ5S,eACDwS,EAAMD,SAASjF,SAM9B,GACErb,IAAK,IAAMsgB,EAAS3e,OACpB1B,IAAK4N,EAAGqR,wDCrDV,MAAMgC,EACG,+BADHA,EAES,wBAIf,IAAIC,EAAqB,CACvB,UAAUD,IAAYA,IACtB,aAAaA,IAAYA,IACzB,iDAAiDA,IAAYA,mBAC7D,sBAAsBA,IAAYA,mBAClC,SAASA,IAAYA,mBACrB,WAAWA,IAAYA,mBACvB,SAASA,IAAYA,mBACrB,UAAUA,4BAAoCA,IAI9C,SAASA,IAAYA,IACrB,kBAAkBA,IAAYA,IAC9B,kBAAkBA,IAAYA,IAC9B,oBAAoBA,IAAYA,IAChC,aAAaA,IAAYA,KAO3B,SAASE,EAAkBrgB,IACNA,EAAGR,cAAc,gBAAkBQ,GAC5CgP,QAkBZ,SAASsR,EAAqBxL,EAAMyL,GAGhC,GAAIA,GAAWC,EAAY1L,GACvB,OAAOA,EAGX,MAsG8B9U,EAtGD8U,GA0GtB2L,YAA8C,OAAhCzgB,EAAGgV,aAAa,aAK7BhV,EAAG0D,QAAQ,+BA5Gf,GAAIoR,EAAK2L,WAAY,CAEjB,IAAIlS,EAAOmS,EAAe5L,EAAK2L,WAAYF,GAG3C,KAAOhS,GAAM,CACT,MAAMoS,EAAcL,EAAqB/R,EAAMgS,GAC/C,GAAII,EACA,OAAOA,EACXpS,EAAOqS,EAAiBrS,EAAMgS,SAKjC,GAAuB,SAAnBzL,EAAK+L,UAAsB,CAChC,MAAMC,EAAmBhM,EAAKgM,iBAAiB,CAC3CC,SAAS,IAERR,GACDO,EAAiBnd,UACrB,IAAK,MAAMqd,KAAmBF,EAAkB,CAC5C,MAAMH,EAAcL,EAAqBU,EAAiBT,GAC1D,GAAII,EACA,OAAOA,OAId,CAED,IAAIpS,EAAOmS,EAAe5L,EAAMyL,GAGhC,KAAOhS,GAAM,CACT,MAAMoS,EAAcL,EAAqB/R,EAAMgS,GAC/C,GAAII,EACA,OAAOA,EACXpS,EAAOqS,EAAiBrS,EAAMgS,IA+D9C,IAAkCvgB,EAzD9B,OAAKugB,GAAWC,EAAY1L,GACjBA,EACJ,KAEX,SAAS4L,EAAe5L,EAAMyL,GAC1B,OAAOA,EAAUzL,EAAKmM,kBAAoBnM,EAAKoM,iBAEnD,SAASN,EAAiB5gB,EAAIugB,GAC1B,OAAOA,EAAUvgB,EAAGmhB,mBAAqBnhB,EAAGohB,uBAKhD,MAcMZ,EAAexgB,IAYbA,EAAGygB,YAAYY,gBAEZrhB,EAAG0D,QAAQ0c,EAAmBlU,KAAK,QA5B7B,CAAClM,MAKVA,EAAG0D,QAAQ,0BACV1D,EAAG0D,QAAQ,qCAGP1D,EAAG4c,aAAe5c,EAAGL,cAAgBK,EAAGshB,iBAAiB1gB,QAmBd2gB,CAASvhB,GAgCjE,SAASwhB,EAAiBC,EAAOnjB,UAC7B,MAAMojB,EAAWD,EAAKE,cACtB,OAAKD,EAKDA,EAASjB,WACFe,EAAiBE,EAASjB,aAAeniB,SAASqjB,cAEtDD,EAPI,KAoCf,MAAME,EACFC,IACA9M,GACA+M,kBACAC,MACAlU,YAAYC,GACR7S,KAAK4mB,IAAM/T,EACX7S,KAAK8Z,GAAK9Z,KAAK4mB,IAAI7M,aAAa,qBAAuB/Z,KAAK4mB,IAAI9M,GAChE9Z,KAAK6mB,kBAAoB,KACzB7mB,KAAK8mB,OAAQ,EACb9mB,KAAK+mB,cAAgB/mB,KAAK+mB,cAAc7e,KAAKlI,MAC7CA,KAAKgnB,aAAehnB,KAAKgnB,aAAa9e,KAAKlI,MAC3CA,KAAKinB,oBAAsBjnB,KAAKinB,oBAAoB/e,KAAKlI,MACzDA,KAAKknB,KAAOlnB,KAAKknB,KAAKhf,KAAKlI,MAC3BA,KAAKmnB,KAAOnnB,KAAKmnB,KAAKjf,KAAKlI,MAC3BA,KAAK4mB,IAAI9S,aAAa,cAAe,QACrC9T,KAAK4mB,IAAI9S,aAAa,aAAc,QACpC9T,KAAK4mB,IAAI9S,aAAa,WAAY,MAC7B9T,KAAK4mB,IAAIQ,aAAa,SACvBpnB,KAAK4mB,IAAI9S,aAAa,OAAQ,UAElCzQ,SAASC,iBAAiB,QAAStD,KAAKinB,qBAAqB,GAMjE3O,UAUI,OARAtY,KAAKmnB,OAEL9jB,SAASkX,oBAAoB,QAASva,KAAKinB,qBAAqB,GAGhEjnB,KAAK4mB,IAAIS,YAAYrnB,KAAK4mB,IAAIU,WAAU,IAExCtnB,KAAKunB,KAAK,WACHvnB,KAMXknB,KAAKxE,GAED,OAAI1iB,KAAK8mB,QAIT9mB,KAAK8mB,OAAQ,EACb9mB,KAAK4mB,IAAIpJ,gBAAgB,eACzBxd,KAAK6mB,kBAAoBN,IAQe,SAApCvmB,KAAK6mB,mBAAmBW,SAAsB9E,GAAO1O,SACrDhU,KAAK6mB,kBAAoBnE,EAAM1O,QAGnCoR,EAAkBplB,KAAK4mB,KAIvBvjB,SAASuJ,KAAKtJ,iBAAiB,QAAStD,KAAK+mB,eAAe,GAC5D/mB,KAAK4mB,IAAItjB,iBAAiB,UAAWtD,KAAKgnB,cAAc,GAExDhnB,KAAKunB,KAAK,OAAQ7E,IAxBP1iB,KAgCfmnB,KAAKzE,GAED,OAAK1iB,KAAK8mB,OAEV9mB,KAAK8mB,OAAQ,EACb9mB,KAAK4mB,IAAI9S,aAAa,cAAe,QACrC9T,KAAK6mB,mBAAmB9S,UAGxB1Q,SAASuJ,KAAK2N,oBAAoB,QAASva,KAAK+mB,eAAe,GAC/D/mB,KAAK4mB,IAAIrM,oBAAoB,UAAWva,KAAKgnB,cAAc,GAE3DhnB,KAAKunB,KAAK,OAAQ7E,GACX1iB,MAVIA,KAef4U,GAAGzG,EAAMsZ,EAAS9c,GAEd,OADA3K,KAAK4mB,IAAItjB,iBAAiB6K,EAAMsZ,EAAS9c,GAClC3K,KAKX0nB,IAAIvZ,EAAMsZ,EAAS9c,GAEf,OADA3K,KAAK4mB,IAAIrM,oBAAoBpM,EAAMsZ,EAAS9c,GACrC3K,KAOXunB,KAAKpZ,EAAMuU,GACP1iB,KAAK4mB,IAAIe,cAAc,IAAIC,YAAYzZ,EAAM,CACzCiL,OAAQsJ,EACRmF,YAAY,KAOpBZ,oBAAoBvE,GAChB,MAAM1O,EAAS0O,EAAM1O,OAGjBA,EAAOc,QAAQ,2BAA2B9U,KAAK8Z,SAC/C9Z,KAAKknB,KAAKxE,IAEV1O,EAAOc,QAAQ,2BAA2B9U,KAAK8Z,SAC9C9F,EAAOc,QAAQ,4BACZd,EAAOc,QAAQ,yBAA2B9U,KAAK4mB,MACnD5mB,KAAKmnB,KAAKzE,GAOlBsE,aAAatE,GAGLrf,SAASqjB,eAAe5R,QAAQ,yBAA2B9U,KAAK4mB,MAMlD,WAAdlE,EAAM5R,KAC4B,gBAAlC9Q,KAAK4mB,IAAI7M,aAAa,UACtB2I,EAAMoF,iBACN9nB,KAAKmnB,KAAKzE,IAII,QAAdA,EAAM5R,KAnLlB,SAAoB/L,EAAI2d,GACpB,MAAOqF,EAAqBC,GA1JhC,SAA2BjjB,GAEvB,MAAMkjB,EAAQ5C,EAAqBtgB,GAAI,GAKvC,MAAO,CAACkjB,EADKA,EAAQ5C,EAAqBtgB,GAAI,IAAUkjB,EAAQ,MAoJdC,CAAkBnjB,GAGpE,IAAKgjB,EACD,OAAOrF,EAAMoF,iBACjB,MAAMpB,EAAgBH,IAIlB7D,EAAMyF,UAAYzB,IAAkBqB,GAEpCC,EAAmBjU,QACnB2O,EAAMoF,kBAKApF,EAAMyF,UAAYzB,IAAkBsB,IAC1CD,EAAoBhU,QACpB2O,EAAMoF,kBAgKFM,CAAWpoB,KAAK4mB,IAAKlE,IAS7BqE,cAAcrE,GACKA,EAAM1O,OACTc,QAAQ,8DAChBsQ,EAAkBplB,KAAK4mB,MAKnC,SAASyB,IACL,IAAK,MAAMtjB,KAAM1B,SAASwB,iBAAiB,sBACvC,IAAI8hB,EAAW5hB,GAGC,oBAAb1B,WACqB,YAAxBA,SAASilB,WACTjlB,SAASC,iBAAiB,mBAAoB+kB,GAG9CA,KCzYR,MAAMxV,EAAUxP,SAASklB,eAAe,kBACxC,GAAI1V,EAAS,CAE2B,cAAhCA,EAAQyB,QAAQkU,aAChBC,EAAAA,EAAAA,IAAY,iBAAiB,EAAM,CAC/BC,QAAS,IAIjB,MAAMC,EAAS,IAAIhC,EAAW9T,GAE9B8V,EACC/T,GAAG,QAAQ,IAAOvR,SAASa,gBAAgBM,MAAMokB,UAAY,WAC7DhU,GAAG,QAAQ,IAAOvR,SAASa,gBAAgBM,MAAMokB,UAAY,KAE9DD,EAAOzB,0HCdX,MAAM2B,EAAkB,CAAC,0BAEnBC,EACJ,mBAAmB7e,KAAK8T,UAAUgL,WAAqC,aAAvBhL,UAAUgL,UAA2BhL,UAAUiL,eAAiB,EAE5GnX,EAAK,CACTqR,KAAM,MACJtO,EAAAA,EAAAA,IAAG,SAAU,iCAAkC/C,EAAGoX,yBAClDrU,EAAAA,EAAAA,IAAG,SAAU,6BAA8B/C,EAAGqX,qBAC9CtU,EAAAA,EAAAA,IAAG,SAAU,6BAA8B/C,EAAGsX,oBAC9CtX,EAAGuX,QAECzkB,OAAO0kB,WAAW,8CAA8C5gB,SAAWqgB,GAC7EzlB,SAASa,gBAAgBC,UAAU9D,IAAI,2BAI3C+oB,MAAO,KACL/lB,SAASwB,iBAAiB,gBAAgBC,SAASwkB,IAC5CA,EAAO/kB,cAAc,gBACxB+kB,EAAOC,eAAiB,GAG1B1X,EAAG2X,cAAcF,OAIrBL,uBAAyBpU,IACvBlQ,OAAO4O,SAASkW,KAAO5U,EAAEb,OAAOhK,OAGlCkf,mBAAqBrU,IACnB,MAAMb,EAAS3Q,SAASkB,cAAcsQ,EAAEb,OAAOhK,OAE3CgK,IACmB7Q,MAAM8C,KAAK5C,SAASuJ,KAAKzI,WAAWmX,MAAMxb,GAAM+oB,EAAgB5jB,SAASnF,OAG5F+T,EAAAA,EAAAA,GAASG,IAGXuT,EAAAA,EAAAA,GAAKlkB,SAASa,gBAAiB,uBAAwB,CAAE8F,MAAO6K,EAAEb,OAAOhK,QAEzE6K,EAAEb,OAAOhK,MAAQ,MAEjB0f,EAAAA,EAAAA,GAAa7U,EAAEb,QAAQ2V,YAI3BR,mBAAqBtU,IACnBA,EAAEb,OAAOc,QAAQ,QAAQ8U,UAG3BJ,cAAgBzkB,IACd,GAAmB,WAAfA,EAAGyiB,QACL,OAGF,MAAMqC,EAAc9kB,EAAGR,cAAc,oBAEjCslB,IAAgBA,EAAYzC,aAAa,qBAC3CyC,EAAY/V,aAAa,oBAAoB,IAY/C4V,EAAAA,EAAAA,GAAa3kB,EATA,CACX+kB,SAAU,CACRC,aAAa,EACbC,gBAAiB,GACjBC,aAAa,EACbC,qBAAqB,OAQhBC,EAAiB,CAC5BjH,KAAOoG,GAAWzX,EAAG2X,cAAcF,GACnCF,MAAO,IAAMvX,EAAGuX,SAGlB,GACEplB,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,kICrFVkH,EAAAA,WAAAA,cAAqC,SAAU1b,EAAG2b,GAChD,OAAIA,GACcA,EAAMxlB,iBAAiB,gCAE3Bc,OACH,KAIJ,sBAGT,MAAM2kB,EAAoB1D,IACxB,GAAIA,EAAK,CACP,GAAIA,EAAI9R,QAAQ,uBACd,OAAO8R,EAAI9R,QAAQ,uBAGrB,GAAI8R,EAAI9R,QAAQ,eACd,OAAO8R,EAAI9R,QAAQ,eAGrB,GAAI8R,EAAI9R,QAAQ,iBACd,OAAO8R,EAAI9R,QAAQ,iBAGrB,GAAI8R,EAAI9R,QAAQ,UACd,OAAO8R,EAAI9R,QAAQ,YAKZyV,EAAc1V,IACzB,MAAM2V,EAAgBF,EAAiBzV,EAAEb,QAEzC,GAAIwW,EAAe,CACjBA,EAAcrmB,UAAUC,OAAO,aAE/B,MAAMqmB,EAAwBD,EAAcjmB,cAAc,uBAEtDkmB,GACFA,EAAsBrmB,SAItByQ,EAAEb,OAAO7P,UAAUyc,SAAS,cAC9B/L,EAAEb,OAAO7P,UAAUC,OAAO,cA0EjBsmB,EAAoBC,IAC/B,MAAMC,EAvEmBD,CAAAA,IACzB,MAAMC,EAAQ,GAkEd,OAhEAD,EACG9lB,iBAAiB,gGACjBC,SAAS+lB,IAER,GACGP,EAAiBO,IAAqD,IAA1CP,EAAiBO,GAAQnmB,cACtDmmB,EAAO9Q,aAAa,YAEpB,OAGF,MAAM+Q,EAAYD,EAAOvW,QAAQjM,KAAOwiB,EAAOvW,QAAQjM,KAAOwiB,EAAOxiB,KAErEuiB,EAAME,GAAa,CACjBC,SAAU,CACRjS,QAAS,cAIO,UAAhB+R,EAAO1c,OACTyc,EAAMC,EAAOxiB,MAAM2iB,OAAQ,MAIjCL,EAAM9lB,iBAAiB,aAAaC,SAAS+lB,IAEG,IAA1CP,EAAiBO,GAAQnmB,cAAsBmmB,EAAOI,WAI1DL,EAAMC,EAAOxiB,MAAQ,CACnBkN,OAAQ,CACN2V,QAASL,EAAO9Q,aAAa,WAC7BjB,QAAS,kBAKf6R,EAAM9lB,iBAAiB,mBAAmBC,SAAS+lB,IAEjD,KAAKP,EAAiBO,IAAqD,IAA1CP,EAAiBO,GAAQnmB,cAAuBmmB,EAAOI,WAIpFJ,EAAO1mB,UAAUyc,SAAS,aAAc,CAC1C,MAAMuK,EAASN,EAAOtmB,cAAc,qBAC9B6mB,EAAYP,EAAOtmB,cAAc,wBAEnC4mB,IACFP,EAAMO,EAAO9iB,MAAQ,CACnB0iB,SAAU,CACRjS,QAAS,eAKXsS,IACFR,EAAMQ,EAAU/iB,MAAQ,CACtBgjB,cAAeD,EAAUtW,QAAQ,oBAMlC8V,GAIOU,CAAWX,GACnBvU,EAASmV,EAASZ,EAAOC,GAE/B,QAAe3W,IAAXmC,EAAsB,CACxB,IAAK,MAAO/N,EAAMmjB,KAAapmB,OAAOgD,QAAQgO,GAAS,CACrD,MAAMyU,EAASF,EAAMpmB,cAAN,iBAA8B8D,EAA9B,OACTmiB,EAAgBF,EAAiBO,GAGvC,GAAIL,EAAe,CACjB,MAAMC,EAAwBD,EAAcjmB,cAAc,uBAEtDkmB,GACFA,EAAsBrmB,SAGxB,MAAM0U,EAAU,iEAAH,OAEP0S,EAAS,GAFF,gCAKbhB,EAAciB,mBAAmB,YAAa3S,GAC9C0R,EAAcrmB,UAAU9D,IAAI,aAG9BwqB,EAAO1mB,UAAU9D,IAAI,aAGvB,MAAMqrB,OAA4CzX,IAA7B0W,EAAMrW,QAAQqX,WAE7BC,EAAcjB,EAAMpmB,cAAc,cAUxC,OARImnB,GAAgBE,IAClB/X,EAAAA,EAAAA,GAAS+X,EAAa,KAAK,KACzBzc,YAAW,KACTyc,EAAYrnB,cAAc,UAAYqnB,EAAYrnB,cAAc,SAASwP,UACxE,OAIA,EAGT,OAAO,GAGIwX,EAAWnB,wBCtKxB,MAAMyB,EAAcxoB,SAASkB,cAAc,oBAErCsN,EAAK,CACTqR,KAAM,MACJtO,EAAAA,EAAAA,IAAG,OAAQ,aAAc2V,EAAY,CAAEuB,SAAS,KAChDlX,EAAAA,EAAAA,IAAG,SAAU,aAAc2V,EAAY,CAAEuB,SAAS,KAClDlX,EAAAA,EAAAA,IAAG,SAAU,kBAAmB2V,EAAY,CAC1CuB,SAAS,KAEXlX,EAAAA,EAAAA,IAAG,QAAS,4BAA6B/C,EAAGka,kBAAmB,CAC7DD,SAAS,KAEXlX,EAAAA,EAAAA,IAAG,SAAU,4CAA6CC,GAAM6V,EAAiB7V,EAAEb,WACnFY,EAAAA,EAAAA,IAAG,SAAU,mBAAoB/C,EAAGma,aACpCpX,EAAAA,EAAAA,IAAG,SAAU,yCAA0C/C,EAAGoa,iBAC1DrX,EAAAA,EAAAA,IAAG,QAAS,eAAgB/C,EAAGqa,eAC/BtX,EAAAA,EAAAA,IAAG,SAAU,oBAAqB/C,EAAGsa,eACrCvX,EAAAA,EAAAA,IAAG,SAAU,uBAAwB/C,EAAGsa,eACxCvX,EAAAA,EAAAA,IAAG,QAAS,qCAAsC/C,EAAGsa,cAErDta,EAAGua,cACHva,EAAGwa,sBAGLA,mBAAoB,KAClBhpB,SAASwB,iBAAiB,QAAQC,SAAS6lB,IAEzCA,EAAM9lB,iBAAiB,wCAAwCC,SAAS+lB,IACtE,MAAMyB,EAASzB,EAAOtmB,cAAc,qBAEpC,GAAI+nB,GAAUA,EAAOC,UAAW,CAC9B,MAAMC,EAAS3B,EAAOtmB,cAAc,SACpCioB,EAAOroB,UAAU9D,IAAI,oBAErB,MAAMosB,EAAWppB,SAASqpB,cAAc,OACxCD,EAAStoB,UAAU9D,IAAI,wBAEvB,MAAMssB,EAAStpB,SAASqpB,cAAc,QACtCC,EAAOC,YAAP,WAAyBN,EAAOtiB,MAAMrE,OAAtC,YAAgD2mB,EAAOC,UAAvD,KAEAE,EAASI,YAAYF,GAErB,MAAMG,EAAezpB,SAASqpB,cAAc,OAE5CI,EAAa3oB,UAAU9D,IAAI,oBAC3BysB,EAAaD,YAAYL,EAAOlF,WAAU,IAC1CwF,EAAaD,YAAYJ,GAEzBD,EAAOnF,YAAYyF,WAM3Bf,kBAAoBlX,IAClB,MAAMyX,EAASzX,EAAEb,OAAOc,QAAQ,qBAC1B+V,EAASyB,EAAOxX,QAAQ,2BAE1BwX,GAAUzB,IACGA,EAAOtmB,cAAc,8BAC7BqoB,YAAP,WAAyBN,EAAOtiB,MAAMrE,OAAtC,YAAgD2mB,EAAOC,UAAvD,OAIJN,eAAiBpX,IACf,MAAMkY,EAA2B,QAAnBlY,EAAEb,OAAOhK,MACjBqgB,EAAQxV,EAAEb,OAAOc,QAAQ,mBAE/B,GAAIuV,EAAO,CACT,MAAM2C,EAAQ3C,EAAM9lB,cAAc,sBAE9ByoB,GAASD,IACPC,EAAMC,QACR5C,EAAMxlB,iBAAiB,qBAAqBC,SAAShF,GAAOA,EAAEmtB,SAAU,IAExE5C,EAAMxlB,iBAAiB,qBAAqBC,SAAShF,GAAOA,EAAEmtB,SAAU,KAIxED,IAAUD,IACZC,EAAMC,SAAU,KAKtBf,aAAerX,IACb,MAAMyX,EAASzX,EAAEb,OACXkZ,EAAUZ,EAAOxX,QAAQ,mBACzBqY,EAAYtb,EAAGub,YAAYF,GAE7BZ,GAAUY,IACZA,EAAQ/oB,UAAU9D,IAAI,WAElB8sB,EAAUxnB,QACZwnB,EAAUroB,SAASuoB,IACjBA,EAASlpB,UAAUC,OAAO,gBAMlCgpB,YAAcvY,IACZ,IAAIyY,EAAW,GACf,IAAKzY,EAAEsP,WACL,OAAOmJ,EAET,IAAIC,EAAU1Y,EAAEsP,WAAWqJ,WAC3B,KAAOD,GACoB,IAArBA,EAAQtY,UAAkBsY,IAAY1Y,GACxCyY,EAASxpB,KAAKypB,GAEhBA,EAAUA,EAAQE,YAEpB,OAAOH,GAGTtB,WAAanX,IACXA,EAAEiT,iBAEF,MAAM6C,EAAQ9V,EAAEb,OAGhB,GAFgB0W,EAAiBC,GAEpB,CACX,MAAM+C,EAAgB/C,EAAMpmB,cAAc,kBACpCopB,EAAgBhD,EAAMpmB,cAAc,iBAC1C,IAAIqpB,GAAkB,EACtB/b,EAAGgc,aAAaF,GAEhB,MAAM3e,EAAW,IAAIhI,SAAS2jB,GAE9BmD,EACGpjB,IAAIigB,EAAMoD,QACVnhB,KAAKoC,GACLgB,OACAlB,MAAMhH,IACDA,EAAIkmB,UACNrD,EAAMnT,QACNmT,EAAM9lB,iBAAiB,UAAUC,SAAShF,GAAOA,EAAEkK,MAAQ,OAC3D2gB,EAAM9lB,iBAAiB,2BAA2BC,SAAShF,GAAMA,EAAEqE,UAAU9D,IAAI,eACjFsqB,EAAM9lB,iBAAiB,kBAAkBC,SAAShF,GAAMA,EAAEqE,UAAU9D,IAAI,YACxEsqB,EAAM9lB,iBAAiB,iBAAiBC,SAAShF,GAAMA,EAAEqE,UAAU9D,IAAI,YACvEsqB,EAAM9lB,iBAAiB,6BAA6BC,SAASC,IAC3D8M,EAAGka,kBAAkB,CAAE/X,OAAQjP,OAG7B4lB,EAAMrW,QAAQ2Z,eAChBtD,EAAM9lB,iBAAiB,iBAAiBC,SAAShF,GAAMA,EAAEqE,UAAU9D,IAAI,YACvEgD,SAASwB,iBAAiB,wBAAwBC,SAAShF,GAAMA,EAAEqE,UAAU9D,IAAI,eACjFutB,GAAkB,OAEgC3Z,IAA7B0W,EAAMrW,QAAQqX,aAGjC9X,EAAAA,EAAAA,GAAS8W,EAAO,MAIpBpD,EAAAA,EAAAA,GAAKlkB,SAASa,gBAAiB,kBAAmB,CAChDiK,KAAM,OACNzD,IAAK,IAAIwjB,IAAIvD,EAAMoD,QACnBI,gBAAiB,IAAIlnB,gBAAgB+H,GAAUsC,cAI/CxJ,EAAIgR,SACNjH,EAAGuc,iBAAiBV,EAAe5lB,EAAIgR,QAAShR,EAAIkmB,QAASJ,MAGhE7f,OAAM,KACL8D,EAAGuc,iBAAiBV,EAAe,sDAEpCW,SAAQ,KACPxc,EAAGgc,aAAaF,QAKxBE,aAAeF,IACbA,EAAcW,UAAYX,EAAcW,SACxCX,EAAcxpB,UAAU4Q,OAAO,gBAGjCqZ,iBAAkB,CAAClB,EAASpU,EAASkV,EAASO,KAC5CrB,EAAQ1oB,MAAMgqB,QAAU,QACxBtB,EAAQuB,UAAY3V,EAEhBkV,EACFd,EAAQ/oB,UAAUC,OAAO,sBAEzB8oB,EAAQ/oB,UAAU9D,IAAI,sBAGpBkuB,GACFpf,YAAW,KACT+d,EAAQ1oB,MAAMgqB,QAAU,SACvB,MAIPpC,YAAa,KACPP,IACFA,EAAYhnB,iBAAZ,oBAAiDC,SAASwnB,IACxD,MAAMoC,EAAY7C,EAAYtnB,cAAZ,iBAAoC+nB,EAAOhY,QAAQqa,SAASpjB,MAAM,KAAK,GAAvE,eACZqjB,EAAetC,EAAOhY,QAAQqa,SAASpjB,MAAM,KACnDqjB,EAAa9O,QACb,MAAM+O,EAAevC,EAAOxX,QAAQ,iBAEhC4Z,IAAwD,IAA3CE,EAAa1U,QAAQwU,EAAU1kB,QAC9C6kB,EAAa1qB,UAAUC,OAAO,aAIlCynB,EAAYhnB,iBAAZ,uBAAoDC,SAASwnB,IAC3D,MAAMoC,EAAY7C,EAAYtnB,cAAZ,iBAAoC+nB,EAAOhY,QAAQwa,WAAWvjB,MAAM,KAAK,GAAzE,OACZwjB,EAAczC,EAAOhY,QAAQwa,WAAWvjB,MAAM,KAAK,GACnDsjB,EAAevC,EAAOxX,QAAQ,iBAEhC4Z,GAAala,SAASka,EAAU1kB,MAAO,IAAMwK,SAASua,EAAa,KACrEF,EAAa1qB,UAAUC,OAAO,eAMtC+nB,aAAetX,IACb,MAAMma,EAAQna,EAAEb,OACV3L,EAAOwM,EAAEb,OAAO3L,KAChB4mB,EAAgBpa,EAAEb,OAAOhK,MAE1B6hB,IAILA,EAAYhnB,iBAAZ,4BAAkDwD,EAAlD,QAA6DvD,SAASwnB,IACpE,MAAMuC,EAAevC,EAAOxX,QAAQ,iBACpC,IAAIoa,GAAa,EAEjB,GAAKL,EAAL,CAIA,GAAmB,UAAfG,EAAM7gB,KAAkB,CAC1B,MAAMygB,EAAetC,EAAOhY,QAAQqa,SAASpjB,MAAM,KACnDqjB,EAAa9O,QACboP,GAAsD,IAAzCN,EAAa1U,QAAQ+U,GAGjB,aAAfD,EAAM7gB,OACR+gB,EAAaF,EAAM/B,SAGjBiC,EACFL,EAAa1qB,UAAUC,OAAO,WAE9ByqB,EAAa1qB,UAAU9D,IAAI,UAE3BwuB,EAAahqB,iBAAiB,gDAAgDC,SAAShF,GAAOA,EAAEkK,MAAQ,OACxG6kB,EAAahqB,iBAAiB,iBAAiBC,SAAShF,IACtDA,EAAEmtB,SAAU,EAEZpB,EAAYhnB,iBAAZ,4BAAkD/E,EAAEuI,KAApD,QAA+DvD,SAASwnB,IACtE,MAAMuC,EAAevC,EAAOxX,QAAQ,iBACpC+Z,EAAa1qB,UAAU9D,IAAI,UAE3BwuB,EACGhqB,iBAAiB,gDACjBC,SAAShF,GAAOA,EAAEkK,MAAQ,kBAMrC6hB,EAAYhnB,iBAAZ,+BAAqDwD,EAArD,QAAgEvD,SAASwnB,IACvE,MAAMuC,EAAevC,EAAOxX,QAAQ,iBACpC,IAAIoa,GAAa,EAEjB,GAAKL,EAAL,CAIA,GAAmB,SAAfG,EAAM7gB,KAAiB,CACzB,MAAM4gB,EAAczC,EAAOhY,QAAQwa,WAAWvjB,MAAM,KAAK,GACzD2jB,EAAa1a,SAASya,EAAe,IAAMza,SAASua,EAAa,IAG/DG,EACFL,EAAa1qB,UAAUC,OAAO,WAE9ByqB,EAAa1qB,UAAU9D,IAAI,UAE3BwuB,EAAahqB,iBAAiB,SAASC,SAAShF,GAAOA,EAAEkK,MAAQ,eAMzE,GACEhG,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,oJC1SV,MAAMrR,EAAK,CACTqR,KAAM,MACJtO,EAAAA,EAAAA,IAAG,QAAS,eAAgB/C,EAAGyR,YAE/B,MAAM6L,EAAgB9rB,SAASkB,cAAc,qBAEzC4qB,GACFtd,EAAGud,UAAUD,IAIjB7L,WAAazO,KACc,MAArBA,EAAEb,OAAOwT,SAAyC,MAArB3S,EAAEb,OAAOwT,SAAmB3S,EAAEb,OAAOM,QAAQyP,SAC5ElP,EAAEiT,iBACFjW,EAAGud,UAAUva,EAAEb,OAAOc,QAAQ,mBAIlCsa,UAAYrqB,IACV,IAAIgf,EAAQ,KAGZ,GAAyB,UAArBhf,EAAGuP,QAAQyP,MAAmB,CAChC,IAAI9W,EAAO,CACToiB,SAAU,CAAC,iBAGbtL,EAAQlS,EAAGyd,gBAAgBvqB,EAAIA,EAAGgV,aAAa,QAAS9M,GAI1D,GAAyB,UAArBlI,EAAGuP,QAAQyP,MAAmB,CAChC,IAAI9W,EAAO,CACToiB,SAAU,CAAC,gBACXE,aAAc,CAAC,SAAU,WAG3B,MAAM9F,EAAO1kB,EAAGgV,aAAa,QAEzB0P,EAAKxkB,SAAS,YAChBgI,EAAKoiB,SAASvrB,KAAK,cAGrBigB,EAAQlS,EAAG2d,gBAAgBzqB,EAAI0kB,EAAMxc,GAIvC,GAAyB,YAArBlI,EAAGuP,QAAQyP,MAAqB,CAClC,IAAI9W,EAAO,CACToiB,SAAU,CAAC,iBAAkB,gBAG/B,MAAM5F,EAAO1kB,EAAGuP,QAAQmV,KAAO1kB,EAAGuP,QAAQmV,KAAO1kB,EAAGgV,aAAa,QACjEgK,EAAQlS,EAAG4d,kBAAkB1qB,EAAI0kB,EAAMxc,GAIzC,GAAyB,eAArBlI,EAAGuP,QAAQyP,MAAwB,CACrC,IAAI9W,EAAO,CACToiB,SAAU,CAAC,iBAAkB,qBAC7BE,aAAc,CAAC,WAGjBxL,EAAQlS,EAAG6d,qBAAqB3qB,EAAIkI,GAItC,GAAyB,YAArBlI,EAAGuP,QAAQyP,MAAqB,CAClC,IAAI9W,EAAO,CACToiB,SAAU,CAAC,mBAGb,MAAM5F,EAAO1kB,EAAGuP,QAAQmV,KAAO1kB,EAAGuP,QAAQmV,KAAO1kB,EAAGgV,aAAa,QACjEgK,EAAQlS,EAAG8d,kBAAkB5qB,EAAI0kB,EAAMxc,GAIzC,GAAyB,UAArBlI,EAAGuP,QAAQyP,MAAmB,CAChC,IAAI9W,EAAO,CACToiB,SAAU,CAAC,gBACXE,aAAc,CAAC,WAGjBxL,EAAQlS,EAAG+d,gBAAgB7qB,EAAIA,EAAGgV,aAAa,QAAS9M,GAI1D,QAA6BgH,IAAzBlP,EAAGuP,QAAQub,UAAyB,CACT,cAAzB9qB,EAAGuP,QAAQub,WACbpH,EAAAA,EAAAA,IAAY,iBAAiB,EAAM,CACjCC,QAAS,IAIb,IAAIzb,EAAO,CACToiB,SAAU,CAAC,mBAGbtL,EAAQlS,EAAGie,WAAW/qB,EAAIkI,GAC1B8W,EAAMgM,WAAWhrB,EAAG0pB,WAGlB1K,GACFA,EAAMiM,QAIVF,WAAY,SAAC/qB,GAAkB,IAAdkI,EAAc,uDAAP,GAClBoiB,EAAW,CAAC,SACZE,EAAe,CAAC,SAAU,UAE1BnqB,OAAOjF,UAAUyF,eAAeC,KAAKoH,EAAM,cAC7CoiB,EAAWA,EAAS/oB,OAAO2G,EAAKoiB,WAG9BjqB,OAAOjF,UAAUyF,eAAeC,KAAKoH,EAAM,kBAC7CsiB,EAAetiB,EAAKsiB,cAGtB,MAAMxL,EAAQ,IAAIkM,IAAAA,OAAa,CAC7BV,aAAAA,EACAF,SAAAA,EACAa,WAAY,KACVnM,EAAMA,MAAM5f,UAAU9D,IAAI,kBAG1B,MAAM8vB,EAAWpM,EAAMA,MAAMxf,cAAc,wBAiB3C4rB,EAAS5rB,cAAc,4BAA4BkqB,UAAnD,4ZAOA1K,EAAMA,MAAMxf,cAAc,qBAAqBsoB,YAAYsD,IAE7DC,OAAQ,KACNrM,EAAMA,MAAM5f,UAAUC,OAAO,mBAE/BisB,YAAa,MACX9I,EAAAA,EAAAA,GAAKlkB,SAASa,gBAAiB,aAAc,CAAE6f,MAAOA,KAE/C,GAETuM,QAAS,KACPvM,EAAMzL,UAEF3T,OAAO4rB,gBACT5rB,OAAO4rB,cAAgB,SAK7B,OAAOxM,GAGTuL,gBAAiB,SAACvqB,EAAI0kB,GAAoB,IAAdxc,EAAc,uDAAP,GACjC,MAAM8W,EAAQlS,EAAGie,WAAW/qB,EAAIkI,GAGhC,OAFA8W,EAAMgM,WAAN,oBAA8BtG,EAA9B,OAEO1F,GAGTyL,gBAAiB,SAACzqB,EAAI0kB,GAAoB,IAAdxc,EAAc,uDAAP,GACjC,MAAM8W,EAAQlS,EAAGie,WAAW/qB,EAAIkI,GAQhC,OANIwc,EAAKxkB,SAAS,WAChB8e,EAAMgM,WAAN,4CAAsDtG,EAAtD,iDAEA1F,EAAMgM,WAAN,sBAAgCtG,EAAhC,2BAGK1F,GAGT6L,gBAAiB,SAAC7qB,EAAI0kB,GAAoB,IAAdxc,EAAc,uDAAP,GACjC,MAAM8W,EAAQlS,EAAGie,WAAW/qB,EAAIkI,GAGhC,OAFA8W,EAAMgM,WAAN,4CAAsDtG,EAAtD,gBAEO1F,GAGT0L,kBAAmB,SAAC1qB,EAAI0kB,GAAoB,IAAdxc,EAAc,uDAAP,GACnC,MAAM8W,EAAQlS,EAAGie,WAAW/qB,EAAIkI,GAUhC,OARA6gB,EACGpjB,IAAI+e,GACJ7a,MACAM,MAAMshB,IACLzM,EAAMgM,WAAWS,GACjBzM,EAAMA,MAAM5f,UAAUC,OAAO,kBAG1B2f,GAGT2L,qBAAsB,SAAC3qB,GAAkB,IAAdkI,EAAc,uDAAP,GAChC,MAAM8W,EAAQlS,EAAGie,WAAW/qB,EAAIkI,GAQhC,OANA8W,EAAMgM,WAAN,mDAIAxI,EAAAA,EAAAA,GAAKlkB,SAASa,gBAAiB,sBAAuB,CAAEiK,KAAMpJ,EAAGuP,QAAQmc,iBAElE1M,GAGT4L,kBAAmB,SAAC5qB,EAAI0kB,GAAoB,IAAdxc,EAAc,uDAAP,GACnC,MAAM8W,EAAQlS,EAAGie,WAAW/qB,EAAIkI,GAC1BvC,EAAM,IAAIwjB,IAAIzE,EAAM9kB,OAAO4O,SAASkW,MAE1C,GAAI/e,EAAIgmB,KAAM,CACZ,MAAM1c,EAAS3Q,SAASkB,cAAcmG,EAAIgmB,MAGpC1M,EAAahQ,EAAOzP,cAAc,4CAClC0f,EAASjQ,EAAOzP,cAAc,yCAEhCyf,GACFA,EAAWlQ,aAAa,cAAe,iCAGrCmQ,GACFA,EAAOE,WAAWA,WAAWC,aAAaH,EAAQA,EAAOE,YAG3DJ,EAAMgM,WAAW/b,EAAOya,WAG1B,OAAO1K,IAIX,GACE/f,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,iEChQV,MAwGA,GACElf,IAAK,KAAM,EACXC,IAzGM,KAGJ,MAAM0sB,EAActtB,SAASkB,cAAc,wBACrCqsB,EAAcvtB,SAASkB,cAAc,iBAGrCssB,EAAkBxtB,SAASkB,cAAc,4DACzCusB,EAAkBztB,SAASkB,cAAc,mBAGzCwsB,EAAgB1tB,SAASkB,cAAc,qBAIvCysB,GAHqB3tB,SAASkB,cAAc,yBAGzBI,OAAO0kB,WAAW,kCAG3C,IAAI4H,EAAS,iCAAiChnB,KAAK8T,UAAUC,YAAc,mBAAmB/T,KAAK8T,UAAUgL,UAEzGiI,EAAiBvoB,SAAWuoB,EAAiBE,uBAAyBF,EAAiBG,oBAAsBH,EAAiBI,kBAE1HP,GAAmBC,IAEnBD,EAAgBxf,OAAOyf,GAEvBD,EAAgBrsB,MAAM6sB,SAAW,SACjCR,EAAgBrsB,MAAM8sB,IAAM,OAC5BT,EAAgBrsB,MAAM+sB,QAAU,SAEhCT,EAAgBtsB,MAAMgtB,UAAY,IAClCV,EAAgBtsB,MAAMwW,SAAW,UAIlC2V,GACCA,EAAYrtB,iBAAiB,SAAS,KAC9BwtB,IACAA,EAAgBtsB,MAAMitB,SAAW,OACjCX,EAAgBtsB,MAAMgtB,UAAY,IAClCV,EAAgBtsB,MAAMmY,WAAa,0BAK3CiU,GACAA,EAAYttB,iBAAiB,SAAS,KAClCutB,EAAgBrsB,MAAMitB,SAAW,OACjCZ,EAAgBrsB,MAAMmY,WAAa,yBAI3ChY,OAAOrB,iBAAiB,QAAQ,KAExBwtB,GAAmBD,IAAoBI,IAEvCJ,EAAgBrsB,MAAMitB,SAAW,MACjCX,EAAgBtsB,MAAMitB,SAAW,MAEjCX,EAAgBtsB,MAAMgtB,UAAY,QAGf,MAAnBV,GACID,IACAA,EAAgBrsB,MAAMuX,MAAQ,QAIf,MAAnB8U,GACIC,IACAA,EAAgBtsB,MAAMuX,MAAQ,OAC9B+U,EAAgBtsB,MAAMgtB,UAAY,SAM/CP,IACKJ,GAAmBC,IAEnBD,EAAgBxf,OAAOyf,GAEvBD,EAAgBrsB,MAAM6sB,SAAW,SACjCR,EAAgBrsB,MAAM8sB,IAAM,OAC5BT,EAAgBrsB,MAAM+sB,QAAU,SAEhCT,EAAgBtsB,MAAMgtB,UAAY,IAClCV,EAAgBtsB,MAAMwW,SAAW,QAEjC+V,EAAcvsB,MAAM+sB,QAAU,kBAG9BZ,GACAA,EAAYrtB,iBAAiB,SAAS,KACfD,SAASkB,cAAc,QAC7B8M,OAAOyf,GACpBA,EAAgBtsB,MAAMwW,SAAW,+FC/FjD,MAAMnJ,EAAK,CACTqR,KAAM,MACJtO,EAAAA,EAAAA,IAAG,SAAU,2BAA4B/C,EAAG6f,eAG9CA,aAAe7c,IACb,MAAM+I,EAAO,IAAI5W,SAAS6N,EAAEb,QAC5B,IAAI2d,GAAY,EAEhB,IAAK,MAAM5gB,KAAK6M,EAAKgU,SACT,KAAN7gB,IACF4gB,GAAY,GAIXA,GACH9c,EAAEiT,mBAKR,GACE9jB,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,2GCtBV,MAAMrR,EAAK,CACTqR,KAAM,MACJtO,EAAAA,EAAAA,IAAG,QAAS,gCAAiC/C,EAAGggB,cAGlDA,YAAchd,IACZA,EAAEiT,iBAEF,MAAMgK,EAAUjd,EAAEb,OACZ+d,EAAMD,EAAQhd,QAAQ,6BACtBkd,EAAOD,EAAI5L,uBACX8L,EAASH,EAAQrpB,QAAQ,8BAE/BqpB,EAAQxD,UAAW,EACnBwD,EAAQ3tB,UAAU9D,IAAI,cAEtBytB,EACGpjB,IAAIonB,EAAQrI,MACZ7a,MACAE,MAAM0hB,IACL,MAAM0B,EAAS7uB,SAAS8uB,cAAcC,yBAAyB5B,EAAKuB,KAGpE,GAFAA,EAAI5N,WAAWkO,aAAaH,EAAQH,GAEhCE,EACFD,EAAKvD,UAAY+B,EAAKwB,SACjB,CACL,MAAMM,EAAUjvB,SAAS8uB,cAAcC,yBAAyB5B,EAAKwB,MACrEA,EAAK3gB,OAAOihB,GAGVL,IACFpe,EAAAA,EAAAA,GAASme,EAAM,UAMzB,GACEhuB,IAAK,IAAMX,SAASkB,cAAc,yBAClCN,IAAK4N,EAAGqR,+ECxCV,MAAMqP,EAAe5tB,OAAO4tB,aAEtB1gB,EAAK,CACTqR,KAAM,MACJtO,EAAAA,EAAAA,IAAG,QAAS,yBAA0B/C,EAAG2gB,gBAG3CA,cAAgB3d,IACdA,EAAEiT,iBAEF,MAAM2K,EAAU5d,EAAEb,OAAOc,QAAQ,wBAC3B4d,EAAa7d,EAAE8d,cAAcre,QAAQse,cAAgB,EACrDC,EAActiB,KAAK8F,MAAMoc,EAAQne,QAAQwe,cAE/CP,EAAaE,EAAS,CACpBpT,MAAO7K,SAASke,GAChBK,SAAS,EACTC,UAAWH,EACXI,WAAW,EACXC,UAAU,IAGZT,EAAQnvB,iBACN,gBACA,KACE,MAAM2a,EAAMwU,EAAQ1Y,aAAa,UAE7B3U,OAAOjF,UAAUyF,eAAeC,KAAKlB,OAAOwuB,OAAQlV,IACtDtZ,OAAOwuB,OAAOlV,GAAK3F,SAAQ,KAG/B,CAAE8a,MAAM,MAKd,GACEpvB,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,yFCrCV,MAAM2F,EAAkB,CAAC,0BAEnBhX,EAAK,CACTqR,KAAM,KACJrR,EAAGiT,aACHjT,EAAGwhB,YACHxhB,EAAGyhB,oBAGLxO,WAAY,MACVlQ,EAAAA,EAAAA,IAAG,QAAS,gBAAiB/C,EAAGggB,cAGlCA,YAAchd,IACZ,MAAM9P,EAAK8P,EAAEb,OAAOc,QAAQ,iBAE5B,IAAIye,EAAiB,KAErB,GAAIxuB,EAAGuP,QAAQmO,OACb8Q,EAAiBxuB,EAAGuP,QAAQmO,WACvB,IAAmB,MAAf1d,EAAGyiB,QAGZ,OAFA+L,EAAiBxuB,EAAG2rB,KAKtB,GAAI6C,EAAgB,CAClB,MAAMvf,EAAS3Q,SAASkB,cAAcgvB,GAElCvf,IACFa,EAAEiT,iBAEFzkB,SAASa,gBAAgBC,UAAUC,OAAO,iBAEtCO,OAAO4rB,eAAiB5rB,OAAO4rB,cAAcxM,OAC/Cpf,OAAO4rB,cAAciD,SAGvB3f,EAAAA,EAAAA,GAASG,MAKfqf,UAAW,KAGT,IAFqBlwB,MAAM8C,KAAK5C,SAASuJ,KAAKzI,WAAWmX,MAAMxb,GAAM+oB,EAAgB5jB,SAASnF,MAM1F6E,OAAO4O,SAASmd,KAAM,CACxB,IAAI6C,EAAiB5uB,OAAO4O,SAASmd,KAEjC1c,EAAS3Q,SAASkB,cAAcgvB,GAEhCvf,IACFH,EAAAA,EAAAA,GAASG,KAMfsf,iBAAkB,KAChB,MAAMtf,EAAS3Q,SAASkB,cAAc,qBAElCyP,GACF7E,YAAW,MACT0E,EAAAA,EAAAA,GAASG,KACR,OAKT,GACEhQ,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,+EC5EV,MA+CA,GACElf,IAAK,KAAM,EACXC,IAhDM,MACJ2Q,EAAAA,EAAAA,IAAG,QAAS,yBAA0BC,IACpC,MAAMid,EAAUjd,EAAEb,OAAOc,QAAQ,UAE3Bd,EAAS3Q,SAASklB,eAAeuJ,EAAQ/X,aAAa,kBAEvD/F,IAIyC,UAA1C8d,EAAQ/X,aAAa,kBACvB+X,EAAQhe,aAAa,gBAAiB,QAEtCE,EAAO7P,UAAU9D,IAAI,eAErByxB,EAAQhe,aAAa,gBAAiB,SACtCE,EAAO7P,UAAUC,OAAO,mBAI5BwQ,EAAAA,EAAAA,IAAG,SAAU,mCAAoCC,IAC/C,MAAM1G,EAAO0G,EAAEb,OAAOhK,MAEhBgK,EAAS3Q,SAASkB,cAAT,yCAAyD4J,EAAzD,OAEX6F,IACF3Q,SAASwB,iBAAiB,uBAAuBC,SAAShF,GAAMA,EAAEqE,UAAU9D,IAAI,YAEhF2T,EAAO7P,UAAUC,OAAO,cAI5BO,OAAOrB,iBAAiB,SAAUuR,IAC3BA,EAAEb,OAAOc,QAAQ,0BAA6BD,EAAEb,OAAOc,QAAQ,kBAClEzR,SAASwB,iBAAiB,yBAAyBC,SAASC,IAC3C1B,SAASklB,eAAexjB,EAAGgV,aAAa,kBAEhD5V,UAAUC,OAAO,aAExBW,EAAG+O,aAAa,gBAAiB,0FCxC3C,MAAM2f,EAASpwB,SAASkB,cAAc,sBAEhCsN,EAAK,CACTqR,KAAM,MACJtO,EAAAA,EAAAA,IAAG,QAAS,2BAA4B/C,EAAG0R,aAE3C5e,OAAOrB,iBAAiB,SAAUuO,EAAG6hB,WACrC7hB,EAAG6hB,aAGLnQ,YAAa,KACXkQ,EAAOrvB,SACPyN,EAAG6hB,aAGLA,UAAW,KACTrwB,SAASa,gBAAgBM,MAAMC,YAAY,6BAA3C,UAA4EgvB,EAAO/uB,aAAnF,SAIJ,GACEV,IAAK,IAAMyvB,EACXxvB,IAAK4N,EAAGqR,4GCpBV,MAAMyQ,EAAiBnwB,EAAQ,MACzBowB,EAAoBD,EAAeC,kBACnCC,EAAmBF,EAAeE,iBAElC9B,EAAM1uB,SAASkB,cAAc,qBAC7BuvB,EAAUzwB,SAASkB,cAAc,0BACjCwvB,EAAU1wB,SAASkB,cAAc,kBACjCyvB,EAAe3wB,SAASkB,cAAc,wBACtC0vB,EAAU5wB,SAASkB,cAAc,kBACjC2vB,EAAY7wB,SAASkB,cAAc,oBACnC4vB,EAAiB9wB,SAASkB,cAAc,0BAExCggB,EAAQ,CACZ6P,UAAW,IAGPviB,EAAK,CACTqR,KAAM,KACJrR,EAAGiT,cAGLA,WAAY,KACVngB,OAAOrB,iBAAiB,SAAUsB,GAAAA,CAASiN,EAAGwiB,aAAc,MAC5DhxB,SAASC,iBAAiB,QAASuO,EAAGyiB,YACtC1f,EAAAA,EAAAA,IAAG,QAAS,yBAA0B/C,EAAG0iB,WACzC3f,EAAAA,EAAAA,IAAG,QAAS,0BAA2B/C,EAAGyiB,YAC1C1f,EAAAA,EAAAA,IAAG,QAAS,iBAAkB/C,EAAG2iB,eACjC5f,EAAAA,EAAAA,IAAG,QAAS,iBAAkB/C,EAAG4iB,eACjC7f,EAAAA,EAAAA,IAAG,QAAS,iBAAkB/C,EAAG6iB,YAGnCC,iBAAkB,KACyC,SAA1Cb,EAAQ/Z,aAAa,iBAGlClI,EAAGyiB,UAAU,CAAEtgB,OAAQ3Q,SAASuJ,OAEhCiF,EAAG0iB,YAIPA,SAAU,KACRlxB,SAASa,gBAAgBC,UAAU9D,IAAI,kBACvCgD,SAASa,gBAAgBC,UAAU9D,IAAI,yBACvCyzB,EAAQhgB,aAAa,gBAAiB,QACtC8f,EAAkB7B,IAGpBuC,UAAW,IAAgB,IAAf,OAAEtgB,GAAa,EAEtBA,EAAOc,QAAQ,4BACfd,EAAOc,QAAQ,4BAA+Bd,EAAOc,QAAQ,uBAE9DzR,SAASa,gBAAgBC,UAAUC,OAAO,kBAC1C0vB,EAAQhgB,aAAa,gBAAiB,SAEtCjC,EAAG6iB,YACHb,EAAiB9B,GAEjB5iB,YAAW,KACT9L,SAASa,gBAAgBC,UAAUC,OAAO,2BACzC,OAIPqwB,aAAc,IAAgB,IAAf,OAAEzgB,GAAa,EAC5B,MAAMV,EAAOU,EAAOc,QAAQ,gBAAgBvQ,cAAc,qBAC1DggB,EAAM6P,UAAUtwB,KAAKwP,GACrBA,EAAKnP,UAAU9D,IAAI,aACnBwR,EAAG+iB,cAGLJ,aAAc,KACCjQ,EAAM6P,UAAUvU,MACxB1b,UAAUC,OAAO,aACtByN,EAAG+iB,cAGLF,UAAW,KACT,MAAMG,EAAmBtQ,EAAM6P,UAE/B7P,EAAM6P,UAAY,IAElBrP,EAAAA,EAAAA,IAAe,KACb8P,EAAiB/vB,SAASC,GAAOA,EAAGZ,UAAUC,OAAO,eACrDyN,EAAG+iB,eACF,MAGLA,WAAY,KACV,MAAME,EAAYvQ,EAAM6P,UAAUzuB,OAClCouB,EAAQvvB,MAAM6X,UAAd,uBAAsD,IAAbyY,EAAzC,YAEAjjB,EAAGkjB,kBACHljB,EAAGmjB,eAA6B,IAAdF,GAClBjjB,EAAGojB,gBAA8B,IAAdH,IAGrBG,gBAAiB,WAAkB,IAAjB/N,EAAiB,wDAC7BA,EACF8M,EAAa7vB,UAAUC,OAAO,UAE9B4vB,EAAa7vB,UAAU9D,IAAI,WAI/B20B,eAAgB,WAAkB,IAAjB9N,EAAiB,wDAC5BA,GACF+M,EAAQ1vB,cAAc,KAAKJ,UAAUC,OAAO,UAC5C6vB,EAAQ1vB,cAAc,KAAKJ,UAAU9D,IAAI,SACzC4zB,EAAQ1vB,cAAc,UAAUJ,UAAU9D,IAAI,UAC9C4zB,EAAQ1vB,cAAc,UAAUJ,UAAUC,OAAO,iBAEjD6vB,EAAQ1vB,cAAc,KAAKJ,UAAU9D,IAAI,UACzC4zB,EAAQ1vB,cAAc,KAAKJ,UAAUC,OAAO,SAC5C6vB,EAAQ1vB,cAAc,UAAUJ,UAAUC,OAAO,UACjD6vB,EAAQ1vB,cAAc,UAAUJ,UAAU9D,IAAI,iBAIlD00B,gBAAiB,KACf,MAAMG,EAAc3Q,EAAM6P,UAAU7P,EAAM6P,UAAUzuB,OAAS,GAC7D,IAAIwvB,EAAc,KAEdD,IAEFC,EADmBD,EAAYpgB,QAAQ,gBAAgBvQ,cAAc,mBAC5CwV,aAAa,UAGxCoa,EAAevH,YAAcuI,EAC7BjB,EAAU/vB,UAAU4Q,OAAO,iBAA6Bd,IAAhBihB,GACxCnD,EAAI5tB,UAAU4Q,OAAO,iBAA6Bd,IAAhBihB,IAGpCb,aAAc,KACR1vB,OAAO0kB,WAAW,uBAAuB5gB,SAC3CoJ,EAAGyiB,UAAU,CAAEtgB,OAAQ3Q,SAASuJ,SAKtC,GACE5I,IAAK,IAAMX,SAASud,SAASmR,GAC7B9tB,IAAK4N,EAAGqR,yFChJV,MAAMkS,EAAa7Q,IACjBkE,EAAAA,EAAAA,IAAY,cAAelE,EAAO,CAChCmE,QAAS,KAIP2M,EAAShyB,SAASkB,cAAc,gBAEhCsN,EAAK,CACTqR,KAAM,MACJtO,EAAAA,EAAAA,IAAG,QAAS,mBAAoB/C,EAAGsa,cAEnC,MAAMpZ,EAASsiB,EAAO9wB,cAAc,oBAAoBG,aAErB,aAA/B+jB,EAAAA,EAAAA,IAAY,gBACd4M,EAAO7wB,MAAM6X,UAAb,qCAAuDtJ,EAAvD,WACAsiB,EAAOvhB,aAAa,gBAAiB,SACrCshB,EAAU,cAEVC,EAAO7wB,MAAM6X,UAAY,uBACzBgZ,EAAOvhB,aAAa,gBAAiB,QACrCshB,EAAU,WAGRC,EAAOlxB,UAAUyc,SAAS,kBAC5BzR,YAAW,KACoC,SAAzCkmB,EAAOtb,aAAa,mBACtBsb,EAAO7wB,MAAM6X,UAAb,qCAAuDtJ,EAAvD,WACAsiB,EAAOvhB,aAAa,gBAAiB,SACrCshB,EAAU,eAEX,MAIPjJ,aAAc,KACZ,MAAMpZ,EAASsiB,EAAO9wB,cAAc,oBAAoBG,aAEX,UAAzC2wB,EAAOtb,aAAa,kBACtBsb,EAAO7wB,MAAM6X,UAAY,uBACzBgZ,EAAOvhB,aAAa,gBAAiB,QACrCshB,EAAU,YAEVC,EAAO7wB,MAAM6X,UAAb,qCAAuDtJ,EAAvD,WACAsiB,EAAOvhB,aAAa,gBAAiB,SACrCshB,EAAU,eAKhB,GACEpxB,IAAK,IAAMqxB,EACXpxB,IAAK4N,EAAGqR,yFCrDH,MAAMoS,EAAU,SAACziB,GAA4B,IAAnBM,EAAmB,uDAAR,IAC1C,OAAO,IAAIsB,SAAQ,SAAUjI,GAC3BqG,EAAQrO,MAAM4T,OAASvF,EAAQnO,aAAe,KAC9CmO,EAAQrO,MAAM+wB,mBAAd,0BACA1iB,EAAQrO,MAAMgxB,mBAAqBriB,EAAW,KAC9CN,EAAQnO,aACRmO,EAAQrO,MAAM6sB,SAAW,SACzBxe,EAAQrO,MAAM4T,OAAS,EACvBvF,EAAQrO,MAAMixB,WAAa,EAC3B5iB,EAAQrO,MAAMkxB,cAAgB,EAC9B7iB,EAAQrO,MAAMmxB,UAAY,EAC1B9iB,EAAQrO,MAAMoxB,aAAe,GAE7B7Q,EAAAA,EAAAA,IAAe,KACblS,EAAQrO,MAAMgqB,QAAU,OACxB3b,EAAQrO,MAAMqxB,eAAe,UAC7BhjB,EAAQrO,MAAMqxB,eAAe,eAC7BhjB,EAAQrO,MAAMqxB,eAAe,kBAC7BhjB,EAAQrO,MAAMqxB,eAAe,cAC7BhjB,EAAQrO,MAAMqxB,eAAe,iBAC7BhjB,EAAQrO,MAAMqxB,eAAe,YAC7BhjB,EAAQrO,MAAMqxB,eAAe,uBAC7BhjB,EAAQrO,MAAMqxB,eAAe,uBAC7BrpB,GAAQ,KACP2G,OAIM2iB,EAAY,SAACjjB,GAA4B,IAAnBM,EAAmB,uDAAR,IAC5C,OAAO,IAAIsB,SAAQ,SAAUjI,GAC3BqG,EAAQrO,MAAMqxB,eAAe,WAC7B,IAAIrH,EAAU7pB,OAAOoW,iBAAiBlI,GAAS2b,QAE/B,SAAZA,IAAoBA,EAAU,SAElC3b,EAAQrO,MAAMgqB,QAAUA,EACxB,IAAIpW,EAASvF,EAAQnO,aACrBmO,EAAQrO,MAAM6sB,SAAW,SACzBxe,EAAQrO,MAAM4T,OAAS,EACvBvF,EAAQrO,MAAMixB,WAAa,EAC3B5iB,EAAQrO,MAAMkxB,cAAgB,EAC9B7iB,EAAQrO,MAAMmxB,UAAY,EAC1B9iB,EAAQrO,MAAMoxB,aAAe,EAC7B/iB,EAAQnO,aACRmO,EAAQrO,MAAM+wB,mBAAd,0BACA1iB,EAAQrO,MAAMgxB,mBAAqBriB,EAAW,KAC9CN,EAAQrO,MAAM4T,OAASA,EAAS,KAChCvF,EAAQrO,MAAMqxB,eAAe,eAC7BhjB,EAAQrO,MAAMqxB,eAAe,kBAC7BhjB,EAAQrO,MAAMqxB,eAAe,cAC7BhjB,EAAQrO,MAAMqxB,eAAe,kBAE7B9Q,EAAAA,EAAAA,IAAe,KACblS,EAAQrO,MAAMqxB,eAAe,UAC7BhjB,EAAQrO,MAAMqxB,eAAe,YAC7BhjB,EAAQrO,MAAMqxB,eAAe,uBAC7BhjB,EAAQrO,MAAMqxB,eAAe,uBAC7BrpB,GAAQ,KACP2G,OAIM4iB,EAAc,SAAC/hB,GAA2B,IAAnBb,EAAmB,uDAAR,IAC7C,MAAgD,SAA5CxO,OAAOoW,iBAAiB/G,GAAQwa,QAC3BsH,EAAU9hB,EAAQb,GAElBmiB,EAAQthB,EAAQb,ICjErBtB,EAAK,CACTqR,KAAM,MACJtO,EAAAA,EAAAA,IAAG,QAAS,sBAAuB/C,EAAGsa,eACtCvX,EAAAA,EAAAA,IAAG,QAAS,sBAAuB/C,EAAGsa,cAEtCta,EAAGmkB,uBAGL7J,aAAetX,IACb,GAAe,UAAXA,EAAE1G,MAAkC,KAAd0G,EAAEohB,QAC1B,OAGF,MAAMnE,EAAUjd,EAAEb,OAAOc,QAAQ,uBAEjC,IAAKgd,EACH,OAGF,MAAM9d,EAAS3Q,SAASklB,eAAeuJ,EAAQ/X,aAAa,kBAE5D,IAAK/F,EACH,OAGF,MAAMkiB,EAAgB/yB,MAAM8C,KAC1B5C,SAASwB,iBAAT,6CAAgEitB,EAAQ/X,aAAa,iBAArF,QACA3E,QAAQtV,GAAMA,IAAMgyB,IAEtB,GAA8C,UAA1CA,EAAQ/X,aAAa,iBAA8B,CACrDgc,EAAY/hB,GACZ8d,EAAQhe,aAAa,gBAAiB,QACtCoiB,EAAcpxB,SAAShF,GAAMA,EAAEgU,aAAa,gBAAiB,UAE7D,MAAMqiB,EAASrE,EAAQhd,QAAQ,8BAE3BqhB,EACFA,EAAOhyB,UAAU9D,IAAI,cAErByxB,EAAQ3N,WAAWhgB,UAAU9D,IAAI,aACjC61B,EAAcpxB,SAAShF,GAAMA,EAAEqkB,WAAWhgB,UAAU9D,IAAI,oBAErD,CACL01B,EAAY/hB,GACZ8d,EAAQhe,aAAa,gBAAiB,SACtCoiB,EAAcpxB,SAAShF,GAAMA,EAAEgU,aAAa,gBAAiB,WAE7D,MAAMqiB,EAASrE,EAAQhd,QAAQ,8BAE3BqhB,EACFA,EAAOhyB,UAAUC,OAAO,cAExB0tB,EAAQ3N,WAAWhgB,UAAUC,OAAO,aACpC8xB,EAAcpxB,SAAShF,GAAMA,EAAEqkB,WAAWhgB,UAAUC,OAAO,kBAKjE4xB,oBAAqB,KACnB3yB,SAASwB,iBAAiB,sCAAsCC,SAASC,IACvE,MAAM+sB,EAAU/sB,EAAG+P,QAAQ,uBACrBd,EAAS3Q,SAASklB,eAAeuJ,EAAQ/X,aAAa,kBAExD+X,GAAW9d,IACb8d,EAAQhe,aAAa,gBAAiB,QACtCE,EAAO7P,UAAUC,OAAO,gBAMhC,GACEJ,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,8EC1EV,MAAMa,EAAQ1gB,SAASklB,eAAe,iBAChC6N,EAAUzxB,OAAO4O,SAAS8iB,KAE1BxkB,EAAK,CACTqR,KAAM,MACJtO,EAAAA,EAAAA,IAAG,QAAS,IAAK/C,EAAGyR,aACpB1O,EAAAA,EAAAA,IAAG,QAAS,sBAAuB/C,EAAG0R,cACtC3O,EAAAA,EAAAA,IAAG,QAAS,oBAAqB/C,EAAG0R,cAGtCD,WAAazO,IACX,MAAMyhB,EAASzhB,EAAEb,OAAOc,QAAQ,KAC1ByhB,EAAchmB,KAAK8F,MAAM0N,EAAMzP,QAAQxF,MAAM0nB,cAAgB,GAEnE,IAAIC,GAAa,EAoCjB,GAlCAF,EAAYzxB,SAAS4F,KACe,IAA9B4rB,EAAO7M,KAAKvP,QAAQxP,KACtB+rB,GAAa,MAIbH,EAAOnyB,UAAUyc,SAAS,sBAC5B6V,GAAa,GAGXH,EAAOhiB,QAAQyP,OAAkC,UAAzBuS,EAAOhiB,QAAQyP,QACzC0S,GAAa,GAGXH,EAAOhiB,QAAQoiB,YACjBD,GAAa,GAGXH,EAAOhiB,QAAQmO,SACjBgU,GAAa,IAGqB,IAAhCH,EAAO7M,KAAKvP,QAAQ,SACtBuc,GAAa,IAGwB,IAAnCH,EAAO7M,KAAKvP,QAAQ,YACtBuc,GAAa,IAGuB,IAAlCH,EAAO7M,KAAKvP,QAAQkc,KACtBK,GAAa,GAGXA,EAAY,CACd5hB,EAAEiT,iBAEF,MAAM6O,EAAc5S,EAAMxf,cAAc,uBAEpC+xB,EAAOtiB,OACT2iB,EAAY3iB,OAASsiB,EAAOtiB,OAE5B2iB,EAAY3iB,OAAS,KAGvB2iB,EAAYlN,KAAO6M,EAAO7M,KAC1B1F,EAAM5f,UAAU9D,IAAI,2BAIxBkjB,YAAa,KACXQ,EAAM5f,UAAUC,OAAO,2BAI3B,GACEJ,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,+ECzEV,MAAM0T,EAAavzB,SAASwB,iBAAiB,qBAEvCgyB,EAAkBlyB,OAAO4O,SAASujB,SAAW,4BAG7CjlB,EAAK,CACTqR,KAAM,KACJrR,EAAGklB,eAEHniB,EAAAA,EAAAA,IAAG,QAAS,oBAAqB/C,EAAGmlB,cAGtCA,YAAcniB,IACZA,EAAEiT,iBAEF,MAAMwO,EAASzhB,EAAEb,OAAOc,QAAQ,qBAC1BhE,EAAMwlB,EAAOhiB,QAAQoiB,UAEvB/xB,OAAOsyB,8BAAgCnmB,IACzCnM,OAAOsyB,6BAA6BC,cAAcZ,GAClD3xB,OAAOsyB,6BAA6BE,OAApC,UACKN,EADL,uCACmD/lB,EADnD,kBAjBc,MAuBlBimB,YAAa,KACX,IAAK1zB,SAASklB,eAAe,wBAAyB,CACpD,IAAI3kB,EAASP,SAASqpB,cAAc,UACpC9oB,EAAOoB,IAAM6xB,EAAkB,gCAC/BjzB,EAAOuK,KAAO,kBACdvK,EAAOkW,GAAK,uBACZzW,SAAS+zB,qBAAqB,QAAQ,GAAGvK,YAAYjpB,GAEvD,IAAKP,SAASklB,eAAe,wBAAyB,CACpD,IAAI8O,EAAMh0B,SAASqpB,cAAc,QACjC2K,EAAIlpB,KAAO,WACXkpB,EAAIC,IAAM,aACVD,EAAI5N,KAAOoN,EAAkB,iCAC7BQ,EAAIvd,GAAK,uBACTzW,SAAS+zB,qBAAqB,QAAQ,GAAGvK,YAAYwK,MAK3D,GACErzB,IAAK,IAAM4yB,EAAWjxB,OACtB1B,IAAK4N,EAAGqR,iECjDV,MAQA,GACElf,IAAK,IAAMX,SAASwB,iBAAiB,qBAAqBc,OAC1D1B,IATM,KACJ,MAAMc,EAAK1B,SAASkB,cAAc,qBAElCQ,EAAGP,MAAMC,YAAY,qBAArB,UAA8CM,EAAGL,aAAjD,0FCDJ6yB,EAAAA,GAAAA,IAAW,CAACC,EAAAA,GAAYC,EAAAA,GAAYC,EAAAA,KAEpC,MAAMC,EAAU,GAEV9lB,EAAK,CACTqR,KAAM,KACJ,MAAM0U,EAAMv0B,SAASwB,iBAAiB,sBACtC+yB,EAAI9yB,SAASC,GAAO8M,EAAGgmB,YAAY9yB,KAE/B6yB,EAAIjyB,SACNhB,OAAOrB,iBAAiB,SAAUuO,EAAGimB,gBAErCjmB,EAAGimB,mBAIPD,YAAc9yB,IACZ,MAAMsS,EAAYtS,EAAGR,cAAc,WAC7BwzB,EAAY1gB,EAAUxS,iBAAiB,iBAAiBc,OAE9D,GAAIoyB,EAAY,EAAG,CACjB,MAAMC,EAAS,IAAIT,EAAAA,GAAOlgB,EAAW,CACnC4gB,cAAe,EACfC,MAAO,IACP/lB,MAAM,EACNgmB,aAAcJ,EACdK,eAAgBzjB,EAAAA,EAChB0jB,WAAY,CACVC,OAAQvzB,EAAGR,cAAc,2BACzBg0B,OAAQxzB,EAAGR,cAAc,4BAE3Bi0B,WAAY,CACVzzB,GAAIA,EAAGR,cAAc,0BACrBk0B,WAAW,GAEbC,YAAa,CACX,IAAK,CACHT,cAAe,EACfU,aAAc,IAEhB,KAAM,CACJC,WAAY,EACZX,cAAe,EACfU,aAAc,KAGlB/jB,GAAI,CACFikB,2BAA6Bb,IAC3B,MAAMc,EAAqBd,EAAOpR,IAC/B9R,QAAQ,sBAAsB,GAC9BvQ,cAAc,mCAEbu0B,IACFA,EAAmBlM,YAAnB,UAAoCoL,EAAOe,UAAY,EAAvD,cAA8DhB,QAMtEC,EAAOgB,WAAaj0B,EACpB4yB,EAAQ7zB,KAAKk0B,KAIjBF,eAAgB,KACdH,EAAQ7yB,SAASkzB,IACf,MAAMiB,EAAWjB,EAAOgB,WAAWz0B,cAAc,wBAEjD,IAAI0zB,EAAgB,EAEhBtzB,OAAO0kB,WAAW,sBAAsB5gB,UAC1CwvB,EAAgB,GAGdtzB,OAAO0kB,WAAW,uBAAuB5gB,UAC3CwvB,EAAgB,GAGdD,EAAOG,cAAgBF,GACzBgB,EAAS90B,UAAU9D,IAAI,UACvB23B,EAAOgB,WAAW70B,UAAU9D,IAAI,sBAChC23B,EAAOkB,SAAU,IAEjBD,EAAS90B,UAAUC,OAAO,UAC1B4zB,EAAOgB,WAAW70B,UAAUC,OAAO,sBACnC4zB,EAAOkB,SAAU,QAMzB,GACEl1B,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,8EC9FV,MA8BA,GACElf,IAAK,KAAM,EACXC,IA/BM,KACJk1B,EAAAA,GAAAA,SAAeC,EAAAA,GAAYC,EAAAA,IAEfh2B,SAASwB,iBAAiB,kBAElCC,SAASC,IACX,MAAMu0B,EAASv0B,EAAGR,cAAc,UAC1Bg1B,EAAMD,EAAOE,WAAW,MACxB1qB,EAAOyB,KAAK8F,MAAMijB,EAAOhlB,QAAQxF,MAEvC,IAAIqqB,EAAAA,GAAMI,EAAK,CACbprB,KAAM,WACNxD,QAAS,CACP8uB,OAAQ,GACRC,OAAQ,OAEV9b,KAAM,CACJ+b,SAAU,CACR,CACE/b,KAAM9O,EAAK8O,KACXgc,gBAAiB9qB,EAAK8qB,0GCpBpCrC,EAAAA,GAAAA,IAAW,CAACC,EAAAA,GAAYC,EAAAA,GAAYC,EAAAA,KAEpC,MAAMC,EAAU,GAEV9lB,EAAK,CACTqR,KAAM,KACJ,MAAM0U,EAAMv0B,SAASwB,iBAAiB,iBACtC+yB,EAAI9yB,SAASC,GAAO8M,EAAGgmB,YAAY9yB,KAE/B6yB,EAAIjyB,QACNhB,OAAOrB,iBAAiB,SAAUuO,EAAGimB,iBAIzCD,YAAc9yB,IACZ,MAAMsS,EAAYtS,EAAGR,cAAc,WAC7BwzB,EAAY1gB,EAAUxS,iBAAiB,iBAAiBc,OAE9D,GAAIoyB,EAAY,EAAG,CACjB,MAAMC,EAAS,IAAIT,EAAAA,GAAOlgB,EAAW,CACnC4gB,cAAe,EACfU,aAAc,GACdT,MAAO,IACP/lB,KAAM4lB,GAAa,EACnBI,aAAcJ,EACdK,eAAgBzjB,EAAAA,EAChB0jB,WAAY,CACVC,OAAQvzB,EAAGR,cAAc,sBACzBg0B,OAAQxzB,EAAGR,cAAc,uBAE3Bi0B,WAAY,CACVzzB,GAAIA,EAAGR,cAAc,qBACrBk0B,WAAW,GAEbC,YAAa,CACX,IAAK,CACHP,aAAcJ,EACd8B,0BAA0B,EAC1B5B,cAAe,IAGnBrjB,GAAI,CACFklB,UAAW,KACT3qB,WAAW0C,EAAGimB,eAAgB,SAKpCE,EAAOgB,WAAaj0B,EACpB4yB,EAAQ7zB,KAAKk0B,KAIjBF,eAAgB,KACdH,EAAQ7yB,SAASkzB,IACf,MAAMQ,EAAaR,EAAOgB,WAAWz0B,cAAc,qBAC7C00B,EAAWjB,EAAOgB,WAAWz0B,cAAc,mBAEjD,IAAI0zB,EAAgB,EAEhBtzB,OAAO0kB,WAAW,sBAAsB5gB,UAC1CwvB,EAAgB,GAGdD,EAAOG,cAAgBF,GAAkBD,EAAO+B,aAAe/B,EAAOgC,OACxExB,EAAWr0B,UAAU9D,IAAI,aACzB44B,EAAS90B,UAAU9D,IAAI,eAEvBm4B,EAAWr0B,UAAUC,OAAO,aAC5B60B,EAAS90B,UAAUC,OAAO,mBAMlC,GACEJ,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,uFC7EVqU,EAAAA,GAAAA,IAAW,CAACC,EAAAA,GAAYC,EAAAA,GAAYC,EAAAA,KAEpC,MAAMC,EAAU,GAEV9lB,EAAK,CACTqR,KAAM,KACJ,MAAM0U,EAAMv0B,SAASwB,iBAAiB,yBACtC+yB,EAAI9yB,SAASC,GAAO8M,EAAGgmB,YAAY9yB,KAE/B6yB,EAAIjyB,QACNhB,OAAOrB,iBAAiB,SAAUuO,EAAGimB,iBAIzCD,YAAc9yB,IACZ,MAAMsS,EAAYtS,EAAGR,cAAc,WAC7BwzB,EAAY1gB,EAAUxS,iBAAiB,iBAAiBc,OAE9D,GAAIoyB,EAAY,EAAG,CACjB,MAAMC,EAAS,IAAIT,EAAAA,GAAOlgB,EAAW,CACnC4gB,cAAe,EACfU,aAAc,GACdT,MAAO,IACP/lB,MAAM,EACNgmB,aAAcJ,EACdK,eAAgBzjB,EAAAA,EAChB0jB,WAAY,CACVC,OAAQvzB,EAAGR,cAAc,wBACzBg0B,OAAQxzB,EAAGR,cAAc,yBAE3Bi0B,WAAY,CACVzzB,GAAIA,EAAGR,cAAc,uBACrB4J,KAAM,YAERuqB,YAAa,CACX,IAAK,CACHT,cAAe,GAEjB,KAAM,CACJA,cAAe,GAEjB,KAAM,CACJA,cAAe,EACfU,aAAc,KAGlB/jB,GAAI,CACFklB,UAAW,KACT3qB,WAAW0C,EAAGimB,eAAgB,SAKpCE,EAAOgB,WAAaj0B,EACpB4yB,EAAQ7zB,KAAKk0B,KAIjBF,eAAgB,KACdH,EAAQ7yB,SAASkzB,IACf,MAAMiB,EAAWjB,EAAOgB,WAAWz0B,cAAc,qBAEjD,IAAI0zB,EAAgB,EAEhBtzB,OAAO0kB,WAAW,sBAAsB5gB,UAC1CwvB,EAAgB,GAGdtzB,OAAO0kB,WAAW,uBAAuB5gB,UAC3CwvB,EAAgB,GAGdD,EAAOG,cAAgBF,EACzBgB,EAAS90B,UAAU9D,IAAI,UAEvB44B,EAAS90B,UAAUC,OAAO,eAMlC,GACEJ,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,uFCnFVqU,EAAAA,GAAAA,IAAW,CAACC,EAAAA,GAAYC,EAAAA,GAAYC,EAAAA,KAEpC,MAAMC,EAAU,GAEV9lB,EAAK,CACTqR,KAAM,KACJ,MAAM0U,EAAMv0B,SAASwB,iBAAiB,mBACtC+yB,EAAI9yB,SAASC,GAAO8M,EAAGgmB,YAAY9yB,KAE/B6yB,EAAIjyB,SACNhB,OAAOrB,iBAAiB,SAAUuO,EAAGimB,gBAErCjmB,EAAGimB,mBAIPD,YAAc9yB,IACZ,MAAMsS,EAAYtS,EAAGR,cAAc,WAC7BwzB,EAAY1gB,EAAUxS,iBAAiB,iBAAiBc,OACxDs0B,EAAmC,MAAxBl1B,EAAGuP,QAAQ2lB,SAE5B,GAAIlC,EAAY,EAAG,CACjB,MAAMC,EAAS,IAAIT,EAAAA,GAAOlgB,EAAW,CACnC4gB,cAAe,EACfC,MAAO,IACP+B,SAAUA,EACV9nB,MAAM,EACNgmB,aAAcJ,EACdK,eAAgBzjB,EAAAA,EAChB0jB,WAAY,CACVC,OAAQvzB,EAAGR,cAAc,wBACzBg0B,OAAQxzB,EAAGR,cAAc,yBAE3Bi0B,WAAY,CACVzzB,GAAIA,EAAGR,cAAc,uBACrBk0B,WAAW,GAEb7jB,GAAI,CACFikB,2BAA6Bb,IAC3B,MAAMc,EAAqBd,EAAOpR,IAC/B9R,QAAQ,mBAAmB,GAC3BvQ,cAAc,gCAEbu0B,IACFA,EAAmBlM,YAAnB,UAAoCoL,EAAOe,UAAY,EAAvD,cAA8DhB,QAMtEC,EAAOgB,WAAaj0B,EACpB4yB,EAAQ7zB,KAAKk0B,KAIjBF,eAAgB,KACdH,EAAQ7yB,SAASkzB,IACf,MAAMiB,EAAWjB,EAAOgB,WAAWz0B,cAAc,qBAI7CyzB,EAAOG,cAFS,GAGlBc,EAAS90B,UAAU9D,IAAI,UACvB23B,EAAOgB,WAAW70B,UAAU9D,IAAI,sBAChC23B,EAAOkB,SAAU,IAEjBD,EAAS90B,UAAUC,OAAO,UAC1B4zB,EAAOgB,WAAW70B,UAAUC,OAAO,sBACnC4zB,EAAOkB,SAAU,QAMzB,GACEl1B,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,8EC7EVqU,EAAAA,GAAAA,IAAW,CAACC,EAAAA,GAAYC,EAAAA,GAAYyC,EAAAA,GAAYxC,EAAAA,KAEhD,MAAM7lB,EAAK,CACTqR,KAAM,KACQ7f,SAASwB,iBAAiB,wBAClCC,SAASC,GAAO8M,EAAGgmB,YAAY9yB,MAGrC8yB,YAAc9yB,IACZ,MAAMsS,EAAYtS,EAAGR,cAAc,WAC7BwzB,EAAY1gB,EAAUxS,iBAAiB,iBAAiBc,OAE1DoyB,EAAY,GACd,IAAIR,EAAAA,GAAOlgB,EAAW,CACpB4gB,cAAe,EACfC,MAAO,IACPiC,OAAQ,OACRhoB,MAAM,EACNgmB,aAAcJ,EACdM,WAAY,CACVC,OAAQvzB,EAAGR,cAAc,sBACzBg0B,OAAQxzB,EAAGR,cAAc,uBAE3Bi0B,WAAY,CACVzzB,GAAIA,EAAGR,cAAc,qBACrBk0B,WAAW,GAEb7jB,GAAI,CACFikB,2BAA6Bb,IAC3B,MAAMc,EAAqBd,EAAOpR,IAC/B9R,QAAQ,wBAAwB,GAChCvQ,cAAc,8BAEbu0B,IACFA,EAAmBlM,YAAnB,UAAoCoL,EAAOe,UAAY,EAAvD,cAA8DhB,UAS5E,GACE/zB,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,8EC7CVqU,EAAAA,GAAAA,IAAW,CAACC,EAAAA,GAAYC,EAAAA,GAAYyC,EAAAA,GAAYxC,EAAAA,KAEhD,MAAM7lB,EAAK,CACTqR,KAAM,KACJ7f,SAASwB,iBAAiB,wBAAwBC,SAASC,GAAO8M,EAAGgmB,YAAY9yB,MAGnF8yB,YAAc9yB,IACZ,MAAMsS,EAAYtS,EAAGR,cAAc,WAEnC,IAAK8S,EACH,OAGF,MAAM0gB,EAAY1gB,EAAUxS,iBAAiB,iBAAiBc,OAExDsH,EAAO,CACXgrB,cAAe,EACfC,MAAO,IACP/lB,MAAM,EACNgoB,OAAQ,OACRC,WAAY,CACVC,WAAW,GAEbhC,WAAY,CACVC,OAAQjhB,EAAU9S,cAAc,6BAChCg0B,OAAQlhB,EAAU9S,cAAc,8BAElCi0B,WAAY,CACVzzB,GAAIsS,EAAU9S,cAAc,4BAC5Bk0B,WAAW,IAIXV,EAAY,GACd,IAAIR,EAAAA,GAAOlgB,EAAWpK,KAK5B,GACEjJ,IAAK,KAAM,EACXC,IAAK4N,EAAGqR,0HCzCV,MAAMoX,EAAkBC,EAAAA,gBAClBC,EAAqBD,EAAAA,gBAE3B,SAASE,EAAWlW,EAAOwJ,GACzB,OAAQA,EAAO5f,MACb,IAAK,YACH,MAAO,IACFoW,EACHmW,OAAQ3M,EAAO4M,SAGnB,IAAK,WAAY,CACf,MAAMD,EAAS,IAAInW,EAAMmW,QACnB1L,EAAQ0L,EAAO7wB,MAAM/J,GAAMA,EAAEuI,OAAS0lB,EAAO4M,QAAQtyB,OAO3D,OALI2mB,IACFA,EAAMhlB,MAAQ+jB,EAAO4M,QAAQ3wB,MAC7BglB,EAAM4L,UAAW,GAGZ,IACFrW,EACHmW,OAAAA,GAGJ,IAAK,YACH,MAAO,IACFnW,EACHqN,OAAQiJ,GAAAA,CAAM,GAAItW,EAAMqN,OAAQ7D,EAAO4M,UAG3C,IAAK,WAAY,CACf,MAAM/I,EAAS,IAAKrN,EAAMqN,QAG1B,OAFAA,EAAO7D,EAAO4M,QAAQtyB,MAAQ0lB,EAAO4M,QAAQ3wB,MAEtC,IACFua,EACHqN,OAAAA,GAGJ,QACE,MAAM,IAAI3pB,MAAJ,iCAAoC8lB,EAAO5f,QAMvD,SAAS2sB,EAAT,GAAmC,IAAd,SAAEC,GAAY,EACjC,MAAOxW,EAAOyW,GAAYT,EAAAA,WAAiBE,EAAY,CACrDC,OAAQ,GACR9I,OAAQ,KAGV,OACE,SAAC0I,EAAgBW,SAAjB,CAA0BjxB,MAAOua,EAAjC,UACE,SAACiW,EAAmBS,SAApB,CAA6BjxB,MAAOgxB,EAApC,SAA+CD,MAKrD,SAASG,IACP,MAAM/lB,EAAUolB,EAAAA,WAAiBD,GAEjC,QAAgBrmB,IAAZkB,EACF,MAAM,IAAIlN,MAAM,iDAGlB,OAAOkN,EAGT,SAASgmB,IACP,MAAMhmB,EAAUolB,EAAAA,WAAiBC,GAEjC,QAAgBvmB,IAAZkB,EACF,MAAM,IAAIlN,MAAM,oDAGlB,OAAOkN,wGCzDT,SAASimB,IACP,MAAOV,EAAQW,IAAaC,EAAAA,EAAAA,UApBrB,CACL,CACEjzB,KAAM,cACNkzB,SAAU,MACVvxB,MAAO,IAET,CACE3B,KAAM,eACNkzB,SAAU,QACVvxB,MAAO,IAET,CACE3B,KAAM,YACNkzB,SAAU,QACVvxB,MAAO,OAOJwxB,EAAgBC,IAAqBH,EAAAA,EAAAA,UAAS,KAC9CI,EAAWC,IAAgBL,EAAAA,EAAAA,WAAS,IAE3CM,EAAAA,EAAAA,YAAU,KACR,MAAMC,EAAmE,IAAhDnB,EAAOtlB,QAAQtV,GAAkB,KAAZA,EAAEkK,QAAcrE,OAC9Dg2B,EAAaE,KACZ,CAACnB,EAAQiB,IAEZ,MAAMG,EAAgBjnB,IACpB,MAAMknB,EAAY,IAAIrB,GACRqB,EAAUlyB,MAAM/J,GAAMA,EAAEuI,OAASwM,EAAEb,OAAO3L,OAClD2B,MAAQ6K,EAAEb,OAAOhK,MACvBqxB,EAAUU,GACVN,EAAkB,KAsBpB,OACE,kBACEO,UAAU,2DACVC,SAtBkBpnB,IAKpB,GAJAA,EAAEiT,kBAEeoU,EAAAA,EAAAA,IAAexB,GAEnByB,QAAS,CACpB,MAAMvK,GAASwK,EAAAA,EAAAA,IAAuB,GAAI1B,GACpCc,GAAiBa,EAAAA,EAAAA,IAAkBzK,EAAO0K,UAAW1K,EAAO2K,aAAc3K,EAAO4K,aAEvFf,GAAkBgB,EAAAA,EAAAA,IAAWjB,MAc7BkB,QAViB7nB,IACnBA,EAAEiT,iBACFuT,EApDK,CACL,CACEhzB,KAAM,cACNkzB,SAAU,MACVvxB,MAAO,IAET,CACE3B,KAAM,eACNkzB,SAAU,QACVvxB,MAAO,IAET,CACE3B,KAAM,YACNkzB,SAAU,QACVvxB,MAAO,MAuCTyxB,EAAkB,KAIlB,UAKGf,EAAO32B,KAAKirB,IACX,gBAAsBgN,UAAU,iBAAhC,UACE,kBACE7tB,KAAK,SACLwuB,UAAU,UACVt0B,KAAM2mB,EAAM3mB,KACZ2zB,UAAU,sEACVhyB,MAAOglB,EAAMhlB,MACb4yB,SAAUd,KAPJ9M,EAAM3mB,SAYlB,gBAAK2zB,UAAU,iBAAf,UACE,iBAAMA,UAAU,mBAAhB,SAAoCR,OAGtC,iBAAKQ,UAAU,mIAAf,WACE,mBACE7tB,KAAK,SACLmgB,UAAWoN,EACXM,UAAS,mDAA8CN,EAAY,GAAK,cAH1E,sBAOA,mBAAQvtB,KAAK,QAAQ6tB,UAAU,8BAA/B,yBA2BR,SACE3zB,KAAM,wBACNw0B,KAAM,CACJ,CACEx0B,KAAM,YACNy0B,UAxBN,WACE,OACE,iBAAKd,UAAU,oDAAf,WACE,iBAAKA,UAAU,2FAAf,WACE,gBAAKA,UAAU,uCAAf,iCACA,gBAAKA,UAAU,uCAAf,4BACA,gBAAKA,UAAU,uCAAf,wBACA,gBAAKA,UAAU,uCAAf,8BACA,gBAAKA,UAAU,+DAAf,+CAIF,SAACZ,EAAD,KACA,SAACA,EAAD,KACA,SAACA,EAAD,sLCjDN,SACE/yB,KAAM,0BACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UA5DN,WACE,OAAO,SAAC,IAAD,KA4DHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAC/CztB,EAAO,CACXgwB,YAAaD,EAAcC,YAC3BC,WAAYF,EAAcE,WAC1BC,aAAcH,EAAcG,aAC5BZ,aAAcS,EAAcT,aAC5Ba,UAAWJ,EAAcI,WAErBC,GAAaC,EAAAA,EAAAA,IAAcrwB,GAEjC+tB,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,aAAc2B,MAAOqzB,KAKrE,OAFArC,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAlFN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,SAAC,IAAD,WACE,SAAC,IAAD,WACE,iBAAKc,UAAU,mBAAf,WACE,kMAIA,eAAGA,UAAU,YAAb,6BACkBS,EAAAA,EAAAA,IAAW7K,EAAOyL,WAAWF,cAD/C,QACkEI,EAAAA,EAAAA,IAAO3L,EAAOyL,WAAWJ,aAD3F,wBAEmBrL,EAAOyL,WAAWD,UAFrC,WAEuDG,EAAAA,EAAAA,IAAO3L,EAAOyL,WAAWH,YAFhF,MAEgG,KAC7FM,EAAAA,EAAAA,IAAa5L,EAAOyL,WAAWd,cAHlC,yDAGuG,KACpGE,EAAAA,EAAAA,IAAW7K,EAAOyL,WAAWI,aAJhC,QAMA,8IAIA,gJAIA,oJA2DN,CACEp1B,KAAM,QACNy0B,UAnDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,gBAAKc,UAAU,iBAAf,UACE,SAAC,KAAD,CAAiBqB,WAAYzL,EAAOyL,WAAYK,MAAM,mCAgDxD,CACEr1B,KAAM,SACNy0B,UA7CN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAAyBmC,WAAYzL,EAAOyL,gBA6CnD3C,OAAQ,CACN,CACEvsB,KAAM,OACN9F,KAAM,cACNs1B,MAAO,eACP3zB,OAAOuL,EAAAA,EAAAA,GAAO,IAAIvD,KAAQ,eAE5B,CACE7D,KAAM,OACN9F,KAAM,aACNs1B,MAAO,cACP3zB,OAAOuL,EAAAA,EAAAA,IAAOqoB,EAAAA,EAAAA,GAAS,IAAI5rB,KAAQ,GAAI,eAEzC,CACE7D,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,eACNs1B,MAAO,gBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,iBACP3zB,MAAO,KAET,CACEmE,KAAM,WACN9F,KAAM,YACNs1B,MAAO,cACP3zB,MAAO,UACPW,QAAS,CACP,CAAEtC,KAAM,SAAU2B,MAAO,YACzB,CAAE3B,KAAM,cAAe2B,MAAO,iBAC9B,CAAE3B,KAAM,YAAa2B,MAAO,aAC5B,CAAE3B,KAAM,UAAW2B,MAAO,WAC1B,CAAE3B,KAAM,SAAU2B,MAAO,UACzB,CAAE3B,KAAM,QAAS2B,MAAO,8KCxEhC,SACE3B,KAAM,6CACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UA9DN,WACE,OAAO,SAAC,IAAD,KA8DHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAC/CoD,GAAYC,EAAAA,EAAAA,IAChBf,EAAcS,YACdT,EAAcgB,aACdhB,EAAcT,aACdS,EAAcG,cAGVc,EAAQ,IAAIjsB,KAGZ/E,EAAO,CACXgwB,YAAagB,EACbf,YAJagB,EAAAA,EAAAA,GAAUD,EAAOH,GAK9BX,aAAcH,EAAcG,aAC5Ba,aAAchB,EAAcgB,aAC5BzB,aAAcS,EAAcT,aAC5Ba,UAAW,UACXe,mBAAmB,GAGfd,GAAaC,EAAAA,EAAAA,IAAcrwB,GAEjC+tB,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,aAAc2B,MAAOqzB,KAKrE,OAFArC,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAjGN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,SAAC,IAAD,WACE,SAAC,IAAD,WACE,iBAAKc,UAAU,mBAAf,WACE,scAMA,eAAGA,UAAU,YAAb,0BACeS,EAAAA,EAAAA,IAAW7K,EAAOyL,WAAWW,cAD5C,IAC4DpM,EAAOyL,WAAWD,UAD9E,SAC+F,KAC5FG,EAAAA,EAAAA,IAAO3L,EAAOyL,WAAWH,YAF5B,QAE6CM,EAAAA,EAAAA,IAAa5L,EAAOyL,WAAWd,cAF5E,4CAGuBE,EAAAA,EAAAA,IAAW7K,EAAOuL,cAHzC,gDAGqG,KAClGV,EAAAA,EAAAA,IAAW7K,EAAO6L,aAJrB,QAMA,8IAIA,+KAIA,oJAwEN,CACEp1B,KAAM,QACNy0B,UAhEN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,gBAAKc,UAAU,iBAAf,UACE,SAAC,KAAD,CAAcqB,WAAYzL,EAAOyL,WAAYK,MAAM,qBA6DrD,CACEr1B,KAAM,SACNy0B,UA1DN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAAyBmC,WAAYzL,EAAOyL,gBA0DnD3C,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,cACNs1B,MAAO,+BACP3zB,MAAO,MAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,eACNs1B,MAAO,sBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,eACNs1B,MAAO,kBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,kCACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,UACNs1B,MAAO,uBACP3zB,MAAO,6JC/Fb,SACE3B,KAAM,oDACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UA/DN,WACE,OAAO,SAAC,IAAD,KA+DHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAC/C8B,GAAc4B,EAAAA,EAAAA,IAClBpB,EAAcqB,QACdrB,EAAcxB,eACdwB,EAAcT,cAEV+B,GAAeC,EAAAA,EAAAA,IACnBvB,EAAcqB,QACdrB,EAAcT,aACdC,EACAQ,EAAcxB,gBAEhBR,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,cAAe2B,MAAOwyB,KACpExB,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KAKvE,OAFAtD,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAxFN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,UAAC,IAAD,YACE,UAAC,IAAD,YACE,mDACA,0BAAMuB,EAAAA,EAAAA,IAAW7K,EAAOyM,eAG1B,UAAC,IAAD,YACE,sDACA,0BAAM5B,EAAAA,EAAAA,IAAW7K,EAAO4J,sBAG1B,UAAC,IAAD,CAAcQ,UAAU,YAAxB,WACE,yDACA,yBAAMpK,EAAO4K,kBAGf,UAAC,IAAD,YACE,6CACA,0BAAMgB,EAAAA,EAAAA,IAAa5L,EAAO2K,oBAG5B,UAAC,IAAD,YACE,8CACA,0BAAME,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaE,oBAGvC,UAAC,IAAD,YACE,8CACA,0BAAM/B,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaG,yBA0DzC,CACEp2B,KAAM,QACNy0B,UAtDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,gBAAKc,UAAU,iBAAf,UACE,SAAC,KAAD,CAAsBsC,aAAc1M,EAAO0M,aAAcZ,MAAM,+BAmDjE,CACEr1B,KAAM,SACNy0B,UAhDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAA2BoD,aAAc1M,EAAO0M,kBAgDvD5D,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,UACNs1B,MAAO,sBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,iBACNs1B,MAAO,yBACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,gBACP3zB,MAAO,6JChEb,SACE3B,KAAM,4CACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UAnEN,WACE,OAAO,SAAC,IAAD,KAmEHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAE/C8B,GAAc4B,EAAAA,EAAAA,IAClBpB,EAAcV,UACdU,EAAcxB,eACdwB,EAAcT,cAGV+B,GAAeC,EAAAA,EAAAA,IACnBvB,EAAcV,UACdU,EAAcT,aACdC,EACAQ,EAAcxB,gBAEhBR,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,cAAe2B,MAAOwyB,KACpExB,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KAKvE,OAFAtD,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UA9FN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,UAAC,IAAD,YACE,UAAC,IAAD,YACE,gDACA,0BAAMuB,EAAAA,EAAAA,IAAW7K,EAAO0K,iBAG1B,UAAC,IAAD,YACE,8CACA,0BAAMG,EAAAA,EAAAA,IAAW7K,EAAO4J,sBAG1B,UAAC,IAAD,CAAcQ,UAAU,YAAxB,WACE,0DACA,yBAAMpK,EAAO4K,kBAGf,UAAC,IAAD,YACE,6CACA,0BAAMgB,EAAAA,EAAAA,IAAa5L,EAAO2K,oBAG5B,UAAC,IAAD,YACE,8CACA,0BAAME,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaE,oBAGvC,UAAC,IAAD,YACE,8CACA,0BAAM/B,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaG,yBAgEzC,CACEp2B,KAAM,QACNy0B,UA5DN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,iBAAKc,UAAU,iBAAf,WACE,SAAC,KAAD,CACEsC,aAAc1M,EAAO0M,aACrBZ,MAAM,+CAER,SAAC,KAAD,CAAgBY,aAAc1M,EAAO0M,aAAcZ,MAAM,iCAqD3D,CACEr1B,KAAM,SACNy0B,UAlDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAA2BoD,aAAc1M,EAAO0M,kBAkDvD5D,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,YACNs1B,MAAO,mBACP3zB,MAAO,MAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,iBACNs1B,MAAO,yBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,gBACP3zB,MAAO,8JCzEb,SACE3B,KAAM,yBACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UAhEN,WACE,OAAO,SAAC,IAAD,KAgEHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAE/C4B,GAAYoC,EAAAA,EAAAA,IAChB1B,EAAcxB,eACdwB,EAAcT,aACdS,EAAcR,aAGV8B,GAAeC,EAAAA,EAAAA,IAAgBjC,EAAWU,EAAcT,aAAcS,EAAcR,aAC1FxB,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,YAAa2B,MAAOsyB,KAClEtB,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KAKvE,OAFAtD,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAtFN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,UAAC,IAAD,YACE,UAAC,IAAD,CAAcc,UAAU,YAAxB,WACE,8CACA,0BAAMS,EAAAA,EAAAA,IAAW7K,EAAO0K,iBAG1B,UAAC,IAAD,YACE,8CACA,0BAAMG,EAAAA,EAAAA,IAAW7K,EAAO4J,sBAG1B,UAAC,IAAD,YACE,kDACA,yBAAM5J,EAAO4K,kBAGf,UAAC,IAAD,YACE,6CACA,0BAAMgB,EAAAA,EAAAA,IAAa5L,EAAO2K,oBAG5B,UAAC,IAAD,YACE,8CACA,0BAAME,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaE,oBAGvC,UAAC,IAAD,YACE,8CACA,0BAAM/B,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaG,yBAwDzC,CACEp2B,KAAM,QACNy0B,UApDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,iBAAKc,UAAU,iBAAf,WACE,SAAC,KAAD,CAA4BsC,aAAc1M,EAAO0M,aAAcZ,MAAM,4BACrE,SAAC,KAAD,CAAgBY,aAAc1M,EAAO0M,aAAcZ,MAAM,iCAgD3D,CACEr1B,KAAM,SACNy0B,UA7CN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAA2BoD,aAAc1M,EAAO0M,kBA6CvD5D,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,iBACNs1B,MAAO,wCACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,cACNs1B,MAAO,qBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,gBACP3zB,MAAO,kLCtEb,SACE3B,KAAM,+BACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UAhEN,WACE,OAAO,SAAC,IAAD,KAgEHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAC/CiE,EACJ3B,EAAc4B,qBAAuB5B,EAAc6B,sBAAwB7B,EAAc8B,kBACrFxC,GAAYoC,EAAAA,EAAAA,IAAaC,EAAS3B,EAAcT,aAAcS,EAAcR,aAC5E8B,GAAeC,EAAAA,EAAAA,IAAgBjC,EAAWU,EAAcT,aAAcS,EAAcR,aACpFuC,EAAcC,GAAAA,CAAS1C,GAAWj8B,IAAI28B,EAAciC,aAE1DjE,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,UAAW2B,MAAO20B,KAChE3D,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,YAAa2B,MAAOsyB,KAClEtB,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,cAAe2B,MAAO+0B,KACpE/D,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KAKvE,OAFAtD,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAtFN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,UAAC,IAAD,YACE,UAAC,IAAD,YACE,2EACA,gBAAKc,UAAU,YAAf,UAA4BS,EAAAA,EAAAA,IAAW7K,EAAOmN,mBAGhD,SAAC,IAAD,CAAc/C,UAAU,wBAAxB,UACE,gBAAKA,UAAU,qBAAf,sEAGF,UAAC,IAAD,YACE,8CACA,0BAAMS,EAAAA,EAAAA,IAAW7K,EAAO+M,eAG1B,UAAC,IAAD,YACE,yDACA,0BAAMlC,EAAAA,EAAAA,IAAWuC,GAAAA,CAASpN,EAAOiN,uBAAuBx+B,IAAIuxB,EAAOkN,0BAGrE,UAAC,IAAD,CAAc9C,UAAU,YAAxB,WACE,qCACA,0BAAMS,EAAAA,EAAAA,IAAW7K,EAAOgN,4BAG1B,SAAC,IAAD,WACE,4BACE,sCADF,kIA0DJ,CACEv2B,KAAM,QACNy0B,UAnDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,gBAAKc,UAAU,iBAAf,UACE,SAAC,KAAD,CAAsBsC,aAAc1M,EAAO0M,aAAcZ,MAAM,qCAgDjE,CACEr1B,KAAM,SACNy0B,UA7CN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAA2BoD,aAAc1M,EAAO0M,kBA6CvD5D,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,uBACNs1B,MAAO,wCACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,wBACNs1B,MAAO,0BACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,oBACNs1B,MAAO,+CACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,cACNs1B,MAAO,sBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,cACNs1B,MAAO,qBACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,gBACP3zB,MAAO,kLCnFb,SACE3B,KAAM,+BACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UArEN,WACE,OAAO,SAAC,IAAD,KAqEHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAC/CwE,EAAaF,GAAAA,CAAShC,EAAckC,YAAY7+B,IAAI28B,EAAcmC,WAClER,EAAUK,GAAAA,CAAShC,EAAcxB,gBAAgB4D,SAASF,GAC1DG,EAAqBL,GAAAA,CAAS,GAE9B1C,GAAYoC,EAAAA,EAAAA,IAAaC,EAAS3B,EAAcT,aAAcS,EAAcc,WAE5EQ,GAAeC,EAAAA,EAAAA,IAAgBjC,EAAWU,EAAcT,aAAcS,EAAcc,WACpFiB,EAAcC,GAAAA,CAAS1C,GAAWj8B,IAAI28B,EAAciC,aAE1DjE,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,iBAAkB2B,MAAOgzB,EAAcxB,kBACrFR,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,UAAW2B,MAAO20B,KAChE3D,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,qBAAsB2B,MAAOq1B,KAC3ErE,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,cAAe2B,MAAO+0B,KACpE/D,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,aAAc2B,MAAOk1B,KACnElE,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KAKvE,OAFAtD,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAhGN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,UAAC,IAAD,YACE,UAAC,IAAD,CAAcc,UAAU,YAAxB,WACE,kDAAyBS,EAAAA,EAAAA,IAAW7K,EAAO4J,gBAA3C,+BACA,0BAAMiB,EAAAA,EAAAA,IAAW7K,EAAOmN,mBAG1B,SAAC,IAAD,CAAc/C,UAAU,wBAAxB,UACE,gBAAKA,UAAU,qBAAf,sEAGF,UAAC,IAAD,YACE,8CACA,0BAAMS,EAAAA,EAAAA,IAAW7K,EAAO+M,eAG1B,UAAC,IAAD,YACE,8CACA,0BAAMlC,EAAAA,EAAAA,IAAW7K,EAAOyN,0BAG1B,UAAC,IAAD,YACE,sEACA,0BAAM5C,EAAAA,EAAAA,IAAW7K,EAAOsN,kBAG1B,UAAC,IAAD,CAAclD,UAAU,YAAxB,WACE,qDACA,0BAAMS,EAAAA,EAAAA,IAAW7K,EAAO4J,sBAG1B,SAAC,IAAD,WACE,4BACE,sCADF,kIA+DJ,CACEnzB,KAAM,QACNy0B,UAxDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,gBAAKc,UAAU,iBAAf,UACE,SAAC,KAAD,CAA4BsC,aAAc1M,EAAO0M,aAAcZ,MAAM,sCAqDvE,CACEr1B,KAAM,SACNy0B,UAlDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAA2BoD,aAAc1M,EAAO0M,kBAkDvD5D,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,iBACNs1B,MAAO,wCACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,kBACNs1B,MAAO,oBACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,aACNs1B,MAAO,oCACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,YACNs1B,MAAO,oCACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,cACNs1B,MAAO,sBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,YACNs1B,MAAO,qBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,gBACP3zB,MAAO,yKC7Gb,SACE3B,KAAM,wCACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UA7DN,WACE,OAAO,SAAC,IAAD,KA6DHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAE/CuD,EAAQ,IAAIjsB,KAGZ/E,EAAO,CACXgwB,YAAagB,EACbf,YAJaU,EAAAA,EAAAA,GAASK,EAAOjB,EAAcsC,UAK3CnC,aAAcH,EAAcG,aAC5Ba,aAAchB,EAAcgB,aAC5BzB,aAAcS,EAAcT,aAC5Ba,UAAWJ,EAAcI,UACzBkC,SAAUtC,EAAcsC,SACxBnB,mBAAmB,GAGfd,GAAaC,EAAAA,EAAAA,IAAcrwB,GAEjC+tB,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,aAAc2B,MAAOqzB,KAKrE,OAFArC,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UA3FN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,SAAC,IAAD,WACE,SAAC,IAAD,WACE,iBAAKc,UAAU,mBAAf,WACE,6aAMA,eAAGA,UAAU,YAAb,0BACeS,EAAAA,EAAAA,IAAW7K,EAAOoM,cADjC,IACiDpM,EAAOwL,UADxD,QACwExL,EAAO0N,SAD/E,YACkG,KAC/F9B,EAAAA,EAAAA,IAAa5L,EAAOyL,WAAWd,cAFlC,yDAEuG,KACpGE,EAAAA,EAAAA,IAAW7K,EAAOyL,WAAWI,aAHhC,QAKA,8IAIA,+KAIA,oJAmEN,CACEp1B,KAAM,QACNy0B,UA3DN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,gBAAKc,UAAU,iBAAf,UACE,SAAC,KAAD,CAAgBqB,WAAYzL,EAAOyL,WAAYK,MAAM,2BAwDvD,CACEr1B,KAAM,SACNy0B,UArDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAAyBmC,WAAYzL,EAAOyL,WAAYkC,qBAAqB,OAqDpF7E,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,eACNs1B,MAAO,yBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,eACNs1B,MAAO,8CACP3zB,MAAO,KAET,CACEmE,KAAM,WACN9F,KAAM,YACNs1B,MAAO,gCACP3zB,MAAO,UACPW,QAAS,CACP,CAAEtC,KAAM,SAAU2B,MAAO,YACzB,CAAE3B,KAAM,cAAe2B,MAAO,iBAC9B,CAAE3B,KAAM,YAAa2B,MAAO,aAC5B,CAAE3B,KAAM,UAAW2B,MAAO,WAC1B,CAAE3B,KAAM,SAAU2B,MAAO,YAG7B,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,WACNs1B,MAAO,0BACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,kCACP3zB,MAAO,sKCtFb,SACE3B,KAAM,qCACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UA7DN,WACE,OAAO,SAAC,IAAD,KA6DHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAE/CuD,EAAQ,IAAIjsB,KACZwtB,GAAS5B,EAAAA,EAAAA,GAASK,EAAOjB,EAAcsC,UAEvCG,GAAUC,EAAAA,EAAAA,GACd1C,EAAcG,aACdH,EAAcS,YACdT,EAAcsC,SACdtC,EAAcI,UACdJ,EAAcT,cAGVtvB,EAAO,CACXgwB,YAAagB,EACbf,WAAYsC,EACZrC,aAAcH,EAAcG,aAC5Ba,aAAcyB,EACdlD,aAAcS,EAAcT,aAC5Ba,UAAWJ,EAAcI,UACzBkC,SAAUtC,EAAcsC,SACxBnB,mBAAmB,GAGfd,GAAaC,EAAAA,EAAAA,IAAcrwB,GAEjC+tB,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,aAAc2B,MAAOqzB,KAKrE,OAFArC,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAnGN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,SAAC,IAAD,WACE,SAAC,IAAD,WACE,iBAAKc,UAAU,mBAAf,WACE,scAMA,eAAGA,UAAU,YAAb,0BACeS,EAAAA,EAAAA,IAAW7K,EAAOyL,WAAWW,cAD5C,IAC4DpM,EAAOwL,UADnE,QACmFxL,EAAO0N,SAD1F,YAC6G,KAC1G9B,EAAAA,EAAAA,IAAa5L,EAAOyL,WAAWd,cAFlC,yDAEuG,KACpGE,EAAAA,EAAAA,IAAW7K,EAAO6L,aAHrB,QAKA,8IAIA,+KAIA,oJA2EN,CACEp1B,KAAM,QACNy0B,UAnEN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,gBAAKc,UAAU,iBAAf,UACE,SAAC,KAAD,CAAgBqB,WAAYzL,EAAOyL,WAAYK,MAAM,2BAgEvD,CACEr1B,KAAM,SACNy0B,UA7DN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAAyBmC,WAAYzL,EAAOyL,WAAYkC,qBAAqB,OA6DpF7E,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,cACNs1B,MAAO,eACP3zB,MAAO,MAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,eACNs1B,MAAO,8CACP3zB,MAAO,KAET,CACEmE,KAAM,WACN9F,KAAM,YACNs1B,MAAO,gCACP3zB,MAAO,UACPW,QAAS,CACP,CAAEtC,KAAM,SAAU2B,MAAO,YACzB,CAAE3B,KAAM,cAAe2B,MAAO,iBAC9B,CAAE3B,KAAM,YAAa2B,MAAO,aAC5B,CAAE3B,KAAM,UAAW2B,MAAO,WAC1B,CAAE3B,KAAM,SAAU2B,MAAO,YAG7B,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,WACNs1B,MAAO,0BACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,kCACP3zB,MAAO,0LCnGb,SACE3B,KAAM,8BACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UA5DN,WACE,OAAO,SAAC,IAAD,KA4DHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAE/C4E,GADUK,EAAAA,EAAAA,GAAiB,IAAI3tB,KAAKgrB,EAAcE,YAAa,IAAIlrB,KAAKgrB,EAAcC,cACjE,IAErBV,GAAeqD,EAAAA,EAAAA,IACnB5C,EAAcS,YACdT,EAAcG,aACdH,EAAcI,UACdkC,GAGIryB,EAAO,CACXgwB,YAAaD,EAAcC,YAC3BC,WAAYF,EAAcE,WAC1BC,aAAcH,EAAcG,aAC5BZ,aAAcA,EACda,UAAWJ,EAAcI,UACzBe,mBAAmB,GAGfd,GAAaC,EAAAA,EAAAA,IAAcrwB,GAEjC+tB,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,aAAc2B,MAAOqzB,KAKrE,OAFArC,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UA9FN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,SAAC,IAAD,WACE,SAAC,IAAD,WACE,iBAAKc,UAAU,mBAAf,WACE,uJAIA,eAAGA,UAAU,YAAb,6BACkBS,EAAAA,EAAAA,IAAW7K,EAAOuL,cADpC,QACuDI,EAAAA,EAAAA,IAAO3L,EAAOyL,WAAWJ,aADhF,wBAEYrL,EAAOwL,UAFnB,WAEqCG,EAAAA,EAAAA,IAAO3L,EAAOyL,WAAWH,YAF9D,kCAE0G,KACvGM,EAAAA,EAAAA,IAAa5L,EAAOyL,WAAWd,cAHlC,gDAG8F,KAC3FE,EAAAA,EAAAA,IAAW7K,EAAOyL,WAAWI,aAJhC,QAMA,8IAIA,+KAIA,oJAuEN,CACEp1B,KAAM,QACNy0B,UA/DN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,gBAAKc,UAAU,iBAAf,UACE,SAAC,KAAD,CAAiBqB,WAAYzL,EAAOyL,WAAYK,MAAM,mCA4DxD,CACEr1B,KAAM,SACNy0B,UAzDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAAyBmC,WAAYzL,EAAOyL,gBAyDnD3C,OAAQ,CACN,CACEvsB,KAAM,OACN9F,KAAM,cACNs1B,MAAO,eACP3zB,OAAOuL,EAAAA,EAAAA,GAAO,IAAIvD,KAAQ,eAE5B,CACE7D,KAAM,OACN9F,KAAM,aACNs1B,MAAO,cACP3zB,OAAOuL,EAAAA,EAAAA,IAAOqoB,EAAAA,EAAAA,GAAS,IAAI5rB,KAAQ,GAAI,eAEzC,CACE7D,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,eACNs1B,MAAO,gBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,cACNs1B,MAAO,eACP3zB,MAAO,MAET,CACEmE,KAAM,WACN9F,KAAM,YACNs1B,MAAO,cACP3zB,MAAO,UACPW,QAAS,CACP,CAAEtC,KAAM,SAAU2B,MAAO,UACzB,CAAE3B,KAAM,cAAe2B,MAAO,iBAC9B,CAAE3B,KAAM,YAAa2B,MAAO,aAC5B,CAAE3B,KAAM,UAAW2B,MAAO,WAC1B,CAAE3B,KAAM,SAAU2B,MAAO,UACzB,CAAE3B,KAAM,QAAS2B,MAAO,uLCpDhC,SACE3B,KAAM,sCACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UAzGN,WACE,OAAO,SAAC,IAAD,KAyGHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAE/CmF,GAA0BxD,EAAAA,EAAAA,IAC9BW,EAAc8C,iBACd9C,EAAc+C,QACd/C,EAAcR,aAEVwD,EAAiBhB,GAAAA,CAAShC,EAAcxB,gBAAgB4D,SAASS,GAEjErD,GACJ4B,EAAAA,EAAAA,IAAepB,EAAc8C,iBAAkB9C,EAAcxB,eAAgBwB,EAAcT,cAAgB,EAEvG+B,GAAeC,EAAAA,EAAAA,IACnBvB,EAAc8C,iBACd9C,EAAcT,aACdC,EACAQ,EAAcxB,gBAGVyE,GAAwB1B,EAAAA,EAAAA,IAC5BvB,EAAc8C,iBACd9C,EAAc+C,QACd/C,EAAcR,YACdqD,GAGF7E,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,iBAAkB2B,MAAOg2B,KACvEhF,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KACrEtD,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,wBAAyB2B,MAAOi2B,KAKhF,OAFAjF,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAjJN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEbgF,EAAalB,GAAAA,CAASpN,EAAOkO,kBAAkBjqB,SAAS+b,EAAOuO,OAAS,KACxEC,EAAmBpB,GAAAA,CAASpN,EAAOyO,WAAWhgC,IAAI6/B,GAElDI,EAAwBtB,GAAAA,CAAS,GAAGI,SAASgB,GAE7CG,EAAqB3O,EAAO0M,aAAaG,cAAc5oB,SAAS+b,EAAO4O,QAAU,KACjFC,EAAgB7O,EAAO0M,aAAaE,aAAaY,SAASmB,GAE1DG,EAAe1B,GAAAA,CAASpN,EAAOkO,kBAAkBjqB,SAAS+b,EAAOuO,OAAS,KAE1EQ,EAA8B/O,EAAOqO,sBAAsBxB,cAAc5oB,SAAS+b,EAAO4O,QAAU,KACnGI,EAAyBhP,EAAOqO,sBAAsBzB,aACzDY,SAASuB,GACTvB,SAASsB,GACTrgC,IAAI+/B,GAEDS,EAAeJ,EAAcrB,SAASwB,GAE5C,OACE,UAAC,IAAD,YACE,mBAAO5E,UAAU,4BAAjB,WACE,kBAAOA,UAAU,cAAjB,UACE,2BACE,mBACA,eAAIA,UAAU,uBAAd,2BACA,eAAIA,UAAU,uBAAd,wBACA,eAAIA,UAAU,uBAAd,2BAGJ,mBAAOA,UAAU,2BAAjB,WACE,2BACE,eAAIA,UAAU,YAAd,+BACA,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAa9C,mBACrE,eAAIQ,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAOqO,sBAAsBzE,mBAC9E,eAAIQ,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAOoO,sBAE1D,2BACE,eAAIhE,UAAU,YAAd,gCACA,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW,MACjD,eAAIT,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW2D,MACjD,eAAIpE,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW6D,SAEnD,2BACE,eAAItE,UAAU,YAAd,kCACA,eAAIA,UAAU,uBAAd,SAAsCpK,EAAO0M,aAAa9B,eAC1D,eAAIR,UAAU,uBAAd,SAAsCpK,EAAOqO,sBAAsBzD,eACnE,sBAEF,2BACE,gBAAIR,UAAU,YAAd,6BACiB,+BADjB,QAGA,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAWgE,MACjD,eAAIzE,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAWmE,MACjD,eAAI5E,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAWoE,eAKvD,SAAC,IAAD,CAAc7E,UAAU,MAAxB,UACE,4BACE,wCADF,iKAoFJ,CACE3zB,KAAM,QACNy0B,UA7EN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,iBAAKc,UAAU,iBAAf,WACE,SAAC,KAAD,CAA4BsC,aAAc1M,EAAO0M,aAAcZ,MAAM,mBACrE,SAAC,KAAD,CAA4BY,aAAc1M,EAAOqO,sBAAuBvC,MAAM,kBAyEhF,CACEr1B,KAAM,SACNy0B,UAtEN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,iCACE,gBAAKc,UAAU,gBAAf,uCACA,SAAC,KAAD,CAA2BsC,aAAc1M,EAAO0M,gBAChD,gBAAKtC,UAAU,gBAAf,2CACA,SAAC,KAAD,CAA2BsC,aAAc1M,EAAOqO,8BAiEpDvF,OAAQ,CACN,CACEvsB,KAAM,SACNe,KAAM,iBAER,CACEf,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,mBACNs1B,MAAO,yCACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,iBACNs1B,MAAO,0BACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,eACP3zB,MAAO,KAET,CACEmE,KAAM,SACNe,KAAM,YAER,CACEf,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,UACNs1B,MAAO,WACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,SACNs1B,MAAO,SACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,YACNs1B,MAAO,wBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,cACNs1B,MAAO,oBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNe,KAAM,qBAER,CACEf,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,UACNs1B,MAAO,uBACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,aACNs1B,MAAO,iCACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,aACNs1B,MAAO,iDACP3zB,MAAO,+KCxDb,SACE3B,KAAM,gCACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UAvIN,WACE,OAAO,SAAC,IAAD,KAuIHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAE/Cc,GAAiBa,EAAAA,EAAAA,IACrB2C,GAAAA,CAAShC,EAAc8D,UAAU1B,SAASpC,EAAciC,aACxDjC,EAAcT,aACdS,EAAcR,aAGV8B,GAAeyC,EAAAA,EAAAA,IAA6B,CAChDzE,UAAW0C,GAAAA,CAAShC,EAAc8D,UAAU1B,SAASpC,EAAciC,aACnE1C,aAAcS,EAAcT,aAC5BC,YAAaQ,EAAcR,YAC3BmC,QAASnD,EACTwF,WAAW9C,EAAAA,EAAAA,IAAU+C,EAAAA,EAAAA,IAAe,IAAIjvB,MAAS,KAGnDgpB,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KACrEtD,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,iBAAkB2B,MAAOwxB,KAKzE,OAFAR,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UApKN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEbgG,EAAclC,GAAAA,CAASpN,EAAOkP,UACjCjrB,SAAS+b,EAAOsP,YAAc,KAC9BC,OAAO,IAEJC,EAAsBpC,GAAAA,CAASpN,EAAO4J,gBACzCn7B,IAAI6gC,GACJ7gC,IAAIuxB,EAAOyP,MACXhhC,IAAIuxB,EAAO0P,mBACXjhC,IAAIuxB,EAAO2P,oBACXlhC,IAAIuxB,EAAO4P,aAERC,EAjFiB,EAAC9C,EAAS+C,EAAM5D,KACvC,IAAI6D,EAAQ3C,GAAAA,CAAS,GACjB4C,EAAU5C,GAAAA,CAAS,GACnB6C,EAAgB7C,GAAAA,CAASL,GAE7B,IAAK,IAAIn5B,EAAI,EAAGA,EAAIs4B,EAAWt4B,IACzBA,EAAI,GAAKA,EAAI,IAAO,IACtBq8B,EAAgBA,EAAcxhC,IAAIwhC,EAAchsB,SAAS6rB,EAAO,OAGlEC,EAAQA,EAAMthC,IAAIwhC,GAGpB,OAAOF,EAAMvC,SAASwC,IAoEAE,CAAiBlQ,EAAOmQ,YAAanQ,EAAOoQ,SAAUpQ,EAAOqQ,YAE7EC,EAnDctQ,CAAAA,IACpB,MAAM4J,GAAiBa,EAAAA,EAAAA,IACrB2C,GAAAA,CAASpN,EAAOkP,UAAU1B,SAASxN,EAAOqN,aAC1CrN,EAAO2K,aACP3K,EAAO4K,aAGH0E,EAAclC,GAAAA,CAASpN,EAAOkP,UACjCjrB,SAAS+b,EAAOsP,YAAc,KAC9BC,OAAO,IAEJC,EAAsBpC,GAAAA,CAASxD,GAClCn7B,IAAI6gC,GACJ7gC,IAAIuxB,EAAOyP,MACXhhC,IAAIuxB,EAAO0P,mBACXjhC,IAAIuxB,EAAO2P,oBACXlhC,IAAIuxB,EAAO4P,aAEd,IAAIG,EAAQ3C,GAAAA,CAAS,GACjB4C,EAAU5C,GAAAA,CAAS,GACnB6C,EAAgB7C,GAAAA,CAASoC,GAE7B,IAAK,IAAI57B,EAAI,EAAGA,EAAIosB,EAAOqQ,WAAYz8B,IACrCm8B,EAAQA,EAAMthC,IAAIwhC,GAGpB,MAAO,CACL1E,aAAcwE,EAAMthC,IAAIuxB,EAAOqN,aAAaG,SAASwC,KAwBtCO,CAAavQ,GAExBwQ,EArEgBxQ,CAAAA,IACtB,IAAIyQ,EAAazQ,EAAO0M,aAAagE,eAAejiC,IAAIuxB,EAAOqN,aAE/D,IAAK,IAAIz5B,EAAI,EAAGA,EAAIosB,EAAOqQ,WAAYz8B,IACjCA,EAAI,GAAKA,EAAI,IAAO,IACtB68B,EAAaA,EAAWhiC,IAAIgiC,EAAWxsB,SAAS+b,EAAO2Q,iBAAmB,OAQ9E,OAJmB3Q,EAAO0M,aAAakE,gBAAgBz+B,KAAK2e,GAAU2f,EAAa3f,EAAM2b,QAAQr0B,QAExE4nB,EAAOqQ,WAAa,IA0DrBQ,CAAe7Q,GACjC8Q,EAAkBR,EAAS/E,aAAaiC,SAASgD,GAEvD,IAAIO,EAAU,GAEd,MAAMC,EAAWF,EAAgBtD,SAASqC,GAQ1C,OALEkB,EAAU,iBAAH,QAAoBlG,EAAAA,EAAAA,IAAWmG,GADpCA,EAAW,EACN,+BAEA,iCAIP,SAAC,IAAD,WACE,mBAAO5G,UAAU,4BAAjB,WACE,kBAAOA,UAAU,cAAjB,UACE,2BACE,eAAIA,UAAU,sBAAd,+BACA,eAAIA,UAAU,uBAAd,mBACA,eAAIA,UAAU,uBAAd,uBAGJ,mBAAOA,UAAU,2BAAjB,WACE,2BACE,eAAIA,UAAU,YAAd,+BACA,eAAIA,UAAU,iCAAd,UAAgDS,EAAAA,EAAAA,IAAW7K,EAAOmQ,gBAClE,eAAI/F,UAAU,iCAAd,UAAgDS,EAAAA,EAAAA,IAAW7K,EAAO4J,sBAEpE,2BACE,eAAIQ,UAAU,YAAd,4BACA,eAAIA,UAAU,0BACd,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAWyE,SAEnD,2BACE,eAAIlF,UAAU,YAAd,gCACA,eAAIA,UAAU,0BACd,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAOyP,YAE1D,2BACE,eAAIrF,UAAU,YAAd,kCACA,eAAIA,UAAU,0BACd,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAO0P,yBAE1D,2BACE,eAAItF,UAAU,YAAd,qCACA,eAAIA,UAAU,0BACd,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAO2P,0BAE1D,2BACE,eAAIvF,UAAU,YAAd,2BACA,eAAIA,UAAU,0BACd,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAO4P,mBAE1D,2BACE,eAAIxF,UAAU,sBAAd,qCACA,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAOmQ,gBACxD,eAAI/F,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW2E,SAEnD,gBAAIpF,UAAU,cAAd,WACE,eAAIA,UAAU,sBAAd,kCACA,mBACA,sBAEF,2BACE,gBAAIA,UAAU,YAAd,6CAA2DpK,EAAOqQ,WAAlE,eACA,eAAIjG,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAWgF,MACjD,eAAIzF,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAWyF,EAAS/E,oBAE5D,2BACE,eAAInB,UAAU,YAAd,2BACA,eAAIA,UAAU,0BACd,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW2F,SAEnD,2BACE,eAAIpG,UAAU,YAAd,8BACA,eAAIA,UAAU,iCAAd,UAAgDS,EAAAA,EAAAA,IAAWgF,MAC3D,eAAIzF,UAAU,iCAAd,UAAgDS,EAAAA,EAAAA,IAAWiG,YAG/D,kBAAO1G,UAAU,2BAAjB,UACE,yBACE,eAAIA,UAAU,gCAAgC6G,QAAQ,IAAtD,SACGF,eAiEX,CACEt6B,KAAM,QACNy0B,UA1DN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,gBAAKc,UAAU,iBAAf,UACE,SAAC,KAAD,CAA4BsC,aAAc1M,EAAO0M,aAAcZ,MAAM,gCAuDvE,CACEr1B,KAAM,SACNy0B,UApDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAA2BoD,aAAc1M,EAAO0M,kBAoDvD5D,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,cACNs1B,MAAO,eACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,WACNs1B,MAAO,YACP3zB,MAAO,MAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,cACNs1B,MAAO,eACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,cACNs1B,MAAO,qBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,SACNs1B,MAAO,SACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,OACNs1B,MAAO,OACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,oBACNs1B,MAAO,6BACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,qBACNs1B,MAAO,sBACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,OACNs1B,MAAO,4BACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,cACNs1B,MAAO,8BACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,cACNs1B,MAAO,eACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,YACNs1B,MAAO,+BACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,gBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,cACNs1B,MAAO,oBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,mBACNs1B,MAAO,gDACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,WACNs1B,MAAO,yCACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,aACNs1B,MAAO,oDACP3zB,MAAO,6JCnTb,SACE3B,KAAM,yBACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UAvEN,WACE,OACE,iCACE,gBAAKd,UAAU,qEAAf,sEAGA,SAAC,IAAD,QAkEAe,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAErD,IAAI2D,EAAUrB,EAAcqB,QACxB7C,EAAiBwB,EAAcxB,eAC/BgB,EAAcQ,EAAcR,YAC5BD,EAAeS,EAAcT,aAEI,IAAjCS,EAAcxB,iBAChBA,GAAiBa,EAAAA,EAAAA,IAAkBgC,EAAS9B,EAAcC,IAG1B,IAA9BQ,EAAcR,cAChBA,GAAc4B,EAAAA,EAAAA,IACZpB,EAAcqB,QACdrB,EAAcxB,eACdwB,EAAcT,cAGhBf,GAAiBa,EAAAA,EAAAA,IAAkBgC,EAAS9B,EAAcC,IAG5C,IAAZ6B,IACFA,GAAUK,EAAAA,EAAAA,IAAa1B,EAAcxB,eAAgBwB,EAAcT,aAAcS,EAAcR,cAG9D,IAA/BQ,EAAcT,eAChBA,GAAeuG,EAAAA,EAAAA,IAAgBzE,EAAS7C,EAAgBgB,IAG1D,MAAM8B,GAAeC,EAAAA,EAAAA,IAAgBF,EAAS9B,EAAcC,EAAahB,GACzER,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KAKvE,OAFAtD,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UA1GN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,UAAC,IAAD,YACE,UAAC,IAAD,YACE,gDACA,0BAAMuB,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAagE,sBAGvC,UAAC,IAAD,YACE,8CACA,0BAAM7F,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAa9C,sBAGvC,UAAC,IAAD,YACE,iDACA,yBAAM5J,EAAO0M,aAAa9B,kBAG5B,UAAC,IAAD,YACE,6CACA,0BAAMgB,EAAAA,EAAAA,IAAa5L,EAAO0M,aAAa/B,oBAGzC,UAAC,IAAD,YACE,8CACA,0BAAME,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaE,oBAGvC,UAAC,IAAD,YACE,8CACA,0BAAM/B,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaG,yBA4EzC,CACEp2B,KAAM,QACNy0B,UAxEN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,iBAAKc,UAAU,iBAAf,WACE,SAAC,KAAD,CAA4BsC,aAAc1M,EAAO0M,aAAcZ,MAAM,4BACrE,SAAC,KAAD,CAAgBY,aAAc1M,EAAO0M,aAAcZ,MAAM,iCAoE3D,CACEr1B,KAAM,SACNy0B,UAjEN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAA2BoD,aAAc1M,EAAO0M,kBAiEvD5D,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,UACNs1B,MAAO,mBACP3zB,MAAO,MAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,iBACNs1B,MAAO,yBACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,cACNs1B,MAAO,qBACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,gBACP3zB,MAAO,yKC9Fb,SACE3B,KAAM,iCACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UArEN,WACE,OACE,iCACE,gBAAKd,UAAU,qEAAf,uFAGA,SAAC,IAAD,QAgEAe,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GACrD,IAAIsD,EAAehB,EAAcgB,aAEY,IAAzCxpB,SAASwoB,EAAcgB,gBACzBA,GAAe0B,EAAAA,EAAAA,GACb1C,EAAcG,aACdH,EAAcS,YACdT,EAAcc,UAAY,GAC1B,UACAd,EAAcT,eAIlB,IAAIuB,EAAYd,EAAcc,UAEY,IAAtCtpB,SAASwoB,EAAcc,aACzBA,GAAYC,EAAAA,EAAAA,IACVf,EAAcS,YACdO,EACAhB,EAAcT,aACdS,EAAcG,eAIlB,MAAMc,EAAQ,IAAIjsB,KAGZ/E,EAAO,CACXgwB,YAAagB,EACbf,YAJagB,EAAAA,EAAAA,GAAUD,EAAOH,GAK9BX,aAAcH,EAAcG,aAC5Ba,aAAcA,EACdzB,aAAcS,EAAcT,aAC5Ba,UAAW,UACXe,mBAAmB,GAGfd,GAAaC,EAAAA,EAAAA,IAAcrwB,GAEjC+tB,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,aAAc2B,MAAOqzB,KAKrE,OAFArC,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAjHN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,SAAC,IAAD,WACE,SAAC,IAAD,WACE,iBAAKc,UAAU,mBAAf,WACE,scAMA,eAAGA,UAAU,YAAb,0BACeS,EAAAA,EAAAA,IAAW7K,EAAOyL,WAAWW,cAD5C,iBACyE,KACtET,EAAAA,EAAAA,IAAO3L,EAAOyL,WAAWH,YAF5B,QAE6CM,EAAAA,EAAAA,IAAa5L,EAAOyL,WAAWd,cAF5E,4CAGuBE,EAAAA,EAAAA,IAAW7K,EAAOyL,WAAWF,cAHpD,kDAISV,EAAAA,EAAAA,IAAW7K,EAAOyL,WAAWI,aAJtC,QAMA,8IAIA,+KAIA,oJAwFN,CACEp1B,KAAM,QACNy0B,UAhFN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,gBAAKc,UAAU,iBAAf,UACE,SAAC,KAAD,CAAcqB,WAAYzL,EAAOyL,WAAYK,MAAM,qBA6ErD,CACEr1B,KAAM,SACNy0B,UA1EN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAAyBmC,WAAYzL,EAAOyL,gBA0EnD3C,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,cACNs1B,MAAO,+BACP3zB,MAAO,MAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,eACNs1B,MAAO,sBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXkF,iBAAiB,EACjB16B,KAAM,eACNs1B,MAAO,yBACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,MACVwH,iBAAiB,EACjB16B,KAAM,YACNs1B,MAAO,2BACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,uBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,UACNs1B,MAAO,uBACP3zB,MAAO,kOCnHb,SACE3B,KAAM,8CACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UArEN,WACE,OAAO,SAAC,IAAD,KAqEHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAC/C4B,EAAY0C,GAAAA,CAAShC,EAAcV,WAAW8C,SAASpC,EAAciC,aACrEzD,GAAiBa,EAAAA,EAAAA,IAAkBC,EAAWU,EAAcT,aAAcS,EAAcR,aACxFwG,GAAUrD,EAAAA,EAAAA,IACdsD,EAAAA,EAAAA,GAAW,IAAIjxB,KAAKgrB,EAAckG,cAClC,IAAIlxB,KAAKgrB,EAAckG,cAEnBC,EAAgBnG,EAAcT,aAAe,IAAM,IACnD6G,EAAkBlhC,KAAK+d,IAAIkjB,EAAgB7G,EAAUtyB,MAAQg5B,GAE7DK,EAAgB,CACpBC,SAAU,EACVC,MAAMtC,EAAAA,EAAAA,IAAejE,EAAckG,aACnCM,eAAejuB,EAAAA,EAAAA,IAAO0rB,EAAAA,EAAAA,IAAejE,EAAckG,aAAc,cACjEvE,QAASK,GAAAA,CAASoE,GAClBK,SAAUzE,GAAAA,CAASoE,GACnB9G,UAAW0C,GAAAA,CAAS,GACpBX,QAAS/B,EACToH,eAAe,GAGXpF,GAAeyC,EAAAA,EAAAA,IAA6B,CAChDzE,UAAAA,EACAC,aAAcS,EAAcT,aAC5BC,YAAaQ,EAAcR,YAC3BhB,eAAAA,EACAwF,UAAWhE,EAAc2G,QACzBN,cAAAA,IAGFrI,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,iBAAkB2B,MAAOwxB,KACvER,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KAKvE,OAFAtD,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAhHN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,UAAC,IAAD,YACE,UAAC,IAAD,YACE,gDACA,0BAAMuB,EAAAA,EAAAA,IAAW7K,EAAO0K,iBAG1B,UAAC,IAAD,YACE,mDACA,0BAAMG,EAAAA,EAAAA,IAAW7K,EAAOqN,mBAG1B,UAAC,IAAD,CAAcjD,UAAU,YAAxB,WACE,sDACA,0BAAMS,EAAAA,EAAAA,IAAW7K,EAAO4J,sBAG1B,UAAC,IAAD,YACE,kDACA,yBAAM5J,EAAO4K,kBAGf,UAAC,IAAD,YACE,6CACA,0BAAMgB,EAAAA,EAAAA,IAAa5L,EAAO2K,oBAG5B,UAAC,IAAD,YACE,8CACA,0BAAME,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaE,oBAGvC,UAAC,IAAD,YACE,8CACA,0BAAM/B,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaG,yBA6EzC,CACEp2B,KAAM,QACNy0B,UAzEN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,iBAAKc,UAAU,iBAAf,WACE,SAAC,KAAD,CAA4BsC,aAAc1M,EAAO0M,aAAcZ,MAAM,mCACrE,SAAC,KAAD,CAAgBY,aAAc1M,EAAO0M,aAAcZ,MAAM,qCAqE3D,CACEr1B,KAAM,SACNy0B,UAlEN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAA2BoD,aAAc1M,EAAO0M,kBAkEvD5D,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,YACNs1B,MAAO,mBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,cACNs1B,MAAO,sBACP3zB,MAAO,GAET,CACEmE,KAAM,OACN9F,KAAM,cACNs1B,MAAO,eACP3zB,OAAOuL,EAAAA,EAAAA,GAAO,IAAIvD,KAAQ,eAE5B,CACE7D,KAAM,OACN9F,KAAM,UACNs1B,MAAO,kCACP3zB,OAAOuL,EAAAA,EAAAA,IAAOquB,EAAAA,EAAAA,IAAa1F,EAAAA,EAAAA,GAAU,IAAIlsB,KAAQ,IAAK,eAExD,CACE7D,KAAM,SACNotB,SAAU,MACVlzB,KAAM,cACNs1B,MAAO,qBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,gBACP3zB,MAAO,oOCzGb,SACE3B,KAAM,oDACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UArEN,WACE,OAAO,SAAC,IAAD,KAqEHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAC/C4B,EAAY0C,GAAAA,CAAShC,EAAcV,WAAW8C,SAASpC,EAAciC,aACrEzD,GAAiBa,EAAAA,EAAAA,IAAkBC,EAAWU,EAAcT,aAAcS,EAAcR,aACxFwG,GAAUrD,EAAAA,EAAAA,IACdsD,EAAAA,EAAAA,GAAW,IAAIjxB,KAAKgrB,EAAckG,cAClC,IAAIlxB,KAAKgrB,EAAckG,cAEnBC,EAAgBnG,EAAcT,aAAe,IAAM,IACnD6G,EAAkBlhC,KAAK+d,IAAIkjB,EAAgB7G,EAAUtyB,MAAQg5B,GAE7DK,EAAgB,CACpBC,SAAU,EACVC,MAAMtC,EAAAA,EAAAA,IAAejE,EAAckG,aACnCM,eAAejuB,EAAAA,EAAAA,IAAO0rB,EAAAA,EAAAA,IAAejE,EAAckG,aAAc,cACjEvE,QAASK,GAAAA,CAASoE,GAClBK,SAAUzE,GAAAA,CAASoE,GACnB9G,UAAW0C,GAAAA,CAAS,GACpBX,QAAS/B,EACToH,eAAe,GAGXpF,GAAeuF,EAAAA,EAAAA,IAAkC,CACrDvH,UAAAA,EACAC,aAAcS,EAAcT,aAC5BC,YAAaQ,EAAcR,YAC3BhB,eAAAA,EACAwF,UAAWhE,EAAc2G,QACzBN,cAAAA,EACAS,QAAS9G,EAAc8G,QACvBC,aAAc/G,EAAc+G,aAC5BC,QAAShH,EAAcgH,QACvBC,gBAAiBjH,EAAciH,gBAC/BC,iBAAkBlH,EAAckH,mBAGlClJ,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,iBAAkB2B,MAAOwxB,KACvER,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KAKvE,OAFAtD,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UArHN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,UAAC,IAAD,YACE,UAAC,IAAD,YACE,gDACA,0BAAMuB,EAAAA,EAAAA,IAAW7K,EAAO0K,iBAG1B,UAAC,IAAD,YACE,mDACA,0BAAMG,EAAAA,EAAAA,IAAW7K,EAAOqN,mBAG1B,UAAC,IAAD,CAAcjD,UAAU,YAAxB,WACE,8DACA,0BAAMS,EAAAA,EAAAA,IAAW7K,EAAO4J,sBAG1B,UAAC,IAAD,YACE,kDACA,yBAAM5J,EAAO4K,kBAGf,UAAC,IAAD,YACE,uDACA,0BAAMgB,EAAAA,EAAAA,IAAa5L,EAAO2K,oBAG5B,UAAC,IAAD,YACE,8CACA,0BAAME,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaE,oBAGvC,UAAC,IAAD,YACE,8CACA,0BAAM/B,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaG,yBAkFzC,CACEp2B,KAAM,QACNy0B,UA9EN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,iBAAKc,UAAU,iBAAf,WACE,SAAC,KAAD,CAA4BsC,aAAc1M,EAAO0M,aAAcZ,MAAM,wCACrE,SAAC,KAAD,CAAgBY,aAAc1M,EAAO0M,aAAcZ,MAAM,qCA0E3D,CACEr1B,KAAM,SACNy0B,UAvEN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAA2BoD,aAAc1M,EAAO0M,kBAuEvD5D,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,YACNs1B,MAAO,mBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,cACNs1B,MAAO,sBACP3zB,MAAO,GAET,CACEmE,KAAM,OACN9F,KAAM,cACNs1B,MAAO,eACP3zB,OAAOuL,EAAAA,EAAAA,GAAO,IAAIvD,KAAQ,eAE5B,CACE7D,KAAM,OACN9F,KAAM,UACNs1B,MAAO,kCACP3zB,OAAOuL,EAAAA,EAAAA,IAAOquB,EAAAA,EAAAA,IAAa1F,EAAAA,EAAAA,GAAU,IAAIlsB,KAAQ,IAAK,eAExD,CACE7D,KAAM,SACNotB,SAAU,MACVlzB,KAAM,cACNs1B,MAAO,6BACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,gBACP3zB,MAAO,MAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,UACNs1B,MAAO,2BACP3zB,MAAO,OAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,8DACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,UACNs1B,MAAO,oEACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,kBACNs1B,MAAO,kDACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,mBACNs1B,MAAO,qDACP3zB,MAAO,4JCrLb,SACE3B,KAAM,qCACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UAlDN,WACE,OAAO,SAAC,IAAD,KAkDHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAC/CyJ,GAAYC,EAAAA,EAAAA,IAChBpH,EAAcqH,aACdrH,EAAcsC,SACdtC,EAAcsH,eAGhBtJ,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,YAAa2B,MAAOm6B,KAKpE,OAFAnJ,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UArEN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,SAAC,IAAD,WACE,SAAC,IAAD,WACE,iBAAKc,UAAU,mBAAf,WACE,8LAE2DwB,EAAAA,EAAAA,IAAa5L,EAAO0S,eAF/E,mCAGmB7H,EAAAA,EAAAA,IAAW7K,EAAOuS,UAAUE,cAH/C,aAGwE,KACrE5H,EAAAA,EAAAA,IAAW7K,EAAOuS,UAAUI,UAJ/B,OAI8C3S,EAAO0N,SAJrD,cAMA,6VAKA,4IAqDN,CACEj3B,KAAM,QACNy0B,UAhDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,gBAAKc,UAAU,iBAAf,UACE,SAAC,KAAD,CAAgBmI,UAAWvS,EAAOuS,UAAWzG,MAAM,oCA6CrD,CACEr1B,KAAM,SACNy0B,UA1CN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAAwBiJ,UAAWvS,EAAOuS,UAAWh2B,KAAK,gBA0CjEusB,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,eACNs1B,MAAO,mCACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,WACNs1B,MAAO,iCACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,gBACNs1B,MAAO,iBACP3zB,MAAO,4JCxCb,SACE3B,KAAM,mCACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UAhEN,WACE,OAAO,SAAC,IAAD,KAgEHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAE/C6B,GAAeuG,EAAAA,EAAAA,IACnB9F,EAAcV,UACdU,EAAcxB,eACdwB,EAAcR,aAGV8B,GAAeC,EAAAA,EAAAA,IAAgBvB,EAAcV,UAAWC,EAAcS,EAAcR,aAC1FxB,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KACrEtD,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOuyB,KAKvE,OAFAvB,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAtFN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,UAAC,IAAD,YACE,UAAC,IAAD,YACE,8CACA,0BAAMuB,EAAAA,EAAAA,IAAW7K,EAAO0K,iBAG1B,UAAC,IAAD,YACE,8CACA,0BAAMG,EAAAA,EAAAA,IAAW7K,EAAO4J,sBAG1B,UAAC,IAAD,YACE,kDACA,yBAAM5J,EAAO4K,kBAGf,UAAC,IAAD,CAAcR,UAAU,YAAxB,WACE,6CACA,0BAAMwB,EAAAA,EAAAA,IAAa5L,EAAO2K,oBAG5B,UAAC,IAAD,YACE,8CACA,0BAAME,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaE,oBAGvC,UAAC,IAAD,YACE,8CACA,0BAAM/B,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaG,yBAwDzC,CACEp2B,KAAM,QACNy0B,UApDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,iBAAKc,UAAU,iBAAf,WACE,SAAC,KAAD,CAA4BsC,aAAc1M,EAAO0M,aAAcZ,MAAM,sCACrE,SAAC,KAAD,CAAgBY,aAAc1M,EAAO0M,aAAcZ,MAAM,iCAgD3D,CACEr1B,KAAM,SACNy0B,UA7CN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAA2BoD,aAAc1M,EAAO0M,kBA6CvD5D,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,YACNs1B,MAAO,mBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,iBACNs1B,MAAO,yBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,cACNs1B,MAAO,qBACP3zB,MAAO,8JCpFb,SACE3B,KAAM,wCACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UAnDN,WACE,OAAO,SAAC,IAAD,KAmDHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAC/CyJ,GAAYK,EAAAA,EAAAA,IAChBxH,EAAcqH,aACdrH,EAAcsC,SACdtC,EAAcsH,eAGhBtJ,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,YAAa2B,MAAOm6B,KAKpE,OAFAnJ,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAtEN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,SAAC,IAAD,WACE,SAAC,IAAD,WACE,iBAAKc,UAAU,mBAAf,WACE,+HACA,eAAGA,UAAU,YAAb,4CACiCwB,EAAAA,EAAAA,IAAa5L,EAAO0S,eADrD,gBACkF,KAC/E7H,EAAAA,EAAAA,IAAW7K,EAAOyS,cAFrB,+BAE+D5H,EAAAA,EAAAA,IAAW7K,EAAOuS,UAAUI,UAF3F,MAEyG,IACtG3S,EAAO0N,SAHV,cAKA,uSAIE,kBAJF,wHA2DN,CACEj3B,KAAM,QACNy0B,UAhDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,gBAAKc,UAAU,iBAAf,UACE,SAAC,KAAD,CAAgBmI,UAAWvS,EAAOuS,UAAWzG,MAAM,iCA6CrD,CACEr1B,KAAM,SACNy0B,UA1CN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAAwBiJ,UAAWvS,EAAOuS,UAAWh2B,KAAK,gBA0CjEusB,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,eACNs1B,MAAO,wBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,WACNs1B,MAAO,kBACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,gBACNs1B,MAAO,wBACP3zB,MAAO,4JCjDb,SACE3B,KAAM,yDACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UA/DN,WACE,OAAO,SAAC,IAAD,KA+DHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAC/C4D,GAAeC,EAAAA,EAAAA,IACnBvB,EAAcqB,QACdrB,EAAcT,aACdS,EAAcR,aAEhBxB,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KAKvE,OAFAtD,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAjFN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,UAAC,IAAD,YACE,UAAC,IAAD,YACE,mDACA,0BAAMuB,EAAAA,EAAAA,IAAW7K,EAAOyM,eAG1B,UAAC,IAAD,CAAcrC,UAAU,YAAxB,WACE,sDACA,0BAAMS,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAa9C,sBAGvC,UAAC,IAAD,YACE,yDACA,yBAAM5J,EAAO4K,kBAGf,UAAC,IAAD,YACE,6CACA,0BAAMgB,EAAAA,EAAAA,IAAa5L,EAAO2K,oBAG5B,UAAC,IAAD,YACE,8CACA,0BAAME,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaE,oBAGvC,UAAC,IAAD,YACE,8CACA,0BAAM/B,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaG,yBAmDzC,CACEp2B,KAAM,QACNy0B,UA/CN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,gBAAKc,UAAU,iBAAf,UACE,SAAC,KAAD,CAAsBsC,aAAc1M,EAAO0M,aAAcZ,MAAM,+BA4CjE,CACEr1B,KAAM,SACNy0B,UAzCN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAA2BoD,aAAc1M,EAAO0M,kBAyCvD5D,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,UACNs1B,MAAO,sBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,cACNs1B,MAAO,sEACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,gBACP3zB,MAAO,gLChBb,SACE3B,KAAM,oDACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UA1GN,WACE,OAAO,SAAC,IAAD,KA0GHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAC/Cc,EAAiBwB,EAAcxB,eAC/BiJ,EAAuBzF,GAAAA,CAAShC,EAAcxB,gBAAgBn7B,IAAI28B,EAAc0H,YAChF1E,EAAiBhB,GAAAA,CAASxD,GAAgB4D,SAASqF,GAEnDjI,GACJ4B,EAAAA,EAAAA,IAAepB,EAAc8C,iBAAkBtE,EAAgBwB,EAAcT,cAAgB,EAEzFoI,GACJvG,EAAAA,EAAAA,IAAepB,EAAc8C,iBAAkB2E,EAAsBzH,EAAcT,cAAgB,EAE/F+B,GAAeC,EAAAA,EAAAA,IACnBvB,EAAc8C,iBACd9C,EAAcT,aACdC,EACAhB,GAGIoJ,GAAqBrG,EAAAA,EAAAA,IACzBvB,EAAc8C,iBACd9C,EAAcT,aACdoI,EACAF,GAGFzJ,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,iBAAkB2B,MAAOg2B,KACvEhF,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KACrEtD,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,qBAAsB2B,MAAO46B,KAK7E,OAFA5J,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAjJN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEbqF,EAAqB3O,EAAO0M,aAAaG,cAAc5oB,SAAS+b,EAAO4O,QAAU,KACjFC,EAAgB7O,EAAO0M,aAAaE,aAAaY,SAASmB,GAE1DsE,EAA2BjT,EAAOgT,mBAAmBnG,cAAc5oB,SAAS+b,EAAO4O,QAAU,KAC7FsE,EAAsBlT,EAAOgT,mBAAmBpG,aAAaY,SAASyF,GAEtEhE,EAAeJ,EAAcrB,SAAS0F,GAE5C,OACE,UAAC,IAAD,YACE,mBAAO9I,UAAU,4BAAjB,WACE,kBAAOA,UAAU,cAAjB,UACE,2BACE,mBACA,eAAIA,UAAU,uBAAd,2BACA,eAAIA,UAAU,uBAAd,uBACA,eAAIA,UAAU,uBAAd,2BAGJ,mBAAOA,UAAU,2BAAjB,WACE,2BACE,eAAIA,UAAU,YAAd,+BACA,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAa9C,mBACrE,eAAIQ,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAOgT,mBAAmBpJ,mBAC3E,eAAIQ,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAOoO,sBAE1D,2BACE,eAAIhE,UAAU,YAAd,kCACA,eAAIA,UAAU,uBAAd,SAAsCpK,EAAO0M,aAAa9B,eAC1D,eAAIR,UAAU,uBAAd,SAAsCpK,EAAOgT,mBAAmBpI,eAChE,sBAEF,2BACE,gBAAIR,UAAU,YAAd,6BACiB,+BADjB,QAGA,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAWgE,MACjD,eAAIzE,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAWqI,MACjD,eAAI9I,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAWoE,eAKvD,SAAC,IAAD,CAAc7E,UAAU,MAAxB,UACE,4BACE,wCADF,iKAoGJ,CACE3zB,KAAM,QACNy0B,UA7FN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MACb6J,EAAW,IAAInT,EAAO0M,aAAakE,iBACnCwC,EAAiB,IAAIpT,EAAOgT,mBAAmBpC,iBAC/CyC,EAAYD,EAAeA,EAAer/B,OAAS,GACnDu/B,EAAOH,EAASp/B,OAASq/B,EAAer/B,OACxCi/B,EAAqB,IAAKhT,EAAOgT,oBAEvC,IAAK,IAAIp/B,EAAI,EAAGA,GAAK0/B,EAAM1/B,IAAK,CAC9B,MAAM2/B,EAAY,CAChB7B,SAAU2B,EAAU3B,SAAW99B,EAC/B64B,QAAS4G,EAAU5G,QACnBoF,SAAUwB,EAAUxB,UAGtBuB,EAAelhC,KAAKqhC,GAKtB,OAFAP,EAAmBpC,gBAAkBwC,GAGnC,iBAAKhJ,UAAU,iBAAf,WACE,SAAC,KAAD,CAA4BsC,aAAc1M,EAAO0M,aAAcZ,MAAM,uBACrE,SAAC,KAAD,CAA4BY,aAAcsG,EAAoBlH,MAAM,8BAwEtE,CACEr1B,KAAM,SACNy0B,UArEN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,iCACE,gBAAKc,UAAU,gBAAf,uCACA,SAAC,KAAD,CAA2BsC,aAAc1M,EAAO0M,gBAChD,gBAAKtC,UAAU,gBAAf,mCACA,SAAC,KAAD,CAA2BsC,aAAc1M,EAAOgT,2BAgEpDlK,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,mBACNs1B,MAAO,yCACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,iBACNs1B,MAAO,0BACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,eACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,aACNs1B,MAAO,gCACP3zB,MAAO,KAET,CACEmE,KAAM,SACNe,KAAM,qBAER,CACEf,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,UACNs1B,MAAO,uBACP3zB,MAAO,IAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,aACNs1B,MAAO,iCACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,aACNs1B,MAAO,iDACP3zB,MAAO,4JChKb,SACE3B,KAAM,6BACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UAhEN,WACE,OAAO,SAAC,IAAD,KAgEHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAC/C4D,GAAeC,EAAAA,EAAAA,IACnBvB,EAAcV,UACdU,EAAcT,aACdS,EAAcR,aAEhBxB,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,eAAgB2B,MAAOs0B,KAKvE,OAFAtD,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAlFN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,UAAC,IAAD,YACE,UAAC,IAAD,YACE,gDACA,0BAAMuB,EAAAA,EAAAA,IAAW7K,EAAO0K,iBAG1B,UAAC,IAAD,CAAcN,UAAU,YAAxB,WACE,mDACA,0BAAMS,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAa9C,sBAGvC,UAAC,IAAD,YACE,kDACA,yBAAM5J,EAAO4K,kBAGf,UAAC,IAAD,YACE,6CACA,0BAAMgB,EAAAA,EAAAA,IAAa5L,EAAO2K,oBAG5B,UAAC,IAAD,YACE,8CACA,0BAAME,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaE,oBAGvC,UAAC,IAAD,YACE,8CACA,0BAAM/B,EAAAA,EAAAA,IAAW7K,EAAO0M,aAAaG,yBAoDzC,CACEp2B,KAAM,QACNy0B,UAhDN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,iBAAKc,UAAU,iBAAf,WACE,SAAC,KAAD,CAA4BsC,aAAc1M,EAAO0M,aAAcZ,MAAM,gCACrE,SAAC,KAAD,CAAgBY,aAAc1M,EAAO0M,aAAcZ,MAAM,iCA4C3D,CACEr1B,KAAM,SACNy0B,UAzCN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OAAO,SAAC,KAAD,CAA2BoD,aAAc1M,EAAO0M,kBAyCvD5D,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,YACNs1B,MAAO,mBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,cACNs1B,MAAO,qBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,eACNs1B,MAAO,gBACP3zB,MAAO,4LCSb,SACE3B,KAAM,6CACNw0B,KAAM,CACJ,CACEx0B,KAAM,QACNy0B,UA5HN,WACE,OAAO,SAAC,IAAD,KA4HHC,gBAAiB,CAAC/B,EAAUN,EAAQ9I,KAClC,MAAMrG,GAAW2Q,EAAAA,EAAAA,IAAexB,GAEhC,GAAInP,EAAS4Q,QAAS,CACpB,MAAMa,GAAgBZ,EAAAA,EAAAA,IAAuBxK,EAAQ8I,GAE/C0K,EAAapG,GAAAA,CAAShC,EAAcqI,QAAQjG,SAASpC,EAAcsI,cACnEC,GAAkBlJ,EAAAA,EAAAA,IAAkB+I,EAAYpI,EAAcwI,cAAexI,EAAcyI,cAE3FC,GAAgB7B,EAAAA,EAAAA,IAAkC,CACtDvH,UAAW8I,EACX7I,aAAcS,EAAcwI,cAC5BhJ,YAAaQ,EAAcyI,aAC3BjK,eAAgB+J,EAChBvE,WAAW9C,EAAAA,EAAAA,IAAU+C,EAAAA,EAAAA,IAAe,IAAIjvB,MAAS,GACjD8xB,QAAS9G,EAAc2I,SACvB5B,aAAc,EACdC,QAAShH,EAAc4I,eACvB3B,gBAAiB,EACjBC,iBAAkBlH,EAAc6I,mBAG5BC,EAAa9G,GAAAA,CAAShC,EAAcqI,QAAQjG,SAASpC,EAAc+I,cACnEC,GAAkB3J,EAAAA,EAAAA,IAAkByJ,EAAY9I,EAAciJ,cAAejJ,EAAckJ,cAE3FC,GAAgBtC,EAAAA,EAAAA,IAAkC,CACtDvH,UAAWwJ,EACXvJ,aAAcS,EAAciJ,cAC5BzJ,YAAaQ,EAAckJ,aAC3B1K,eAAgBwK,EAChBhF,WAAW9C,EAAAA,EAAAA,IAAU+C,EAAAA,EAAAA,IAAe,IAAIjvB,MAAS,GACjD8xB,QAAS9G,EAAcoJ,SACvBrC,aAAc,EACdC,QAAShH,EAAcqJ,eACvBpC,gBAAiB,EACjBC,iBAAkBlH,EAAcsJ,mBAG5BtG,EAAiBuF,EAAgBnG,SAAS4G,GAEhDhL,EAAS,CAAE7sB,KAAM,YAAawsB,QAAS,IAAKqC,KAC5ChC,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,kBAAmB2B,MAAOu7B,KACxEvK,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,kBAAmB2B,MAAOg8B,KACxEhL,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,iBAAkB2B,MAAOg2B,KACvEhF,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,gBAAiB2B,MAAO07B,KACtE1K,EAAS,CAAE7sB,KAAM,WAAYwsB,QAAS,CAAEtyB,KAAM,gBAAiB2B,MAAOm8B,KAKxE,OAFAnL,EAAS,CAAE7sB,KAAM,YAAawsB,QAASpP,EAASmP,SAEzCnP,EAAS4Q,UAGpB,CACE9zB,KAAM,YACNy0B,UAhLN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEbqL,EAAcvH,GAAAA,CAASpN,EAAOyT,QACjCjG,SAASxN,EAAO0T,cAChBzvB,SAAS+b,EAAO4U,QAAU,KACvBC,EAAoBzH,GAAAA,CAASpN,EAAO8U,OAAOrmC,IAAIkmC,GAC/CI,EAAgB3H,GAAAA,CAASpN,EAAOyT,QAAQxvB,SAAS+b,EAAO4U,QAAU,MAElEI,EAAc5H,GAAAA,CAASpN,EAAOyT,QACjCjG,SAASxN,EAAOmU,cAChBlwB,SAAS+b,EAAOiV,QAAU,KACvBC,EAAoB9H,GAAAA,CAASpN,EAAOmV,OAAO1mC,IAAIumC,GAC/CI,EAAgBhI,GAAAA,CAASpN,EAAOyT,QAAQxvB,SAAS+b,EAAOiV,QAAU,MAElEI,EAAuBR,EAAkBrH,SAAS0H,GAElDrB,EAAe7T,EAAO6T,aACtBS,EAAetU,EAAOsU,aACtBgB,EAAkBzB,EAAeS,EAEjCiB,EAAsBvV,EAAO8T,cAAcjH,cAAc5oB,SAAS+b,EAAO4O,QAAU,KACnF4G,EAAiBxV,EAAO8T,cAAclH,aACzCn+B,IAAIomC,GACJrH,SAAS+H,GACT/H,SAASuH,GAENU,EAAsBzV,EAAOuU,cAAc1H,cAAc5oB,SAAS+b,EAAO4O,QAAU,KACnF8G,EAAiB1V,EAAOuU,cAAc3H,aACzCn+B,IAAIymC,GACJ1H,SAASiI,GACTjI,SAAS4H,GAENnG,EAAeuG,EAAehI,SAASkI,GAE7C,OACE,UAAC,IAAD,YACE,UAAC,IAAD,YACE,2CACA,0BAAM7K,EAAAA,EAAAA,IAAW7K,EAAOyT,cAG1B,mBAAOrJ,UAAU,4BAAjB,WACE,kBAAOA,UAAU,cAAjB,UACE,2BACE,mBACA,eAAIA,UAAU,uBAAd,qBACA,eAAIA,UAAU,uBAAd,uBACA,eAAIA,UAAU,uBAAd,gCAGJ,mBAAOA,UAAU,2BAAjB,WACE,2BACE,eAAIA,UAAU,YAAd,+BACA,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAO2T,oBACxD,eAAIvJ,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAOoU,oBACxD,eAAIhK,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW7K,EAAOoO,sBAE1D,2BACE,eAAIhE,UAAU,YAAd,gCACA,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAWgK,MACjD,eAAIzK,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAWqK,MACjD,eAAI9K,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAWwK,SAEnD,2BACE,eAAIjL,UAAU,YAAd,kCACA,eAAIA,UAAU,uBAAd,SAAsCyJ,KACtC,eAAIzJ,UAAU,uBAAd,SAAsCkK,KACtC,eAAIlK,UAAU,uBAAd,SAAsCkL,QAExC,2BACE,gBAAIlL,UAAU,YAAd,6BACiB,+BADjB,QAGA,eAAIA,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW2K,MACjD,eAAIpL,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAW6K,MACjD,eAAItL,UAAU,uBAAd,UAAsCS,EAAAA,EAAAA,IAAWoE,eAKvD,SAAC,IAAD,CAAc7E,UAAU,MAAxB,UACE,4BACE,wCADF,iKAgGJ,CACE3zB,KAAM,QACNy0B,UAzFN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,iBAAKc,UAAU,iBAAf,WACE,SAAC,KAAD,CAA4BsC,aAAc1M,EAAO8T,cAAehI,MAAM,YACtE,SAAC,KAAD,CAA4BY,aAAc1M,EAAOuU,cAAezI,MAAM,gBAqFxE,CACEr1B,KAAM,SACNy0B,UAlFN,WACE,MAAM,OAAElL,IAAWsJ,EAAAA,EAAAA,MAEnB,OACE,iCACE,gBAAKc,UAAU,gBAAf,0CACA,SAAC,KAAD,CAA2BsC,aAAc1M,EAAO8T,iBAChD,gBAAK1J,UAAU,gBAAf,0CACA,SAAC,KAAD,CAA2BsC,aAAc1M,EAAOuU,sBA6EpDzL,OAAQ,CACN,CACEvsB,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,SACNs1B,MAAO,cACP3zB,MAAO,KACPu9B,WAAW,GAEb,CACEp5B,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,UACNs1B,MAAO,uBACP3zB,MAAO,GACPu9B,WAAW,GAEb,CACEp5B,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,eACNs1B,MAAO,eACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,eACNs1B,MAAO,eACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,eACNs1B,MAAO,qBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,eACNs1B,MAAO,qBACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,gBACNs1B,MAAO,gBACP3zB,MAAO,MAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,gBACNs1B,MAAO,gBACP3zB,MAAO,MAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,UACNs1B,MAAO,SACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,UACNs1B,MAAO,SACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,QACNs1B,MAAO,OACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,WACXx1B,KAAM,QACNs1B,MAAO,OACP3zB,MAAO,KAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,mBACNs1B,MAAO,+BACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,MACVlzB,KAAM,mBACNs1B,MAAO,+BACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,iBACNs1B,MAAO,6BACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,iBACNs1B,MAAO,6BACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,WACNs1B,MAAO,uBACP3zB,MAAO,GAET,CACEmE,KAAM,SACNotB,SAAU,QACVsC,UAAW,UACXx1B,KAAM,WACNs1B,MAAO,uBAC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","sources":["webpack://adirondackbank.com/./node_modules/@mapbox/point-geometry/index.js","webpack://adirondackbank.com/./themes/app/src/index.js","webpack://adirondackbank.com/./node_modules/wretch/dist/mix.js","webpack://adirondackbank.com/./node_modules/wretch/dist/config.js","webpack://adirondackbank.com/./node_modules/wretch/dist/perfs.js","webpack://adirondackbank.com/./node_modules/wretch/dist/middleware.js","webpack://adirondackbank.com/./node_modules/wretch/dist/resolver.js","webpack://adirondackbank.com/./node_modules/wretch/dist/wretcher.js","webpack://adirondackbank.com/./node_modules/wretch/dist/index.js","webpack://adirondackbank.com/./themes/app/src/scripts/common/ajax.js","webpack://adirondackbank.com/./themes/app/src/scripts/common/requestTimeout.js","webpack://adirondackbank.com/./node_modules/jump.js/dist/jump.module.js","webpack://adirondackbank.com/./themes/app/src/scripts/common/scrollTo.js","webpack://adirondackbank.com/./themes/app/src/scripts/common/util.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/add-to-calendar.js","webpack://adirondackbank.com/./node_modules/is-dom-node/dist/is-dom-node.es.js","webpack://adirondackbank.com/./node_modules/tealight/dist/tealight.es.js","webpack://adirondackbank.com/./node_modules/is-dom-node-list/dist/is-dom-node-list.es.js","webpack://adirondackbank.com/./node_modules/rematrix/dist/rematrix.es.js","webpack://adirondackbank.com/./node_modules/miniraf/dist/miniraf.es.js","webpack://adirondackbank.com/./node_modules/scrollreveal/dist/scrollreveal.es.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/animation.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/constantContact.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/countUp.js","webpack://adirondackbank.com/./node_modules/a11y-dialog/dist/a11y-dialog.esm.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/dialog.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/dropdown.js","webpack://adirondackbank.com/./themes/app/src/scripts/common/validation.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/form.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/modal.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/modalSizing.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/pageHeaderSearchForm.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/paginatedList.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/photoGrid.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/scrollTo.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/signIn.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/siteAnnouncement.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/siteNavigation.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/siteWidget.js","webpack://adirondackbank.com/./themes/app/src/scripts/common/slide.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/slideToggle.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/speedBump.js","webpack://adirondackbank.com/./themes/app/src/scripts/components/tourVideo.js","webpack://adirondackbank.com/./themes/app/src/scripts/elements/benefits.js","webpack://adirondackbank.com/./themes/app/src/scripts/elements/blogPosts.js","webpack://adirondackbank.com/./themes/app/src/scripts/elements/chart.js","webpack://adirondackbank.com/./themes/app/src/scripts/elements/iconCallToActions.js","webpack://adirondackbank.com/./themes/app/src/scripts/elements/leadInSlider.js","webpack://adirondackbank.com/./themes/app/src/scripts/elements/overlaySlider.js","webpack://adirondackbank.com/./themes/app/src/scripts/elements/panelSlider.js","webpack://adirondackbank.com/./themes/app/src/scripts/elements/testimonials.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/Context.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/FixedLoanScratchpad.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/FutureValueCalculator.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/HowLongMustISaveForAMajorPurchase.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/HowLongWillItTakeToPayOffMyCreditCards.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/HowLongWouldItTakeToPayOffALoan.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/HowMuchCanIBorrow.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/HowMuchCarCanIAfford.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/HowMuchHouseCanIAfford.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/HowMuchMoneyCouldISave.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/HowMuchWouldINeedToSaveEachMonth.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/InvestmentYieldCalculator.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/IsRefinancingMyLoanAGoodIdea.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/ShouldIBuyOrRentMyHome.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/SimpleLoanCalculator.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/SimpleSavingsGoalCalculator.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/WhatAreMyPaymentsForAFixedRateLoan.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/WhatAreMyPaymentsForAnAdjustableRateLoan.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/WhatAreTheEffectsOfInflation.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/WhatInterestRateWouldINeed.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/WhatIsTheFutureValueOfADollar.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/WhatPaymentsWillItTakeToPayOffMyCreditCards.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/WhatWouldISaveIfIMadeMonthlyPrepayments.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/WhatWouldMyPaymentsBe.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/WhichLoanIsBetterFixedOrAdjustable.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/components/CalculateResults.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/components/CalculateRow.js","webpack://adirondackbank.com/./node_modules/react-chartjs-2/dist/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/assign/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/parse/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/constants/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/parseISO/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/addHours/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/compareAsc/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/endOfDay/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/differenceInMonths/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/startOfWeek/index.js","webpack://adirondackbank.com/./node_modules/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/addSeconds/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/addQuarters/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/differenceInHours/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/differenceInYears/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/startOfSecond/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/startOfMinute/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/startOfHour/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/startOfQuarter/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/startOfYear/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/endOfSecond/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/endOfMinute/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/endOfHour/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/endOfWeek/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/endOfQuarter/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/endOfYear/index.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/components/Charts.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/components/Fields.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/components/Tables.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/subMonths/index.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/util.js","webpack://adirondackbank.com/./node_modules/react-headless-tabs/dist/module.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/components/TabSelector.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/components/Icons.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/Calculator.js","webpack://adirondackbank.com/./themes/app/src/scripts/sections/calculators.js","webpack://adirondackbank.com/./themes/app/src/scripts/sections/comparison.js","webpack://adirondackbank.com/./themes/app/src/scripts/sections/disclosure.js","webpack://adirondackbank.com/./node_modules/preact/dist/preact.module.js","webpack://adirondackbank.com/./node_modules/preact/hooks/dist/hooks.module.js","webpack://adirondackbank.com/./node_modules/preact/compat/dist/compat.module.js","webpack://adirondackbank.com/./node_modules/@fullcalendar/core/vdom.js","webpack://adirondackbank.com/./node_modules/@fullcalendar/common/vdom.js","webpack://adirondackbank.com/./node_modules/@fullcalendar/common/main.js","webpack://adirondackbank.com/./node_modules/@fullcalendar/core/main.js","webpack://adirondackbank.com/./node_modules/@fullcalendar/daygrid/main.js","webpack://adirondackbank.com/./themes/app/src/scripts/sections/events.js","webpack://adirondackbank.com/./themes/app/src/scripts/sections/faqs.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/locations/Context.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/locations/LocationZip.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/locations/LocationSelect.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/locations/icons.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/locations/LocationCard.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/locations/LocationList.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/locations/Sidebar.js","webpack://adirondackbank.com/./node_modules/@googlemaps/js-api-loader/dist/index.esm.js","webpack://adirondackbank.com/./node_modules/google-map-react/dist/index.modern.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/locations/MapInfoWindow.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/locations/MapMarker.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/locations/UserMarker.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/locations/Map.js","webpack://adirondackbank.com/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://adirondackbank.com/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://adirondackbank.com/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://adirondackbank.com/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://adirondackbank.com/./node_modules/compute-scroll-into-view/dist/index.module.js","webpack://adirondackbank.com/./node_modules/downshift/dist/downshift.esm.js","webpack://adirondackbank.com/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/locations/LocationSearch.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/locations/index.js","webpack://adirondackbank.com/./themes/app/src/scripts/sections/locations.js","webpack://adirondackbank.com/./themes/app/src/scripts/sections/photoAlbum.js","webpack://adirondackbank.com/./themes/app/src/scripts/sections/usergroup.js","webpack://adirondackbank.com/./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","webpack://adirondackbank.com/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://adirondackbank.com/./node_modules/chart.js/dist/chart.esm.js","webpack://adirondackbank.com/./node_modules/core-js/internals/a-callable.js","webpack://adirondackbank.com/./node_modules/core-js/internals/a-constructor.js","webpack://adirondackbank.com/./node_modules/core-js/internals/a-possible-prototype.js","webpack://adirondackbank.com/./node_modules/core-js/internals/add-to-unscopables.js","webpack://adirondackbank.com/./node_modules/core-js/internals/advance-string-index.js","webpack://adirondackbank.com/./node_modules/core-js/internals/an-instance.js","webpack://adirondackbank.com/./node_modules/core-js/internals/an-object.js","webpack://adirondackbank.com/./node_modules/core-js/internals/array-from.js","webpack://adirondackbank.com/./node_modules/core-js/internals/array-includes.js","webpack://adirondackbank.com/./node_modules/core-js/internals/array-slice-simple.js","webpack://adirondackbank.com/./node_modules/core-js/internals/array-sort.js","webpack://adirondackbank.com/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://adirondackbank.com/./node_modules/core-js/internals/classof-raw.js","webpack://adirondackbank.com/./node_modules/core-js/internals/classof.js","webpack://adirondackbank.com/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://adirondackbank.com/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://adirondackbank.com/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://adirondackbank.com/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://adirondackbank.com/./node_modules/core-js/internals/create-property-descriptor.js","webpack://adirondackbank.com/./node_modules/core-js/internals/create-property.js","webpack://adirondackbank.com/./node_modules/core-js/internals/define-iterator.js","webpack://adirondackbank.com/./node_modules/core-js/internals/descriptors.js","webpack://adirondackbank.com/./node_modules/core-js/internals/document-create-element.js","webpack://adirondackbank.com/./node_modules/core-js/internals/dom-iterables.js","webpack://adirondackbank.com/./node_modules/core-js/internals/dom-token-list-prototype.js","webpack://adirondackbank.com/./node_modules/core-js/internals/engine-user-agent.js","webpack://adirondackbank.com/./node_modules/core-js/internals/engine-v8-version.js","webpack://adirondackbank.com/./node_modules/core-js/internals/enum-bug-keys.js","webpack://adirondackbank.com/./node_modules/core-js/internals/export.js","webpack://adirondackbank.com/./node_modules/core-js/internals/fails.js","webpack://adirondackbank.com/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://adirondackbank.com/./node_modules/core-js/internals/function-apply.js","webpack://adirondackbank.com/./node_modules/core-js/internals/function-bind-context.js","webpack://adirondackbank.com/./node_modules/core-js/internals/function-bind-native.js","webpack://adirondackbank.com/./node_modules/core-js/internals/function-call.js","webpack://adirondackbank.com/./node_modules/core-js/internals/function-name.js","webpack://adirondackbank.com/./node_modules/core-js/internals/function-uncurry-this.js","webpack://adirondackbank.com/./node_modules/core-js/internals/get-built-in.js","webpack://adirondackbank.com/./node_modules/core-js/internals/get-iterator-method.js","webpack://adirondackbank.com/./node_modules/core-js/internals/get-iterator.js","webpack://adirondackbank.com/./node_modules/core-js/internals/get-method.js","webpack://adirondackbank.com/./node_modules/core-js/internals/get-substitution.js","webpack://adirondackbank.com/./node_modules/core-js/internals/global.js","webpack://adirondackbank.com/./node_modules/core-js/internals/has-own-property.js","webpack://adirondackbank.com/./node_modules/core-js/internals/hidden-keys.js","webpack://adirondackbank.com/./node_modules/core-js/internals/html.js","webpack://adirondackbank.com/./node_modules/core-js/internals/ie8-dom-define.js","webpack://adirondackbank.com/./node_modules/core-js/internals/indexed-object.js","webpack://adirondackbank.com/./node_modules/core-js/internals/inspect-source.js","webpack://adirondackbank.com/./node_modules/core-js/internals/internal-state.js","webpack://adirondackbank.com/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://adirondackbank.com/./node_modules/core-js/internals/is-callable.js","webpack://adirondackbank.com/./node_modules/core-js/internals/is-constructor.js","webpack://adirondackbank.com/./node_modules/core-js/internals/is-forced.js","webpack://adirondackbank.com/./node_modules/core-js/internals/is-object.js","webpack://adirondackbank.com/./node_modules/core-js/internals/is-pure.js","webpack://adirondackbank.com/./node_modules/core-js/internals/is-symbol.js","webpack://adirondackbank.com/./node_modules/core-js/internals/iterator-close.js","webpack://adirondackbank.com/./node_modules/core-js/internals/iterators-core.js","webpack://adirondackbank.com/./node_modules/core-js/internals/iterators.js","webpack://adirondackbank.com/./node_modules/core-js/internals/length-of-array-like.js","webpack://adirondackbank.com/./node_modules/core-js/internals/native-symbol.js","webpack://adirondackbank.com/./node_modules/core-js/internals/native-url.js","webpack://adirondackbank.com/./node_modules/core-js/internals/native-weak-map.js","webpack://adirondackbank.com/./node_modules/core-js/internals/new-promise-capability.js","webpack://adirondackbank.com/./node_modules/core-js/internals/object-assign.js","webpack://adirondackbank.com/./node_modules/core-js/internals/object-create.js","webpack://adirondackbank.com/./node_modules/core-js/internals/object-define-properties.js","webpack://adirondackbank.com/./node_modules/core-js/internals/object-define-property.js","webpack://adirondackbank.com/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://adirondackbank.com/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://adirondackbank.com/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://adirondackbank.com/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://adirondackbank.com/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://adirondackbank.com/./node_modules/core-js/internals/object-keys-internal.js","webpack://adirondackbank.com/./node_modules/core-js/internals/object-keys.js","webpack://adirondackbank.com/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://adirondackbank.com/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://adirondackbank.com/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://adirondackbank.com/./node_modules/core-js/internals/own-keys.js","webpack://adirondackbank.com/./node_modules/core-js/internals/promise-native-constructor.js","webpack://adirondackbank.com/./node_modules/core-js/internals/promise-resolve.js","webpack://adirondackbank.com/./node_modules/core-js/internals/redefine-all.js","webpack://adirondackbank.com/./node_modules/core-js/internals/redefine.js","webpack://adirondackbank.com/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://adirondackbank.com/./node_modules/core-js/internals/regexp-exec.js","webpack://adirondackbank.com/./node_modules/core-js/internals/regexp-flags.js","webpack://adirondackbank.com/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://adirondackbank.com/./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://adirondackbank.com/./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://adirondackbank.com/./node_modules/core-js/internals/require-object-coercible.js","webpack://adirondackbank.com/./node_modules/core-js/internals/set-global.js","webpack://adirondackbank.com/./node_modules/core-js/internals/set-to-string-tag.js","webpack://adirondackbank.com/./node_modules/core-js/internals/shared-key.js","webpack://adirondackbank.com/./node_modules/core-js/internals/shared-store.js","webpack://adirondackbank.com/./node_modules/core-js/internals/shared.js","webpack://adirondackbank.com/./node_modules/core-js/internals/species-constructor.js","webpack://adirondackbank.com/./node_modules/core-js/internals/string-multibyte.js","webpack://adirondackbank.com/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://adirondackbank.com/./node_modules/core-js/internals/to-absolute-index.js","webpack://adirondackbank.com/./node_modules/core-js/internals/to-indexed-object.js","webpack://adirondackbank.com/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://adirondackbank.com/./node_modules/core-js/internals/to-length.js","webpack://adirondackbank.com/./node_modules/core-js/internals/to-object.js","webpack://adirondackbank.com/./node_modules/core-js/internals/to-primitive.js","webpack://adirondackbank.com/./node_modules/core-js/internals/to-property-key.js","webpack://adirondackbank.com/./node_modules/core-js/internals/to-string-tag-support.js","webpack://adirondackbank.com/./node_modules/core-js/internals/to-string.js","webpack://adirondackbank.com/./node_modules/core-js/internals/try-to-string.js","webpack://adirondackbank.com/./node_modules/core-js/internals/uid.js","webpack://adirondackbank.com/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://adirondackbank.com/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://adirondackbank.com/./node_modules/core-js/internals/validate-arguments-length.js","webpack://adirondackbank.com/./node_modules/core-js/internals/well-known-symbol.js","webpack://adirondackbank.com/./node_modules/core-js/modules/es.array.iterator.js","webpack://adirondackbank.com/./node_modules/core-js/modules/es.promise.finally.js","webpack://adirondackbank.com/./node_modules/core-js/modules/es.regexp.exec.js","webpack://adirondackbank.com/./node_modules/core-js/modules/es.string.iterator.js","webpack://adirondackbank.com/./node_modules/core-js/modules/es.string.replace.js","webpack://adirondackbank.com/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://adirondackbank.com/./node_modules/core-js/modules/web.url-search-params.constructor.js","webpack://adirondackbank.com/./node_modules/core-js/modules/web.url-search-params.js","webpack://adirondackbank.com/./node_modules/core-js/modules/web.url.constructor.js","webpack://adirondackbank.com/./node_modules/core-js/modules/web.url.js","webpack://adirondackbank.com/./node_modules/countup.js/dist/countUp.min.js","webpack://adirondackbank.com/./node_modules/currency.js/dist/currency.min.js","webpack://adirondackbank.com/./node_modules/custom-event-polyfill/polyfill.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/addDays/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/addMinutes/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/addMonths/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/addWeeks/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/addYears/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/differenceInDays/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/endOfMonth/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/format/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/isDate/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/isValid/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/startOfDay/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/startOfMonth/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://adirondackbank.com/./node_modules/date-fns/esm/toDate/index.js","webpack://adirondackbank.com/./node_modules/selector-set/selector-set.next.js","webpack://adirondackbank.com/./node_modules/delegated-events/dist/index.js","webpack://adirondackbank.com/./node_modules/downshift/node_modules/react-is/cjs/react-is.production.min.js","webpack://adirondackbank.com/./node_modules/downshift/node_modules/react-is/index.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Components/arrow.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Components/body.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Components/group.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Components/head.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Components/option.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Components/root.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Components/value.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Config/Behavior.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Config/Callbacks.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Config/ClassNames.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Config/Config.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Easydropdown/Easydropdown.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Easydropdown/EasydropdownFacade.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Easydropdown/Timers.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Easydropdown/cache.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Easydropdown/factory.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Constants/KeyCodes.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Constants/Selectors.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/EventBinding.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Handlers/handleBodyClick.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Handlers/handleBodyMousedown.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Handlers/handleBodyMouseover.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Handlers/handleHeadClick.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Handlers/handleItemsListScroll.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Handlers/handleSelectBlur.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Handlers/handleSelectFocus.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Handlers/handleSelectInvalid.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Handlers/handleSelectKeydown.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Handlers/handleSelectKeydownDown.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Handlers/handleSelectKeydownUp.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Handlers/handleSelectKeypress.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/Handlers/handleWindowClick.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/bindEvents.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Events/getEventsList.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Renderer/Constants/AttributeChangeType.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Renderer/Constants/DomChangeType.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Renderer/Dom.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Renderer/PatchCommand.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Renderer/Renderer.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Renderer/domDiff.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Renderer/domPatch.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Shared/Polyfills/Element.matches.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Shared/Util/Constants/CollisionType.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Shared/Util/closestParent.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Shared/Util/composeClassName.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Shared/Util/createDomElementFromHtml.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Shared/Util/detectBodyCollision.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Shared/Util/dispatchOpen.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Shared/Util/getIsMobilePlatform.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Shared/Util/killSelectReaction.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Shared/Util/pollForSelectChange.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Shared/Util/pollForSelectMutation.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/Shared/Util/throttle.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/State/Constants/BodyStatus.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/State/Constants/ScrollStatus.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/State/Group.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/State/InjectedActions/closeOthers.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/State/InjectedActions/scrollToView.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/State/Option.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/State/State.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/State/StateManager.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/State/StateMapper.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/State/resolveActions.js","webpack://adirondackbank.com/./node_modules/easydropdown-a11y/dist/index.js","webpack://adirondackbank.com/./node_modules/eventemitter3/index.js","webpack://adirondackbank.com/./node_modules/helpful-merge/dist/Config.js","webpack://adirondackbank.com/./node_modules/helpful-merge/dist/Constants/ArrayStrategy.js","webpack://adirondackbank.com/./node_modules/helpful-merge/dist/FluentMerge.js","webpack://adirondackbank.com/./node_modules/helpful-merge/dist/Messages.js","webpack://adirondackbank.com/./node_modules/helpful-merge/dist/deriveCustomTypeInstance.js","webpack://adirondackbank.com/./node_modules/helpful-merge/dist/handleMergeError.js","webpack://adirondackbank.com/./node_modules/helpful-merge/dist/index.js","webpack://adirondackbank.com/./node_modules/helpful-merge/dist/merge.js","webpack://adirondackbank.com/./node_modules/lg-thumbnail.js/dist/lg-thumbnail.js","webpack://adirondackbank.com/./node_modules/lightgallery.js/dist/js/lightgallery.js","webpack://adirondackbank.com/./node_modules/lodash/_Hash.js","webpack://adirondackbank.com/./node_modules/lodash/_ListCache.js","webpack://adirondackbank.com/./node_modules/lodash/_Map.js","webpack://adirondackbank.com/./node_modules/lodash/_MapCache.js","webpack://adirondackbank.com/./node_modules/lodash/_Stack.js","webpack://adirondackbank.com/./node_modules/lodash/_Symbol.js","webpack://adirondackbank.com/./node_modules/lodash/_Uint8Array.js","webpack://adirondackbank.com/./node_modules/lodash/_apply.js","webpack://adirondackbank.com/./node_modules/lodash/_arrayLikeKeys.js","webpack://adirondackbank.com/./node_modules/lodash/_assignMergeValue.js","webpack://adirondackbank.com/./node_modules/lodash/_assignValue.js","webpack://adirondackbank.com/./node_modules/lodash/_assocIndexOf.js","webpack://adirondackbank.com/./node_modules/lodash/_baseAssignValue.js","webpack://adirondackbank.com/./node_modules/lodash/_baseCreate.js","webpack://adirondackbank.com/./node_modules/lodash/_baseFor.js","webpack://adirondackbank.com/./node_modules/lodash/_baseGetTag.js","webpack://adirondackbank.com/./node_modules/lodash/_baseIsArguments.js","webpack://adirondackbank.com/./node_modules/lodash/_baseIsNative.js","webpack://adirondackbank.com/./node_modules/lodash/_baseIsTypedArray.js","webpack://adirondackbank.com/./node_modules/lodash/_baseKeysIn.js","webpack://adirondackbank.com/./node_modules/lodash/_baseMerge.js","webpack://adirondackbank.com/./node_modules/lodash/_baseMergeDeep.js","webpack://adirondackbank.com/./node_modules/lodash/_baseRest.js","webpack://adirondackbank.com/./node_modules/lodash/_baseSetToString.js","webpack://adirondackbank.com/./node_modules/lodash/_baseSlice.js","webpack://adirondackbank.com/./node_modules/lodash/_baseTimes.js","webpack://adirondackbank.com/./node_modules/lodash/_baseTrim.js","webpack://adirondackbank.com/./node_modules/lodash/_baseUnary.js","webpack://adirondackbank.com/./node_modules/lodash/_cloneArrayBuffer.js","webpack://adirondackbank.com/./node_modules/lodash/_cloneBuffer.js","webpack://adirondackbank.com/./node_modules/lodash/_cloneTypedArray.js","webpack://adirondackbank.com/./node_modules/lodash/_copyArray.js","webpack://adirondackbank.com/./node_modules/lodash/_copyObject.js","webpack://adirondackbank.com/./node_modules/lodash/_coreJsData.js","webpack://adirondackbank.com/./node_modules/lodash/_createAssigner.js","webpack://adirondackbank.com/./node_modules/lodash/_createBaseFor.js","webpack://adirondackbank.com/./node_modules/lodash/_defineProperty.js","webpack://adirondackbank.com/./node_modules/lodash/_freeGlobal.js","webpack://adirondackbank.com/./node_modules/lodash/_getMapData.js","webpack://adirondackbank.com/./node_modules/lodash/_getNative.js","webpack://adirondackbank.com/./node_modules/lodash/_getPrototype.js","webpack://adirondackbank.com/./node_modules/lodash/_getRawTag.js","webpack://adirondackbank.com/./node_modules/lodash/_getValue.js","webpack://adirondackbank.com/./node_modules/lodash/_hashClear.js","webpack://adirondackbank.com/./node_modules/lodash/_hashDelete.js","webpack://adirondackbank.com/./node_modules/lodash/_hashGet.js","webpack://adirondackbank.com/./node_modules/lodash/_hashHas.js","webpack://adirondackbank.com/./node_modules/lodash/_hashSet.js","webpack://adirondackbank.com/./node_modules/lodash/_initCloneObject.js","webpack://adirondackbank.com/./node_modules/lodash/_isIndex.js","webpack://adirondackbank.com/./node_modules/lodash/_isIterateeCall.js","webpack://adirondackbank.com/./node_modules/lodash/_isKeyable.js","webpack://adirondackbank.com/./node_modules/lodash/_isMasked.js","webpack://adirondackbank.com/./node_modules/lodash/_isPrototype.js","webpack://adirondackbank.com/./node_modules/lodash/_listCacheClear.js","webpack://adirondackbank.com/./node_modules/lodash/_listCacheDelete.js","webpack://adirondackbank.com/./node_modules/lodash/_listCacheGet.js","webpack://adirondackbank.com/./node_modules/lodash/_listCacheHas.js","webpack://adirondackbank.com/./node_modules/lodash/_listCacheSet.js","webpack://adirondackbank.com/./node_modules/lodash/_mapCacheClear.js","webpack://adirondackbank.com/./node_modules/lodash/_mapCacheDelete.js","webpack://adirondackbank.com/./node_modules/lodash/_mapCacheGet.js","webpack://adirondackbank.com/./node_modules/lodash/_mapCacheHas.js","webpack://adirondackbank.com/./node_modules/lodash/_mapCacheSet.js","webpack://adirondackbank.com/./node_modules/lodash/_nativeCreate.js","webpack://adirondackbank.com/./node_modules/lodash/_nativeKeysIn.js","webpack://adirondackbank.com/./node_modules/lodash/_nodeUtil.js","webpack://adirondackbank.com/./node_modules/lodash/_objectToString.js","webpack://adirondackbank.com/./node_modules/lodash/_overArg.js","webpack://adirondackbank.com/./node_modules/lodash/_overRest.js","webpack://adirondackbank.com/./node_modules/lodash/_root.js","webpack://adirondackbank.com/./node_modules/lodash/_safeGet.js","webpack://adirondackbank.com/./node_modules/lodash/_setToString.js","webpack://adirondackbank.com/./node_modules/lodash/_shortOut.js","webpack://adirondackbank.com/./node_modules/lodash/_stackClear.js","webpack://adirondackbank.com/./node_modules/lodash/_stackDelete.js","webpack://adirondackbank.com/./node_modules/lodash/_stackGet.js","webpack://adirondackbank.com/./node_modules/lodash/_stackHas.js","webpack://adirondackbank.com/./node_modules/lodash/_stackSet.js","webpack://adirondackbank.com/./node_modules/lodash/_toSource.js","webpack://adirondackbank.com/./node_modules/lodash/_trimmedEndIndex.js","webpack://adirondackbank.com/./node_modules/lodash/chunk.js","webpack://adirondackbank.com/./node_modules/lodash/constant.js","webpack://adirondackbank.com/./node_modules/lodash/debounce.js","webpack://adirondackbank.com/./node_modules/lodash/eq.js","webpack://adirondackbank.com/./node_modules/lodash/identity.js","webpack://adirondackbank.com/./node_modules/lodash/isArguments.js","webpack://adirondackbank.com/./node_modules/lodash/isArray.js","webpack://adirondackbank.com/./node_modules/lodash/isArrayLike.js","webpack://adirondackbank.com/./node_modules/lodash/isArrayLikeObject.js","webpack://adirondackbank.com/./node_modules/lodash/isBuffer.js","webpack://adirondackbank.com/./node_modules/lodash/isFunction.js","webpack://adirondackbank.com/./node_modules/lodash/isLength.js","webpack://adirondackbank.com/./node_modules/lodash/isObject.js","webpack://adirondackbank.com/./node_modules/lodash/isObjectLike.js","webpack://adirondackbank.com/./node_modules/lodash/isPlainObject.js","webpack://adirondackbank.com/./node_modules/lodash/isSymbol.js","webpack://adirondackbank.com/./node_modules/lodash/isTypedArray.js","webpack://adirondackbank.com/./node_modules/lodash/keysIn.js","webpack://adirondackbank.com/./node_modules/lodash/merge.js","webpack://adirondackbank.com/./node_modules/lodash/now.js","webpack://adirondackbank.com/./node_modules/lodash/stubFalse.js","webpack://adirondackbank.com/./node_modules/lodash/throttle.js","webpack://adirondackbank.com/./node_modules/lodash/toFinite.js","webpack://adirondackbank.com/./node_modules/lodash/toInteger.js","webpack://adirondackbank.com/./node_modules/lodash/toNumber.js","webpack://adirondackbank.com/./node_modules/lodash/toPlainObject.js","webpack://adirondackbank.com/./node_modules/object-assign/index.js","webpack://adirondackbank.com/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://adirondackbank.com/./node_modules/prop-types/index.js","webpack://adirondackbank.com/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://adirondackbank.com/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://adirondackbank.com/./node_modules/react-dom/index.js","webpack://adirondackbank.com/./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://adirondackbank.com/./node_modules/react/cjs/react.production.min.js","webpack://adirondackbank.com/./node_modules/react/index.js","webpack://adirondackbank.com/./node_modules/react/jsx-runtime.js","webpack://adirondackbank.com/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://adirondackbank.com/./node_modules/scheduler/index.js","webpack://adirondackbank.com/./node_modules/tingle.js/dist/tingle.min.js","webpack://adirondackbank.com/./node_modules/tslib/tslib.es6.js","webpack://adirondackbank.com/./node_modules/validate.js/validate.js","webpack://adirondackbank.com/./node_modules/verge/verge.js","webpack://adirondackbank.com/./node_modules/what-input/dist/what-input.js","webpack://adirondackbank.com/./themes/app/src/scripts/react/calculators/calculators/ sync ^\\.\\/.*$","webpack://adirondackbank.com/./themes/app/src/scripts/ sync ^(","webpack://adirondackbank.com/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://adirondackbank.com/./node_modules/ssr-window/ssr-window.esm.js","webpack://adirondackbank.com/./node_modules/dom7/dom7.esm.js","webpack://adirondackbank.com/./node_modules/swiper/shared/dom.js","webpack://adirondackbank.com/./node_modules/swiper/shared/utils.js","webpack://adirondackbank.com/./node_modules/swiper/shared/get-support.js","webpack://adirondackbank.com/./node_modules/swiper/shared/get-device.js","webpack://adirondackbank.com/./node_modules/swiper/shared/get-browser.js","webpack://adirondackbank.com/./node_modules/swiper/core/events-emitter.js","webpack://adirondackbank.com/./node_modules/swiper/core/update/index.js","webpack://adirondackbank.com/./node_modules/swiper/core/update/updateSize.js","webpack://adirondackbank.com/./node_modules/swiper/core/update/updateSlides.js","webpack://adirondackbank.com/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://adirondackbank.com/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://adirondackbank.com/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://adirondackbank.com/./node_modules/swiper/core/update/updateProgress.js","webpack://adirondackbank.com/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://adirondackbank.com/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://adirondackbank.com/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://adirondackbank.com/./node_modules/swiper/core/transition/transitionEmit.js","webpack://adirondackbank.com/./node_modules/swiper/core/slide/index.js","webpack://adirondackbank.com/./node_modules/swiper/core/slide/slideTo.js","webpack://adirondackbank.com/./node_modules/swiper/core/slide/slideToLoop.js","webpack://adirondackbank.com/./node_modules/swiper/core/slide/slideNext.js","webpack://adirondackbank.com/./node_modules/swiper/core/slide/slidePrev.js","webpack://adirondackbank.com/./node_modules/swiper/core/slide/slideReset.js","webpack://adirondackbank.com/./node_modules/swiper/core/slide/slideToClosest.js","webpack://adirondackbank.com/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://adirondackbank.com/./node_modules/swiper/core/events/onTouchStart.js","webpack://adirondackbank.com/./node_modules/swiper/core/events/onTouchMove.js","webpack://adirondackbank.com/./node_modules/swiper/core/events/onTouchEnd.js","webpack://adirondackbank.com/./node_modules/swiper/core/events/onResize.js","webpack://adirondackbank.com/./node_modules/swiper/core/events/onClick.js","webpack://adirondackbank.com/./node_modules/swiper/core/events/onScroll.js","webpack://adirondackbank.com/./node_modules/swiper/core/events/index.js","webpack://adirondackbank.com/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://adirondackbank.com/./node_modules/swiper/core/classes/index.js","webpack://adirondackbank.com/./node_modules/swiper/core/classes/addClasses.js","webpack://adirondackbank.com/./node_modules/swiper/core/classes/removeClasses.js","webpack://adirondackbank.com/./node_modules/swiper/core/defaults.js","webpack://adirondackbank.com/./node_modules/swiper/core/moduleExtendParams.js","webpack://adirondackbank.com/./node_modules/swiper/core/core.js","webpack://adirondackbank.com/./node_modules/swiper/core/translate/index.js","webpack://adirondackbank.com/./node_modules/swiper/core/translate/getTranslate.js","webpack://adirondackbank.com/./node_modules/swiper/core/translate/setTranslate.js","webpack://adirondackbank.com/./node_modules/swiper/core/translate/minTranslate.js","webpack://adirondackbank.com/./node_modules/swiper/core/translate/maxTranslate.js","webpack://adirondackbank.com/./node_modules/swiper/core/translate/translateTo.js","webpack://adirondackbank.com/./node_modules/swiper/core/transition/index.js","webpack://adirondackbank.com/./node_modules/swiper/core/transition/setTransition.js","webpack://adirondackbank.com/./node_modules/swiper/core/transition/transitionStart.js","webpack://adirondackbank.com/./node_modules/swiper/core/transition/transitionEnd.js","webpack://adirondackbank.com/./node_modules/swiper/core/loop/index.js","webpack://adirondackbank.com/./node_modules/swiper/core/loop/loopCreate.js","webpack://adirondackbank.com/./node_modules/swiper/core/loop/loopFix.js","webpack://adirondackbank.com/./node_modules/swiper/core/loop/loopDestroy.js","webpack://adirondackbank.com/./node_modules/swiper/core/grab-cursor/index.js","webpack://adirondackbank.com/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://adirondackbank.com/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://adirondackbank.com/./node_modules/swiper/core/breakpoints/index.js","webpack://adirondackbank.com/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://adirondackbank.com/./node_modules/swiper/core/check-overflow/index.js","webpack://adirondackbank.com/./node_modules/swiper/core/images/index.js","webpack://adirondackbank.com/./node_modules/swiper/core/images/loadImage.js","webpack://adirondackbank.com/./node_modules/swiper/core/images/preloadImages.js","webpack://adirondackbank.com/./node_modules/swiper/core/modules/resize/resize.js","webpack://adirondackbank.com/./node_modules/swiper/core/modules/observer/observer.js","webpack://adirondackbank.com/./node_modules/swiper/modules/mousewheel/mousewheel.js","webpack://adirondackbank.com/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://adirondackbank.com/./node_modules/swiper/modules/navigation/navigation.js","webpack://adirondackbank.com/./node_modules/swiper/shared/classes-to-selector.js","webpack://adirondackbank.com/./node_modules/swiper/modules/pagination/pagination.js","webpack://adirondackbank.com/./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack://adirondackbank.com/./node_modules/swiper/modules/controller/controller.js","webpack://adirondackbank.com/./node_modules/swiper/modules/a11y/a11y.js","webpack://adirondackbank.com/./node_modules/swiper/modules/autoplay/autoplay.js","webpack://adirondackbank.com/./node_modules/swiper/modules/thumbs/thumbs.js","webpack://adirondackbank.com/./node_modules/swiper/shared/effect-target.js","webpack://adirondackbank.com/./node_modules/swiper/modules/effect-fade/effect-fade.js","webpack://adirondackbank.com/./node_modules/swiper/shared/effect-init.js","webpack://adirondackbank.com/./node_modules/swiper/shared/effect-virtual-transition-end.js"],"sourcesContent":["'use strict';\n\nmodule.exports = Point;\n\n/**\n * A standalone point geometry with useful accessor, comparison, and\n * modification methods.\n *\n * @class Point\n * @param {Number} x the x-coordinate. this could be longitude or screen\n * pixels, or any other sort of unit.\n * @param {Number} y the y-coordinate. this could be latitude or screen\n * pixels, or any other sort of unit.\n * @example\n * var point = new Point(-77, 38);\n */\nfunction Point(x, y) {\n this.x = x;\n this.y = y;\n}\n\nPoint.prototype = {\n\n /**\n * Clone this point, returning a new point that can be modified\n * without affecting the old one.\n * @return {Point} the clone\n */\n clone: function() { return new Point(this.x, this.y); },\n\n /**\n * Add this point's x & y coordinates to another point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n add: function(p) { return this.clone()._add(p); },\n\n /**\n * Subtract this point's x & y coordinates to from point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n sub: function(p) { return this.clone()._sub(p); },\n\n /**\n * Multiply this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n multByPoint: function(p) { return this.clone()._multByPoint(p); },\n\n /**\n * Divide this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n divByPoint: function(p) { return this.clone()._divByPoint(p); },\n\n /**\n * Multiply this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n mult: function(k) { return this.clone()._mult(k); },\n\n /**\n * Divide this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n div: function(k) { return this.clone()._div(k); },\n\n /**\n * Rotate this point around the 0, 0 origin by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @return {Point} output point\n */\n rotate: function(a) { return this.clone()._rotate(a); },\n\n /**\n * Rotate this point around p point by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @param {Point} p Point to rotate around\n * @return {Point} output point\n */\n rotateAround: function(a,p) { return this.clone()._rotateAround(a,p); },\n\n /**\n * Multiply this point by a 4x1 transformation matrix\n * @param {Array} m transformation matrix\n * @return {Point} output point\n */\n matMult: function(m) { return this.clone()._matMult(m); },\n\n /**\n * Calculate this point but as a unit vector from 0, 0, meaning\n * that the distance from the resulting point to the 0, 0\n * coordinate will be equal to 1 and the angle from the resulting\n * point to the 0, 0 coordinate will be the same as before.\n * @return {Point} unit vector point\n */\n unit: function() { return this.clone()._unit(); },\n\n /**\n * Compute a perpendicular point, where the new y coordinate\n * is the old x coordinate and the new x coordinate is the old y\n * coordinate multiplied by -1\n * @return {Point} perpendicular point\n */\n perp: function() { return this.clone()._perp(); },\n\n /**\n * Return a version of this point with the x & y coordinates\n * rounded to integers.\n * @return {Point} rounded point\n */\n round: function() { return this.clone()._round(); },\n\n /**\n * Return the magitude of this point: this is the Euclidean\n * distance from the 0, 0 coordinate to this point's x and y\n * coordinates.\n * @return {Number} magnitude\n */\n mag: function() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n\n /**\n * Judge whether this point is equal to another point, returning\n * true or false.\n * @param {Point} other the other point\n * @return {boolean} whether the points are equal\n */\n equals: function(other) {\n return this.x === other.x &&\n this.y === other.y;\n },\n\n /**\n * Calculate the distance from this point to another point\n * @param {Point} p the other point\n * @return {Number} distance\n */\n dist: function(p) {\n return Math.sqrt(this.distSqr(p));\n },\n\n /**\n * Calculate the distance from this point to another point,\n * without the square root step. Useful if you're comparing\n * relative distances.\n * @param {Point} p the other point\n * @return {Number} distance\n */\n distSqr: function(p) {\n var dx = p.x - this.x,\n dy = p.y - this.y;\n return dx * dx + dy * dy;\n },\n\n /**\n * Get the angle from the 0, 0 coordinate to this point, in radians\n * coordinates.\n * @return {Number} angle\n */\n angle: function() {\n return Math.atan2(this.y, this.x);\n },\n\n /**\n * Get the angle from this point to another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleTo: function(b) {\n return Math.atan2(this.y - b.y, this.x - b.x);\n },\n\n /**\n * Get the angle between this point and another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleWith: function(b) {\n return this.angleWithSep(b.x, b.y);\n },\n\n /*\n * Find the angle of the two vectors, solving the formula for\n * the cross product a x b = |a||b|sin(θ) for θ.\n * @param {Number} x the x-coordinate\n * @param {Number} y the y-coordinate\n * @return {Number} the angle in radians\n */\n angleWithSep: function(x, y) {\n return Math.atan2(\n this.x * y - this.y * x,\n this.x * x + this.y * y);\n },\n\n _matMult: function(m) {\n var x = m[0] * this.x + m[1] * this.y,\n y = m[2] * this.x + m[3] * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _add: function(p) {\n this.x += p.x;\n this.y += p.y;\n return this;\n },\n\n _sub: function(p) {\n this.x -= p.x;\n this.y -= p.y;\n return this;\n },\n\n _mult: function(k) {\n this.x *= k;\n this.y *= k;\n return this;\n },\n\n _div: function(k) {\n this.x /= k;\n this.y /= k;\n return this;\n },\n\n _multByPoint: function(p) {\n this.x *= p.x;\n this.y *= p.y;\n return this;\n },\n\n _divByPoint: function(p) {\n this.x /= p.x;\n this.y /= p.y;\n return this;\n },\n\n _unit: function() {\n this._div(this.mag());\n return this;\n },\n\n _perp: function() {\n var y = this.y;\n this.y = this.x;\n this.x = -y;\n return this;\n },\n\n _rotate: function(angle) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = cos * this.x - sin * this.y,\n y = sin * this.x + cos * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _rotateAround: function(angle, p) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),\n y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n this.x = x;\n this.y = y;\n return this;\n },\n\n _round: function() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n }\n};\n\n/**\n * Construct a point from an array if necessary, otherwise if the input\n * is already a Point, or an unknown type, return it unchanged\n * @param {Array|Point|*} a any kind of input value\n * @return {Point} constructed point, or passed-through value.\n * @example\n * // this\n * var point = Point.convert([0, 1]);\n * // is equivalent to\n * var point = new Point(0, 1);\n */\nPoint.convert = function (a) {\n if (a instanceof Point) {\n return a;\n }\n if (Array.isArray(a)) {\n return new Point(a[0], a[1]);\n }\n return a;\n};\n","// Thirdparty\nimport 'lightgallery.js/dist/css/lightgallery.css'\nimport 'swiper/css'\nimport 'swiper/css/autoplay'\nimport 'swiper/css/effect-fade'\nimport 'swiper/css/mousewheel'\nimport 'swiper/css/scrollbar'\nimport 'swiper/css/thumbs'\n\n// Theme\nimport './styles/index.css'\n\n// Thirdparty\nimport 'what-input'\nimport 'lightgallery.js/dist/js/lightgallery.js'\nimport 'lg-thumbnail.js/dist/lg-thumbnail.js'\n\nimport throttle from 'lodash/throttle'\n\n/*\n * Script loader\n *\n * Imports and runs all scripts in the `./scripts` directory\n * Scripts must have a default export with `can` and `run` functions\n *\n * export default {\n * can: () => boolean,\n * run: function to run if `can` is true\n * }\n */\ndocument.addEventListener('DOMContentLoaded', () => {\n ;((r) => {\n r.keys()\n .reduce((modules, script) => {\n const module = r(script).default\n if (module) {\n modules.push(module)\n }\n return modules\n }, [])\n .map((module) => (module.can === true || module.can()) && module.run())\n })(require.context('scripts', true, /^(?!.*(common|react)).*\\.js$/))\n\n document.documentElement.classList.remove('_preload')\n\n const setHeights = () => {\n const siteHeader = document.querySelector('.site-header')\n\n if (siteHeader) {\n document.documentElement.style.setProperty('--site-header-height', `${siteHeader.offsetHeight}px`)\n }\n }\n\n setHeights()\n\n window.addEventListener('resize', throttle(setHeights, 250))\n\n // Update all youtube iframes on the page to include ?rel=0\n document.querySelectorAll('iframe').forEach((el) => {\n const src = el.src\n\n if (src.includes('?feature=oembed')) {\n el.src = src.replace('?feature=oembed', '?rel=0')\n }\n })\n})\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nexport var mix = function (one, two, mergeArrays) {\n if (mergeArrays === void 0) { mergeArrays = false; }\n if (!one || !two || typeof one !== \"object\" || typeof two !== \"object\")\n return one;\n var clone = __assign({}, one);\n for (var prop in two) {\n if (two.hasOwnProperty(prop)) {\n if (two[prop] instanceof Array && one[prop] instanceof Array) {\n clone[prop] = mergeArrays ? __spreadArray(__spreadArray([], one[prop], true), two[prop], true) : two[prop];\n }\n else if (typeof two[prop] === \"object\" && typeof one[prop] === \"object\") {\n clone[prop] = mix(one[prop], two[prop], mergeArrays);\n }\n else {\n clone[prop] = two[prop];\n }\n }\n }\n return clone;\n};\n//# sourceMappingURL=mix.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar config = {\n // Default options\n defaults: {},\n // Error type\n errorType: null,\n // Polyfills\n polyfills: {\n fetch: null,\n FormData: null,\n URLSearchParams: null,\n performance: null,\n PerformanceObserver: null,\n AbortController: null\n },\n polyfill: function (p, _a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.doThrow, doThrow = _c === void 0 ? true : _c, _d = _b.instance, instance = _d === void 0 ? false : _d;\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var res = this.polyfills[p] ||\n (typeof self !== \"undefined\" ? self[p] : null) ||\n (typeof global !== \"undefined\" ? global[p] : null);\n if (doThrow && !res)\n throw new Error(p + \" is not defined\");\n return instance && res ? new (res.bind.apply(res, __spreadArray([void 0], args, false)))() : res;\n }\n};\nexport default config;\n//# sourceMappingURL=config.js.map","import conf from \"./config\";\nvar onMatch = function (entries, name, callback, _performance) {\n if (!entries.getEntriesByName)\n return false;\n var matches = entries.getEntriesByName(name);\n if (matches && matches.length > 0) {\n callback(matches.reverse()[0]);\n if (_performance.clearMeasures)\n _performance.clearMeasures(name);\n perfs.callbacks.delete(name);\n if (perfs.callbacks.size < 1) {\n perfs.observer.disconnect();\n if (_performance.clearResourceTimings) {\n _performance.clearResourceTimings();\n }\n }\n return true;\n }\n return false;\n};\nvar lazyObserver = function (_performance, _observer) {\n if (!perfs.observer && _performance && _observer) {\n perfs.observer = new _observer(function (entries) {\n perfs.callbacks.forEach(function (callback, name) {\n onMatch(entries, name, callback, _performance);\n });\n });\n if (_performance.clearResourceTimings)\n _performance.clearResourceTimings();\n }\n return perfs.observer;\n};\nvar perfs = {\n callbacks: new Map(),\n observer: null,\n observe: function (name, callback) {\n if (!name || !callback)\n return;\n var _performance = conf.polyfill(\"performance\", { doThrow: false });\n var _observer = conf.polyfill(\"PerformanceObserver\", { doThrow: false });\n if (!lazyObserver(_performance, _observer))\n return;\n if (!onMatch(_performance, name, callback, _performance)) {\n if (perfs.callbacks.size < 1)\n perfs.observer.observe({ entryTypes: [\"resource\", \"measure\"] });\n perfs.callbacks.set(name, callback);\n }\n }\n};\nexport default perfs;\n//# sourceMappingURL=perfs.js.map","export var middlewareHelper = function (middlewares) { return function (fetchFunction) {\n return (middlewares.length === 0 ?\n fetchFunction :\n middlewares.length === 1 ?\n middlewares[0](fetchFunction) :\n middlewares.reduceRight(function (acc, curr, idx) {\n return (idx === middlewares.length - 2) ? curr(acc(fetchFunction)) : curr(acc);\n }));\n}; };\n//# sourceMappingURL=middleware.js.map","import { mix } from \"./mix\";\nimport conf from \"./config\";\nimport perfs from \"./perfs\";\nimport { middlewareHelper } from \"./middleware\";\nvar WretchErrorWrapper = /** @class */ (function () {\n function WretchErrorWrapper(error) {\n this.error = error;\n }\n return WretchErrorWrapper;\n}());\nexport var resolver = function (wretcher) {\n var url = wretcher._url, _catchers = wretcher._catchers, resolvers = wretcher._resolvers, middlewares = wretcher._middlewares, opts = wretcher._options;\n var catchers = new Map(_catchers);\n var finalOptions = mix(conf.defaults, opts);\n var fetchController = conf.polyfill(\"AbortController\", { doThrow: false, instance: true });\n if (!finalOptions[\"signal\"] && fetchController) {\n finalOptions[\"signal\"] = fetchController.signal;\n }\n // Request timeout\n var timeout = {\n ref: null,\n clear: function () {\n if (timeout.ref) {\n clearTimeout(timeout.ref);\n timeout.ref = null;\n }\n }\n };\n // The generated fetch request\n var fetchRequest = middlewareHelper(middlewares)(conf.polyfill(\"fetch\"))(url, finalOptions);\n // Throws on an http error\n var throwingPromise = fetchRequest\n .catch(function (error) {\n throw new WretchErrorWrapper(error);\n })\n .then(function (response) {\n timeout.clear();\n if (!response.ok) {\n if (response.type === \"opaque\") {\n var err = new Error(\"Opaque response\");\n err[\"status\"] = response.status;\n err[\"response\"] = response;\n throw err;\n }\n return response[conf.errorType || \"text\"]().then(function (msg) {\n // Enhances the error object\n var err = new Error(msg);\n err[conf.errorType || \"text\"] = msg;\n err[\"status\"] = response.status;\n err[\"response\"] = response;\n throw err;\n });\n }\n return response;\n });\n // Wraps the Promise in order to dispatch the error to a matching catcher\n var catchersWrapper = function (promise) {\n return promise.catch(function (err) {\n timeout.clear();\n var error = err instanceof WretchErrorWrapper ? err.error : err;\n if (err instanceof WretchErrorWrapper && catchers.has(\"__fromFetch\"))\n return catchers.get(\"__fromFetch\")(error, wretcher);\n else if (catchers.has(error.status))\n return catchers.get(error.status)(error, wretcher);\n else if (catchers.has(error.name))\n return catchers.get(error.name)(error, wretcher);\n else\n throw error;\n });\n };\n var bodyParser = function (funName) { return function (cb) { return funName ?\n // If a callback is provided, then callback with the body result otherwise return the parsed body itself.\n catchersWrapper(throwingPromise.then(function (_) { return _ && _[funName](); }).then(function (_) { return cb ? cb(_) : _; })) :\n // No body parsing method - return the response\n catchersWrapper(throwingPromise.then(function (_) { return cb ? cb(_) : _; })); }; };\n var responseChain = {\n /**\n * Retrieves the raw result as a promise.\n */\n res: bodyParser(null),\n /**\n * Retrieves the result as a parsed JSON object.\n */\n json: bodyParser(\"json\"),\n /**\n * Retrieves the result as a Blob object.\n */\n blob: bodyParser(\"blob\"),\n /**\n * Retrieves the result as a FormData object.\n */\n formData: bodyParser(\"formData\"),\n /**\n * Retrieves the result as an ArrayBuffer object.\n */\n arrayBuffer: bodyParser(\"arrayBuffer\"),\n /**\n * Retrieves the result as a string.\n */\n text: bodyParser(\"text\"),\n /**\n * Performs a callback on the API performance timings of the request.\n *\n * Warning: Still experimental on browsers and node.js\n */\n perfs: function (cb) {\n fetchRequest.then(function (res) { return perfs.observe(res.url, cb); });\n return responseChain;\n },\n /**\n * Aborts the request after a fixed time.\n *\n * @param time Time in milliseconds\n * @param controller A custom controller\n */\n setTimeout: function (time, controller) {\n if (controller === void 0) { controller = fetchController; }\n timeout.clear();\n timeout.ref = setTimeout(function () { return controller.abort(); }, time);\n return responseChain;\n },\n /**\n * Returns the automatically generated AbortController alongside the current wretch response as a pair.\n */\n controller: function () { return [fetchController, responseChain]; },\n /**\n * Catches an http response with a specific error code or name and performs a callback.\n */\n error: function (errorId, cb) {\n catchers.set(errorId, cb);\n return responseChain;\n },\n /**\n * Catches a bad request (http code 400) and performs a callback.\n */\n badRequest: function (cb) { return responseChain.error(400, cb); },\n /**\n * Catches an unauthorized request (http code 401) and performs a callback.\n */\n unauthorized: function (cb) { return responseChain.error(401, cb); },\n /**\n * Catches a forbidden request (http code 403) and performs a callback.\n */\n forbidden: function (cb) { return responseChain.error(403, cb); },\n /**\n * Catches a \"not found\" request (http code 404) and performs a callback.\n */\n notFound: function (cb) { return responseChain.error(404, cb); },\n /**\n * Catches a timeout (http code 408) and performs a callback.\n */\n timeout: function (cb) { return responseChain.error(408, cb); },\n /**\n * Catches an internal server error (http code 500) and performs a callback.\n */\n internalError: function (cb) { return responseChain.error(500, cb); },\n /**\n * Catches errors thrown when calling the fetch function and performs a callback.\n */\n fetchError: function (cb) { return responseChain.error(\"__fromFetch\", cb); },\n /**\n * Catches an AbortError and performs a callback.\n */\n onAbort: function (cb) { return responseChain.error(\"AbortError\", cb); }\n };\n return resolvers.reduce(function (chain, r) { return r(chain, wretcher); }, responseChain);\n};\n//# sourceMappingURL=resolver.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { mix } from \"./mix\";\nimport conf from \"./config\";\nimport { resolver } from \"./resolver\";\nvar JSON_MIME = \"application/json\";\nvar CONTENT_TYPE_HEADER = \"Content-Type\";\nfunction extractContentType(headers) {\n var _a;\n if (headers === void 0) { headers = {}; }\n return (_a = Object.entries(headers).find(function (_a) {\n var k = _a[0];\n return k.toLowerCase() === CONTENT_TYPE_HEADER.toLowerCase();\n })) === null || _a === void 0 ? void 0 : _a[1];\n}\nfunction isLikelyJsonMime(value) {\n return /^application\\/.*json.*/.test(value);\n}\n/**\n * The Wretcher class used to perform easy fetch requests.\n *\n * Immutability : almost every method of this class return a fresh Wretcher object.\n */\nvar Wretcher = /** @class */ (function () {\n function Wretcher(_url, _options, _catchers, _resolvers, _middlewares, _deferredChain) {\n if (_catchers === void 0) { _catchers = new Map(); }\n if (_resolvers === void 0) { _resolvers = []; }\n if (_middlewares === void 0) { _middlewares = []; }\n if (_deferredChain === void 0) { _deferredChain = []; }\n this._url = _url;\n this._options = _options;\n this._catchers = _catchers;\n this._resolvers = _resolvers;\n this._middlewares = _middlewares;\n this._deferredChain = _deferredChain;\n }\n Wretcher.factory = function (url, options) {\n if (url === void 0) { url = \"\"; }\n if (options === void 0) { options = {}; }\n return new Wretcher(url, options);\n };\n Wretcher.prototype.selfFactory = function (_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.url, url = _c === void 0 ? this._url : _c, _d = _b.options, options = _d === void 0 ? this._options : _d, _e = _b.catchers, catchers = _e === void 0 ? this._catchers : _e, _f = _b.resolvers, resolvers = _f === void 0 ? this._resolvers : _f, _g = _b.middlewares, middlewares = _g === void 0 ? this._middlewares : _g, _h = _b.deferredChain, deferredChain = _h === void 0 ? this._deferredChain : _h;\n return new Wretcher(url, __assign({}, options), new Map(catchers), __spreadArray([], resolvers, true), __spreadArray([], middlewares, true), __spreadArray([], deferredChain, true));\n };\n /**\n * Sets the default fetch options used for every subsequent fetch call.\n * @param options New default options\n * @param mixin If true, mixes in instead of replacing the existing options\n */\n Wretcher.prototype.defaults = function (options, mixin) {\n if (mixin === void 0) { mixin = false; }\n conf.defaults = mixin ? mix(conf.defaults, options) : options;\n return this;\n };\n /**\n * Sets the method (text, json ...) used to parse the data contained in the response body in case of an HTTP error.\n *\n * Persists for every subsequent requests.\n *\n * Default is \"text\".\n */\n Wretcher.prototype.errorType = function (method) {\n conf.errorType = method;\n return this;\n };\n /**\n * Sets the non-global polyfills which will be used for every subsequent calls.\n *\n * Needed for libraries like [fetch-ponyfill](https://github.com/qubyte/fetch-ponyfill).\n *\n * @param polyfills An object containing the polyfills.\n */\n Wretcher.prototype.polyfills = function (polyfills) {\n conf.polyfills = __assign(__assign({}, conf.polyfills), polyfills);\n return this;\n };\n /**\n * Returns a new Wretcher object with the argument url appended and the same options.\n * @param url String url\n * @param replace Boolean If true, replaces the current url instead of appending\n */\n Wretcher.prototype.url = function (url, replace) {\n if (replace === void 0) { replace = false; }\n if (replace)\n return this.selfFactory({ url: url });\n var split = this._url.split(\"?\");\n return this.selfFactory({\n url: split.length > 1 ?\n split[0] + url + \"?\" + split[1] :\n this._url + url\n });\n };\n /**\n * Returns a new Wretcher object with the same url and new options.\n * @param options New options\n * @param mixin If true, mixes in instead of replacing the existing options\n */\n Wretcher.prototype.options = function (options, mixin) {\n if (mixin === void 0) { mixin = true; }\n return this.selfFactory({ options: mixin ? mix(this._options, options) : options });\n };\n /**\n * Converts a javascript object to query parameters,\n * then appends this query string to the current url.\n *\n * If given a string, use the string as the query verbatim.\n *\n * ```\n * let w = wretch(\"http://example.com\") // url is http://example.com\n *\n * // Chain query calls\n * w = w.query({ a: 1, b : 2 }) // url is now http://example.com?a=1&b=2\n * w = w.query(\"foo-bar-baz-woz\") // url is now http://example.com?a=1&b=2&foo-bar-baz-woz\n *\n * // Pass true as the second argument to replace existing query parameters\n * w = w.query(\"c=3&d=4\", true) // url is now http://example.com?c=3&d=4\n * ```\n *\n * @param qp An object which will be converted, or a string which will be used verbatim.\n */\n Wretcher.prototype.query = function (qp, replace) {\n if (replace === void 0) { replace = false; }\n return this.selfFactory({ url: appendQueryParams(this._url, qp, replace) });\n };\n /**\n * Set request headers.\n * @param headerValues An object containing header keys and values\n */\n Wretcher.prototype.headers = function (headerValues) {\n return this.selfFactory({ options: mix(this._options, { headers: headerValues || {} }) });\n };\n /**\n * Shortcut to set the \"Accept\" header.\n * @param headerValue Header value\n */\n Wretcher.prototype.accept = function (headerValue) {\n return this.headers({ Accept: headerValue });\n };\n /**\n * Shortcut to set the \"Content-Type\" header.\n * @param headerValue Header value\n */\n Wretcher.prototype.content = function (headerValue) {\n var _a;\n return this.headers((_a = {}, _a[CONTENT_TYPE_HEADER] = headerValue, _a));\n };\n /**\n * Shortcut to set the \"Authorization\" header.\n * @param headerValue Header value\n */\n Wretcher.prototype.auth = function (headerValue) {\n return this.headers({ Authorization: headerValue });\n };\n /**\n * Adds a default catcher which will be called on every subsequent request error when the error code matches.\n * @param errorId Error code or name\n * @param catcher: The catcher method\n */\n Wretcher.prototype.catcher = function (errorId, catcher) {\n var newMap = new Map(this._catchers);\n newMap.set(errorId, catcher);\n return this.selfFactory({ catchers: newMap });\n };\n /**\n * Associates a custom signal with the request.\n * @param controller : An AbortController\n */\n Wretcher.prototype.signal = function (controller) {\n return this.selfFactory({ options: __assign(__assign({}, this._options), { signal: controller.signal }) });\n };\n /**\n * Program a resolver to perform response chain tasks automatically.\n * @param doResolve : Resolver callback\n */\n Wretcher.prototype.resolve = function (doResolve, clear) {\n if (clear === void 0) { clear = false; }\n return this.selfFactory({ resolvers: clear ? [doResolve] : __spreadArray(__spreadArray([], this._resolvers, true), [doResolve], false) });\n };\n /**\n * Defer wretcher methods that will be chained and called just before the request is performed.\n */\n Wretcher.prototype.defer = function (callback, clear) {\n if (clear === void 0) { clear = false; }\n return this.selfFactory({\n deferredChain: clear ? [callback] : __spreadArray(__spreadArray([], this._deferredChain, true), [callback], false)\n });\n };\n /**\n * Add middlewares to intercept a request before being sent.\n */\n Wretcher.prototype.middlewares = function (middlewares, clear) {\n if (clear === void 0) { clear = false; }\n return this.selfFactory({\n middlewares: clear ? middlewares : __spreadArray(__spreadArray([], this._middlewares, true), middlewares, true)\n });\n };\n Wretcher.prototype.method = function (method, options, body) {\n if (options === void 0) { options = {}; }\n if (body === void 0) { body = null; }\n var base = this.options(__assign(__assign({}, options), { method: method }));\n // \"Jsonify\" the body if it is an object and if it is likely that the content type targets json.\n var contentType = extractContentType(base._options.headers);\n var jsonify = typeof body === \"object\" && (!base._options.headers || !contentType || isLikelyJsonMime(contentType));\n base =\n !body ? base :\n jsonify ? base.json(body, contentType) :\n base.body(body);\n return resolver(base\n ._deferredChain\n .reduce(function (acc, curr) { return curr(acc, acc._url, acc._options); }, base));\n };\n /**\n * Performs a get request.\n */\n Wretcher.prototype.get = function (options) {\n return this.method(\"GET\", options);\n };\n /**\n * Performs a delete request.\n */\n Wretcher.prototype.delete = function (options) {\n return this.method(\"DELETE\", options);\n };\n /**\n * Performs a put request.\n */\n Wretcher.prototype.put = function (body, options) {\n return this.method(\"PUT\", options, body);\n };\n /**\n * Performs a post request.\n */\n Wretcher.prototype.post = function (body, options) {\n return this.method(\"POST\", options, body);\n };\n /**\n * Performs a patch request.\n */\n Wretcher.prototype.patch = function (body, options) {\n return this.method(\"PATCH\", options, body);\n };\n /**\n * Performs a head request.\n */\n Wretcher.prototype.head = function (options) {\n return this.method(\"HEAD\", options);\n };\n /**\n * Performs an options request\n */\n Wretcher.prototype.opts = function (options) {\n return this.method(\"OPTIONS\", options);\n };\n /**\n * Replay a request.\n */\n Wretcher.prototype.replay = function (options) {\n return this.method(this._options.method, options);\n };\n /**\n * Sets the request body with any content.\n * @param contents The body contents\n */\n Wretcher.prototype.body = function (contents) {\n return this.selfFactory({ options: __assign(__assign({}, this._options), { body: contents }) });\n };\n /**\n * Sets the content type header, stringifies an object and sets the request body.\n * @param jsObject An object which will be serialized into a JSON\n * @param contentType A custom content type.\n */\n Wretcher.prototype.json = function (jsObject, contentType) {\n var currentContentType = extractContentType(this._options.headers);\n return this.content(contentType ||\n isLikelyJsonMime(currentContentType) && currentContentType ||\n JSON_MIME).body(JSON.stringify(jsObject));\n };\n /**\n * Converts the javascript object to a FormData and sets the request body.\n * @param formObject An object which will be converted to a FormData\n * @param recursive If `true`, will recurse through all nested objects\n * Can be set as an array of string to exclude specific keys.\n * See https://github.com/elbywan/wretch/issues/68 for more details.\n */\n Wretcher.prototype.formData = function (formObject, recursive) {\n if (recursive === void 0) { recursive = false; }\n return this.body(convertFormData(formObject, recursive));\n };\n /**\n * Converts the input to an url encoded string and sets the content-type header and body.\n * If the input argument is already a string, skips the conversion part.\n *\n * @param input An object to convert into an url encoded string or an already encoded string\n */\n Wretcher.prototype.formUrl = function (input) {\n return this\n .body(typeof input === \"string\" ? input : convertFormUrl(input))\n .content(\"application/x-www-form-urlencoded\");\n };\n return Wretcher;\n}());\nexport { Wretcher };\n// Internal helpers\nvar appendQueryParams = function (url, qp, replace) {\n var queryString;\n if (typeof qp === \"string\") {\n queryString = qp;\n }\n else {\n var usp = conf.polyfill(\"URLSearchParams\", { instance: true });\n for (var key in qp) {\n if (qp[key] instanceof Array) {\n for (var _i = 0, _a = qp[key]; _i < _a.length; _i++) {\n var val = _a[_i];\n usp.append(key, val);\n }\n }\n else {\n usp.append(key, qp[key]);\n }\n }\n queryString = usp.toString();\n }\n var split = url.split(\"?\");\n if (!queryString)\n return replace ? split[0] : url;\n if (replace || split.length < 2)\n return split[0] + \"?\" + queryString;\n return url + \"&\" + queryString;\n};\nfunction convertFormData(formObject, recursive, formData, ancestors) {\n if (recursive === void 0) { recursive = false; }\n if (formData === void 0) { formData = conf.polyfill(\"FormData\", { instance: true }); }\n if (ancestors === void 0) { ancestors = []; }\n Object.entries(formObject).forEach(function (_a) {\n var key = _a[0], value = _a[1];\n var formKey = ancestors.reduce(function (acc, ancestor) { return (acc ? \"\".concat(acc, \"[\").concat(ancestor, \"]\") : ancestor); }, null);\n formKey = formKey ? \"\".concat(formKey, \"[\").concat(key, \"]\") : key;\n if (value instanceof Array) {\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var item = value_1[_i];\n formData.append(formKey + \"[]\", item);\n }\n }\n else if (recursive &&\n typeof value === \"object\" &&\n (!(recursive instanceof Array) ||\n !recursive.includes(key))) {\n if (value !== null) {\n convertFormData(value, recursive, formData, __spreadArray(__spreadArray([], ancestors, true), [key], false));\n }\n }\n else {\n formData.append(formKey, value);\n }\n });\n return formData;\n}\nfunction encodeQueryValue(key, value) {\n return encodeURIComponent(key) +\n \"=\" +\n encodeURIComponent(typeof value === \"object\" ?\n JSON.stringify(value) :\n \"\" + value);\n}\nfunction convertFormUrl(formObject) {\n return Object.keys(formObject)\n .map(function (key) {\n var value = formObject[key];\n if (value instanceof Array) {\n return value.map(function (v) { return encodeQueryValue(key, v); }).join(\"&\");\n }\n return encodeQueryValue(key, value);\n })\n .join(\"&\");\n}\n//# sourceMappingURL=wretcher.js.map","import { Wretcher } from \"./wretcher\";\nvar factory = Wretcher.factory;\nfactory[\"default\"] = Wretcher.factory;\n/* Export typescript types */\nexport { Wretcher } from \"./wretcher\";\n/**\n * Return a fresh Wretcher instance.\n */\nexport default factory;\n//# sourceMappingURL=index.js.map","import wretch from 'wretch'\n\nexport default wretch().defaults({\n headers: { 'X-Requested-With': 'XMLHttpRequest' },\n})\n","const requestTimeout = (fn, delay) => {\n const start = new Date().getTime()\n const handle = new Object()\n\n const loop = () => {\n const current = new Date().getTime()\n const delta = current - start\n\n delta >= delay ? fn.call() : (handle.value = window.requestAnimationFrame(loop))\n }\n\n handle.value = window.requestAnimationFrame(loop)\n\n return handle\n}\n\nexport default requestTimeout\n","// Robert Penner's easeInOutQuad\n\n// find the rest of his easing functions here: http://robertpenner.com/easing/\n// find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\nvar easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n};\n\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 jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0; // element to scroll to (node)\n\n var start = void 0; // where scroll starts (px)\n var stop = void 0; // where scroll stops (px)\n\n var offset = void 0; // adjustment from the stop position (px)\n var easing = void 0; // easing function (function)\n var a11y = void 0; // accessibility support flag (boolean)\n\n var distance = void 0; // distance of scroll (px)\n var duration = void 0; // scroll duration (ms)\n\n var timeStart = void 0; // time scroll started (ms)\n var timeElapsed = void 0; // time spent scrolling thus far (ms)\n\n var next = void 0; // next scroll position (px)\n\n var callback = void 0; // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset;\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start;\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent;\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart;\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration);\n\n // scroll to it\n window.scrollTo(0, next);\n\n // check progress\n timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop\n : done(); // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance);\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1');\n\n // focus the element\n element.focus();\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback();\n }\n\n // reset time for next jump\n timeStart = false;\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // resolve options, or use defaults\n duration = options.duration || 1000;\n offset = options.offset || 0;\n callback = options.callback; // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad;\n a11y = options.a11y || false;\n\n // cache starting position\n start = location();\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined; // no element to scroll to\n a11y = false; // make sure accessibility is off\n stop = start + target;\n break;\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target;\n stop = top(element);\n break;\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target);\n stop = top(element);\n break;\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset;\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration;\n break;\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance);\n break;\n }\n\n // start the loop\n window.requestAnimationFrame(loop);\n }\n\n // expose only the jump method\n return jump;\n};\n\n// export singleton\n\nvar singleton = jumper();\n\nexport default singleton;\n","import jump from 'jump.js'\n\nconst getPageOffset = () => {\n let offset = 0\n\n const siteHeader = document.querySelector('.site-header')\n\n if (siteHeader) {\n offset += siteHeader.offsetHeight\n }\n\n return offset\n}\n\nconst scrollTo = (target, additionalOffset = 0) => {\n const pageOffset = getPageOffset() * -1\n\n if (target.dataset.scrollOffset) {\n additionalOffset = parseInt(target.dataset.scrollOffset)\n }\n\n let offset = pageOffset - additionalOffset\n\n return new Promise((resolve) => {\n jump(target, { duration: 500, offset, callback: resolve })\n })\n}\n\nexport default scrollTo\n","export const isTouchDevice = 'ontouchstart' in document.documentElement\n","import { on } from 'delegated-events'\n\nconst fn = {\n init: () => {\n on('click', '.add-to-calendar button', (e) => {\n const holder = e.target.closest('.add-to-calendar')\n\n holder.classList.toggle('is-open')\n })\n\n document.addEventListener('click', (e) => {\n if (!e.target.closest('.add-to-calendar')) {\n document.querySelectorAll('.add-to-calendar').forEach((el) => {\n el.classList.remove('is-open')\n })\n }\n })\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","/*! @license is-dom-node v1.0.4\n\n\tCopyright 2018 Fisssion LLC.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n\n*/\nfunction isDomNode(x) {\n\treturn typeof window.Node === 'object'\n\t\t? x instanceof window.Node\n\t\t: x !== null &&\n\t\t\t\ttypeof x === 'object' &&\n\t\t\t\ttypeof x.nodeType === 'number' &&\n\t\t\t\ttypeof x.nodeName === 'string'\n}\n\nexport default isDomNode;\n","/*! @license Tealight v0.3.6\n\n\tCopyright 2018 Fisssion LLC.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n\n*/\nimport isDomNode from 'is-dom-node';\nimport isDomNodeList from 'is-dom-node-list';\n\nfunction tealight(target, context) {\n if ( context === void 0 ) context = document;\n\n if (target instanceof Array) { return target.filter(isDomNode); }\n if (isDomNode(target)) { return [target]; }\n if (isDomNodeList(target)) { return Array.prototype.slice.call(target); }\n if (typeof target === \"string\") {\n try {\n var query = context.querySelectorAll(target);\n return Array.prototype.slice.call(query);\n } catch (err) {\n return [];\n }\n }\n return [];\n}\n\nexport default tealight;\n","/*! @license is-dom-node-list v1.2.1\n\n\tCopyright 2018 Fisssion LLC.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n\n*/\nimport isDomNode from 'is-dom-node';\n\nfunction isDomNodeList(x) {\n\tvar prototypeToString = Object.prototype.toString.call(x);\n\tvar regex = /^\\[object (HTMLCollection|NodeList|Object)\\]$/;\n\n\treturn typeof window.NodeList === 'object'\n\t\t? x instanceof window.NodeList\n\t\t: x !== null &&\n\t\t\t\ttypeof x === 'object' &&\n\t\t\t\ttypeof x.length === 'number' &&\n\t\t\t\tregex.test(prototypeToString) &&\n\t\t\t\t(x.length === 0 || isDomNode(x[0]))\n}\n\nexport default isDomNodeList;\n","/*! @license Rematrix v0.3.0\n\n\tCopyright 2018 Julian Lloyd.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE.\n*/\n/**\n * @module Rematrix\n */\n\n/**\n * Transformation matrices in the browser come in two flavors:\n *\n * - `matrix` using 6 values (short)\n * - `matrix3d` using 16 values (long)\n *\n * This utility follows this [conversion guide](https://goo.gl/EJlUQ1)\n * to expand short form matrices to their equivalent long form.\n *\n * @param {array} source - Accepts both short and long form matrices.\n * @return {array}\n */\nfunction format(source) {\n\tif (source.constructor !== Array) {\n\t\tthrow new TypeError('Expected array.')\n\t}\n\tif (source.length === 16) {\n\t\treturn source\n\t}\n\tif (source.length === 6) {\n\t\tvar matrix = identity();\n\t\tmatrix[0] = source[0];\n\t\tmatrix[1] = source[1];\n\t\tmatrix[4] = source[2];\n\t\tmatrix[5] = source[3];\n\t\tmatrix[12] = source[4];\n\t\tmatrix[13] = source[5];\n\t\treturn matrix\n\t}\n\tthrow new RangeError('Expected array with either 6 or 16 values.')\n}\n\n/**\n * Returns a matrix representing no transformation. The product of any matrix\n * multiplied by the identity matrix will be the original matrix.\n *\n * > **Tip:** Similar to how `5 * 1 === 5`, where `1` is the identity.\n *\n * @return {array}\n */\nfunction identity() {\n\tvar matrix = [];\n\tfor (var i = 0; i < 16; i++) {\n\t\ti % 5 == 0 ? matrix.push(1) : matrix.push(0);\n\t}\n\treturn matrix\n}\n\n/**\n * Returns a matrix describing the inverse transformation of the source\n * matrix. The product of any matrix multiplied by its inverse will be the\n * identity matrix.\n *\n * > **Tip:** Similar to how `5 * (1/5) === 1`, where `1/5` is the inverse.\n *\n * @param {array} source - Accepts both short and long form matrices.\n * @return {array}\n */\nfunction inverse(source) {\n\tvar m = format(source);\n\n\tvar s0 = m[0] * m[5] - m[4] * m[1];\n\tvar s1 = m[0] * m[6] - m[4] * m[2];\n\tvar s2 = m[0] * m[7] - m[4] * m[3];\n\tvar s3 = m[1] * m[6] - m[5] * m[2];\n\tvar s4 = m[1] * m[7] - m[5] * m[3];\n\tvar s5 = m[2] * m[7] - m[6] * m[3];\n\n\tvar c5 = m[10] * m[15] - m[14] * m[11];\n\tvar c4 = m[9] * m[15] - m[13] * m[11];\n\tvar c3 = m[9] * m[14] - m[13] * m[10];\n\tvar c2 = m[8] * m[15] - m[12] * m[11];\n\tvar c1 = m[8] * m[14] - m[12] * m[10];\n\tvar c0 = m[8] * m[13] - m[12] * m[9];\n\n\tvar determinant = 1 / (s0 * c5 - s1 * c4 + s2 * c3 + s3 * c2 - s4 * c1 + s5 * c0);\n\n\tif (isNaN(determinant) || determinant === Infinity) {\n\t\tthrow new Error('Inverse determinant attempted to divide by zero.')\n\t}\n\n\treturn [\n\t\t(m[5] * c5 - m[6] * c4 + m[7] * c3) * determinant,\n\t\t(-m[1] * c5 + m[2] * c4 - m[3] * c3) * determinant,\n\t\t(m[13] * s5 - m[14] * s4 + m[15] * s3) * determinant,\n\t\t(-m[9] * s5 + m[10] * s4 - m[11] * s3) * determinant,\n\n\t\t(-m[4] * c5 + m[6] * c2 - m[7] * c1) * determinant,\n\t\t(m[0] * c5 - m[2] * c2 + m[3] * c1) * determinant,\n\t\t(-m[12] * s5 + m[14] * s2 - m[15] * s1) * determinant,\n\t\t(m[8] * s5 - m[10] * s2 + m[11] * s1) * determinant,\n\n\t\t(m[4] * c4 - m[5] * c2 + m[7] * c0) * determinant,\n\t\t(-m[0] * c4 + m[1] * c2 - m[3] * c0) * determinant,\n\t\t(m[12] * s4 - m[13] * s2 + m[15] * s0) * determinant,\n\t\t(-m[8] * s4 + m[9] * s2 - m[11] * s0) * determinant,\n\n\t\t(-m[4] * c3 + m[5] * c1 - m[6] * c0) * determinant,\n\t\t(m[0] * c3 - m[1] * c1 + m[2] * c0) * determinant,\n\t\t(-m[12] * s3 + m[13] * s1 - m[14] * s0) * determinant,\n\t\t(m[8] * s3 - m[9] * s1 + m[10] * s0) * determinant\n\t]\n}\n\n/**\n * Returns a 4x4 matrix describing the combined transformations\n * of both arguments.\n *\n * > **Note:** Order is very important. For example, rotating 45°\n * along the Z-axis, followed by translating 500 pixels along the\n * Y-axis... is not the same as translating 500 pixels along the\n * Y-axis, followed by rotating 45° along on the Z-axis.\n *\n * @param {array} m - Accepts both short and long form matrices.\n * @param {array} x - Accepts both short and long form matrices.\n * @return {array}\n */\nfunction multiply(m, x) {\n\tvar fm = format(m);\n\tvar fx = format(x);\n\tvar product = [];\n\n\tfor (var i = 0; i < 4; i++) {\n\t\tvar row = [fm[i], fm[i + 4], fm[i + 8], fm[i + 12]];\n\t\tfor (var j = 0; j < 4; j++) {\n\t\t\tvar k = j * 4;\n\t\t\tvar col = [fx[k], fx[k + 1], fx[k + 2], fx[k + 3]];\n\t\t\tvar result =\n\t\t\t\trow[0] * col[0] + row[1] * col[1] + row[2] * col[2] + row[3] * col[3];\n\n\t\t\tproduct[i + k] = result;\n\t\t}\n\t}\n\n\treturn product\n}\n\n/**\n * Attempts to return a 4x4 matrix describing the CSS transform\n * matrix passed in, but will return the identity matrix as a\n * fallback.\n *\n * > **Tip:** This method is used to convert a CSS matrix (retrieved as a\n * `string` from computed styles) to its equivalent array format.\n *\n * @param {string} source - `matrix` or `matrix3d` CSS Transform value.\n * @return {array}\n */\nfunction parse(source) {\n\tif (typeof source === 'string') {\n\t\tvar match = source.match(/matrix(3d)?\\(([^)]+)\\)/);\n\t\tif (match) {\n\t\t\tvar raw = match[2].split(', ').map(parseFloat);\n\t\t\treturn format(raw)\n\t\t}\n\t}\n\treturn identity()\n}\n\n/**\n * Returns a 4x4 matrix describing Z-axis rotation.\n *\n * > **Tip:** This is just an alias for `Rematrix.rotateZ` for parity with CSS\n *\n * @param {number} angle - Measured in degrees.\n * @return {array}\n */\nfunction rotate(angle) {\n\treturn rotateZ(angle)\n}\n\n/**\n * Returns a 4x4 matrix describing X-axis rotation.\n *\n * @param {number} angle - Measured in degrees.\n * @return {array}\n */\nfunction rotateX(angle) {\n\tvar theta = Math.PI / 180 * angle;\n\tvar matrix = identity();\n\n\tmatrix[5] = matrix[10] = Math.cos(theta);\n\tmatrix[6] = matrix[9] = Math.sin(theta);\n\tmatrix[9] *= -1;\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Y-axis rotation.\n *\n * @param {number} angle - Measured in degrees.\n * @return {array}\n */\nfunction rotateY(angle) {\n\tvar theta = Math.PI / 180 * angle;\n\tvar matrix = identity();\n\n\tmatrix[0] = matrix[10] = Math.cos(theta);\n\tmatrix[2] = matrix[8] = Math.sin(theta);\n\tmatrix[2] *= -1;\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Z-axis rotation.\n *\n * @param {number} angle - Measured in degrees.\n * @return {array}\n */\nfunction rotateZ(angle) {\n\tvar theta = Math.PI / 180 * angle;\n\tvar matrix = identity();\n\n\tmatrix[0] = matrix[5] = Math.cos(theta);\n\tmatrix[1] = matrix[4] = Math.sin(theta);\n\tmatrix[4] *= -1;\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing 2D scaling. The first argument\n * is used for both X and Y-axis scaling, unless an optional\n * second argument is provided to explicitly define Y-axis scaling.\n *\n * @param {number} scalar - Decimal multiplier.\n * @param {number} [scalarY] - Decimal multiplier.\n * @return {array}\n */\nfunction scale(scalar, scalarY) {\n\tvar matrix = identity();\n\n\tmatrix[0] = scalar;\n\tmatrix[5] = typeof scalarY === 'number' ? scalarY : scalar;\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing X-axis scaling.\n *\n * @param {number} scalar - Decimal multiplier.\n * @return {array}\n */\nfunction scaleX(scalar) {\n\tvar matrix = identity();\n\tmatrix[0] = scalar;\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Y-axis scaling.\n *\n * @param {number} scalar - Decimal multiplier.\n * @return {array}\n */\nfunction scaleY(scalar) {\n\tvar matrix = identity();\n\tmatrix[5] = scalar;\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Z-axis scaling.\n *\n * @param {number} scalar - Decimal multiplier.\n * @return {array}\n */\nfunction scaleZ(scalar) {\n\tvar matrix = identity();\n\tmatrix[10] = scalar;\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing shear. The first argument\n * defines X-axis shearing, and an optional second argument\n * defines Y-axis shearing.\n *\n * @param {number} angleX - Measured in degrees.\n * @param {number} [angleY] - Measured in degrees.\n * @return {array}\n */\nfunction skew(angleX, angleY) {\n\tvar thetaX = Math.PI / 180 * angleX;\n\tvar matrix = identity();\n\n\tmatrix[4] = Math.tan(thetaX);\n\n\tif (angleY) {\n\t\tvar thetaY = Math.PI / 180 * angleY;\n\t\tmatrix[1] = Math.tan(thetaY);\n\t}\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing X-axis shear.\n *\n * @param {number} angle - Measured in degrees.\n * @return {array}\n */\nfunction skewX(angle) {\n\tvar theta = Math.PI / 180 * angle;\n\tvar matrix = identity();\n\n\tmatrix[4] = Math.tan(theta);\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Y-axis shear.\n *\n * @param {number} angle - Measured in degrees\n * @return {array}\n */\nfunction skewY(angle) {\n\tvar theta = Math.PI / 180 * angle;\n\tvar matrix = identity();\n\n\tmatrix[1] = Math.tan(theta);\n\n\treturn matrix\n}\n\n/**\n * Returns a CSS Transform property value equivalent to the source matrix.\n *\n * @param {array} source - Accepts both short and long form matrices.\n * @return {string}\n */\nfunction toString(source) {\n\treturn (\"matrix3d(\" + (format(source).join(', ')) + \")\")\n}\n\n/**\n * Returns a 4x4 matrix describing 2D translation. The first\n * argument defines X-axis translation, and an optional second\n * argument defines Y-axis translation.\n *\n * @param {number} distanceX - Measured in pixels.\n * @param {number} [distanceY] - Measured in pixels.\n * @return {array}\n */\nfunction translate(distanceX, distanceY) {\n\tvar matrix = identity();\n\tmatrix[12] = distanceX;\n\n\tif (distanceY) {\n\t\tmatrix[13] = distanceY;\n\t}\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing X-axis translation.\n *\n * @param {number} distance - Measured in pixels.\n * @return {array}\n */\nfunction translateX(distance) {\n\tvar matrix = identity();\n\tmatrix[12] = distance;\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Y-axis translation.\n *\n * @param {number} distance - Measured in pixels.\n * @return {array}\n */\nfunction translateY(distance) {\n\tvar matrix = identity();\n\tmatrix[13] = distance;\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Z-axis translation.\n *\n * @param {number} distance - Measured in pixels.\n * @return {array}\n */\nfunction translateZ(distance) {\n\tvar matrix = identity();\n\tmatrix[14] = distance;\n\treturn matrix\n}\n\nexport { format, identity, inverse, multiply, parse, rotate, rotateX, rotateY, rotateZ, scale, scaleX, scaleY, scaleZ, skew, skewX, skewY, toString, translate, translateX, translateY, translateZ };\n","/*! @license miniraf v1.0.0\n\n\tCopyright 2018 Fisssion LLC.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n\n*/\nvar polyfill = (function () {\n\tvar clock = Date.now();\n\n\treturn function (callback) {\n\t\tvar currentTime = Date.now();\n\t\tif (currentTime - clock > 16) {\n\t\t\tclock = currentTime;\n\t\t\tcallback(currentTime);\n\t\t} else {\n\t\t\tsetTimeout(function () { return polyfill(callback); }, 0);\n\t\t}\n\t}\n})();\n\nvar index = window.requestAnimationFrame ||\n\twindow.webkitRequestAnimationFrame ||\n\twindow.mozRequestAnimationFrame ||\n\tpolyfill;\n\nexport default index;\n","/*! @license ScrollReveal v4.0.9\n\n\tCopyright 2021 Fisssion LLC.\n\n\tLicensed under the GNU General Public License 3.0 for\n\tcompatible open source projects and non-commercial use.\n\n\tFor commercial sites, themes, projects, and applications,\n\tkeep your source code private/proprietary by purchasing\n\ta commercial license from https://scrollrevealjs.org/\n*/\nimport $ from 'tealight';\nimport { translateY, translateX, rotateX, rotateY, rotateZ, scale, parse, multiply } from 'rematrix';\nimport raf from 'miniraf';\n\nvar defaults = {\n\tdelay: 0,\n\tdistance: '0',\n\tduration: 600,\n\teasing: 'cubic-bezier(0.5, 0, 0, 1)',\n\tinterval: 0,\n\topacity: 0,\n\torigin: 'bottom',\n\trotate: {\n\t\tx: 0,\n\t\ty: 0,\n\t\tz: 0\n\t},\n\tscale: 1,\n\tcleanup: false,\n\tcontainer: document.documentElement,\n\tdesktop: true,\n\tmobile: true,\n\treset: false,\n\tuseDelay: 'always',\n\tviewFactor: 0.0,\n\tviewOffset: {\n\t\ttop: 0,\n\t\tright: 0,\n\t\tbottom: 0,\n\t\tleft: 0\n\t},\n\tafterReset: function afterReset() {},\n\tafterReveal: function afterReveal() {},\n\tbeforeReset: function beforeReset() {},\n\tbeforeReveal: function beforeReveal() {}\n};\n\nfunction failure() {\n\tdocument.documentElement.classList.remove('sr');\n\n\treturn {\n\t\tclean: function clean() {},\n\t\tdestroy: function destroy() {},\n\t\treveal: function reveal() {},\n\t\tsync: function sync() {},\n\t\tget noop() {\n\t\t\treturn true\n\t\t}\n\t}\n}\n\nfunction success() {\n\tdocument.documentElement.classList.add('sr');\n\n\tif (document.body) {\n\t\tdocument.body.style.height = '100%';\n\t} else {\n\t\tdocument.addEventListener('DOMContentLoaded', function () {\n\t\t\tdocument.body.style.height = '100%';\n\t\t});\n\t}\n}\n\nvar mount = { success: success, failure: failure };\n\nfunction isObject(x) {\n\treturn (\n\t\tx !== null &&\n\t\tx instanceof Object &&\n\t\t(x.constructor === Object ||\n\t\t\tObject.prototype.toString.call(x) === '[object Object]')\n\t)\n}\n\nfunction each(collection, callback) {\n\tif (isObject(collection)) {\n\t\tvar keys = Object.keys(collection);\n\t\treturn keys.forEach(function (key) { return callback(collection[key], key, collection); })\n\t}\n\tif (collection instanceof Array) {\n\t\treturn collection.forEach(function (item, i) { return callback(item, i, collection); })\n\t}\n\tthrow new TypeError('Expected either an array or object literal.')\n}\n\nfunction logger(message) {\n\tvar details = [], len = arguments.length - 1;\n\twhile ( len-- > 0 ) details[ len ] = arguments[ len + 1 ];\n\n\tif (this.constructor.debug && console) {\n\t\tvar report = \"%cScrollReveal: \" + message;\n\t\tdetails.forEach(function (detail) { return (report += \"\\n — \" + detail); });\n\t\tconsole.log(report, 'color: #ea654b;'); // eslint-disable-line no-console\n\t}\n}\n\nfunction rinse() {\n\tvar this$1 = this;\n\n\tvar struct = function () { return ({\n\t\tactive: [],\n\t\tstale: []\n\t}); };\n\n\tvar elementIds = struct();\n\tvar sequenceIds = struct();\n\tvar containerIds = struct();\n\n\t/**\n\t * Take stock of active element IDs.\n\t */\n\ttry {\n\t\teach($('[data-sr-id]'), function (node) {\n\t\t\tvar id = parseInt(node.getAttribute('data-sr-id'));\n\t\t\telementIds.active.push(id);\n\t\t});\n\t} catch (e) {\n\t\tthrow e\n\t}\n\t/**\n\t * Destroy stale elements.\n\t */\n\teach(this.store.elements, function (element) {\n\t\tif (elementIds.active.indexOf(element.id) === -1) {\n\t\t\telementIds.stale.push(element.id);\n\t\t}\n\t});\n\n\teach(elementIds.stale, function (staleId) { return delete this$1.store.elements[staleId]; });\n\n\t/**\n\t * Take stock of active container and sequence IDs.\n\t */\n\teach(this.store.elements, function (element) {\n\t\tif (containerIds.active.indexOf(element.containerId) === -1) {\n\t\t\tcontainerIds.active.push(element.containerId);\n\t\t}\n\t\tif (element.hasOwnProperty('sequence')) {\n\t\t\tif (sequenceIds.active.indexOf(element.sequence.id) === -1) {\n\t\t\t\tsequenceIds.active.push(element.sequence.id);\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n\t * Destroy stale containers.\n\t */\n\teach(this.store.containers, function (container) {\n\t\tif (containerIds.active.indexOf(container.id) === -1) {\n\t\t\tcontainerIds.stale.push(container.id);\n\t\t}\n\t});\n\n\teach(containerIds.stale, function (staleId) {\n\t\tvar stale = this$1.store.containers[staleId].node;\n\t\tstale.removeEventListener('scroll', this$1.delegate);\n\t\tstale.removeEventListener('resize', this$1.delegate);\n\t\tdelete this$1.store.containers[staleId];\n\t});\n\n\t/**\n\t * Destroy stale sequences.\n\t */\n\teach(this.store.sequences, function (sequence) {\n\t\tif (sequenceIds.active.indexOf(sequence.id) === -1) {\n\t\t\tsequenceIds.stale.push(sequence.id);\n\t\t}\n\t});\n\n\teach(sequenceIds.stale, function (staleId) { return delete this$1.store.sequences[staleId]; });\n}\n\nvar getPrefixedCssProp = (function () {\n\tvar properties = {};\n\tvar style = document.documentElement.style;\n\n\tfunction getPrefixedCssProperty(name, source) {\n\t\tif ( source === void 0 ) source = style;\n\n\t\tif (name && typeof name === 'string') {\n\t\t\tif (properties[name]) {\n\t\t\t\treturn properties[name]\n\t\t\t}\n\t\t\tif (typeof source[name] === 'string') {\n\t\t\t\treturn (properties[name] = name)\n\t\t\t}\n\t\t\tif (typeof source[(\"-webkit-\" + name)] === 'string') {\n\t\t\t\treturn (properties[name] = \"-webkit-\" + name)\n\t\t\t}\n\t\t\tthrow new RangeError((\"Unable to find \\\"\" + name + \"\\\" style property.\"))\n\t\t}\n\t\tthrow new TypeError('Expected a string.')\n\t}\n\n\tgetPrefixedCssProperty.clearCache = function () { return (properties = {}); };\n\n\treturn getPrefixedCssProperty\n})();\n\nfunction style(element) {\n\tvar computed = window.getComputedStyle(element.node);\n\tvar position = computed.position;\n\tvar config = element.config;\n\n\t/**\n\t * Generate inline styles\n\t */\n\tvar inline = {};\n\tvar inlineStyle = element.node.getAttribute('style') || '';\n\tvar inlineMatch = inlineStyle.match(/[\\w-]+\\s*:\\s*[^;]+\\s*/gi) || [];\n\n\tinline.computed = inlineMatch ? inlineMatch.map(function (m) { return m.trim(); }).join('; ') + ';' : '';\n\n\tinline.generated = inlineMatch.some(function (m) { return m.match(/visibility\\s?:\\s?visible/i); })\n\t\t? inline.computed\n\t\t: inlineMatch.concat( ['visibility: visible']).map(function (m) { return m.trim(); }).join('; ') + ';';\n\n\t/**\n\t * Generate opacity styles\n\t */\n\tvar computedOpacity = parseFloat(computed.opacity);\n\tvar configOpacity = !isNaN(parseFloat(config.opacity))\n\t\t? parseFloat(config.opacity)\n\t\t: parseFloat(computed.opacity);\n\n\tvar opacity = {\n\t\tcomputed: computedOpacity !== configOpacity ? (\"opacity: \" + computedOpacity + \";\") : '',\n\t\tgenerated: computedOpacity !== configOpacity ? (\"opacity: \" + configOpacity + \";\") : ''\n\t};\n\n\t/**\n\t * Generate transformation styles\n\t */\n\tvar transformations = [];\n\n\tif (parseFloat(config.distance)) {\n\t\tvar axis = config.origin === 'top' || config.origin === 'bottom' ? 'Y' : 'X';\n\n\t\t/**\n\t\t * Let’s make sure our our pixel distances are negative for top and left.\n\t\t * e.g. { origin: 'top', distance: '25px' } starts at `top: -25px` in CSS.\n\t\t */\n\t\tvar distance = config.distance;\n\t\tif (config.origin === 'top' || config.origin === 'left') {\n\t\t\tdistance = /^-/.test(distance) ? distance.substr(1) : (\"-\" + distance);\n\t\t}\n\n\t\tvar ref = distance.match(/(^-?\\d+\\.?\\d?)|(em$|px$|%$)/g);\n\t\tvar value = ref[0];\n\t\tvar unit = ref[1];\n\n\t\tswitch (unit) {\n\t\t\tcase 'em':\n\t\t\t\tdistance = parseInt(computed.fontSize) * value;\n\t\t\t\tbreak\n\t\t\tcase 'px':\n\t\t\t\tdistance = value;\n\t\t\t\tbreak\n\t\t\tcase '%':\n\t\t\t\t/**\n\t\t\t\t * Here we use `getBoundingClientRect` instead of\n\t\t\t\t * the existing data attached to `element.geometry`\n\t\t\t\t * because only the former includes any transformations\n\t\t\t\t * current applied to the element.\n\t\t\t\t *\n\t\t\t\t * If that behavior ends up being unintuitive, this\n\t\t\t\t * logic could instead utilize `element.geometry.height`\n\t\t\t\t * and `element.geoemetry.width` for the distance calculation\n\t\t\t\t */\n\t\t\t\tdistance =\n\t\t\t\t\taxis === 'Y'\n\t\t\t\t\t\t? (element.node.getBoundingClientRect().height * value) / 100\n\t\t\t\t\t\t: (element.node.getBoundingClientRect().width * value) / 100;\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tthrow new RangeError('Unrecognized or missing distance unit.')\n\t\t}\n\n\t\tif (axis === 'Y') {\n\t\t\ttransformations.push(translateY(distance));\n\t\t} else {\n\t\t\ttransformations.push(translateX(distance));\n\t\t}\n\t}\n\n\tif (config.rotate.x) { transformations.push(rotateX(config.rotate.x)); }\n\tif (config.rotate.y) { transformations.push(rotateY(config.rotate.y)); }\n\tif (config.rotate.z) { transformations.push(rotateZ(config.rotate.z)); }\n\tif (config.scale !== 1) {\n\t\tif (config.scale === 0) {\n\t\t\t/**\n\t\t\t * The CSS Transforms matrix interpolation specification\n\t\t\t * basically disallows transitions of non-invertible\n\t\t\t * matrixes, which means browsers won't transition\n\t\t\t * elements with zero scale.\n\t\t\t *\n\t\t\t * That’s inconvenient for the API and developer\n\t\t\t * experience, so we simply nudge their value\n\t\t\t * slightly above zero; this allows browsers\n\t\t\t * to transition our element as expected.\n\t\t\t *\n\t\t\t * `0.0002` was the smallest number\n\t\t\t * that performed across browsers.\n\t\t\t */\n\t\t\ttransformations.push(scale(0.0002));\n\t\t} else {\n\t\t\ttransformations.push(scale(config.scale));\n\t\t}\n\t}\n\n\tvar transform = {};\n\tif (transformations.length) {\n\t\ttransform.property = getPrefixedCssProp('transform');\n\t\t/**\n\t\t * The default computed transform value should be one of:\n\t\t * undefined || 'none' || 'matrix()' || 'matrix3d()'\n\t\t */\n\t\ttransform.computed = {\n\t\t\traw: computed[transform.property],\n\t\t\tmatrix: parse(computed[transform.property])\n\t\t};\n\n\t\ttransformations.unshift(transform.computed.matrix);\n\t\tvar product = transformations.reduce(multiply);\n\n\t\ttransform.generated = {\n\t\t\tinitial: ((transform.property) + \": matrix3d(\" + (product.join(', ')) + \");\"),\n\t\t\tfinal: ((transform.property) + \": matrix3d(\" + (transform.computed.matrix.join(', ')) + \");\")\n\t\t};\n\t} else {\n\t\ttransform.generated = {\n\t\t\tinitial: '',\n\t\t\tfinal: ''\n\t\t};\n\t}\n\n\t/**\n\t * Generate transition styles\n\t */\n\tvar transition = {};\n\tif (opacity.generated || transform.generated.initial) {\n\t\ttransition.property = getPrefixedCssProp('transition');\n\t\ttransition.computed = computed[transition.property];\n\t\ttransition.fragments = [];\n\n\t\tvar delay = config.delay;\n\t\tvar duration = config.duration;\n\t\tvar easing = config.easing;\n\n\t\tif (opacity.generated) {\n\t\t\ttransition.fragments.push({\n\t\t\t\tdelayed: (\"opacity \" + (duration / 1000) + \"s \" + easing + \" \" + (delay / 1000) + \"s\"),\n\t\t\t\tinstant: (\"opacity \" + (duration / 1000) + \"s \" + easing + \" 0s\")\n\t\t\t});\n\t\t}\n\n\t\tif (transform.generated.initial) {\n\t\t\ttransition.fragments.push({\n\t\t\t\tdelayed: ((transform.property) + \" \" + (duration / 1000) + \"s \" + easing + \" \" + (delay / 1000) + \"s\"),\n\t\t\t\tinstant: ((transform.property) + \" \" + (duration / 1000) + \"s \" + easing + \" 0s\")\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * The default computed transition property should be undefined, or one of:\n\t\t * '' || 'none 0s ease 0s' || 'all 0s ease 0s' || 'all 0s 0s cubic-bezier()'\n\t\t */\n\t\tvar hasCustomTransition =\n\t\t\ttransition.computed && !transition.computed.match(/all 0s|none 0s/);\n\n\t\tif (hasCustomTransition) {\n\t\t\ttransition.fragments.unshift({\n\t\t\t\tdelayed: transition.computed,\n\t\t\t\tinstant: transition.computed\n\t\t\t});\n\t\t}\n\n\t\tvar composed = transition.fragments.reduce(\n\t\t\tfunction (composition, fragment, i) {\n\t\t\t\tcomposition.delayed += i === 0 ? fragment.delayed : (\", \" + (fragment.delayed));\n\t\t\t\tcomposition.instant += i === 0 ? fragment.instant : (\", \" + (fragment.instant));\n\t\t\t\treturn composition\n\t\t\t},\n\t\t\t{\n\t\t\t\tdelayed: '',\n\t\t\t\tinstant: ''\n\t\t\t}\n\t\t);\n\n\t\ttransition.generated = {\n\t\t\tdelayed: ((transition.property) + \": \" + (composed.delayed) + \";\"),\n\t\t\tinstant: ((transition.property) + \": \" + (composed.instant) + \";\")\n\t\t};\n\t} else {\n\t\ttransition.generated = {\n\t\t\tdelayed: '',\n\t\t\tinstant: ''\n\t\t};\n\t}\n\n\treturn {\n\t\tinline: inline,\n\t\topacity: opacity,\n\t\tposition: position,\n\t\ttransform: transform,\n\t\ttransition: transition\n\t}\n}\n\n/**\n * apply a CSS string to an element using the CSSOM (element.style) rather\n * than setAttribute, which may violate the content security policy.\n *\n * @param {Node} [el] Element to receive styles.\n * @param {string} [declaration] Styles to apply.\n */\nfunction applyStyle (el, declaration) {\n\tdeclaration.split(';').forEach(function (pair) {\n\t\tvar ref = pair.split(':');\n\t\tvar property = ref[0];\n\t\tvar value = ref.slice(1);\n\t\tif (property && value) {\n\t\t\tel.style[property.trim()] = value.join(':');\n\t\t}\n\t});\n}\n\nfunction clean(target) {\n\tvar this$1 = this;\n\n\tvar dirty;\n\ttry {\n\t\teach($(target), function (node) {\n\t\t\tvar id = node.getAttribute('data-sr-id');\n\t\t\tif (id !== null) {\n\t\t\t\tdirty = true;\n\t\t\t\tvar element = this$1.store.elements[id];\n\t\t\t\tif (element.callbackTimer) {\n\t\t\t\t\twindow.clearTimeout(element.callbackTimer.clock);\n\t\t\t\t}\n\t\t\t\tapplyStyle(element.node, element.styles.inline.generated);\n\t\t\t\tnode.removeAttribute('data-sr-id');\n\t\t\t\tdelete this$1.store.elements[id];\n\t\t\t}\n\t\t});\n\t} catch (e) {\n\t\treturn logger.call(this, 'Clean failed.', e.message)\n\t}\n\n\tif (dirty) {\n\t\ttry {\n\t\t\trinse.call(this);\n\t\t} catch (e) {\n\t\t\treturn logger.call(this, 'Clean failed.', e.message)\n\t\t}\n\t}\n}\n\nfunction destroy() {\n\tvar this$1 = this;\n\n\t/**\n\t * Remove all generated styles and element ids\n\t */\n\teach(this.store.elements, function (element) {\n\t\tapplyStyle(element.node, element.styles.inline.generated);\n\t\telement.node.removeAttribute('data-sr-id');\n\t});\n\n\t/**\n\t * Remove all event listeners.\n\t */\n\teach(this.store.containers, function (container) {\n\t\tvar target =\n\t\t\tcontainer.node === document.documentElement ? window : container.node;\n\t\ttarget.removeEventListener('scroll', this$1.delegate);\n\t\ttarget.removeEventListener('resize', this$1.delegate);\n\t});\n\n\t/**\n\t * Clear all data from the store\n\t */\n\tthis.store = {\n\t\tcontainers: {},\n\t\telements: {},\n\t\thistory: [],\n\t\tsequences: {}\n\t};\n}\n\nfunction deepAssign(target) {\n\tvar sources = [], len = arguments.length - 1;\n\twhile ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n\tif (isObject(target)) {\n\t\teach(sources, function (source) {\n\t\t\teach(source, function (data, key) {\n\t\t\t\tif (isObject(data)) {\n\t\t\t\t\tif (!target[key] || !isObject(target[key])) {\n\t\t\t\t\t\ttarget[key] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdeepAssign(target[key], data);\n\t\t\t\t} else {\n\t\t\t\t\ttarget[key] = data;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn target\n\t} else {\n\t\tthrow new TypeError('Target must be an object literal.')\n\t}\n}\n\nfunction isMobile(agent) {\n\tif ( agent === void 0 ) agent = navigator.userAgent;\n\n\treturn /Android|iPhone|iPad|iPod/i.test(agent)\n}\n\nvar nextUniqueId = (function () {\n\tvar uid = 0;\n\treturn function () { return uid++; }\n})();\n\nfunction initialize() {\n\tvar this$1 = this;\n\n\trinse.call(this);\n\n\teach(this.store.elements, function (element) {\n\t\tvar styles = [element.styles.inline.generated];\n\n\t\tif (element.visible) {\n\t\t\tstyles.push(element.styles.opacity.computed);\n\t\t\tstyles.push(element.styles.transform.generated.final);\n\t\t\telement.revealed = true;\n\t\t} else {\n\t\t\tstyles.push(element.styles.opacity.generated);\n\t\t\tstyles.push(element.styles.transform.generated.initial);\n\t\t\telement.revealed = false;\n\t\t}\n\n\t\tapplyStyle(element.node, styles.filter(function (s) { return s !== ''; }).join(' '));\n\t});\n\n\teach(this.store.containers, function (container) {\n\t\tvar target =\n\t\t\tcontainer.node === document.documentElement ? window : container.node;\n\t\ttarget.addEventListener('scroll', this$1.delegate);\n\t\ttarget.addEventListener('resize', this$1.delegate);\n\t});\n\n\t/**\n\t * Manually invoke delegate once to capture\n\t * element and container dimensions, container\n\t * scroll position, and trigger any valid reveals\n\t */\n\tthis.delegate();\n\n\t/**\n\t * Wipe any existing `setTimeout` now\n\t * that initialization has completed.\n\t */\n\tthis.initTimeout = null;\n}\n\nfunction animate(element, force) {\n\tif ( force === void 0 ) force = {};\n\n\tvar pristine = force.pristine || this.pristine;\n\tvar delayed =\n\t\telement.config.useDelay === 'always' ||\n\t\t(element.config.useDelay === 'onload' && pristine) ||\n\t\t(element.config.useDelay === 'once' && !element.seen);\n\n\tvar shouldReveal = element.visible && !element.revealed;\n\tvar shouldReset = !element.visible && element.revealed && element.config.reset;\n\n\tif (force.reveal || shouldReveal) {\n\t\treturn triggerReveal.call(this, element, delayed)\n\t}\n\n\tif (force.reset || shouldReset) {\n\t\treturn triggerReset.call(this, element)\n\t}\n}\n\nfunction triggerReveal(element, delayed) {\n\tvar styles = [\n\t\telement.styles.inline.generated,\n\t\telement.styles.opacity.computed,\n\t\telement.styles.transform.generated.final\n\t];\n\tif (delayed) {\n\t\tstyles.push(element.styles.transition.generated.delayed);\n\t} else {\n\t\tstyles.push(element.styles.transition.generated.instant);\n\t}\n\telement.revealed = element.seen = true;\n\tapplyStyle(element.node, styles.filter(function (s) { return s !== ''; }).join(' '));\n\tregisterCallbacks.call(this, element, delayed);\n}\n\nfunction triggerReset(element) {\n\tvar styles = [\n\t\telement.styles.inline.generated,\n\t\telement.styles.opacity.generated,\n\t\telement.styles.transform.generated.initial,\n\t\telement.styles.transition.generated.instant\n\t];\n\telement.revealed = false;\n\tapplyStyle(element.node, styles.filter(function (s) { return s !== ''; }).join(' '));\n\tregisterCallbacks.call(this, element);\n}\n\nfunction registerCallbacks(element, isDelayed) {\n\tvar this$1 = this;\n\n\tvar duration = isDelayed\n\t\t? element.config.duration + element.config.delay\n\t\t: element.config.duration;\n\n\tvar beforeCallback = element.revealed\n\t\t? element.config.beforeReveal\n\t\t: element.config.beforeReset;\n\n\tvar afterCallback = element.revealed\n\t\t? element.config.afterReveal\n\t\t: element.config.afterReset;\n\n\tvar elapsed = 0;\n\tif (element.callbackTimer) {\n\t\telapsed = Date.now() - element.callbackTimer.start;\n\t\twindow.clearTimeout(element.callbackTimer.clock);\n\t}\n\n\tbeforeCallback(element.node);\n\n\telement.callbackTimer = {\n\t\tstart: Date.now(),\n\t\tclock: window.setTimeout(function () {\n\t\t\tafterCallback(element.node);\n\t\t\telement.callbackTimer = null;\n\t\t\tif (element.revealed && !element.config.reset && element.config.cleanup) {\n\t\t\t\tclean.call(this$1, element.node);\n\t\t\t}\n\t\t}, duration - elapsed)\n\t};\n}\n\nfunction sequence(element, pristine) {\n\tif ( pristine === void 0 ) pristine = this.pristine;\n\n\t/**\n\t * We first check if the element should reset.\n\t */\n\tif (!element.visible && element.revealed && element.config.reset) {\n\t\treturn animate.call(this, element, { reset: true })\n\t}\n\n\tvar seq = this.store.sequences[element.sequence.id];\n\tvar i = element.sequence.index;\n\n\tif (seq) {\n\t\tvar visible = new SequenceModel(seq, 'visible', this.store);\n\t\tvar revealed = new SequenceModel(seq, 'revealed', this.store);\n\n\t\tseq.models = { visible: visible, revealed: revealed };\n\n\t\t/**\n\t\t * If the sequence has no revealed members,\n\t\t * then we reveal the first visible element\n\t\t * within that sequence.\n\t\t *\n\t\t * The sequence then cues a recursive call\n\t\t * in both directions.\n\t\t */\n\t\tif (!revealed.body.length) {\n\t\t\tvar nextId = seq.members[visible.body[0]];\n\t\t\tvar nextElement = this.store.elements[nextId];\n\n\t\t\tif (nextElement) {\n\t\t\t\tcue.call(this, seq, visible.body[0], -1, pristine);\n\t\t\t\tcue.call(this, seq, visible.body[0], +1, pristine);\n\t\t\t\treturn animate.call(this, nextElement, { reveal: true, pristine: pristine })\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * If our element isn’t resetting, we check the\n\t\t * element sequence index against the head, and\n\t\t * then the foot of the sequence.\n\t\t */\n\t\tif (\n\t\t\t!seq.blocked.head &&\n\t\t\ti === [].concat( revealed.head ).pop() &&\n\t\t\ti >= [].concat( visible.body ).shift()\n\t\t) {\n\t\t\tcue.call(this, seq, i, -1, pristine);\n\t\t\treturn animate.call(this, element, { reveal: true, pristine: pristine })\n\t\t}\n\n\t\tif (\n\t\t\t!seq.blocked.foot &&\n\t\t\ti === [].concat( revealed.foot ).shift() &&\n\t\t\ti <= [].concat( visible.body ).pop()\n\t\t) {\n\t\t\tcue.call(this, seq, i, +1, pristine);\n\t\t\treturn animate.call(this, element, { reveal: true, pristine: pristine })\n\t\t}\n\t}\n}\n\nfunction Sequence(interval) {\n\tvar i = Math.abs(interval);\n\tif (!isNaN(i)) {\n\t\tthis.id = nextUniqueId();\n\t\tthis.interval = Math.max(i, 16);\n\t\tthis.members = [];\n\t\tthis.models = {};\n\t\tthis.blocked = {\n\t\t\thead: false,\n\t\t\tfoot: false\n\t\t};\n\t} else {\n\t\tthrow new RangeError('Invalid sequence interval.')\n\t}\n}\n\nfunction SequenceModel(seq, prop, store) {\n\tvar this$1 = this;\n\n\tthis.head = [];\n\tthis.body = [];\n\tthis.foot = [];\n\n\teach(seq.members, function (id, index) {\n\t\tvar element = store.elements[id];\n\t\tif (element && element[prop]) {\n\t\t\tthis$1.body.push(index);\n\t\t}\n\t});\n\n\tif (this.body.length) {\n\t\teach(seq.members, function (id, index) {\n\t\t\tvar element = store.elements[id];\n\t\t\tif (element && !element[prop]) {\n\t\t\t\tif (index < this$1.body[0]) {\n\t\t\t\t\tthis$1.head.push(index);\n\t\t\t\t} else {\n\t\t\t\t\tthis$1.foot.push(index);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nfunction cue(seq, i, direction, pristine) {\n\tvar this$1 = this;\n\n\tvar blocked = ['head', null, 'foot'][1 + direction];\n\tvar nextId = seq.members[i + direction];\n\tvar nextElement = this.store.elements[nextId];\n\n\tseq.blocked[blocked] = true;\n\n\tsetTimeout(function () {\n\t\tseq.blocked[blocked] = false;\n\t\tif (nextElement) {\n\t\t\tsequence.call(this$1, nextElement, pristine);\n\t\t}\n\t}, seq.interval);\n}\n\nfunction reveal(target, options, syncing) {\n\tvar this$1 = this;\n\tif ( options === void 0 ) options = {};\n\tif ( syncing === void 0 ) syncing = false;\n\n\tvar containerBuffer = [];\n\tvar sequence$$1;\n\tvar interval = options.interval || defaults.interval;\n\n\ttry {\n\t\tif (interval) {\n\t\t\tsequence$$1 = new Sequence(interval);\n\t\t}\n\n\t\tvar nodes = $(target);\n\t\tif (!nodes.length) {\n\t\t\tthrow new Error('Invalid reveal target.')\n\t\t}\n\n\t\tvar elements = nodes.reduce(function (elementBuffer, elementNode) {\n\t\t\tvar element = {};\n\t\t\tvar existingId = elementNode.getAttribute('data-sr-id');\n\n\t\t\tif (existingId) {\n\t\t\t\tdeepAssign(element, this$1.store.elements[existingId]);\n\n\t\t\t\t/**\n\t\t\t\t * In order to prevent previously generated styles\n\t\t\t\t * from throwing off the new styles, the style tag\n\t\t\t\t * has to be reverted to its pre-reveal state.\n\t\t\t\t */\n\t\t\t\tapplyStyle(element.node, element.styles.inline.computed);\n\t\t\t} else {\n\t\t\t\telement.id = nextUniqueId();\n\t\t\t\telement.node = elementNode;\n\t\t\t\telement.seen = false;\n\t\t\t\telement.revealed = false;\n\t\t\t\telement.visible = false;\n\t\t\t}\n\n\t\t\tvar config = deepAssign({}, element.config || this$1.defaults, options);\n\n\t\t\tif ((!config.mobile && isMobile()) || (!config.desktop && !isMobile())) {\n\t\t\t\tif (existingId) {\n\t\t\t\t\tclean.call(this$1, element);\n\t\t\t\t}\n\t\t\t\treturn elementBuffer // skip elements that are disabled\n\t\t\t}\n\n\t\t\tvar containerNode = $(config.container)[0];\n\t\t\tif (!containerNode) {\n\t\t\t\tthrow new Error('Invalid container.')\n\t\t\t}\n\t\t\tif (!containerNode.contains(elementNode)) {\n\t\t\t\treturn elementBuffer // skip elements found outside the container\n\t\t\t}\n\n\t\t\tvar containerId;\n\t\t\t{\n\t\t\t\tcontainerId = getContainerId(\n\t\t\t\t\tcontainerNode,\n\t\t\t\t\tcontainerBuffer,\n\t\t\t\t\tthis$1.store.containers\n\t\t\t\t);\n\t\t\t\tif (containerId === null) {\n\t\t\t\t\tcontainerId = nextUniqueId();\n\t\t\t\t\tcontainerBuffer.push({ id: containerId, node: containerNode });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telement.config = config;\n\t\t\telement.containerId = containerId;\n\t\t\telement.styles = style(element);\n\n\t\t\tif (sequence$$1) {\n\t\t\t\telement.sequence = {\n\t\t\t\t\tid: sequence$$1.id,\n\t\t\t\t\tindex: sequence$$1.members.length\n\t\t\t\t};\n\t\t\t\tsequence$$1.members.push(element.id);\n\t\t\t}\n\n\t\t\telementBuffer.push(element);\n\t\t\treturn elementBuffer\n\t\t}, []);\n\n\t\t/**\n\t\t * Modifying the DOM via setAttribute needs to be handled\n\t\t * separately from reading computed styles in the map above\n\t\t * for the browser to batch DOM changes (limiting reflows)\n\t\t */\n\t\teach(elements, function (element) {\n\t\t\tthis$1.store.elements[element.id] = element;\n\t\t\telement.node.setAttribute('data-sr-id', element.id);\n\t\t});\n\t} catch (e) {\n\t\treturn logger.call(this, 'Reveal failed.', e.message)\n\t}\n\n\t/**\n\t * Now that element set-up is complete...\n\t * Let’s commit any container and sequence data we have to the store.\n\t */\n\teach(containerBuffer, function (container) {\n\t\tthis$1.store.containers[container.id] = {\n\t\t\tid: container.id,\n\t\t\tnode: container.node\n\t\t};\n\t});\n\tif (sequence$$1) {\n\t\tthis.store.sequences[sequence$$1.id] = sequence$$1;\n\t}\n\n\t/**\n\t * If reveal wasn't invoked by sync, we want to\n\t * make sure to add this call to the history.\n\t */\n\tif (syncing !== true) {\n\t\tthis.store.history.push({ target: target, options: options });\n\n\t\t/**\n\t\t * Push initialization to the event queue, giving\n\t\t * multiple reveal calls time to be interpreted.\n\t\t */\n\t\tif (this.initTimeout) {\n\t\t\twindow.clearTimeout(this.initTimeout);\n\t\t}\n\t\tthis.initTimeout = window.setTimeout(initialize.bind(this), 0);\n\t}\n}\n\nfunction getContainerId(node) {\n\tvar collections = [], len = arguments.length - 1;\n\twhile ( len-- > 0 ) collections[ len ] = arguments[ len + 1 ];\n\n\tvar id = null;\n\teach(collections, function (collection) {\n\t\teach(collection, function (container) {\n\t\t\tif (id === null && container.node === node) {\n\t\t\t\tid = container.id;\n\t\t\t}\n\t\t});\n\t});\n\treturn id\n}\n\n/**\n * Re-runs the reveal method for each record stored in history,\n * for capturing new content asynchronously loaded into the DOM.\n */\nfunction sync() {\n\tvar this$1 = this;\n\n\teach(this.store.history, function (record) {\n\t\treveal.call(this$1, record.target, record.options, true);\n\t});\n\n\tinitialize.call(this);\n}\n\nvar polyfill = function (x) { return (x > 0) - (x < 0) || +x; };\nvar mathSign = Math.sign || polyfill;\n\nfunction getGeometry(target, isContainer) {\n\t/**\n\t * We want to ignore padding and scrollbars for container elements.\n\t * More information here: https://goo.gl/vOZpbz\n\t */\n\tvar height = isContainer ? target.node.clientHeight : target.node.offsetHeight;\n\tvar width = isContainer ? target.node.clientWidth : target.node.offsetWidth;\n\n\tvar offsetTop = 0;\n\tvar offsetLeft = 0;\n\tvar node = target.node;\n\n\tdo {\n\t\tif (!isNaN(node.offsetTop)) {\n\t\t\toffsetTop += node.offsetTop;\n\t\t}\n\t\tif (!isNaN(node.offsetLeft)) {\n\t\t\toffsetLeft += node.offsetLeft;\n\t\t}\n\t\tnode = node.offsetParent;\n\t} while (node)\n\n\treturn {\n\t\tbounds: {\n\t\t\ttop: offsetTop,\n\t\t\tright: offsetLeft + width,\n\t\t\tbottom: offsetTop + height,\n\t\t\tleft: offsetLeft\n\t\t},\n\t\theight: height,\n\t\twidth: width\n\t}\n}\n\nfunction getScrolled(container) {\n\tvar top, left;\n\tif (container.node === document.documentElement) {\n\t\ttop = window.pageYOffset;\n\t\tleft = window.pageXOffset;\n\t} else {\n\t\ttop = container.node.scrollTop;\n\t\tleft = container.node.scrollLeft;\n\t}\n\treturn { top: top, left: left }\n}\n\nfunction isElementVisible(element) {\n\tif ( element === void 0 ) element = {};\n\n\tvar container = this.store.containers[element.containerId];\n\tif (!container) { return }\n\n\tvar viewFactor = Math.max(0, Math.min(1, element.config.viewFactor));\n\tvar viewOffset = element.config.viewOffset;\n\n\tvar elementBounds = {\n\t\ttop: element.geometry.bounds.top + element.geometry.height * viewFactor,\n\t\tright: element.geometry.bounds.right - element.geometry.width * viewFactor,\n\t\tbottom: element.geometry.bounds.bottom - element.geometry.height * viewFactor,\n\t\tleft: element.geometry.bounds.left + element.geometry.width * viewFactor\n\t};\n\n\tvar containerBounds = {\n\t\ttop: container.geometry.bounds.top + container.scroll.top + viewOffset.top,\n\t\tright: container.geometry.bounds.right + container.scroll.left - viewOffset.right,\n\t\tbottom:\n\t\t\tcontainer.geometry.bounds.bottom + container.scroll.top - viewOffset.bottom,\n\t\tleft: container.geometry.bounds.left + container.scroll.left + viewOffset.left\n\t};\n\n\treturn (\n\t\t(elementBounds.top < containerBounds.bottom &&\n\t\t\telementBounds.right > containerBounds.left &&\n\t\t\telementBounds.bottom > containerBounds.top &&\n\t\t\telementBounds.left < containerBounds.right) ||\n\t\telement.styles.position === 'fixed'\n\t)\n}\n\nfunction delegate(\n\tevent,\n\telements\n) {\n\tvar this$1 = this;\n\tif ( event === void 0 ) event = { type: 'init' };\n\tif ( elements === void 0 ) elements = this.store.elements;\n\n\traf(function () {\n\t\tvar stale = event.type === 'init' || event.type === 'resize';\n\n\t\teach(this$1.store.containers, function (container) {\n\t\t\tif (stale) {\n\t\t\t\tcontainer.geometry = getGeometry.call(this$1, container, true);\n\t\t\t}\n\t\t\tvar scroll = getScrolled.call(this$1, container);\n\t\t\tif (container.scroll) {\n\t\t\t\tcontainer.direction = {\n\t\t\t\t\tx: mathSign(scroll.left - container.scroll.left),\n\t\t\t\t\ty: mathSign(scroll.top - container.scroll.top)\n\t\t\t\t};\n\t\t\t}\n\t\t\tcontainer.scroll = scroll;\n\t\t});\n\n\t\t/**\n\t\t * Due to how the sequencer is implemented, it’s\n\t\t * important that we update the state of all\n\t\t * elements, before any animation logic is\n\t\t * evaluated (in the second loop below).\n\t\t */\n\t\teach(elements, function (element) {\n\t\t\tif (stale || element.geometry === undefined) {\n\t\t\t\telement.geometry = getGeometry.call(this$1, element);\n\t\t\t}\n\t\t\telement.visible = isElementVisible.call(this$1, element);\n\t\t});\n\n\t\teach(elements, function (element) {\n\t\t\tif (element.sequence) {\n\t\t\t\tsequence.call(this$1, element);\n\t\t\t} else {\n\t\t\t\tanimate.call(this$1, element);\n\t\t\t}\n\t\t});\n\n\t\tthis$1.pristine = false;\n\t});\n}\n\nfunction isTransformSupported() {\n\tvar style = document.documentElement.style;\n\treturn 'transform' in style || 'WebkitTransform' in style\n}\n\nfunction isTransitionSupported() {\n\tvar style = document.documentElement.style;\n\treturn 'transition' in style || 'WebkitTransition' in style\n}\n\nvar version = \"4.0.9\";\n\nvar boundDelegate;\nvar boundDestroy;\nvar boundReveal;\nvar boundClean;\nvar boundSync;\nvar config;\nvar debug;\nvar instance;\n\nfunction ScrollReveal(options) {\n\tif ( options === void 0 ) options = {};\n\n\tvar invokedWithoutNew =\n\t\ttypeof this === 'undefined' ||\n\t\tObject.getPrototypeOf(this) !== ScrollReveal.prototype;\n\n\tif (invokedWithoutNew) {\n\t\treturn new ScrollReveal(options)\n\t}\n\n\tif (!ScrollReveal.isSupported()) {\n\t\tlogger.call(this, 'Instantiation failed.', 'This browser is not supported.');\n\t\treturn mount.failure()\n\t}\n\n\tvar buffer;\n\ttry {\n\t\tbuffer = config\n\t\t\t? deepAssign({}, config, options)\n\t\t\t: deepAssign({}, defaults, options);\n\t} catch (e) {\n\t\tlogger.call(this, 'Invalid configuration.', e.message);\n\t\treturn mount.failure()\n\t}\n\n\ttry {\n\t\tvar container = $(buffer.container)[0];\n\t\tif (!container) {\n\t\t\tthrow new Error('Invalid container.')\n\t\t}\n\t} catch (e) {\n\t\tlogger.call(this, e.message);\n\t\treturn mount.failure()\n\t}\n\n\tconfig = buffer;\n\n\tif ((!config.mobile && isMobile()) || (!config.desktop && !isMobile())) {\n\t\tlogger.call(\n\t\t\tthis,\n\t\t\t'This device is disabled.',\n\t\t\t(\"desktop: \" + (config.desktop)),\n\t\t\t(\"mobile: \" + (config.mobile))\n\t\t);\n\t\treturn mount.failure()\n\t}\n\n\tmount.success();\n\n\tthis.store = {\n\t\tcontainers: {},\n\t\telements: {},\n\t\thistory: [],\n\t\tsequences: {}\n\t};\n\n\tthis.pristine = true;\n\n\tboundDelegate = boundDelegate || delegate.bind(this);\n\tboundDestroy = boundDestroy || destroy.bind(this);\n\tboundReveal = boundReveal || reveal.bind(this);\n\tboundClean = boundClean || clean.bind(this);\n\tboundSync = boundSync || sync.bind(this);\n\n\tObject.defineProperty(this, 'delegate', { get: function () { return boundDelegate; } });\n\tObject.defineProperty(this, 'destroy', { get: function () { return boundDestroy; } });\n\tObject.defineProperty(this, 'reveal', { get: function () { return boundReveal; } });\n\tObject.defineProperty(this, 'clean', { get: function () { return boundClean; } });\n\tObject.defineProperty(this, 'sync', { get: function () { return boundSync; } });\n\n\tObject.defineProperty(this, 'defaults', { get: function () { return config; } });\n\tObject.defineProperty(this, 'version', { get: function () { return version; } });\n\tObject.defineProperty(this, 'noop', { get: function () { return false; } });\n\n\treturn instance ? instance : (instance = this)\n}\n\nScrollReveal.isSupported = function () { return isTransformSupported() && isTransitionSupported(); };\n\nObject.defineProperty(ScrollReveal, 'debug', {\n\tget: function () { return debug || false; },\n\tset: function (value) { return (debug = typeof value === 'boolean' ? value : debug); }\n});\n\nScrollReveal();\n\nexport default ScrollReveal;\n","import ScrollReveal from 'scrollreveal'\n\nconst fn = {\n init: () => {\n fn.setupScrollReveals()\n },\n\n setupScrollReveals: () => {\n ScrollReveal().reveal('[data-sr-fade-up]', {\n distance: '125%',\n origin: 'bottom',\n interval: 50,\n })\n\n ScrollReveal().reveal('[data-sr-zoom]', {\n scale: 0.4,\n origin: 'center',\n interval: 50,\n })\n\n ScrollReveal().reveal('[data-sr-touch]', {\n opacity: 1,\n afterReveal: (el) => el.classList.add('sr-touched'),\n })\n\n ScrollReveal().reveal('[data-sr-fade-left]', {\n distance: '125%',\n origin: 'right',\n interval: 50,\n })\n\n ScrollReveal().reveal('[data-sr-slide-left]', {\n distance: '125%',\n origin: 'right',\n opacity: 1,\n interval: 50,\n })\n\n ScrollReveal().reveal('[data-sr-fade-right]', {\n distance: '125%',\n origin: 'left',\n interval: 50,\n })\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\n\nconst fn = {\n init: () => {\n const footerEmbed = document.querySelector('.footer-cc-embed')\n\n if (footerEmbed) {\n fn.setupFooterForm(footerEmbed)\n }\n\n on('click', '[data-cc-modal]', fn.handleOpen)\n on('click', '.cc-modal .tingle-modal__close', fn.handleClose)\n },\n\n setupFooterForm: (el) => {\n const targetNode = el.querySelector('.ctct-inline-form')\n\n const callback = function (mutationsList, observer) {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n fn.handleFormElements(el)\n observer.disconnect()\n }\n }\n }\n\n if (targetNode) {\n const observer = new MutationObserver(callback)\n\n observer.observe(targetNode, { childList: true })\n }\n },\n\n handleOpen: (e) => {\n const target = document.querySelector(e.target.closest('[data-cc-modal]').dataset.ccModal)\n\n if (target) {\n fn.handleFormElements(target)\n\n target.classList.add('tingle-modal--visible')\n }\n },\n\n handleClose: (e) => {\n const modal = e.target.closest('.cc-modal')\n\n if (modal) {\n modal.classList.remove('tingle-modal--visible')\n }\n },\n\n handleFormElements: (el) => {\n const emailField = el.querySelector('.ctct-form-element[name=\"email_address\"]')\n const header = el.querySelector('.ctct-form-custom > .ctct-form-header')\n const formText = el.querySelector('.ctct-form-custom > .ctct-form-text')\n\n if (emailField) {\n emailField.setAttribute('placeholder', 'Enter Your Email to Subscribe')\n }\n\n if (header) {\n header.parentNode.parentNode.insertBefore(header, header.parentNode)\n }\n\n if (formText) {\n formText.parentNode.parentNode.insertBefore(formText, formText.parentNode)\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import requestTimeout from '../common/requestTimeout'\nimport throttle from 'lodash/throttle'\nimport verge from 'verge'\nconst countUpModule = require('countup.js')\n\nconst counters = document.querySelectorAll('[data-counter]')\n\nconst state = {\n counters: [],\n}\n\nconst fn = {\n init: () => {\n counters.forEach((el) => {\n const useGrouping = el.dataset.useGrouping\n const decimalPlaces = el.dataset.decimalPlaces\n const end = el.dataset.end\n\n const opts = {\n useGrouping: !!+useGrouping,\n }\n\n if (decimalPlaces) {\n opts.decimalPlaces = decimalPlaces\n }\n\n const counter = new countUpModule.CountUp(el, end, opts)\n counter._el = el\n\n state.counters.push(counter)\n })\n\n fn.bindEvents()\n\n requestTimeout(fn.update, 300)\n },\n\n bindEvents: () => {\n window.addEventListener('scroll', throttle(fn.update, 250))\n },\n\n update: () => {\n state.counters.forEach((counter, index) => {\n if (verge.inY(counter._el)) {\n counter.start()\n delete state.counters[index]\n }\n })\n },\n}\n\nexport default {\n can: () => counters.length,\n run: fn.init,\n}\n","const not = {\n inert: ':not([inert]):not([inert] *)',\n negTabIndex: ':not([tabindex^=\"-\"])',\n disabled: ':not(:disabled)',\n};\n\nvar focusableSelectors = [\n `a[href]${not.inert}${not.negTabIndex}`,\n `area[href]${not.inert}${not.negTabIndex}`,\n `input:not([type=\"hidden\"]):not([type=\"radio\"])${not.inert}${not.negTabIndex}${not.disabled}`,\n `input[type=\"radio\"]${not.inert}${not.negTabIndex}${not.disabled}`,\n `select${not.inert}${not.negTabIndex}${not.disabled}`,\n `textarea${not.inert}${not.negTabIndex}${not.disabled}`,\n `button${not.inert}${not.negTabIndex}${not.disabled}`,\n `details${not.inert} > summary:first-of-type${not.negTabIndex}`,\n // Discard until Firefox supports `:has()`\n // See: https://github.com/KittyGiraudel/focusable-selectors/issues/12\n // `details:not(:has(> summary))${not.inert}${not.negTabIndex}`,\n `iframe${not.inert}${not.negTabIndex}`,\n `audio[controls]${not.inert}${not.negTabIndex}`,\n `video[controls]${not.inert}${not.negTabIndex}`,\n `[contenteditable]${not.inert}${not.negTabIndex}`,\n `[tabindex]${not.inert}${not.negTabIndex}`,\n];\n\n/**\n * Set the focus to the first element with `autofocus` with the element or the\n * element itself.\n */\nfunction moveFocusToDialog(el) {\n const focused = (el.querySelector('[autofocus]') || el);\n focused.focus();\n}\n/**\n * Get the first and last focusable elements in a given tree.\n */\nfunction getFocusableEdges(el) {\n // Check for a focusable element within the subtree of `el`.\n const first = findFocusableElement(el, true);\n // Only if we find the first element do we need to look for the last one. If\n // there’s no last element, we set `last` as a reference to `first` so that\n // the returned array is always of length 2.\n const last = first ? findFocusableElement(el, false) || first : null;\n return [first, last];\n}\n/**\n * Find the first focusable element inside the given node if `forward` is truthy\n * or the last focusable element otherwise.\n */\nfunction findFocusableElement(node, forward) {\n // If we’re walking forward, check if this node is focusable, and return it\n // immediately if it is.\n if (forward && isFocusable(node))\n return node;\n // We should only search the subtree of this node if it can have focusable\n // children.\n if (canHaveFocusableChildren(node)) {\n // Start walking the DOM tree, looking for focusable elements.\n // Case 1: If this node has a shadow root, search it recursively.\n if (node.shadowRoot) {\n // Descend into this subtree.\n let next = getNextChildEl(node.shadowRoot, forward);\n // Traverse siblings, searching the subtree of each one\n // for focusable elements.\n while (next) {\n const focusableEl = findFocusableElement(next, forward);\n if (focusableEl)\n return focusableEl;\n next = getNextSiblingEl(next, forward);\n }\n }\n // Case 2: If this node is a slot for a Custom Element, search its assigned\n // nodes recursively.\n else if (node.localName === 'slot') {\n const assignedElements = node.assignedElements({\n flatten: true,\n });\n if (!forward)\n assignedElements.reverse();\n for (const assignedElement of assignedElements) {\n const focusableEl = findFocusableElement(assignedElement, forward);\n if (focusableEl)\n return focusableEl;\n }\n }\n // Case 3: this is a regular Light DOM node. Search its subtree.\n else {\n // Descend into this subtree.\n let next = getNextChildEl(node, forward);\n // Traverse siblings, searching the subtree of each one\n // for focusable elements.\n while (next) {\n const focusableEl = findFocusableElement(next, forward);\n if (focusableEl)\n return focusableEl;\n next = getNextSiblingEl(next, forward);\n }\n }\n }\n // If we’re walking backward, we want to check the node’s entire subtree\n // before checking the node itself. If this node is focusable, return it.\n if (!forward && isFocusable(node))\n return node;\n return null;\n}\nfunction getNextChildEl(node, forward) {\n return forward ? node.firstElementChild : node.lastElementChild;\n}\nfunction getNextSiblingEl(el, forward) {\n return forward ? el.nextElementSibling : el.previousElementSibling;\n}\n/**\n * Determine if an element is hidden from the user.\n */\nconst isHidden = (el) => {\n // Browsers hide all non- descendants of closed
elements\n // from user interaction, but those non- elements may still match our\n // focusable-selectors and may still have dimensions, so we need a special\n // case to ignore them.\n if (el.matches('details:not([open]) *') &&\n !el.matches('details>summary:first-of-type'))\n return true;\n // If this element has no painted dimensions, it's hidden.\n return !(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n};\n/**\n * Determine if an element is focusable and has user-visible painted dimensions.\n */\nconst isFocusable = (el) => {\n // A shadow host that delegates focus will never directly receive focus,\n // even with `tabindex=0`. Consider our custom element, which\n // delegates focus to its shadow button:\n //\n // \n // #shadow-root\n // \n // \n //\n // The browser acts as as if there is only one focusable element – the shadow\n // button. Our library should behave the same way.\n if (el.shadowRoot?.delegatesFocus)\n return false;\n return el.matches(focusableSelectors.join(',')) && !isHidden(el);\n};\n/**\n * Determine if an element can have focusable children. Useful for bailing out\n * early when walking the DOM tree.\n * @example\n * This div is inert, so none of its children can be focused, even though they\n * meet our criteria for what is focusable. Once we check the div, we can skip\n * the rest of the subtree.\n * ```html\n *
\n * \n * Link\n *
\n * ```\n */\nfunction canHaveFocusableChildren(el) {\n // The browser will never send focus into a Shadow DOM if the host element\n // has a negative tabindex. This applies to both slotted Light DOM Shadow DOM\n // children\n if (el.shadowRoot && el.getAttribute('tabindex') === '-1')\n return false;\n // Elemments matching this selector are either hidden entirely from the user,\n // or are visible but unavailable for interaction. Their descentants can never\n // receive focus.\n return !el.matches(':disabled,[hidden],[inert]');\n}\n/**\n * Get the active element, accounting for Shadow DOM subtrees.\n * @author Cory LaViska\n * @see: https://www.abeautifulsite.net/posts/finding-the-active-element-in-a-shadow-root/\n */\nfunction getActiveElement(root = document) {\n const activeEl = root.activeElement;\n if (!activeEl)\n return null;\n // If there’s a shadow root, recursively find the active element within it.\n // If the recursive call returns null, return the active element\n // of the top-level Document.\n if (activeEl.shadowRoot)\n return getActiveElement(activeEl.shadowRoot) || document.activeElement;\n // If not, we can just return the active element\n return activeEl;\n}\n/**\n * Trap the focus inside the given element\n */\nfunction trapTabKey(el, event) {\n const [firstFocusableChild, lastFocusableChild] = getFocusableEdges(el);\n // If there are no focusable children in the dialog, prevent the user from\n // tabbing out of it\n if (!firstFocusableChild)\n return event.preventDefault();\n const activeElement = getActiveElement();\n // If the SHIFT key is pressed while tabbing (moving backwards) and the\n // currently focused item is the first one, move the focus to the last\n // focusable item from the dialog element\n if (event.shiftKey && activeElement === firstFocusableChild) {\n // @ts-ignore: we know that `lastFocusableChild` is not null here\n lastFocusableChild.focus();\n event.preventDefault();\n }\n // If the SHIFT key is not pressed (moving forwards) and the currently focused\n // item is the last one, move the focus to the first focusable item from the\n // dialog element\n else if (!event.shiftKey && activeElement === lastFocusableChild) {\n firstFocusableChild.focus();\n event.preventDefault();\n }\n}\n\nclass A11yDialog {\n $el;\n id;\n previouslyFocused;\n shown;\n constructor(element) {\n this.$el = element;\n this.id = this.$el.getAttribute('data-a11y-dialog') || this.$el.id;\n this.previouslyFocused = null;\n this.shown = false;\n this.maintainFocus = this.maintainFocus.bind(this);\n this.bindKeypress = this.bindKeypress.bind(this);\n this.handleTriggerClicks = this.handleTriggerClicks.bind(this);\n this.show = this.show.bind(this);\n this.hide = this.hide.bind(this);\n this.$el.setAttribute('aria-hidden', 'true');\n this.$el.setAttribute('aria-modal', 'true');\n this.$el.setAttribute('tabindex', '-1');\n if (!this.$el.hasAttribute('role')) {\n this.$el.setAttribute('role', 'dialog');\n }\n document.addEventListener('click', this.handleTriggerClicks, true);\n }\n /**\n * Destroy the current instance (after making sure the dialog has been hidden)\n * and remove all associated listeners from dialog openers and closers\n */\n destroy() {\n // Hide the dialog to avoid destroying an open instance\n this.hide();\n // Remove the click event delegates for our openers and closers\n document.removeEventListener('click', this.handleTriggerClicks, true);\n // Clone and replace the dialog element to prevent memory leaks caused by\n // event listeners that the author might not have cleaned up.\n this.$el.replaceWith(this.$el.cloneNode(true));\n // Dispatch a `destroy` event\n this.fire('destroy');\n return this;\n }\n /**\n * Show the dialog element, trap the current focus within it, listen for some\n * specific key presses and fire all registered callbacks for `show` event\n */\n show(event) {\n // If the dialog is already open, abort\n if (this.shown)\n return this;\n // Keep a reference to the currently focused element to be able to restore\n // it later\n this.shown = true;\n this.$el.removeAttribute('aria-hidden');\n this.previouslyFocused = getActiveElement();\n // Due to a long lasting bug in Safari, clicking an interactive element\n // (like a \n \n \n \n )\n}\n\nfunction PanelCalculate() {\n return (\n
\n
\n
Number of Payments
\n
Interest Rate
\n
Principal
\n
Monthly Payment
\n
\n Press to Compute Specific Row\n
\n
\n \n \n \n
\n )\n}\n\nexport default {\n name: 'Fixed Loan Scratchpad',\n tabs: [\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n ],\n}\n","import { format, addYears } from 'date-fns'\nimport { asCurrency, asDate, asPercentage, getInvestment, updateValuesFromFields, validateFields } from '../util'\nimport { useAppState } from '../Context'\nimport { InvestmentChart } from '../components/Charts'\nimport { InvestmentScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
\n

\n This calculator is designed to show you the value of an initial deposit at some point in the future. It\n assumes that the funds grow for the specified period of time.\n

\n

\n If you deposit {asCurrency(values.investment.presentValue)} on {asDate(values.investment.presentDate)} and\n let it compound {values.investment.frequency} until {asDate(values.investment.futureDate)} at{' '}\n {asPercentage(values.investment.interestRate)} interest, at the end of that time you will have saved{' '}\n {asCurrency(values.investment.futureValue)}.\n

\n

\n This might be the amount needed to fund a child's education, a 25th wedding anniversary trip, or your\n retirement.\n

\n

\n The Chart shows the year-by-year value in the fund created by the initial lump sum, based on the information\n input.\n

\n

\n The Detail page shows the year-by-year earnings amount along with the cumulative earnings, based on the\n inputs.\n

\n
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'Future value calculator',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n const opts = {\n presentDate: updatedValues.presentDate,\n futureDate: updatedValues.futureDate,\n presentValue: updatedValues.presentValue,\n interestRate: updatedValues.interestRate,\n frequency: updatedValues.frequency,\n }\n const investment = getInvestment(opts)\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'investment', value: investment } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'date',\n name: 'presentDate',\n label: 'Present Date',\n value: format(new Date(), 'yyyy-MM-dd'),\n },\n {\n type: 'date',\n name: 'futureDate',\n label: 'Future Date',\n value: format(addYears(new Date(), 1), 'yyyy-MM-dd'),\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'presentValue',\n label: 'Present Value',\n value: 10000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Rate of Return',\n value: 6.9,\n },\n {\n type: 'dropdown',\n name: 'frequency',\n label: 'Compounding',\n value: 'monthly',\n options: [\n { name: 'Annual', value: 'annually' },\n { name: 'Semi-Annual', value: 'semi-annually' },\n { name: 'Quarterly', value: 'quarterly' },\n { name: 'Monthly', value: 'monthly' },\n { name: 'Weekly', value: 'weekly' },\n { name: 'Daily', value: 'daily' },\n ],\n },\n ],\n}\n","import { addMonths } from 'date-fns'\nimport {\n asCurrency,\n asDate,\n asPercentage,\n getInvestment,\n getNumMonths,\n updateValuesFromFields,\n validateFields,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { SavingsChart } from '../components/Charts'\nimport { InvestmentScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
\n

\n This calculator is designed to show you the amount of a level series of deposits, possibly combined with an\n initial balance (the initial lump sum) to reach a savings goal at some point in the future. It assumes that\n the funds grow at a level after-tax rate for the specified period of time, and that all deposits are made at\n the beginning of each period. It also assumes that the first level deposit is made on the first day.\n

\n

\n If you save {asCurrency(values.investment.depositValue)} {values.investment.frequency} until{' '}\n {asDate(values.investment.futureDate)} at {asPercentage(values.investment.interestRate)} interest, with the\n starting balance of {asCurrency(values.presentValue)}, at the end of that time you will have saved{' '}\n {asCurrency(values.futureValue)}.\n

\n

\n This might be the amount needed to fund a child's education, a 25th wedding anniversary trip, or your\n retirement.\n

\n

\n The Chart shows the year-by-year value in the fund created by the level deposits and the initial lump sum,\n if any, based on the information input.\n

\n

\n The Detail page shows the year-by-year earnings amount along with the cumulative earnings, based on the\n inputs.\n

\n
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'How much must I save for a major purchase?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n const numMonths = getNumMonths(\n updatedValues.futureValue,\n updatedValues.depositValue,\n updatedValues.interestRate,\n updatedValues.presentValue\n )\n\n const today = new Date()\n const future = addMonths(today, numMonths)\n\n const opts = {\n presentDate: today,\n futureDate: future,\n presentValue: updatedValues.presentValue,\n depositValue: updatedValues.depositValue,\n interestRate: updatedValues.interestRate,\n frequency: 'monthly',\n keepRunningTotals: true,\n }\n\n const investment = getInvestment(opts)\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'investment', value: investment } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'futureValue',\n label: 'Amount That You Need to Save',\n value: 25000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'presentValue',\n label: 'Amount You Have Now',\n value: 100,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'depositValue',\n label: 'Monthly Payment',\n value: 500,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Annual After-Tax Rate of Return',\n value: 6.9,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'taxRate',\n label: 'Your Income Tax Rate',\n value: 28,\n },\n ],\n}\n","import {\n asCurrency,\n asPercentage,\n getAmortization,\n getNumPayments,\n updateValuesFromFields,\n validateFields,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { BalanceInterestChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
Credit Card Balance:
\n
{asCurrency(values.balance)}
\n
\n\n \n
Monthly Payment Amount:
\n
{asCurrency(values.monthlyPayment)}
\n
\n\n \n
Number of Monthly Payments
\n
{values.numPayments}
\n
\n\n \n
Interest Rate:
\n
{asPercentage(values.interestRate)}
\n
\n\n \n
Total Payments:
\n
{asCurrency(values.amortization.totalPayment)}
\n
\n\n \n
Total Interest:
\n
{asCurrency(values.amortization.totalInterest)}
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'How long will it take to pay off my credit cards?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n const numPayments = getNumPayments(\n updatedValues.balance,\n updatedValues.monthlyPayment,\n updatedValues.interestRate\n )\n const amortization = getAmortization(\n updatedValues.balance,\n updatedValues.interestRate,\n numPayments,\n updatedValues.monthlyPayment\n )\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'numPayments', value: numPayments } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'balance',\n label: 'Credit Card Balance',\n value: 2000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'monthlyPayment',\n label: 'Monthly Payment Amount',\n value: 50,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Interest Rate',\n value: 13,\n },\n ],\n}\n","import {\n asCurrency,\n asPercentage,\n getAmortization,\n getNumPayments,\n updateValuesFromFields,\n validateFields,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { BreakdownChart, EquityBalanceInterestChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
Principal Amount:
\n
{asCurrency(values.principal)}
\n
\n\n \n
Payment Amount:
\n
{asCurrency(values.monthlyPayment)}
\n
\n\n \n
Number of Monthly Payments:
\n
{values.numPayments}
\n
\n\n \n
Interest Rate:
\n
{asPercentage(values.interestRate)}
\n
\n\n \n
Total Payments:
\n
{asCurrency(values.amortization.totalPayment)}
\n
\n\n \n
Total Interest:
\n
{asCurrency(values.amortization.totalInterest)}
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'How long would it take to pay off a loan?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n\n const numPayments = getNumPayments(\n updatedValues.principal,\n updatedValues.monthlyPayment,\n updatedValues.interestRate\n )\n\n const amortization = getAmortization(\n updatedValues.principal,\n updatedValues.interestRate,\n numPayments,\n updatedValues.monthlyPayment\n )\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'numPayments', value: numPayments } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'principal',\n label: 'Principal Amount',\n value: 25000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'monthlyPayment',\n label: 'Monthly Payment Amount',\n value: 500,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Interest Rate',\n value: 9.5,\n },\n ],\n}\n","import {\n asCurrency,\n asPercentage,\n getAmortization,\n getPrincipal,\n updateValuesFromFields,\n validateFields,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { BreakdownChart, EquityBalanceInterestChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
You Can Borrow:
\n
{asCurrency(values.principal)}
\n
\n\n \n
Payment Amount:
\n
{asCurrency(values.monthlyPayment)}
\n
\n\n \n
Number of Payments:
\n
{values.numPayments}
\n
\n\n \n
Interest Rate:
\n
{asPercentage(values.interestRate)}
\n
\n\n \n
Total Payments:
\n
{asCurrency(values.amortization.totalPayment)}
\n
\n\n \n
Total Interest:
\n
{asCurrency(values.amortization.totalInterest)}
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'How Much Can I Borrow?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n\n const principal = getPrincipal(\n updatedValues.monthlyPayment,\n updatedValues.interestRate,\n updatedValues.numPayments\n )\n\n const amortization = getAmortization(principal, updatedValues.interestRate, updatedValues.numPayments)\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'principal', value: principal } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'monthlyPayment',\n label: 'Monthly Payment Amount You Can Afford',\n value: 500,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numPayments',\n label: 'Number of Payments',\n value: 360,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Interest Rate',\n value: 8.25,\n },\n ],\n}\n","import { asCurrency, getAmortization, getPrincipal, updateValuesFromFields, validateFields } from '../util'\nimport { useAppState } from '../Context'\nimport { BalanceInterestChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\nimport currency from 'currency.js'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
This Monthly Payment Can Fund a Purchase of:
\n
{asCurrency(values.totalAfford)}
\n
\n\n \n
Your Monthly Payment Would Be Broken Down As Follows:
\n
\n\n \n
Payment Amount:
\n
{asCurrency(values.payment)}
\n
\n\n \n
Insurance and Other Costs:
\n
{asCurrency(currency(values.monthlyInsuranceCosts).add(values.otherMonthlyCosts))}
\n
\n\n \n
Total:
\n
{asCurrency(values.highestPaymentAfford)}
\n
\n\n \n
\n Note: This calculator tells you how large your loan will be, but will not tell you whether\n you would qualify for the loan.\n
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'Car Affordability Calculator',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n const payment =\n updatedValues.highestPaymentAfford - updatedValues.monthlyInsuranceCosts - updatedValues.otherMonthlyCosts\n const principal = getPrincipal(payment, updatedValues.interestRate, updatedValues.numPayments)\n const amortization = getAmortization(principal, updatedValues.interestRate, updatedValues.numPayments)\n const totalAfford = currency(principal).add(updatedValues.downPayment)\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'payment', value: payment } })\n dispatch({ type: 'setValue', payload: { name: 'principal', value: principal } })\n dispatch({ type: 'setValue', payload: { name: 'totalAfford', value: totalAfford } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'highestPaymentAfford',\n label: 'Highest Payment Amount You Can Afford',\n value: 500,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'monthlyInsuranceCosts',\n label: 'Monthly Insurance Costs',\n value: 100,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'otherMonthlyCosts',\n label: 'Other Monthly Costs (Parking, Gas, Stickers)',\n value: 40,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'downPayment',\n label: 'Down Payment Amount',\n value: 1000,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numPayments',\n label: 'Loan Term (Months)',\n value: 60,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Interest Rate',\n value: 9.25,\n },\n ],\n}\n","import { asCurrency, getAmortization, getPrincipal, updateValuesFromFields, validateFields } from '../util'\nimport { useAppState } from '../Context'\nimport { EquityBalanceInterestChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\nimport currency from 'currency.js'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
Monthly Payment of {asCurrency(values.monthlyPayment)} Can Fund a Purchase Of:
\n
{asCurrency(values.totalAfford)}
\n
\n\n \n
This Monthly Payment Would Be Broken Down As Follows:
\n
\n\n \n
Payment Amount:
\n
{asCurrency(values.payment)}
\n
\n\n \n
Property Taxes:
\n
{asCurrency(values.paymentPropertyTax)}
\n
\n\n \n
Insurance, Association and Other Costs:
\n
{asCurrency(values.otherCosts)}
\n
\n\n \n
Total Monthly Payment:
\n
{asCurrency(values.monthlyPayment)}
\n
\n\n \n
\n Note: This calculator tells you how large your loan will be, but will not tell you whether\n you would qualify for the loan.\n
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'How much house can I afford?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n const otherCosts = currency(updatedValues.otherCosts).add(updatedValues.duesCosts)\n const payment = currency(updatedValues.monthlyPayment).subtract(otherCosts)\n const paymentPropertyTax = currency(0)\n\n const principal = getPrincipal(payment, updatedValues.interestRate, updatedValues.numMonths)\n\n const amortization = getAmortization(principal, updatedValues.interestRate, updatedValues.numMonths)\n const totalAfford = currency(principal).add(updatedValues.downPayment)\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'monthlyPayment', value: updatedValues.monthlyPayment } })\n dispatch({ type: 'setValue', payload: { name: 'payment', value: payment } })\n dispatch({ type: 'setValue', payload: { name: 'paymentPropertyTax', value: paymentPropertyTax } })\n dispatch({ type: 'setValue', payload: { name: 'totalAfford', value: totalAfford } })\n dispatch({ type: 'setValue', payload: { name: 'otherCosts', value: otherCosts } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'monthlyPayment',\n label: 'Highest Payment Amount You Can Afford',\n value: 800,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'propertyTaxRate',\n label: 'Property Tax Rate',\n value: 2,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'otherCosts',\n label: 'Monthly Insurance And Other Costs',\n value: 100,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'duesCosts',\n label: 'Monthly Association Dues (if any)',\n value: 150,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'downPayment',\n label: 'Down Payment Amount',\n value: 20000,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numMonths',\n label: 'Loan Term (Months)',\n value: 360,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Interest Rate',\n value: 8.25,\n },\n ],\n}\n","import { addYears } from 'date-fns'\nimport { asCurrency, asPercentage, getInvestment, updateValuesFromFields, validateFields } from '../util'\nimport { useAppState } from '../Context'\nimport { EndOfYearChart } from '../components/Charts'\nimport { InvestmentScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
\n

\n This calculator is designed to show you the value of a level series of deposits, possibly combined with an\n initial balance (the initial lump sum) at some point in the future. It assumes that the funds grow at a\n level after-tax rate for the specified period of time, and that all deposits are made at the beginning of\n each period. It also assumes that the first level deposit is made on the first day.\n

\n

\n If you save {asCurrency(values.depositValue)} {values.frequency} for {values.numYears} years at{' '}\n {asPercentage(values.investment.interestRate)} interest, at the end of that time you will have saved{' '}\n {asCurrency(values.investment.futureValue)}.\n

\n

\n This might be the amount needed to fund a child's education, a 25th wedding anniversary trip, or your\n retirement.\n

\n

\n The Chart shows the year-by-year value in the fund created by the level deposits and the initial lump sum,\n if any, based on the information input.\n

\n

\n The Detail page shows the year-by-year earnings amount along with the cumulative earnings, based on the\n inputs.\n

\n
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'How much will I save if I deposit $X?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n\n const today = new Date()\n const future = addYears(today, updatedValues.numYears)\n\n const opts = {\n presentDate: today,\n futureDate: future,\n presentValue: updatedValues.presentValue,\n depositValue: updatedValues.depositValue,\n interestRate: updatedValues.interestRate,\n frequency: updatedValues.frequency,\n numYears: updatedValues.numYears,\n keepRunningTotals: true,\n }\n\n const investment = getInvestment(opts)\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'investment', value: investment } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'depositValue',\n label: 'Regular Deposit Amount',\n value: 100,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'presentValue',\n label: 'Initial Lump Sum / Starting Amount (if any)',\n value: 100,\n },\n {\n type: 'dropdown',\n name: 'frequency',\n label: 'Frequency of Regular Deposits',\n value: 'monthly',\n options: [\n { name: 'Annual', value: 'annually' },\n { name: 'Semi-Annual', value: 'semi-annually' },\n { name: 'Quarterly', value: 'quarterly' },\n { name: 'Monthly', value: 'monthly' },\n { name: 'Weekly', value: 'weekly' },\n ],\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numYears',\n label: 'Number of Years to Save',\n value: 10,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Annual After-Tax Rate of Return',\n value: 6,\n },\n ],\n}\n","import { addYears } from 'date-fns'\nimport {\n asCurrency,\n asPercentage,\n getInvestment,\n getNeededDeposit,\n updateValuesFromFields,\n validateFields,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { EndOfYearChart } from '../components/Charts'\nimport { InvestmentScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
\n

\n This calculator is designed to show you the amount of a level series of deposits, possibly combined with an\n initial balance (the initial lump sum) to reach a savings goal at some point in the future. It assumes that\n the funds grow at a level after-tax rate for the specified period of time, and that all deposits are made at\n the beginning of each period. It also assumes that the first level deposit is made on the first day.\n

\n

\n If you save {asCurrency(values.investment.depositValue)} {values.frequency} for {values.numYears} years at{' '}\n {asPercentage(values.investment.interestRate)} interest, at the end of that time you will have saved{' '}\n {asCurrency(values.futureValue)}.\n

\n

\n This might be the amount needed to fund a child's education, a 25th wedding anniversary trip, or your\n retirement.\n

\n

\n The Chart shows the year-by-year value in the fund created by the level deposits and the initial lump sum,\n if any, based on the information input.\n

\n

\n The Detail page shows the year-by-year earnings amount along with the cumulative earnings, based on the\n inputs.\n

\n
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'How much must I save if I need $X?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n\n const today = new Date()\n const future = addYears(today, updatedValues.numYears)\n\n const deposit = getNeededDeposit(\n updatedValues.presentValue,\n updatedValues.futureValue,\n updatedValues.numYears,\n updatedValues.frequency,\n updatedValues.interestRate\n )\n\n const opts = {\n presentDate: today,\n futureDate: future,\n presentValue: updatedValues.presentValue,\n depositValue: deposit,\n interestRate: updatedValues.interestRate,\n frequency: updatedValues.frequency,\n numYears: updatedValues.numYears,\n keepRunningTotals: true,\n }\n\n const investment = getInvestment(opts)\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'investment', value: investment } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'futureValue',\n label: 'Savings Goal',\n value: 25000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'presentValue',\n label: 'Initial Lump Sum / Starting Amount (if any)',\n value: 100,\n },\n {\n type: 'dropdown',\n name: 'frequency',\n label: 'Frequency of Regular Deposits',\n value: 'monthly',\n options: [\n { name: 'Annual', value: 'annually' },\n { name: 'Semi-Annual', value: 'semi-annually' },\n { name: 'Quarterly', value: 'quarterly' },\n { name: 'Monthly', value: 'monthly' },\n { name: 'Weekly', value: 'weekly' },\n ],\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numYears',\n label: 'Number of Years to Save',\n value: 10,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Annual After-Tax Rate of Return',\n value: 6,\n },\n ],\n}\n","import format from 'date-fns/format'\nimport addYears from 'date-fns/addYears'\nimport differenceInDays from 'date-fns/differenceInDays'\nimport {\n asCurrency,\n asPercentage,\n getInvestment,\n getCompoundInterestRate,\n updateValuesFromFields,\n validateFields,\n asDate,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { InvestmentChart } from '../components/Charts'\nimport { InvestmentScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
\n

\n This calculator is designed to calculate investment yield.It assumes that the funds grow for the specified\n period of time.\n

\n

\n If you deposit {asCurrency(values.presentValue)} on {asDate(values.investment.presentDate)} and let it\n compound {values.frequency} until {asDate(values.investment.futureDate)}, your investment yield will be{' '}\n {asPercentage(values.investment.interestRate)}, at the end of that time you will have saved{' '}\n {asCurrency(values.investment.futureValue)}.\n

\n

\n This might be the amount needed to fund a child's education, a 25th wedding anniversary trip, or your\n retirement.\n

\n

\n The Chart shows the year-by-year value in the fund created by the level deposits and the initial lump sum,\n if any, based on the information input.\n

\n

\n The Detail page shows the year-by-year earnings amount along with the cumulative earnings, based on the\n inputs.\n

\n
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'Investment Yield Calculator',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n const dayDiff = differenceInDays(new Date(updatedValues.futureDate), new Date(updatedValues.presentDate))\n const numYears = dayDiff / 365\n\n const interestRate = getCompoundInterestRate(\n updatedValues.futureValue,\n updatedValues.presentValue,\n updatedValues.frequency,\n numYears\n )\n\n const opts = {\n presentDate: updatedValues.presentDate,\n futureDate: updatedValues.futureDate,\n presentValue: updatedValues.presentValue,\n interestRate: interestRate,\n frequency: updatedValues.frequency,\n keepRunningTotals: true,\n }\n\n const investment = getInvestment(opts)\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'investment', value: investment } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'date',\n name: 'presentDate',\n label: 'Present Date',\n value: format(new Date(), 'yyyy-MM-dd'),\n },\n {\n type: 'date',\n name: 'futureDate',\n label: 'Future Date',\n value: format(addYears(new Date(), 1), 'yyyy-MM-dd'),\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'presentValue',\n label: 'Present Value',\n value: 10000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'futureValue',\n label: 'Future Value',\n value: 11000,\n },\n {\n type: 'dropdown',\n name: 'frequency',\n label: 'Compounding',\n value: 'monthly',\n options: [\n { name: 'Annual', value: 'annual' },\n { name: 'Semi-Annual', value: 'semi-annually' },\n { name: 'Quarterly', value: 'quarterly' },\n { name: 'Monthly', value: 'monthly' },\n { name: 'Weekly', value: 'weekly' },\n { name: 'Daily', value: 'daily' },\n ],\n },\n ],\n}\n","import {\n asCurrency,\n getAmortization,\n getMonthlyPayment,\n getNumPayments,\n updateValuesFromFields,\n validateFields,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { EquityBalanceInterestChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\nimport currency from 'currency.js'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n const pointsCost = currency(values.remainingBalance).multiply(values.points / 100)\n const originationCosts = currency(values.feesCosts).add(pointsCost)\n\n const totalOriginationCosts = currency(0).subtract(originationCosts)\n\n const totalTaxedInterest = values.amortization.totalInterest.multiply(values.taxRate / 100)\n const totalLoanCost = values.amortization.totalPayment.subtract(totalTaxedInterest)\n\n const pointsAmount = currency(values.remainingBalance).multiply(values.points / 10000)\n\n const totalTaxedInterestRefinance = values.amortizationRefinance.totalInterest.multiply(values.taxRate / 100)\n const totalLoanCostRefinance = values.amortizationRefinance.totalPayment\n .subtract(totalTaxedInterestRefinance)\n .subtract(pointsAmount)\n .add(originationCosts)\n\n const totalSavings = totalLoanCost.subtract(totalLoanCostRefinance)\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Current LoanRefinanceSavings
Monthly Payment:{asCurrency(values.amortization.monthlyPayment)}{asCurrency(values.amortizationRefinance.monthlyPayment)}{asCurrency(values.monthlySavings)}
Origination Cost:{asCurrency(0)}{asCurrency(originationCosts)}{asCurrency(totalOriginationCosts)}
Loan Term (Months):{values.amortization.numPayments}{values.amortizationRefinance.numPayments}
\n Total Loan Cost*:\n {asCurrency(totalLoanCost)}{asCurrency(totalLoanCostRefinance)}{asCurrency(totalSavings)}
\n\n \n
\n * Note: The total loan cost figure is actually the present value of all the payments for each\n loan, using the investment rate of return as a discount rate.\n
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return (\n <>\n
Current Payment Schedule
\n \n
Refinancing Payment Schedule
\n \n \n )\n}\n\nexport default {\n name: 'Is refinancing my loan a good idea?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n\n const monthlyPaymentRefinance = getMonthlyPayment(\n updatedValues.remainingBalance,\n updatedValues.newRate,\n updatedValues.numPayments\n )\n const monthlySavings = currency(updatedValues.monthlyPayment).subtract(monthlyPaymentRefinance)\n\n const numPayments =\n getNumPayments(updatedValues.remainingBalance, updatedValues.monthlyPayment, updatedValues.interestRate) - 1\n\n const amortization = getAmortization(\n updatedValues.remainingBalance,\n updatedValues.interestRate,\n numPayments,\n updatedValues.monthlyPayment\n )\n\n const amortizationRefinance = getAmortization(\n updatedValues.remainingBalance,\n updatedValues.newRate,\n updatedValues.numPayments,\n monthlyPaymentRefinance\n )\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'monthlySavings', value: monthlySavings } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n dispatch({ type: 'setValue', payload: { name: 'amortizationRefinance', value: amortizationRefinance } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'header',\n text: 'Existing Loan',\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'remainingBalance',\n label: 'Remaining Balance on Your Current Loan',\n value: 100000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'monthlyPayment',\n label: 'Current Monthly Payment',\n value: 900,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Current Rate',\n value: 8.9,\n },\n {\n type: 'header',\n text: 'New Loan',\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'newRate',\n label: 'New Rate',\n value: 6.9,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'points',\n label: 'Points',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'feesCosts',\n label: 'Fees and Cloing Costs',\n value: 1000,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numPayments',\n label: 'New Term (Months)',\n value: 360,\n },\n {\n type: 'header',\n text: 'Other Information',\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'taxRate',\n label: 'Your Income Tax Rate',\n value: 28,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'returnRate',\n label: 'Your Investment Rate of Return',\n value: 5,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'keepMonths',\n label: 'How Long Will You Keep This Property? (Months)',\n value: 0,\n },\n ],\n}\n","import {\n asCurrency,\n getFixedMortgageAmortization,\n getMonthlyPayment,\n normalizedDate,\n updateValuesFromFields,\n validateFields,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { EquityBalanceInterestChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport addMonths from 'date-fns/addMonths'\nimport currency from 'currency.js'\n\nconst getTotalRentCost = (payment, rate, numMonths) => {\n let total = currency(0)\n let savings = currency(0)\n let paymentAmount = currency(payment)\n\n for (let i = 0; i < numMonths; i++) {\n if (i > 0 && i % 12 === 0) {\n paymentAmount = paymentAmount.add(paymentAmount.multiply(rate / 100))\n }\n\n total = total.add(paymentAmount)\n }\n\n return total.subtract(savings)\n}\n\nconst getTotalEquity = (values) => {\n let totalValue = values.amortization.totalPrincipal.add(values.downPayment)\n\n for (let i = 0; i < values.stayMonths; i++) {\n if (i > 0 && i % 12 === 0) {\n totalValue = totalValue.add(totalValue.multiply(values.appreciationRate / 100))\n }\n }\n\n const homeEquity = values.amortization.paymentSchedule.map((event) => totalValue - event.balance.value)\n\n const total = homeEquity[values.stayMonths - 1]\n\n return total\n}\n\nconst getBuyTotals = (values) => {\n const monthlyPayment = getMonthlyPayment(\n currency(values.homeCost).subtract(values.downPayment),\n values.interestRate,\n values.numPayments\n )\n\n const propertyTax = currency(values.homeCost)\n .multiply(values.propertyTax / 100)\n .divide(12)\n\n const totalMonthlyPayment = currency(monthlyPayment)\n .add(propertyTax)\n .add(values.dues)\n .add(values.mortgageInsurance)\n .add(values.homeownerInsurance)\n .add(values.maintenance)\n\n let total = currency(0)\n let savings = currency(0)\n let paymentAmount = currency(totalMonthlyPayment)\n\n for (let i = 0; i < values.stayMonths; i++) {\n total = total.add(paymentAmount)\n }\n\n return {\n presentValue: total.add(values.downPayment).subtract(savings),\n }\n}\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n const propertyTax = currency(values.homeCost)\n .multiply(values.propertyTax / 100)\n .divide(12)\n\n const totalMonthlyPayment = currency(values.monthlyPayment)\n .add(propertyTax)\n .add(values.dues)\n .add(values.mortgageInsurance)\n .add(values.homeownerInsurance)\n .add(values.maintenance)\n\n const totalRentCost = getTotalRentCost(values.monthlyRent, values.rentRate, values.stayMonths)\n\n const buyCosts = getBuyTotals(values)\n\n const totalHomeEquity = getTotalEquity(values)\n const totalBuyNetCost = buyCosts.presentValue.subtract(totalHomeEquity)\n\n let summary = ''\n\n const costDiff = totalBuyNetCost.subtract(totalRentCost)\n\n if (costDiff > 0) {\n summary = `You will save ${asCurrency(costDiff)} if you rent instead of buy.`\n } else {\n summary = `You will save ${asCurrency(costDiff)} if you buy instead of rent.`\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Monthly ExpensesRentBuy
Monthly Payment:{asCurrency(values.monthlyRent)}{asCurrency(values.monthlyPayment)}
Property Tax:{asCurrency(propertyTax)}
Association Dues:{asCurrency(values.dues)}
Mortgage Insurance:{asCurrency(values.mortgageInsurance)}
Homeowner's Insurance:{asCurrency(values.homeownerInsurance)}
Other Costs:{asCurrency(values.maintenance)}
Total Monthly Payment:{asCurrency(values.monthlyRent)}{asCurrency(totalMonthlyPayment)}
Total Monthly Costs
Present Value of All Costs Over {values.stayMonths} Months:{asCurrency(totalRentCost)}{asCurrency(buyCosts.presentValue)}
Home Equity:{asCurrency(totalHomeEquity)}
Total Net Cost:{asCurrency(totalRentCost)}{asCurrency(totalBuyNetCost)}
\n {summary}\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'Should I buy or rent my home?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n\n const monthlyPayment = getMonthlyPayment(\n currency(updatedValues.homeCost).subtract(updatedValues.downPayment),\n updatedValues.interestRate,\n updatedValues.numPayments\n )\n\n const amortization = getFixedMortgageAmortization({\n principal: currency(updatedValues.homeCost).subtract(updatedValues.downPayment),\n interestRate: updatedValues.interestRate,\n numPayments: updatedValues.numPayments,\n payment: monthlyPayment,\n startDate: addMonths(normalizedDate(new Date()), 1),\n })\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n dispatch({ type: 'setValue', payload: { name: 'monthlyPayment', value: monthlyPayment } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'monthlyRent',\n label: 'Monthly Rent',\n value: 600,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'homeCost',\n label: 'Home Cost',\n value: 120000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'downPayment',\n label: 'Down Payment',\n value: 20000,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numPayments',\n label: 'Loan Term (Months)',\n value: 360,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'points',\n label: 'Points',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'fees',\n label: 'Fees',\n value: 400,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'mortgageInsurance',\n label: 'Monthly Mortgage Insurance',\n value: 10,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'homeownerInsurance',\n label: 'Homeowner Insurance',\n value: 25,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'dues',\n label: 'Association Dues (if any)',\n value: 150,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'maintenance',\n label: 'Average Monthly Maintenance',\n value: 100,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'propertyTax',\n label: 'Property Tax',\n value: 2,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'incomeTax',\n label: 'State and Federal Income Tax',\n value: 28,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Interest Rate',\n value: 6.9,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'savingsRate',\n label: 'Your Savings Rate',\n value: 3.9,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'appreciationRate',\n label: 'How Much Will Your Home Appreciate Each Year?',\n value: 5,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'rentRate',\n label: 'How Much Will Rent Increase Each Year?',\n value: 5,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'stayMonths',\n label: 'How Long Will You Stay In This Property? (Months)',\n value: 60,\n },\n ],\n}\n","import {\n asCurrency,\n asPercentage,\n getAmortization,\n getInterestRate,\n getMonthlyPayment,\n getNumPayments,\n getPrincipal,\n updateValuesFromFields,\n validateFields,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { EquityBalanceInterestChart, BreakdownChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return (\n <>\n
\n Leave one of the fields you want to calculate set to 0.\n
\n \n \n )\n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
Principal Amount:
\n
{asCurrency(values.amortization.totalPrincipal)}
\n
\n\n \n
Payment Amount:
\n
{asCurrency(values.amortization.monthlyPayment)}
\n
\n\n \n
Number of Payments
\n
{values.amortization.numPayments}
\n
\n\n \n
Interest Rate:
\n
{asPercentage(values.amortization.interestRate)}
\n
\n\n \n
Total Payments:
\n
{asCurrency(values.amortization.totalPayment)}
\n
\n\n \n
Total Interest:
\n
{asCurrency(values.amortization.totalInterest)}
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'Simple Loan Calculator',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n\n let balance = updatedValues.balance\n let monthlyPayment = updatedValues.monthlyPayment\n let numPayments = updatedValues.numPayments\n let interestRate = updatedValues.interestRate\n\n if (updatedValues.monthlyPayment === 0) {\n monthlyPayment = getMonthlyPayment(balance, interestRate, numPayments)\n }\n\n if (updatedValues.numPayments === 0) {\n numPayments = getNumPayments(\n updatedValues.balance,\n updatedValues.monthlyPayment,\n updatedValues.interestRate\n )\n\n monthlyPayment = getMonthlyPayment(balance, interestRate, numPayments)\n }\n\n if (balance === 0) {\n balance = getPrincipal(updatedValues.monthlyPayment, updatedValues.interestRate, updatedValues.numPayments)\n }\n\n if (updatedValues.interestRate === 0) {\n interestRate = getInterestRate(balance, monthlyPayment, numPayments)\n }\n\n const amortization = getAmortization(balance, interestRate, numPayments, monthlyPayment)\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'balance',\n label: 'Principal Amount',\n value: 36000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'monthlyPayment',\n label: 'Monthly Payment Amount',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numPayments',\n label: 'Number of Payments',\n value: 60,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Interest Rate',\n value: 9.75,\n },\n ],\n}\n","import { addMonths } from 'date-fns'\nimport {\n asCurrency,\n asDate,\n asPercentage,\n getInvestment,\n getNeededDeposit,\n getNumMonths,\n updateValuesFromFields,\n validateFields,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { SavingsChart } from '../components/Charts'\nimport { InvestmentScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return (\n <>\n
\n Leave one of the highlighted fields that you want to calculate set to 0.\n
\n \n \n )\n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
\n

\n This calculator is designed to show you the amount of a level series of deposits, possibly combined with an\n initial balance (the initial lump sum) to reach a savings goal at some point in the future. It assumes that\n the funds grow at a level after-tax rate for the specified period of time, and that all deposits are made at\n the beginning of each period. It also assumes that the first level deposit is made on the first day.\n

\n

\n If you save {asCurrency(values.investment.depositValue)} monthly until{' '}\n {asDate(values.investment.futureDate)} at {asPercentage(values.investment.interestRate)} interest, with the\n starting balance of {asCurrency(values.investment.presentValue)}, at the end of that time you will have\n saved {asCurrency(values.investment.futureValue)}.\n

\n

\n This might be the amount needed to fund a child's education, a 25th wedding anniversary trip, or your\n retirement.\n

\n

\n The Chart shows the year-by-year value in the fund created by the level deposits and the initial lump sum,\n if any, based on the information input.\n

\n

\n The Detail page shows the year-by-year earnings amount along with the cumulative earnings, based on the\n inputs.\n

\n
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'Simple savings goal calculator',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n let depositValue = updatedValues.depositValue\n\n if (parseInt(updatedValues.depositValue) === 0) {\n depositValue = getNeededDeposit(\n updatedValues.presentValue,\n updatedValues.futureValue,\n updatedValues.numMonths / 12,\n 'monthly',\n updatedValues.interestRate\n )\n }\n\n let numMonths = updatedValues.numMonths\n\n if (parseInt(updatedValues.numMonths) === 0) {\n numMonths = getNumMonths(\n updatedValues.futureValue,\n depositValue,\n updatedValues.interestRate,\n updatedValues.presentValue\n )\n }\n\n const today = new Date()\n const future = addMonths(today, numMonths)\n\n const opts = {\n presentDate: today,\n futureDate: future,\n presentValue: updatedValues.presentValue,\n depositValue: depositValue,\n interestRate: updatedValues.interestRate,\n frequency: 'monthly',\n keepRunningTotals: true,\n }\n\n const investment = getInvestment(opts)\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'investment', value: investment } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'futureValue',\n label: 'Amount That You Need to Save',\n value: 25000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'presentValue',\n label: 'Amount You Have Now',\n value: 100,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n showHighlighted: true,\n name: 'depositValue',\n label: 'Regular Deposit Amount',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'int',\n showHighlighted: true,\n name: 'numMonths',\n label: 'Number of Months to Save',\n value: 12,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Annual Interest Rate',\n value: 6.9,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'taxRate',\n label: 'Your Income Tax Rate',\n value: 28,\n },\n ],\n}\n","import {\n asCurrency,\n asPercentage,\n getMonthlyPayment,\n getFixedMortgageAmortization,\n normalizedDate,\n updateValuesFromFields,\n validateFields,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { EquityBalanceInterestChart, BreakdownChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\nimport addMonths from 'date-fns/addMonths'\nimport differenceInDays from 'date-fns/differenceInDays'\nimport startOfMonth from 'date-fns/startOfMonth'\nimport endOfMonth from 'date-fns/endOfMonth'\nimport format from 'date-fns/format'\nimport currency from 'currency.js'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
Principal Amount:
\n
{asCurrency(values.principal)}
\n
\n\n \n
Down Payment Amount:
\n
{asCurrency(values.downPayment)}
\n
\n\n \n
Monthly Payment Amount:
\n
{asCurrency(values.monthlyPayment)}
\n
\n\n \n
Number of Payments:
\n
{values.numPayments}
\n
\n\n \n
Interest Rate:
\n
{asPercentage(values.interestRate)}
\n
\n\n \n
Total Payments:
\n
{asCurrency(values.amortization.totalPayment)}
\n
\n\n \n
Total Interest:
\n
{asCurrency(values.amortization.totalInterest)}
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'What are my payments for a fixed rate loan?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n const principal = currency(updatedValues.principal).subtract(updatedValues.downPayment)\n const monthlyPayment = getMonthlyPayment(principal, updatedValues.interestRate, updatedValues.numPayments)\n const dayDiff = differenceInDays(\n endOfMonth(new Date(updatedValues.closingDate)),\n new Date(updatedValues.closingDate)\n )\n const dailyInterest = updatedValues.interestRate / 100 / 365\n const closingInterest = Math.abs(dailyInterest * principal.value * dayDiff)\n\n const startingEvent = {\n eventNum: 0,\n date: normalizedDate(updatedValues.closingDate),\n formattedDate: format(normalizedDate(updatedValues.closingDate), 'MM-dd-yyyy'),\n payment: currency(closingInterest),\n interest: currency(closingInterest),\n principal: currency(0),\n balance: principal,\n hideFromChart: true,\n }\n\n const amortization = getFixedMortgageAmortization({\n principal,\n interestRate: updatedValues.interestRate,\n numPayments: updatedValues.numPayments,\n monthlyPayment,\n startDate: updatedValues.dueDate,\n startingEvent,\n })\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'monthlyPayment', value: monthlyPayment } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'principal',\n label: 'Principal Amount',\n value: 100000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'downPayment',\n label: 'Down Payment Amount',\n value: 0,\n },\n {\n type: 'date',\n name: 'closingDate',\n label: 'Closing Date',\n value: format(new Date(), 'yyyy-MM-dd'),\n },\n {\n type: 'date',\n name: 'dueDate',\n label: 'First Mortgage Payment Due Date',\n value: format(startOfMonth(addMonths(new Date(), 2)), 'yyyy-MM-dd'),\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numPayments',\n label: 'Number of Payments',\n value: 360,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Interest Rate',\n value: 8.25,\n },\n ],\n}\n","import {\n asCurrency,\n asPercentage,\n getMonthlyPayment,\n getAdjustableMortgageAmortization,\n normalizedDate,\n updateValuesFromFields,\n validateFields,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { EquityBalanceInterestChart, BreakdownChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\nimport addMonths from 'date-fns/addMonths'\nimport differenceInDays from 'date-fns/differenceInDays'\nimport startOfMonth from 'date-fns/startOfMonth'\nimport endOfMonth from 'date-fns/endOfMonth'\nimport format from 'date-fns/format'\nimport currency from 'currency.js'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
Principal Amount:
\n
{asCurrency(values.principal)}
\n
\n\n \n
Down Payment Amount:
\n
{asCurrency(values.downPayment)}
\n
\n\n \n
Initial Monthly Payment Amount:
\n
{asCurrency(values.monthlyPayment)}
\n
\n\n \n
Number of Payments:
\n
{values.numPayments}
\n
\n\n \n
Beginning Interest Rate:
\n
{asPercentage(values.interestRate)}
\n
\n\n \n
Total Payments:
\n
{asCurrency(values.amortization.totalPayment)}
\n
\n\n \n
Total Interest:
\n
{asCurrency(values.amortization.totalInterest)}
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'What are my payments for an adjustable rate loan?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n const principal = currency(updatedValues.principal).subtract(updatedValues.downPayment)\n const monthlyPayment = getMonthlyPayment(principal, updatedValues.interestRate, updatedValues.numPayments)\n const dayDiff = differenceInDays(\n endOfMonth(new Date(updatedValues.closingDate)),\n new Date(updatedValues.closingDate)\n )\n const dailyInterest = updatedValues.interestRate / 100 / 365\n const closingInterest = Math.abs(dailyInterest * principal.value * dayDiff)\n\n const startingEvent = {\n eventNum: 0,\n date: normalizedDate(updatedValues.closingDate),\n formattedDate: format(normalizedDate(updatedValues.closingDate), 'MM-dd-yyyy'),\n payment: currency(closingInterest),\n interest: currency(closingInterest),\n principal: currency(0),\n balance: principal,\n hideFromChart: true,\n }\n\n const amortization = getAdjustableMortgageAmortization({\n principal,\n interestRate: updatedValues.interestRate,\n numPayments: updatedValues.numPayments,\n monthlyPayment,\n startDate: updatedValues.dueDate,\n startingEvent,\n rateCap: updatedValues.rateCap,\n maxFirstRate: updatedValues.maxFirstRate,\n maxRate: updatedValues.maxRate,\n numMonthsBefore: updatedValues.numMonthsBefore,\n numMonthsBetween: updatedValues.numMonthsBetween,\n })\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'monthlyPayment', value: monthlyPayment } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'principal',\n label: 'Principal Amount',\n value: 100000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'downPayment',\n label: 'Down Payment Amount',\n value: 0,\n },\n {\n type: 'date',\n name: 'closingDate',\n label: 'Closing Date',\n value: format(new Date(), 'yyyy-MM-dd'),\n },\n {\n type: 'date',\n name: 'dueDate',\n label: 'First Mortgage Payment Due Date',\n value: format(startOfMonth(addMonths(new Date(), 2)), 'yyyy-MM-dd'),\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numPayments',\n label: 'Number of Monthly Payments',\n value: 360,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Interest Rate',\n value: 8.25,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'rateCap',\n label: 'Rate Cap (Life Rate Cap)',\n value: 13.25,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'maxFirstRate',\n label: 'Maximum Amount the Rate Will Increase in the First Interval',\n value: 2,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'maxRate',\n label: 'Maximum Amount the Rate Will Increase in Each Subsequent Interval',\n value: 2,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numMonthsBefore',\n label: 'Number of Months Before the First Rate Increase',\n value: 12,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numMonthsBetween',\n label: 'Number of Months Between Subsequent Rate Increases',\n value: 12,\n },\n ],\n}\n","import { asCurrency, asPercentage, getInflationIncrease, updateValuesFromFields, validateFields } from '../util'\nimport { useAppState } from '../Context'\nimport { InflationChart } from '../components/Charts'\nimport { InflationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
\n

\n This calculator shows the projected future cost of an item based on the number of years selected and the\n annual rate of inflation. Based on an inflation rate of {asPercentage(values.inflationRate)}, an item that\n currently costs {asCurrency(values.inflation.currentValue)} will cost{' '}\n {asCurrency(values.inflation.newValue)} in {values.numYears} years.\n

\n

\n The Chart shows the year-by-year increase in cost based on the factors input. Even low rates of inflation\n can have dramatic effects on the cost of goods and services. For example, assuming a 4% rate of inflation,\n the cost of an item will double in 18 years. If you are age 29, the cost of items will quadruple at age 65.\n

\n

The Detail page shows the year-by-year increase amount along with the cost by year based on the inputs.

\n
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'What are the effects of inflation?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n const inflation = getInflationIncrease(\n updatedValues.currentValue,\n updatedValues.numYears,\n updatedValues.inflationRate\n )\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'inflation', value: inflation } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'currentValue',\n label: 'Current Cost of Item to Purchase',\n value: 1000,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numYears',\n label: 'Number of Years Until Purchase',\n value: 20,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'inflationRate',\n label: 'Inflation Rate',\n value: 3,\n },\n ],\n}\n","import {\n asCurrency,\n asPercentage,\n getAmortization,\n getInterestRate,\n updateValuesFromFields,\n validateFields,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { BreakdownChart, EquityBalanceInterestChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
You Can Borrow:
\n
{asCurrency(values.principal)}
\n
\n\n \n
Payment Amount:
\n
{asCurrency(values.monthlyPayment)}
\n
\n\n \n
Number of Payments:
\n
{values.numPayments}
\n
\n\n \n
Interest Rate:
\n
{asPercentage(values.interestRate)}
\n
\n\n \n
Total Payments:
\n
{asCurrency(values.amortization.totalPayment)}
\n
\n\n \n
Total Interest:
\n
{asCurrency(values.amortization.totalInterest)}
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'What interest rate would I need?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n\n const interestRate = getInterestRate(\n updatedValues.principal,\n updatedValues.monthlyPayment,\n updatedValues.numPayments\n )\n\n const amortization = getAmortization(updatedValues.principal, interestRate, updatedValues.numPayments)\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n dispatch({ type: 'setValue', payload: { name: 'interestRate', value: interestRate } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'principal',\n label: 'Principal Amount',\n value: 100000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'monthlyPayment',\n label: 'Monthly Payment Amount',\n value: 500,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numPayments',\n label: 'Number of Payments',\n value: 360,\n },\n ],\n}\n","import { asCurrency, asPercentage, getInflationDecrease, updateValuesFromFields, validateFields } from '../util'\nimport { useAppState } from '../Context'\nimport { InflationChart } from '../components/Charts'\nimport { InflationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
\n

This calculator shows the projected decrease in value of a dollar due to the effects of inflation.

\n

\n Based on an inflation rate of {asPercentage(values.inflationRate)} the value of{' '}\n {asCurrency(values.currentValue)} is going to be reduced to {asCurrency(values.inflation.newValue)} in{' '}\n {values.numYears} years.\n

\n

\n The Chart shows the year-by-year decrease in value, based on the factors in the input. Even low rates of\n inflation can have dramatic effects on the value of a dollar.For example, assuming a 4% rate of inflation,\n the value of a dollar will be cut in half in 18 years.\n
\n The Detail page shows the year-by-year decrease amount along with the value by year, based on the inputs.\n

\n
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'What is the future value of a dollar?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n const inflation = getInflationDecrease(\n updatedValues.currentValue,\n updatedValues.numYears,\n updatedValues.inflationRate\n )\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'inflation', value: inflation } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'currentValue',\n label: 'Current Value of Item',\n value: 1000,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numYears',\n label: 'Number of Years',\n value: 20,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'inflationRate',\n label: 'Annual Inflation Rate',\n value: 3,\n },\n ],\n}\n","import { asCurrency, asPercentage, getAmortization, updateValuesFromFields, validateFields } from '../util'\nimport { useAppState } from '../Context'\nimport { BalanceInterestChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
Credit Card Balance:
\n
{asCurrency(values.balance)}
\n
\n\n \n
Monthly Payment Amount:
\n
{asCurrency(values.amortization.monthlyPayment)}
\n
\n\n \n
Number of Monthly Payments
\n
{values.numPayments}
\n
\n\n \n
Interest Rate:
\n
{asPercentage(values.interestRate)}
\n
\n\n \n
Total Payments:
\n
{asCurrency(values.amortization.totalPayment)}
\n
\n\n \n
Total Interest:
\n
{asCurrency(values.amortization.totalInterest)}
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'What payments will it take to pay off my credit cards?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n const amortization = getAmortization(\n updatedValues.balance,\n updatedValues.interestRate,\n updatedValues.numPayments\n )\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'balance',\n label: 'Credit Card Balance',\n value: 2000,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numPayments',\n label: 'In How Many Months Do You Want to Repay This Card?',\n value: 12,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Interest Rate',\n value: 13,\n },\n ],\n}\n","import { asCurrency, getAmortization, getNumPayments, updateValuesFromFields, validateFields } from '../util'\nimport { useAppState } from '../Context'\nimport { EquityBalanceInterestChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\nimport currency from 'currency.js'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n const totalTaxedInterest = values.amortization.totalInterest.multiply(values.taxRate / 100)\n const totalLoanCost = values.amortization.totalPayment.subtract(totalTaxedInterest)\n\n const totalTaxedInterestPrepay = values.amortizationPrepay.totalInterest.multiply(values.taxRate / 100)\n const totalLoanCostPrepay = values.amortizationPrepay.totalPayment.subtract(totalTaxedInterestPrepay)\n\n const totalSavings = totalLoanCost.subtract(totalLoanCostPrepay)\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Current LoanPre-PaidSavings
Monthly Payment:{asCurrency(values.amortization.monthlyPayment)}{asCurrency(values.amortizationPrepay.monthlyPayment)}{asCurrency(values.monthlySavings)}
Loan Term (Months):{values.amortization.numPayments}{values.amortizationPrepay.numPayments}
\n Total Loan Cost*:\n {asCurrency(totalLoanCost)}{asCurrency(totalLoanCostPrepay)}{asCurrency(totalSavings)}
\n\n \n
\n * Note: The total loan cost figure is actually the present value of all the payments for each\n loan, using the investment rate of return as a discount rate.\n
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n const schedule = [...values.amortization.paymentSchedule]\n const schedulePrepay = [...values.amortizationPrepay.paymentSchedule]\n const lastEvent = schedulePrepay[schedulePrepay.length - 1]\n const diff = schedule.length - schedulePrepay.length\n const amortizationPrepay = { ...values.amortizationPrepay }\n\n for (let i = 1; i <= diff; i++) {\n const fakeEvent = {\n eventNum: lastEvent.eventNum + i,\n balance: lastEvent.balance,\n interest: lastEvent.interest,\n }\n\n schedulePrepay.push(fakeEvent)\n }\n\n amortizationPrepay.paymentSchedule = schedulePrepay\n\n return (\n
\n \n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return (\n <>\n
Current Payment Schedule
\n \n
Pre-Payment Schedule
\n \n \n )\n}\n\nexport default {\n name: 'What would I save if I made monthly pre-payments?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n const monthlyPayment = updatedValues.monthlyPayment\n const monthlyPaymentPrepay = currency(updatedValues.monthlyPayment).add(updatedValues.prePayment)\n const monthlySavings = currency(monthlyPayment).subtract(monthlyPaymentPrepay)\n\n const numPayments =\n getNumPayments(updatedValues.remainingBalance, monthlyPayment, updatedValues.interestRate) - 1\n\n const numPaymentsPrepay =\n getNumPayments(updatedValues.remainingBalance, monthlyPaymentPrepay, updatedValues.interestRate) - 1\n\n const amortization = getAmortization(\n updatedValues.remainingBalance,\n updatedValues.interestRate,\n numPayments,\n monthlyPayment\n )\n\n const amortizationPrepay = getAmortization(\n updatedValues.remainingBalance,\n updatedValues.interestRate,\n numPaymentsPrepay,\n monthlyPaymentPrepay\n )\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'monthlySavings', value: monthlySavings } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n dispatch({ type: 'setValue', payload: { name: 'amortizationPrepay', value: amortizationPrepay } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'remainingBalance',\n label: 'Remaining Balance on Your Current Loan',\n value: 100000,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'monthlyPayment',\n label: 'Current Monthly Payment',\n value: 900,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Current Rate',\n value: 8.9,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'prePayment',\n label: 'Amount of Monthly Pre-Payment',\n value: 100,\n },\n {\n type: 'header',\n text: 'Other Information',\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'taxRate',\n label: 'Your Income Tax Rate',\n value: 28,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'returnRate',\n label: 'Your Investment Rate of Return',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'keepMonths',\n label: 'How Long Will You Keep This Property? (Months)',\n value: 0,\n },\n ],\n}\n","import { asCurrency, asPercentage, getAmortization, updateValuesFromFields, validateFields } from '../util'\nimport { useAppState } from '../Context'\nimport { BreakdownChart, EquityBalanceInterestChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { InputFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n return (\n \n \n
Principal Amount:
\n
{asCurrency(values.principal)}
\n
\n\n \n
Your Payment Amount:
\n
{asCurrency(values.amortization.monthlyPayment)}
\n
\n\n \n
Number of Payments:
\n
{values.numPayments}
\n
\n\n \n
Interest Rate:
\n
{asPercentage(values.interestRate)}
\n
\n\n \n
Total Payments:
\n
{asCurrency(values.amortization.totalPayment)}
\n
\n\n \n
Total Interest:
\n
{asCurrency(values.amortization.totalInterest)}
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return \n}\n\nexport default {\n name: 'What Would My Payments Be?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n const amortization = getAmortization(\n updatedValues.principal,\n updatedValues.interestRate,\n updatedValues.numPayments\n )\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'amortization', value: amortization } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'principal',\n label: 'Principal Amount',\n value: 100000,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numPayments',\n label: 'Number of Payments',\n value: 360,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate',\n label: 'Interest Rate',\n value: 8.25,\n },\n ],\n}\n","import {\n asCurrency,\n getMonthlyPayment,\n getAdjustableMortgageAmortization,\n normalizedDate,\n updateValuesFromFields,\n validateFields,\n} from '../util'\nimport { useAppState } from '../Context'\nimport { EquityBalanceInterestChart } from '../components/Charts'\nimport { AmortizationScheduleTable } from '../components/Tables'\nimport { LoanCompareFields } from '../components/Fields'\nimport CalculateResults from '../components/CalculateResults'\nimport CalculateRow from '../components/CalculateRow'\nimport addMonths from 'date-fns/addMonths'\nimport currency from 'currency.js'\n\nfunction PanelInput() {\n return \n}\n\nfunction PanelCalculate() {\n const { values } = useAppState()\n\n const pointsCost1 = currency(values.amount)\n .subtract(values.downPayment1)\n .multiply(values.points1 / 100)\n const originationCosts1 = currency(values.fees1).add(pointsCost1)\n const pointsAmount1 = currency(values.amount).multiply(values.points1 / 15000)\n\n const pointsCost2 = currency(values.amount)\n .subtract(values.downPayment2)\n .multiply(values.points2 / 100)\n const originationCosts2 = currency(values.fees2).add(pointsCost2)\n const pointsAmount2 = currency(values.amount).multiply(values.points2 / 15000)\n\n const originationCostsDiff = originationCosts1.subtract(originationCosts2)\n\n const numPayments1 = values.numPayments1\n const numPayments2 = values.numPayments2\n const numPaymentsDiff = numPayments1 - numPayments2\n\n const totalTaxedInterest1 = values.amortization1.totalInterest.multiply(values.taxRate / 100)\n const totalLoanCost1 = values.amortization1.totalPayment\n .add(originationCosts1)\n .subtract(totalTaxedInterest1)\n .subtract(pointsAmount1)\n\n const totalTaxedInterest2 = values.amortization2.totalInterest.multiply(values.taxRate / 100)\n const totalLoanCost2 = values.amortization2.totalPayment\n .add(originationCosts2)\n .subtract(totalTaxedInterest2)\n .subtract(pointsAmount2)\n\n const totalSavings = totalLoanCost1.subtract(totalLoanCost2)\n\n return (\n \n \n
Loan Amount:
\n
{asCurrency(values.amount)}
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Loan 1- Loan 2= Difference
Monthly Payment:{asCurrency(values.monthlyPayment1)}{asCurrency(values.monthlyPayment2)}{asCurrency(values.monthlySavings)}
Origination Cost:{asCurrency(originationCosts1)}{asCurrency(originationCosts2)}{asCurrency(originationCostsDiff)}
Loan Term (Months):{numPayments1}{numPayments2}{numPaymentsDiff}
\n Total Loan Cost*:\n {asCurrency(totalLoanCost1)}{asCurrency(totalLoanCost2)}{asCurrency(totalSavings)}
\n\n \n
\n * Note: The total loan cost figure is actually the present value of all the payments for each\n loan, using the investment rate of return as a discount rate.\n
\n
\n
\n )\n}\n\nfunction PanelChart() {\n const { values } = useAppState()\n\n return (\n
\n \n \n
\n )\n}\n\nfunction PanelDetail() {\n const { values } = useAppState()\n\n return (\n <>\n
Payment Schedule For Loan 1
\n \n
Payment Schedule For Loan 2
\n \n \n )\n}\n\nexport default {\n name: 'Which loan is better, fixed or adjustable?',\n tabs: [\n {\n name: 'Input',\n component: PanelInput,\n beforeTabChange: (dispatch, fields, values) => {\n const validate = validateFields(fields)\n\n if (validate.isValid) {\n const updatedValues = updateValuesFromFields(values, fields)\n\n const principal1 = currency(updatedValues.amount).subtract(updatedValues.downPayment1)\n const monthlyPayment1 = getMonthlyPayment(principal1, updatedValues.interestRate1, updatedValues.numPayments1)\n\n const amortization1 = getAdjustableMortgageAmortization({\n principal: principal1,\n interestRate: updatedValues.interestRate1,\n numPayments: updatedValues.numPayments1,\n monthlyPayment: monthlyPayment1,\n startDate: addMonths(normalizedDate(new Date()), 1),\n rateCap: updatedValues.rateCap1,\n maxFirstRate: 0,\n maxRate: updatedValues.repricingRate1,\n numMonthsBefore: 0,\n numMonthsBetween: updatedValues.repricingMonths1,\n })\n\n const principal2 = currency(updatedValues.amount).subtract(updatedValues.downPayment2)\n const monthlyPayment2 = getMonthlyPayment(principal2, updatedValues.interestRate2, updatedValues.numPayments2)\n\n const amortization2 = getAdjustableMortgageAmortization({\n principal: principal2,\n interestRate: updatedValues.interestRate2,\n numPayments: updatedValues.numPayments2,\n monthlyPayment: monthlyPayment2,\n startDate: addMonths(normalizedDate(new Date()), 1),\n rateCap: updatedValues.rateCap2,\n maxFirstRate: 0,\n maxRate: updatedValues.repricingRate2,\n numMonthsBefore: 0,\n numMonthsBetween: updatedValues.repricingMonths2,\n })\n\n const monthlySavings = monthlyPayment1.subtract(monthlyPayment2)\n\n dispatch({ type: 'setValues', payload: { ...updatedValues } })\n dispatch({ type: 'setValue', payload: { name: 'monthlyPayment1', value: monthlyPayment1 } })\n dispatch({ type: 'setValue', payload: { name: 'monthlyPayment2', value: monthlyPayment2 } })\n dispatch({ type: 'setValue', payload: { name: 'monthlySavings', value: monthlySavings } })\n dispatch({ type: 'setValue', payload: { name: 'amortization1', value: amortization1 } })\n dispatch({ type: 'setValue', payload: { name: 'amortization2', value: amortization2 } })\n }\n\n dispatch({ type: 'setFields', payload: validate.fields })\n\n return validate.isValid\n },\n },\n {\n name: 'Calculate',\n component: PanelCalculate,\n },\n {\n name: 'Chart',\n component: PanelChart,\n },\n {\n name: 'Detail',\n component: PanelDetail,\n },\n ],\n fields: [\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'amount',\n label: 'Loan Amount',\n value: 150000,\n singleRow: true,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'taxRate',\n label: 'Your Income Tax Rate',\n value: 28,\n singleRow: true,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'downPayment1',\n label: 'Down Payment',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'downPayment2',\n label: 'Down Payment',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numPayments1',\n label: 'Number of Payments',\n value: 360,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'numPayments2',\n label: 'Number of Payments',\n value: 360,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate1',\n label: 'Interest Rate',\n value: 8.75,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'interestRate2',\n label: 'Interest Rate',\n value: 9.25,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'points1',\n label: 'Points',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'points2',\n label: 'Points',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'fees1',\n label: 'Fees',\n value: 800,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'currency',\n name: 'fees2',\n label: 'Fees',\n value: 400,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'repricingMonths1',\n label: 'Re-Pricing Interval (Months)',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'int',\n name: 'repricingMonths2',\n label: 'Re-Pricing Interval (Months)',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'repricingRate1',\n label: 'Re-Pricing Rate Adjustment',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'repricingRate2',\n label: 'Re-Pricing Rate Adjustment',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'rateCap1',\n label: 'Anticipated Rate Cap',\n value: 0,\n },\n {\n type: 'number',\n dataType: 'float',\n displayAs: 'percent',\n name: 'rateCap2',\n label: 'Anticipated Rate Cap',\n value: 0,\n },\n ],\n}\n","function CalculateResults({ children }) {\n return
{children}
\n}\n\nexport default CalculateResults\n","function CalculateRow({ children, className = '' }) {\n return
{children}
\n}\n\nexport default CalculateRow\n","import React, { forwardRef, useRef, useEffect } from 'react';\nimport { Chart as Chart$1, LineController, BarController, RadarController, DoughnutController, PolarAreaController, BubbleController, PieController, ScatterController } from 'chart.js';\n\nconst defaultDatasetIdKey = 'label';\nfunction reforwardRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\nfunction setOptions(chart, nextOptions) {\n chart.options = {\n ...nextOptions\n };\n}\nfunction setLabels(currentData, nextLabels) {\n currentData.labels = nextLabels;\n}\nfunction setDatasets(currentData, nextDatasets) {\n let datasetIdKey = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : defaultDatasetIdKey;\n const addedDatasets = [];\n currentData.datasets = nextDatasets.map((nextDataset)=>{\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find((dataset)=>dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n // There is no original to update, so simply add new one\n if (!currentDataset || !nextDataset.data || addedDatasets.includes(currentDataset)) {\n return {\n ...nextDataset\n };\n }\n addedDatasets.push(currentDataset);\n Object.assign(currentDataset, nextDataset);\n return currentDataset;\n });\n}\nfunction cloneData(data) {\n let datasetIdKey = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultDatasetIdKey;\n const nextData = {\n labels: [],\n datasets: []\n };\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n return nextData;\n}\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getDatasetAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, 'dataset', {\n intersect: true\n }, false);\n}\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getElementAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, 'nearest', {\n intersect: true\n }, false);\n}\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getElementsAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, 'index', {\n intersect: true\n }, false);\n}\n\nfunction ChartComponent(param, ref) {\n let { height =150 , width =300 , redraw =false , datasetIdKey , type , data , options , plugins =[] , fallbackContent , ...props } = param;\n const canvasRef = useRef(null);\n const chartRef = useRef();\n const renderChart = ()=>{\n if (!canvasRef.current) return;\n chartRef.current = new Chart$1(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options,\n plugins\n });\n reforwardRef(ref, chartRef.current);\n };\n const destroyChart = ()=>{\n reforwardRef(ref, null);\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n useEffect(()=>{\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [\n redraw,\n options\n ]);\n useEffect(()=>{\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [\n redraw,\n data.labels\n ]);\n useEffect(()=>{\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [\n redraw,\n data.datasets\n ]);\n useEffect(()=>{\n if (!chartRef.current) return;\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update();\n }\n }, [\n redraw,\n options,\n data.labels,\n data.datasets\n ]);\n useEffect(()=>{\n renderChart();\n return ()=>destroyChart()\n ;\n }, []);\n return(/*#__PURE__*/ React.createElement(\"canvas\", Object.assign({\n ref: canvasRef,\n role: \"img\",\n height: height,\n width: width\n }, props), fallbackContent));\n}\nconst Chart = /*#__PURE__*/ forwardRef(ChartComponent);\n\nfunction createTypedChart(type, registerables) {\n Chart$1.register(registerables);\n return(/*#__PURE__*/ forwardRef((props, ref)=>/*#__PURE__*/ React.createElement(Chart, Object.assign({}, props, {\n ref: ref,\n type: type\n }))\n ));\n}\nconst Line = /* #__PURE__ */ createTypedChart('line', LineController);\nconst Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\nconst Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\nconst Doughnut = /* #__PURE__ */ createTypedChart('doughnut', DoughnutController);\nconst PolarArea = /* #__PURE__ */ createTypedChart('polarArea', PolarAreaController);\nconst Bubble = /* #__PURE__ */ createTypedChart('bubble', BubbleController);\nconst Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\nconst Scatter = /* #__PURE__ */ createTypedChart('scatter', ScatterController);\n\nexport { Bar, Bubble, Chart, Doughnut, Line, Pie, PolarArea, Radar, Scatter, getDatasetAtEvent, getElementAtEvent, getElementsAtEvent };\n//# sourceMappingURL=index.js.map\n","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (Object.prototype.hasOwnProperty.call(dirtyObject, property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function (date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, _options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (_date, _flags, value, _options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n },\n incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function (date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function (date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function (string, token, _match, _options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\nexport default parsers;","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport parsers from \"./_lib/parsers/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward (toDate no longer accepts a string)\n * toDate(1392098430000) // Unix to timestamp\n * toDate(new Date(2014, 1, 11, 11, 30, 30)) // Cloning the date\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }; // If timezone isn't specified, it will be set to the system timezone\n\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n subPriority: -1,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\n }\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n subPriority: parser.subPriority || 0,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\n\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n\n if (isNaN(date)) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInMinute = 60000;\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInHour = 3600000;\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInSecond = 1000;\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minTime = -maxTime;\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minutesInHour = 60;\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInQuarter = 3;\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInYear = 12;\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var quartersInYear = 4;\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInHour = 3600;\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMinute = 60;","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The previous `parse` implementation was renamed to `parseISO`.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * parseISO('2016-01-01')\n * ```\n *\n * - `parseISO` now validates separate date and time values in ISO-8601 strings\n * and returns `Invalid Date` if the date is invalid.\n *\n * ```javascript\n * parseISO('2018-13-32')\n * //=> Invalid Date\n * ```\n *\n * - `parseISO` now doesn't fall back to `new Date` constructor\n * if it fails to parse a string argument. Instead, it returns `Invalid Date`.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport default function parseISO(argument, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits == null ? 2 : toInteger(options.additionalDigits);\n\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n\n var dateStrings = splitDateString(argument);\n var date;\n\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time); // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString; // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex); // Invalid ISO-formatted year\n\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null; // either year or century is null, not both\n\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\n\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\n\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function (value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n\n};\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\n\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\n\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result; // Check for the difference of less than month\n\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference); // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign; // Check for cases of one full calendar month\n\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n\n result = sign * (difference - Number(isLastMonthNotFull));\n } // Prevent negative zero\n\n\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","/*!\n * chartjs-adapter-date-fns v2.0.0\n * https://www.chartjs.org\n * (c) 2021 chartjs-adapter-date-fns Contributors\n * Released under the MIT license\n */\nimport { _adapters } from 'chart.js';\nimport { toDate, parse, parseISO, isValid, format, addYears, addQuarters, addMonths, addWeeks, addDays, addHours, addMinutes, addSeconds, addMilliseconds, differenceInYears, differenceInQuarters, differenceInMonths, differenceInWeeks, differenceInDays, differenceInHours, differenceInMinutes, differenceInSeconds, differenceInMilliseconds, startOfYear, startOfQuarter, startOfMonth, startOfWeek, startOfDay, startOfHour, startOfMinute, startOfSecond, endOfYear, endOfQuarter, endOfMonth, endOfWeek, endOfDay, endOfHour, endOfMinute, endOfSecond } from 'date-fns';\n\nconst FORMATS = {\n datetime: 'MMM d, yyyy, h:mm:ss aaaa',\n millisecond: 'h:mm:ss.SSS aaaa',\n second: 'h:mm:ss aaaa',\n minute: 'h:mm aaaa',\n hour: 'ha',\n day: 'MMM d',\n week: 'PP',\n month: 'MMM yyyy',\n quarter: 'qqq - yyyy',\n year: 'yyyy'\n};\n\n_adapters._date.override({\n _id: 'date-fns', // DEBUG\n\n formats: function() {\n return FORMATS;\n },\n\n parse: function(value, fmt) {\n if (value === null || typeof value === 'undefined') {\n return null;\n }\n const type = typeof value;\n if (type === 'number' || value instanceof Date) {\n value = toDate(value);\n } else if (type === 'string') {\n if (typeof fmt === 'string') {\n value = parse(value, fmt, new Date(), this.options);\n } else {\n value = parseISO(value, this.options);\n }\n }\n return isValid(value) ? value.getTime() : null;\n },\n\n format: function(time, fmt) {\n return format(time, fmt, this.options);\n },\n\n add: function(time, amount, unit) {\n switch (unit) {\n case 'millisecond': return addMilliseconds(time, amount);\n case 'second': return addSeconds(time, amount);\n case 'minute': return addMinutes(time, amount);\n case 'hour': return addHours(time, amount);\n case 'day': return addDays(time, amount);\n case 'week': return addWeeks(time, amount);\n case 'month': return addMonths(time, amount);\n case 'quarter': return addQuarters(time, amount);\n case 'year': return addYears(time, amount);\n default: return time;\n }\n },\n\n diff: function(max, min, unit) {\n switch (unit) {\n case 'millisecond': return differenceInMilliseconds(max, min);\n case 'second': return differenceInSeconds(max, min);\n case 'minute': return differenceInMinutes(max, min);\n case 'hour': return differenceInHours(max, min);\n case 'day': return differenceInDays(max, min);\n case 'week': return differenceInWeeks(max, min);\n case 'month': return differenceInMonths(max, min);\n case 'quarter': return differenceInQuarters(max, min);\n case 'year': return differenceInYears(max, min);\n default: return 0;\n }\n },\n\n startOf: function(time, unit, weekday) {\n switch (unit) {\n case 'second': return startOfSecond(time);\n case 'minute': return startOfMinute(time);\n case 'hour': return startOfHour(time);\n case 'day': return startOfDay(time);\n case 'week': return startOfWeek(time);\n case 'isoWeek': return startOfWeek(time, {weekStartsOn: +weekday});\n case 'month': return startOfMonth(time);\n case 'quarter': return startOfQuarter(time);\n case 'year': return startOfYear(time);\n default: return time;\n }\n },\n\n endOf: function(time, unit) {\n switch (unit) {\n case 'second': return endOfSecond(time);\n case 'minute': return endOfMinute(time);\n case 'hour': return endOfHour(time);\n case 'day': return endOfDay(time);\n case 'week': return endOfWeek(time);\n case 'month': return endOfMonth(time);\n case 'quarter': return endOfQuarter(time);\n case 'year': return endOfYear(time);\n default: return time;\n }\n }\n});\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\n\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\n\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\n\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\n\nexport default function differenceInMinutes(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import { millisecondsInHour } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\n\nexport default function differenceInHours(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInHour;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInDays from \"../differenceInDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\n\nexport default function differenceInWeeks(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInDays(dateLeft, dateRight) / 7;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInMonths from \"../differenceInMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\n\nexport default function differenceInQuarters(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMonths(dateLeft, dateRight) / 3;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\n\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight)); // Set both dates to a valid leap year for accurate comparison when dealing\n // with leap days\n\n dateLeft.setFullYear(1584);\n dateRight.setFullYear(1584); // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - Number(isLastYearNotFull)); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\n\nexport default function startOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\n\nexport default function startOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\n\nexport default function startOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\n\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\n\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * const result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\n\nexport default function endOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * const result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\n\nexport default function endOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * const result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\n\nexport default function endOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\n\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import merge from 'lodash/merge'\nimport currency from 'currency.js'\nimport { Chart as ChartJS, BarController, BarElement, Legend, LinearScale, TimeScale, Title } from 'chart.js'\nimport { Bar } from 'react-chartjs-2'\nimport 'chartjs-adapter-date-fns'\nimport { getInvestmentByYear } from '../util'\n\nChartJS.register(BarElement, BarController, Legend, LinearScale, TimeScale, Title)\n\nconst getCommonOptions = () => {\n return {\n responsive: true,\n aspectRatio: 1.5,\n plugins: {\n title: {\n display: true,\n },\n legend: {\n position: 'bottom',\n },\n },\n scales: {\n x: {\n type: 'linear',\n offset: false,\n title: {\n display: true,\n text: 'Payment #',\n },\n grid: {\n drawTicks: false,\n },\n ticks: {\n precision: 0,\n count: 3,\n callback: (value, index) => (index === 0 ? '1' : value),\n },\n },\n y: {\n type: 'linear',\n beginAtZero: true,\n offset: false,\n title: {\n display: true,\n text: '$',\n },\n ticks: {\n count: 5,\n },\n },\n },\n }\n}\n\nexport function BarChart({ data, options, title }) {\n if (title) {\n options.plugins = { title: { text: title } }\n }\n\n const mergedOptions = merge({}, getCommonOptions(), options)\n\n return \n}\n\nexport function EquityBalanceInterestChart({ amortization, title }) {\n const paymentSchedule = amortization.paymentSchedule\n const events = paymentSchedule.filter((event) => !event.hideFromChart)\n\n const data = {\n labels: events.map((event) => event.eventNum),\n datasets: [\n {\n label: 'Equity Earned',\n backgroundColor: 'red',\n data: events.map((event) => amortization.totalPrincipal - event.balance.value),\n },\n {\n label: 'Balance Owed',\n backgroundColor: 'green',\n data: events.map((event) => event.balance.value),\n },\n {\n label: 'Total Interest Paid',\n backgroundColor: 'blue',\n data: events.reduce((totals, event) => {\n const lastTotal = totals.length ? totals[totals.length - 1] : 0\n const newTotal = lastTotal + event.interest.value\n totals.push(newTotal)\n\n return totals\n }, []),\n },\n ],\n }\n\n const options = {\n plugins: {\n title: {\n text: title,\n },\n },\n scales: {\n x: {\n max: events.length,\n },\n },\n }\n\n return \n}\n\nexport function BalanceInterestChart({ amortization, title }) {\n const paymentSchedule = amortization.paymentSchedule\n\n const data = {\n labels: paymentSchedule.map((event) => event.eventNum),\n datasets: [\n {\n label: 'Balance Owed',\n backgroundColor: 'red',\n data: paymentSchedule.map((event) => event.balance.value),\n },\n {\n label: 'Total Interest Paid',\n backgroundColor: 'blue',\n data: paymentSchedule.reduce((totals, event) => {\n const lastTotal = totals.length ? totals[totals.length - 1] : 0\n const newTotal = lastTotal + event.interest.value\n totals.push(newTotal)\n\n return totals\n }, []),\n },\n ],\n }\n\n const options = {\n plugins: {\n title: {\n text: title,\n },\n },\n scales: {\n x: {\n max: paymentSchedule.length,\n },\n },\n }\n\n return \n}\n\nexport function BreakdownChart({ amortization, title }) {\n const paymentSchedule = amortization.paymentSchedule\n const events = paymentSchedule.filter((event) => !event.hideFromChart)\n\n const data = {\n labels: events.map((event) => event.eventNum),\n datasets: [\n {\n label: 'Principal Portion of Payment',\n backgroundColor: 'green',\n data: events.map((event) => event.principal.value),\n },\n {\n label: 'Interest Portion of Payment',\n backgroundColor: 'blue',\n data: events.map((event) => event.interest.value),\n },\n ],\n }\n\n const options = {\n plugins: {\n title: {\n text: title,\n },\n },\n scales: {\n x: {\n stacked: true,\n max: events.length,\n },\n y: {\n stacked: true,\n },\n },\n }\n\n return \n}\n\nexport function InflationChart({ inflation, title }) {\n const schedule = inflation.schedule\n\n const data = {\n labels: schedule.map((event) => event.eventNum),\n datasets: [\n {\n backgroundColor: 'red',\n data: schedule.map((event) => event.value),\n },\n ],\n }\n\n const options = {\n plugins: {\n title: {\n text: title,\n },\n legend: {\n display: false,\n },\n },\n scales: {\n x: {\n title: {\n text: 'Year',\n },\n max: schedule.length,\n },\n },\n }\n\n return \n}\n\nexport function InvestmentChart({ investment, title }) {\n const schedule = investment.schedule\n\n const data = {\n labels: schedule.map((event) => event.date),\n datasets: [\n {\n label: 'Present Value',\n backgroundColor: 'blue',\n data: schedule.map(() => currency(investment.presentValue).value),\n },\n {\n label: 'Interest',\n backgroundColor: 'green',\n data: schedule.map((event) => event.totalInterest.value),\n },\n ],\n }\n\n const options = {\n plugins: {\n title: {\n text: title,\n },\n },\n scales: {\n x: {\n type: 'time',\n stacked: true,\n offset: true,\n title: {\n text: 'At Date',\n },\n ticks: {\n callback: (value) => value,\n },\n },\n y: {\n stacked: true,\n },\n },\n }\n\n return \n}\n\nexport function EndOfYearChart({ investment, title }) {\n const schedule = getInvestmentByYear(investment, false)\n\n const data = {\n labels: schedule.map((_, i) => i + 1),\n datasets: [\n {\n backgroundColor: 'green',\n data: schedule.map((group) => group.totals.balance.value),\n },\n ],\n }\n\n const options = {\n plugins: {\n title: {\n text: title,\n },\n legend: {\n display: false,\n },\n },\n scales: {\n x: {\n title: {\n offset: true,\n text: 'Year',\n },\n },\n },\n }\n\n return \n}\n\nexport function SavingsChart({ investment, title }) {\n const schedule = investment.schedule\n\n const data = {\n labels: schedule.map((event) => event.eventNum),\n datasets: [\n {\n label: 'Starting Balance',\n backgroundColor: 'blue',\n data: schedule.map(() => currency(investment.presentValue).value),\n },\n {\n label: 'Deposits Made',\n backgroundColor: 'red',\n data: schedule.map((event) => currency(event.totalDeposit).value),\n },\n {\n label: 'Interest',\n backgroundColor: 'green',\n data: schedule.map((event) => event.totalInterest.value),\n },\n ],\n }\n\n const options = {\n plugins: {\n title: {\n text: title,\n },\n },\n scales: {\n x: {\n stacked: true,\n title: {\n text: 'Deposit #',\n },\n },\n y: {\n stacked: true,\n },\n },\n }\n\n return \n}\n","import chunk from 'lodash/chunk'\nimport React from 'react'\nimport { useAppState, useAppDispatch } from '../Context'\n\nconst DropdownField = ({ field, classNames, handleChange }) => {\n return (\n
\n \n \n \n
\n )\n}\n\nconst DateField = ({ field, classNames, inputMode, handleChange }) => {\n return (\n
\n \n \n \n
\n )\n}\n\nconst NumberField = ({ field, classNames, inputMode, handleChange }) => {\n return (\n
\n {field.displayAs && field.displayAs === 'currency' && '$'}\n \n {field.displayAs && field.displayAs === 'percent' && '%'}\n
\n )\n}\n\nconst HeaderField = ({ field }) => {\n return
{field.text}
\n}\n\nexport function InputFields() {\n const { fields } = useAppState()\n const dispatch = useAppDispatch()\n\n const handleChange = (e) => {\n dispatch({ type: 'setField', payload: { name: e.target.name, value: e.target.value } })\n }\n\n return (\n
\n {fields.map((field) => {\n let classNames = `py-1 px-2 w-32 text-base text-right bg-white rounded-md border ${\n field.hasError ? 'border-error' : 'border-gray-300'\n }`\n\n const inputMode = field.type === 'number' ? 'decimal' : 'text'\n\n if (field.type === 'header') {\n return \n }\n\n return (\n \n \n {field.type === 'date' && (\n \n )}\n {field.type === 'dropdown' && (\n \n )}\n {field.type === 'number' && (\n \n )}\n \n )\n })}\n \n )\n}\n\nexport function LoanCompareFields() {\n const { fields } = useAppState()\n const dispatch = useAppDispatch()\n\n const handleChange = (e) => {\n dispatch({ type: 'setField', payload: { name: e.target.name, value: e.target.value } })\n }\n\n const nonDoubleFields = fields.filter((field) => field.singleRow)\n const doubleFields = fields.filter((field) => !field.singleRow)\n const compareFields = chunk(doubleFields, 2)\n\n return (\n
\n {nonDoubleFields.map((field) => {\n let classNames = `py-1 px-2 w-32 text-base text-right bg-white rounded-md border ${\n field.hasError ? 'border-error' : 'border-gray-300'\n }`\n\n const inputMode = field.type === 'number' ? 'decimal' : 'text'\n\n if (field.type === 'header') {\n return \n }\n\n return (\n \n \n {field.type === 'date' && (\n \n )}\n {field.type === 'dropdown' && (\n \n )}\n {field.type === 'number' && (\n \n )}\n \n )\n })}\n\n
\n Loan 1\n Loan 2\n
\n\n {compareFields.map((group, index) => {\n return (\n
\n {group.map((field, index) => {\n const inputMode = field.type === 'number' ? 'decimal' : 'text'\n\n let classNames = `py-1 px-2 w-24 md:w-32 text-base text-right bg-white rounded-md border ${\n field.hasError ? 'border-error' : 'border-gray-300'\n }`\n\n return (\n \n \n :\n \n {field.type === 'date' && (\n \n )}\n {field.type === 'dropdown' && (\n \n )}\n {field.type === 'number' && (\n \n )}\n \n )\n })}\n
\n )\n })}\n \n )\n}\n","import { asCurrency, getAmortizationByYear, getInvestmentByYear } from '../util'\n\nexport function InvestmentScheduleTable({ investment, groupByCalendarYear = true }) {\n const schedule = getInvestmentByYear(investment, groupByCalendarYear)\n\n return (\n <>\n {schedule.map((year, index) => (\n \n \n \n \n \n \n \n \n \n \n \n \n {year.events.map((event) => (\n \n \n \n \n \n \n \n \n ))}\n \n \n \n \n \n \n \n \n \n\n {index === schedule.length - 1 && (\n \n \n \n \n \n \n \n )}\n \n
EventDateDepositInterestNet ChangeBalance
{event.eventNum}{event.formattedDate}{asCurrency(event.deposit)}{asCurrency(event.interest)}{asCurrency(event.netChange)}{asCurrency(event.balance)}
Annual Total{asCurrency(year.totals.deposit)}{asCurrency(year.totals.interest)}{asCurrency(year.totals.netChange)}{asCurrency(year.totals.balance)}
Grand Total{asCurrency(investment.totalDeposit)}{asCurrency(investment.totalInterest)}{asCurrency(investment.totalNetChange)}{asCurrency(investment.totalBalance)}
\n ))}\n \n )\n}\n\nexport function AmortizationScheduleTable({ amortization }) {\n const schedule = getAmortizationByYear(amortization)\n\n return (\n <>\n {schedule.map((year, index) => (\n \n \n \n \n \n \n \n \n \n \n \n \n {year.events.map((event) => (\n \n \n \n \n \n \n \n \n ))}\n \n \n \n \n \n \n \n \n \n\n {index === schedule.length - 1 && (\n \n \n \n \n \n \n \n )}\n \n
EventDatePaymentInterestPrincipalBalance
{event.eventNum}{event.formattedDate}{asCurrency(event.payment)}{asCurrency(event.interest)}{asCurrency(event.principal)}{asCurrency(event.balance)}
Year {year.label} Total{asCurrency(year.totals.payment)}{asCurrency(year.totals.interest)}{asCurrency(year.totals.principal)}
Grand Total{asCurrency(amortization.totalPayment)}{asCurrency(amortization.totalInterest)}{asCurrency(amortization.totalPrincipal)}
\n ))}\n \n )\n}\n\nexport function InflationScheduleTable({ inflation, type = 'increase' }) {\n const schedule = inflation.schedule\n\n return (\n \n \n \n \n \n \n \n \n \n {schedule.map((event) => (\n \n \n \n \n \n ))}\n \n
Year{type === 'increase' ? 'Increase' : 'Decrease'} in CostCost
{event.eventNum}{asCurrency(event.diffValue)}{asCurrency(event.value)}
\n )\n}\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import format from 'date-fns/format'\nimport addYears from 'date-fns/addYears'\nimport addMonths from 'date-fns/addMonths'\nimport subMonths from 'date-fns/subMonths'\nimport addWeeks from 'date-fns/addWeeks'\nimport addDays from 'date-fns/addDays'\nimport toDate from 'date-fns/toDate'\nimport addMinutes from 'date-fns/addMinutes'\nimport differenceInDays from 'date-fns/differenceInDays'\nimport currency from 'currency.js'\n\nexport const asCurrency = (input) => {\n return currency(input).format()\n}\n\nexport const asPercentage = (input) => {\n const asNum = Number(input)\n return `${asNum.toFixed(2)}%`\n}\n\nexport const normalizedDate = (input) => {\n const offset = new Date().getTimezoneOffset()\n return toDate(addMinutes(new Date(input), offset))\n}\n\nexport const asDate = (input) => {\n const date = normalizedDate(input)\n return format(date, 'M/d/yyyy')\n}\n\nexport const validateFields = (_fields) => {\n const fields = [..._fields]\n let isValid = true\n\n fields.forEach((field) => {\n if (field.value === '') {\n field.hasError = true\n isValid = false\n }\n })\n\n return {\n fields,\n isValid,\n }\n}\n\nexport const updateValuesFromFields = (_values, _fields) => {\n const values = { ..._values }\n const fields = [..._fields]\n\n fields.forEach((field) => {\n let value = field.value\n\n if (field.dataType === 'int') {\n value = parseInt(value)\n }\n\n if (field.dataType === 'float') {\n value = parseFloat(value)\n }\n\n values[field.name] = value\n })\n\n return values\n}\n\nexport const getPrincipal = (monthlyPayment, interestRate, numPayments) => {\n const monthlyRate = interestRate / 100 / 12\n const principal = currency(monthlyPayment / monthlyRate).multiply(1 - Math.pow(1 + monthlyRate, -numPayments))\n\n return principal\n}\n\nexport const getMonthlyPayment = (principal, interestRate, numPayments) => {\n const monthlyRate = interestRate / 100 / 12\n\n return currency(principal).multiply(monthlyRate / (1 - Math.pow(1 + monthlyRate, -numPayments)))\n}\n\nexport const getInterestRate = (principal, monthlyPayment, numPayments) => {\n let minRate = 0,\n midRate = 0,\n maxRate = 500\n\n while (minRate < maxRate - 0.00001) {\n midRate = (minRate + maxRate) / 2\n let j = midRate / 1200\n let guessed_pmt = principal * (j / (1 - Math.pow(1 + j, numPayments * -1)))\n\n if (guessed_pmt > monthlyPayment) {\n maxRate = midRate\n } else {\n minRate = midRate\n }\n }\n\n return midRate\n}\n\nexport const getNumPayments = (balance, monthlyPayment, interestRate) => {\n const monthlyRate = interestRate / 100 / 12\n const numPayments = Math.ceil(\n (-1 * Math.log(1 - (monthlyRate * balance) / monthlyPayment)) / Math.log(1 + monthlyRate)\n )\n\n if (isNaN(numPayments)) {\n return 1\n }\n\n return numPayments\n}\n\nexport const getInflationIncrease = (currentValue, numYears, inflationRate) => {\n let value = currentValue\n const rate = 1 + inflationRate / 100\n const schedule = []\n\n for (let count = 0; count < numYears; count++) {\n let eventNum = count + 1\n const newValue = rate * value\n const diffValue = newValue - value\n value = newValue\n\n schedule.push({\n eventNum,\n diffValue,\n value,\n })\n }\n\n return {\n currentValue,\n newValue: value,\n numYears,\n schedule,\n }\n}\n\nexport const getInflationDecrease = (currentValue, numYears, inflationRate) => {\n let value = currentValue\n const rate = 1 + inflationRate / 100\n const schedule = []\n\n for (let count = 0; count < numYears; count++) {\n let eventNum = count + 1\n const newValue = currentValue / Math.pow(rate, eventNum)\n const diffValue = value - newValue\n value = newValue\n\n schedule.push({\n eventNum,\n diffValue,\n value,\n })\n }\n\n return {\n currentValue,\n newValue: value,\n numYears,\n schedule,\n }\n}\n\nconst getFrequencyPeriods = (frequency) => {\n let period = 1\n\n if (frequency === 'annually') {\n }\n\n if (frequency === 'semi-annually') {\n period = Math.floor(period * 2)\n }\n\n if (frequency === 'quarterly') {\n period = Math.floor(period * 4)\n }\n\n if (frequency === 'monthly') {\n period = Math.floor(period * 12)\n }\n\n if (frequency === 'weekly') {\n period = Math.floor(period * 52)\n }\n\n if (frequency === 'daily') {\n period = Math.floor(period * 365)\n }\n\n return {\n period,\n }\n}\n\nexport const getNumMonths = (futureValue, monthlyPayment, interestRate, presentValue = 0) => {\n const rate = interestRate / 100 / 12\n const targetValue = currency(futureValue)\n const depositValue = currency(monthlyPayment)\n let numMonths = 0\n let amount = currency(presentValue)\n\n for (let count = 1; count <= 10000; count++) {\n let interest = currency(amount).multiply(rate)\n amount = amount.add(interest)\n amount = amount.add(depositValue)\n\n if (amount.value >= targetValue.value) {\n numMonths = count\n break\n }\n }\n\n return numMonths\n}\n\nexport const getCompoundInterestRate = (futureValue, presentValue, frequency, numYears) => {\n const freq = getFrequencyPeriods(frequency)\n\n const rate = freq.period * (Math.pow(currency(futureValue).divide(presentValue), 1 / (freq.period * numYears)) - 1)\n\n return rate * 100\n}\n\nexport const getNeededDeposit = (presentValue, futureValue, numYears, frequency, interestRate) => {\n const freq = getFrequencyPeriods(frequency)\n const rate = interestRate / 100 / freq.period\n const r1 = Math.pow(1 + rate, numYears * freq.period)\n\n const deposit = currency(rate * currency(futureValue).subtract(currency(presentValue).multiply(r1))).divide(r1 - 1)\n\n return deposit\n}\n\nexport const getInvestment = (opts) => {\n const dayDiff = differenceInDays(normalizedDate(opts.futureDate), normalizedDate(opts.presentDate))\n const numYears = opts.numYears ?? dayDiff / 365\n const today = normalizedDate(new Date())\n\n let rate = opts.interestRate / 100\n let period = numYears\n let addPeriodFunc = addMonths\n let addPeriodDelta = 1\n\n if (opts.frequency === 'annually') {\n addPeriodFunc = addYears\n }\n\n if (opts.frequency === 'semi-annually') {\n rate = rate / 2\n period = Math.floor(period * 2)\n addPeriodDelta = 6\n }\n\n if (opts.frequency === 'quarterly') {\n rate = rate / 4\n period = Math.floor(period * 4)\n addPeriodDelta = 3\n }\n\n if (opts.frequency === 'monthly') {\n rate = rate / 12\n period = Math.floor(period * 12)\n }\n\n if (opts.frequency === 'weekly') {\n rate = rate / 52\n period = Math.floor(period * 52)\n addPeriodFunc = addWeeks\n }\n\n if (opts.frequency === 'daily') {\n rate = rate / 365\n period = Math.floor(period * 365)\n addPeriodFunc = addDays\n }\n\n const schedule = []\n let futureValue = currency(opts.presentValue)\n let totalDeposit = currency(0)\n let totalInterest = currency(0)\n let totalNetChange = currency(0)\n\n for (let count = 0; count < period; count++) {\n const eventNum = count + 1\n const date = addPeriodFunc(today, eventNum * addPeriodDelta)\n\n let interest = currency(futureValue).multiply(rate)\n futureValue = futureValue.add(interest)\n totalInterest = totalInterest.add(interest)\n\n let deposit = currency(opts.depositValue ?? 0)\n futureValue = futureValue.add(deposit)\n totalDeposit = totalDeposit.add(deposit)\n\n let netChange = opts.keepRunningTotals ? deposit.add(interest) : interest\n totalNetChange = totalNetChange.add(netChange)\n\n schedule.push({\n eventNum,\n date,\n formattedDate: format(date, 'MM-dd-yyyy'),\n deposit,\n interest,\n totalDeposit,\n totalInterest,\n netChange,\n balance: opts.keepRunningTotals ? futureValue : currency(opts.presentValue).add(totalNetChange),\n })\n }\n\n return {\n presentDate: opts.presentDate,\n futureDate: opts.futureDate,\n presentValue: opts.presentValue,\n depositValue: opts.depositValue,\n futureValue,\n interestRate: opts.interestRate,\n frequency: opts.frequency,\n schedule,\n totalDeposit,\n totalInterest,\n totalNetChange,\n totalBalance: futureValue,\n }\n}\n\nexport const getInvestmentByYear = (investment, groupByCalendarYear = true) => {\n const groupedSchedule = []\n let scheduleYear = null\n let currYearGroup = null\n\n const freq = getFrequencyPeriods(investment.frequency)\n\n for (const [index, event] of investment.schedule.entries()) {\n const date = event.date\n\n const shouldStartNewYear = groupByCalendarYear\n ? date.getFullYear() !== scheduleYear\n : index === 0 || index % freq.period === 0\n\n if (shouldStartNewYear) {\n if (currYearGroup) {\n groupedSchedule.push(currYearGroup)\n }\n\n currYearGroup = {\n events: [],\n label: date.getFullYear(),\n totals: {\n deposit: 0,\n interest: 0,\n netChange: 0,\n balance: 0,\n },\n }\n\n scheduleYear = date.getFullYear()\n }\n\n currYearGroup.events.push({ ...event })\n\n currYearGroup.totals.deposit = currency(currYearGroup.totals.deposit).add(event.deposit)\n currYearGroup.totals.interest = currency(currYearGroup.totals.interest).add(event.interest)\n currYearGroup.totals.netChange = currency(currYearGroup.totals.netChange).add(event.netChange)\n currYearGroup.totals.balance = event.balance\n\n if (index === investment.schedule.length - 1) {\n groupedSchedule.push(currYearGroup)\n }\n }\n\n return groupedSchedule\n}\n\nexport const getAmortization = (principal, interestRate, numPayments, payment = null) => {\n let balance = principal\n let totalPayment = 0\n let totalInterest = 0\n const monthlyRate = interestRate / 100 / 12\n const monthlyPayment = payment\n ? currency(payment)\n : currency(balance).multiply(monthlyRate / (1 - Math.pow(1 + monthlyRate, -numPayments)))\n const paymentSchedule = []\n const today = normalizedDate(new Date())\n\n for (let count = 0; count < numPayments; count++) {\n let payment = monthlyPayment\n let interest = 0\n let principal = 0\n const eventNum = count + 1\n const isLastPayment = balance.intValue <= payment.intValue || count === numPayments - 1\n const date = addMonths(today, eventNum)\n\n interest = currency(balance).multiply(monthlyRate)\n\n if (isLastPayment) {\n payment = currency(balance).add(interest)\n }\n\n principal = currency(payment).subtract(interest)\n balance = currency(balance).subtract(principal)\n totalInterest = currency(totalInterest).add(interest)\n totalPayment = currency(totalPayment).add(payment)\n\n paymentSchedule.push({\n eventNum,\n date,\n formattedDate: format(date, 'MM-dd-yyyy'),\n payment,\n interest,\n principal,\n balance,\n })\n }\n\n return {\n numPayments,\n monthlyPayment,\n totalPayment,\n totalInterest,\n totalPrincipal: principal,\n interestRate: interestRate,\n paymentSchedule,\n }\n}\n\nexport const getFixedMortgageAmortization = (opts) => {\n let balance = opts.principal\n let totalPayment = 0\n let totalInterest = 0\n const monthlyRate = opts.interestRate / 100 / 12\n const monthlyPayment = opts.payment\n ? currency(opts.payment)\n : currency(balance).multiply(monthlyRate / (1 - Math.pow(1 + monthlyRate, -opts.numPayments)))\n const paymentSchedule = []\n const startDate = opts.startDate ?? new Date()\n const start = subMonths(normalizedDate(startDate), 1)\n\n if (opts.startingEvent) {\n paymentSchedule.push(opts.startingEvent)\n }\n\n for (let count = 0; count < opts.numPayments; count++) {\n let payment = monthlyPayment\n let interest = 0\n let principal = 0\n const eventNum = count + 1\n const isLastPayment = balance.intValue <= payment.intValue || count === opts.numPayments - 1\n const date = addMonths(start, eventNum)\n\n interest = currency(balance).multiply(monthlyRate)\n\n if (isLastPayment) {\n payment = currency(balance).add(interest)\n }\n\n principal = currency(payment).subtract(interest)\n balance = currency(balance).subtract(principal)\n totalInterest = currency(totalInterest).add(interest)\n totalPayment = currency(totalPayment).add(payment)\n\n paymentSchedule.push({\n eventNum,\n date,\n formattedDate: format(date, 'MM-dd-yyyy'),\n payment,\n interest,\n principal,\n balance,\n })\n }\n\n return {\n numPayments: opts.numPayments,\n monthlyPayment,\n totalPayment,\n totalInterest,\n totalPrincipal: opts.principal,\n paymentSchedule,\n }\n}\n\nconst shouldAdjust = (period, currentRate, opts) => {\n const rateCap = opts.rateCap / 100 / 12\n\n if (currentRate >= rateCap) {\n return false\n }\n\n if (opts.numMonthsBefore === period) {\n return true\n }\n\n if (period > opts.numMonthsBefore && period % opts.numMonthsBetween === 0) {\n return true\n }\n\n return false\n}\n\nconst adjustRate = (period, currentRate, opts) => {\n const rateCap = opts.rateCap / 100 / 12\n let newRate = currentRate\n\n if (opts.numMonthsBefore === period) {\n newRate = newRate + opts.maxFirstRate / 100 / 12\n }\n\n if (period > opts.numMonthsBefore && period % opts.numMonthsBetween === 0) {\n newRate = newRate + opts.maxRate / 100 / 12\n }\n\n if (newRate >= rateCap) {\n newRate = rateCap\n }\n\n return newRate\n}\n\nconst adjustMonthlyPayment = (balance, rate, numPayments) => {\n return currency(balance).multiply(rate / (1 - Math.pow(1 + rate, -numPayments)))\n}\n\nexport const getAdjustableMortgageAmortization = (opts) => {\n let balance = opts.principal\n let totalPayment = 0\n let totalInterest = 0\n let monthlyRate = opts.interestRate / 100 / 12\n const monthlyPayment = opts.payment\n ? currency(opts.payment)\n : currency(balance).multiply(monthlyRate / (1 - Math.pow(1 + monthlyRate, -opts.numPayments)))\n const paymentSchedule = []\n const startDate = opts.startDate ?? new Date()\n const start = subMonths(normalizedDate(startDate), 1)\n\n if (opts.startingEvent) {\n paymentSchedule.push(opts.startingEvent)\n }\n\n let currentPeriodRate = monthlyRate\n let currentPeriodPayment = monthlyPayment\n\n for (let count = 0; count < opts.numPayments; count++) {\n if (shouldAdjust(count, currentPeriodRate, opts)) {\n currentPeriodRate = adjustRate(count, currentPeriodRate, opts)\n currentPeriodPayment = adjustMonthlyPayment(balance, currentPeriodRate, opts.numPayments - count)\n }\n\n let payment = currentPeriodPayment\n let interest = 0\n let principal = 0\n const eventNum = count + 1\n const isLastPayment = balance.intValue <= payment.intValue || count === opts.numPayments - 1\n const date = addMonths(start, eventNum)\n\n interest = currency(balance).multiply(currentPeriodRate)\n\n if (isLastPayment) {\n payment = currency(balance).add(interest)\n }\n\n principal = currency(payment).subtract(interest)\n balance = currency(balance).subtract(principal)\n totalInterest = currency(totalInterest).add(interest)\n totalPayment = currency(totalPayment).add(payment)\n\n paymentSchedule.push({\n eventNum,\n date,\n formattedDate: format(date, 'MM-dd-yyyy'),\n payment,\n interest,\n principal,\n balance,\n })\n }\n\n return {\n numPayments: opts.numPayments,\n monthlyPayment,\n totalPayment,\n totalInterest,\n totalPrincipal: opts.principal,\n paymentSchedule,\n }\n}\n\nexport const getAmortizationByYear = (amortization) => {\n const groupedSchedule = []\n let paymentScheduleYear = null\n let currYearGroup = null\n\n for (const [index, event] of amortization.paymentSchedule.entries()) {\n const date = event.date\n\n if (date.getFullYear() !== paymentScheduleYear) {\n if (currYearGroup) {\n groupedSchedule.push(currYearGroup)\n }\n\n currYearGroup = {\n events: [],\n label: date.getFullYear(),\n totals: {\n payment: 0,\n interest: 0,\n principal: 0,\n },\n }\n\n paymentScheduleYear = date.getFullYear()\n }\n\n currYearGroup.events.push({ ...event })\n\n currYearGroup.totals.payment = currency(currYearGroup.totals.payment).add(event.payment)\n currYearGroup.totals.interest = currency(currYearGroup.totals.interest).add(event.interest)\n currYearGroup.totals.principal = currency(currYearGroup.totals.principal).add(event.principal)\n\n if (index === amortization.numPayments - 1) {\n groupedSchedule.push(currYearGroup)\n }\n }\n\n return groupedSchedule\n}\n","import {jsx as $4MPRY$jsx} from \"react/jsx-runtime\";\nimport {useRef as $4MPRY$useRef, useEffect as $4MPRY$useEffect, useState as $4MPRY$useState, useMemo as $4MPRY$useMemo} from \"react\";\n\n\n\nfunction $090815f5086f7f29$var$usePrevious(value) {\n const ref = $4MPRY$useRef();\n $4MPRY$useEffect(()=>{\n ref.current = value;\n });\n return ref.current;\n}\nfunction $090815f5086f7f29$export$d2589202ac9c89c3(tabs, defaultTab) {\n const state = $4MPRY$useState();\n const [selectedTab, setSelectedTab] = state;\n const activeIndex = $4MPRY$useMemo(()=>{\n if (selectedTab) return tabs.indexOf(selectedTab);\n return -1;\n }, [\n selectedTab,\n tabs\n ]);\n const previousActiveIndex = $090815f5086f7f29$var$usePrevious(activeIndex);\n $4MPRY$useEffect(()=>{\n if (tabs.length === 0) {\n setSelectedTab(undefined);\n return;\n }\n if (selectedTab === null || selectedTab && tabs.includes(selectedTab)) return;\n if (typeof previousActiveIndex === \"number\" && previousActiveIndex >= 0 && (tabs[previousActiveIndex] || tabs[previousActiveIndex - 1])) {\n setSelectedTab(tabs[previousActiveIndex] || tabs[previousActiveIndex - 1]);\n return;\n }\n if (defaultTab === null) return;\n setSelectedTab(defaultTab && tabs.includes(defaultTab) ? defaultTab : tabs[0]);\n }, [\n selectedTab,\n defaultTab,\n tabs\n ]);\n return state;\n}\nfunction $090815f5086f7f29$export$3d96ec278d3efce4({ children: children , render: render = \"lazy\" , ...props }) {\n const [shouldRender, setShouldRender] = $4MPRY$useState(render === \"always\");\n $4MPRY$useEffect(()=>{\n if (props.hidden) return;\n setShouldRender(true);\n }, [\n props.hidden\n ]);\n return(/*#__PURE__*/ $4MPRY$jsx(\"div\", {\n ...props,\n children: shouldRender ? children : null\n }));\n}\n\n\nexport {$090815f5086f7f29$export$d2589202ac9c89c3 as useTabs, $090815f5086f7f29$export$3d96ec278d3efce4 as TabPanel};\n//# sourceMappingURL=module.js.map\n","export default function TabSelector({ isActive, children, onClick }) {\n return (\n \n {children}\n \n )\n}\n","export function CalculatorIcon({ className }) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import { useEffect } from 'react'\nimport { useAppState, useAppDispatch } from './Context'\nimport { TabPanel, useTabs } from 'react-headless-tabs'\nimport TabSelector from './components/TabSelector'\nimport { CalculatorIcon } from './components/Icons'\n\nexport default function Calculator({ type }) {\n const { name, tabs, ...rest } = require(`./calculators/${type}`).default\n const [selectedTab, setSelectedTab] = useTabs(tabs)\n const dispatch = useAppDispatch()\n const { fields, values } = useAppState()\n\n useEffect(() => {\n if ('fields' in rest) {\n const values = rest.fields\n .filter((field) => field.type !== 'header')\n .reduce((values, field) => {\n values[field.name] = field.value ?? 0\n\n return values\n }, {})\n\n dispatch({ type: 'setValues', payload: values })\n dispatch({ type: 'setFields', payload: rest.fields })\n }\n }, [])\n\n const handleTabChange = (tab) => {\n if (typeof selectedTab.beforeTabChange === 'function') {\n if (selectedTab.beforeTabChange(dispatch, fields, values)) {\n setSelectedTab(tab)\n }\n } else {\n setSelectedTab(tab)\n }\n }\n\n return (\n <>\n
\n \n {name}\n
\n\n
    \n {tabs.map((tab) => (\n handleTabChange(tab)}>\n {tab.name}\n \n ))}\n
\n\n
\n {tabs.map((tab) => {\n const Component = tab.component\n\n return (\n \n )\n })}\n
\n \n )\n}\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { on } from 'delegated-events'\nimport Calculator from '@components/calculators/Calculator'\nimport { AppProvider } from '@components/calculators/Context'\n\nconst fn = {\n init: () => {\n on('calculatormodalopen', 'html', fn.handleOpen)\n on('modalclose', 'html', fn.handleClose)\n },\n\n handleOpen: (e) => {\n const type = e.detail.type\n const rootNode = document.getElementById('calculator-root')\n\n ReactDOM.render(\n
\n \n \n \n \n \n
,\n rootNode\n )\n },\n\n handleClose: () => {\n const rootNode = document.getElementById('calculator-root')\n\n if (rootNode) {\n ReactDOM.unmountComponentAtNode(rootNode)\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\nimport throttle from 'lodash/throttle'\nimport Swiper, { Controller, Navigation } from 'swiper'\n\nSwiper.use([Controller, Navigation])\n\nconst headerNode = document.querySelector('.comparison-header')\nconst gridNode = document.querySelector('.comparison-grid')\nconst gridContainer = document.querySelector('.comparison-grid-container')\nconst gridSidebar = document.querySelector('.comparison-sidebar')\n\nlet numSlides = 0\nlet mainSwiper = null\nlet gridSwiper = null\n\nconst fn = {\n init: () => {\n fn.setupSliders()\n\n on('change', '[name=\"filters\"]', fn.handleFilters)\n on('click', '.comparison-dropdown-toggle', fn.handleFilterDropdown)\n\n window.addEventListener(\n 'resize',\n throttle(() => {\n fn.adjustCellHeights()\n fn.handleControls()\n fn.positionGrid()\n }, 250)\n )\n\n document.body.addEventListener('click', (e) => {\n if (!e.target.closest('.comparison-dropdown')) {\n const dropdown = document.querySelector('.comparison-dropdown')\n\n if (dropdown) {\n dropdown.classList.remove('is-active')\n }\n }\n })\n\n fn.handleControls()\n },\n\n setupSliders: () => {\n const headerContainer = headerNode.querySelector('.swiper')\n const gridContainer = gridNode.querySelector('.swiper')\n\n numSlides = headerContainer.querySelectorAll('.swiper-slide').length\n\n if (numSlides > 1) {\n gridSwiper = new Swiper(gridContainer, {\n slidesPerView: 'auto',\n on: {\n init: () => {\n fn.adjustCellHeights(), fn.positionGrid()\n },\n update: () => {\n fn.adjustCellHeights(), fn.positionGrid()\n },\n },\n })\n\n const headerSwiper = new Swiper(headerContainer, {\n slidesPerView: 'auto',\n watchSlidesProgress: true,\n on: {\n init: fn.adjustCellHeights,\n },\n controller: {\n control: gridSwiper,\n },\n navigation: {\n nextEl: headerNode.querySelector('.comparison-button-next'),\n prevEl: headerNode.querySelector('.comparison-button-prev'),\n },\n })\n\n mainSwiper = headerSwiper\n }\n },\n\n positionGrid: () => {\n const containerWidth = gridContainer.clientWidth\n const sidebarWidth = gridSidebar.clientWidth\n const gridWidth = containerWidth - sidebarWidth\n const numSlides = headerNode.querySelectorAll('.swiper .swiper-slide:not(.is-hidden)').length\n let totalWidth = 0\n\n if (window.matchMedia('(max-width: 767px)').matches) {\n gridContainer.style.left = null\n return\n }\n\n if (window.matchMedia('(min-width: 1280px)').matches) {\n totalWidth = sidebarWidth + numSlides * (gridWidth * (1 / 7))\n } else if (window.matchMedia('(min-width: 1024px)').matches) {\n totalWidth = sidebarWidth + numSlides * (gridWidth * (1 / 5))\n } else if (window.matchMedia('(min-width: 768px)').matches) {\n totalWidth = sidebarWidth + numSlides * (gridWidth * (1 / 4))\n }\n\n if (totalWidth >= window.innerWidth) {\n gridContainer.style.left = null\n } else {\n gridContainer.style.left = `calc(50% - ${Math.abs(totalWidth / 2)}px`\n }\n },\n\n handleFilters: () => {\n const all = Array.from(document.querySelectorAll('[name=filters]')).map((x) => x.value)\n const selected = Array.from(document.querySelectorAll('[name=filters]:checked')).map((x) => x.value)\n const unselected = Array.from(document.querySelectorAll('[name=filters]:not(:checked)')).map((x) => x.value)\n\n selected.forEach((id) => {\n document.querySelectorAll(`.swiper-slide[data-id=\"${id}\"]`).forEach((x) => {\n x.style.display = null\n x.classList.remove('is-hidden')\n })\n })\n\n unselected.forEach((id) => {\n document.querySelectorAll(`.swiper-slide[data-id=\"${id}\"]`).forEach((x) => {\n x.style.display = 'none'\n x.classList.add('is-hidden')\n })\n })\n\n if (selected.length === 0) {\n all.forEach((id) => {\n document.querySelectorAll(`.swiper-slide[data-id=\"${id}\"]`).forEach((x) => {\n x.style.display = null\n x.classList.remove('is-hidden')\n })\n })\n }\n\n mainSwiper.update()\n gridSwiper.update()\n },\n\n handleFilterDropdown: (e) => {\n e.target.closest('.comparison-dropdown').classList.toggle('is-active')\n },\n\n adjustCellHeights: () => {\n const gridNumRows = gridNode.dataset.rowCount + 1\n\n const titleCells = Array.from(document.querySelectorAll('.comparison-item-title'))\n\n let maxTitleHeight = Math.ceil(Math.max(...titleCells.filter((x) => x.offsetHeight > 0).map((x) => x.offsetHeight)))\n\n if (window.matchMedia('(min-width: 768px)').matches) {\n maxTitleHeight = 0\n }\n\n for (let i = 0; i < gridNumRows; i++) {\n const gridCells = Array.from(gridNode.querySelectorAll(`.comparison-cell[data-row-index=\"${i}\"]`))\n\n gridCells.filter((x) => !x.classList.contains('swiper-slide-duplicate')).forEach((x) => (x.style.height = null))\n\n const maxCellHeight = Math.ceil(\n Math.max(...gridCells.filter((x) => !x.classList.contains('swiper-slide-duplicate')).map((x) => x.offsetHeight))\n )\n\n gridCells.forEach((x) => {\n x.style.height = `${maxCellHeight + maxTitleHeight}px`\n\n const value = x.querySelector('.comparison-cell-value')\n\n if (value) {\n if (window.matchMedia('(min-width: 768px)').matches) {\n value.style.paddingTop = null\n } else {\n value.style.paddingTop = `${maxTitleHeight}px`\n }\n }\n })\n }\n\n gridNode.classList.remove('invisible')\n\n const headerCells = Array.from(headerNode.querySelectorAll('.comparison-cell[data-row-index=\"1\"]'))\n\n const maxHeaderHeight = Math.ceil(\n Math.max(...headerCells.filter((x) => !x.classList.contains('swiper-slide-duplicate')).map((x) => x.offsetHeight))\n )\n\n headerCells.forEach((x) => (x.style.height = `${maxHeaderHeight}px`))\n headerNode.classList.remove('invisible')\n },\n\n handleControls: () => {\n const controls = document.querySelector('.comparison-controls')\n\n setTimeout(() => {\n if (mainSwiper.visibleSlides.length === numSlides) {\n controls.classList.add('hidden')\n mainSwiper.loop = false\n mainSwiper.enabled = false\n } else {\n controls.classList.remove('hidden')\n controls.classList.remove('invisible')\n mainSwiper.enabled = true\n }\n }, 16)\n },\n}\n\nexport default {\n can: () => headerNode && gridNode,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\n\nconst fn = {\n init: () => {\n on('change', '.disclosure-form input[type=checkbox]', fn.handleFields)\n on('change', '.disclosure-form input[type=text]', fn.handleFields)\n on('keyup', '.disclosure-form input[type=text]', fn.handleFields)\n on('submit', '.disclosure-form', fn.handleSubmit)\n },\n\n handleFields: (e) => {\n const form = e.target.closest('form')\n const submit = form.querySelector('button[type=submit]')\n const checkbox = form.querySelector('input[type=checkbox]')\n const codeField = form.querySelector('input[name=code]')\n\n submit.disabled = !(checkbox.checked && codeField.value)\n },\n\n handleSubmit: (e) => {\n e.preventDefault()\n\n const form = e.target\n const error = form.querySelector('.disclosure-error')\n const submit = form.querySelector('button[type=submit]')\n\n error.style.display = 'none'\n\n ajax\n .url(form.action)\n .body(new FormData(form))\n .post()\n .json((res) => {\n if (res.success) {\n form.reset()\n submit.disabled = true\n window.open(res.url, '_blank')\n } else {\n error.style.display = 'block'\n }\n })\n },\n}\n\nexport default {\n can: () => document.body.classList.contains('pagetype-disclosurepage'),\n run: fn.init,\n}\n","var n,l,u,i,t,o,r,f,e={},c=[],s=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function a(n,l){for(var u in l)n[u]=l[u];return n}function h(n){var l=n.parentNode;l&&l.removeChild(n)}function v(l,u,i){var t,o,r,f={};for(r in u)\"key\"==r?t=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return y(l,f,t,o,null)}function y(n,i,t,o,r){var f={type:n,props:i,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u:r};return null==r&&null!=l.vnode&&l.vnode(f),f}function p(){return{current:null}}function d(n){return n.children}function _(n,l){this.props=n,this.context=l}function k(n,l){if(null==l)return n.__?k(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l0?y(_.type,_.props,_.key,null,_.__v):_)){if(_.__=u,_.__b=u.__b+1,null===(p=w[h])||p&&_.key==p.key&&_.type===p.type)w[h]=void 0;else for(v=0;v2&&(f.children=arguments.length>3?n.call(arguments,2):i),y(l.type,f,t||l.key,o||l.ref,null)}function D(n,l){var u={__c:l=\"__cC\"+f++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(m)},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=c.slice,l={__e:function(n,l,u,i){for(var t,o,r;l=l.__;)if((t=l.__c)&&!t.__)try{if((o=t.constructor)&&null!=o.getDerivedStateFromError&&(t.setState(o.getDerivedStateFromError(n)),r=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),r=t.__d),r)return t.__E=t}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},_.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=a({},this.state),\"function\"==typeof n&&(n=n(a({},u),this.props)),n&&a(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),m(this))},_.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),m(this))},_.prototype.render=d,t=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,g.__r=0,f=0;export{S as render,q as hydrate,v as createElement,v as h,d as Fragment,p as createRef,i as isValidElement,_ as Component,B as cloneElement,D as createContext,A as toChildArray,l as options};\n//# sourceMappingURL=preact.module.js.map\n","import{options as n}from\"preact\";var t,u,r,o=0,i=[],c=n.__b,f=n.__r,e=n.diffed,a=n.__c,v=n.unmount;function l(t,r){n.__h&&n.__h(u,t,o||r),o=0;var i=u.__H||(u.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({}),i.__[t]}function m(n){return o=1,p(w,n)}function p(n,r,o){var i=l(t++,2);return i.t=n,i.__c||(i.__=[o?o(r):w(void 0,r),function(n){var t=i.t(i.__[0],n);i.__[0]!==t&&(i.__=[t,i.__[1]],i.__c.setState({}))}],i.__c=u),i.__}function y(r,o){var i=l(t++,3);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__H.__h.push(i))}function d(r,o){var i=l(t++,4);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__h.push(i))}function h(n){return o=5,_(function(){return{current:n}},[])}function s(n,t,u){o=6,d(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==u?u:u.concat(n))}function _(n,u){var r=l(t++,7);return k(r.__H,u)&&(r.__=n(),r.__H=u,r.__h=n),r.__}function A(n,t){return o=8,_(function(){return n},t)}function F(n){var r=u.context[n.__c],o=l(t++,9);return o.c=n,r?(null==o.__&&(o.__=!0,r.sub(u)),r.props.value):n.__}function T(t,u){n.useDebugValue&&n.useDebugValue(u?u(t):t)}function q(n){var r=l(t++,10),o=m();return r.__=n,u.componentDidCatch||(u.componentDidCatch=function(n){r.__&&r.__(n),o[1](n)}),[o[0],function(){o[1](void 0)}]}function x(){for(var t;t=i.shift();)if(t.__P)try{t.__H.__h.forEach(g),t.__H.__h.forEach(j),t.__H.__h=[]}catch(u){t.__H.__h=[],n.__e(u,t.__v)}}n.__b=function(n){u=null,c&&c(n)},n.__r=function(n){f&&f(n),t=0;var r=(u=n.__c).__H;r&&(r.__h.forEach(g),r.__h.forEach(j),r.__h=[])},n.diffed=function(t){e&&e(t);var o=t.__c;o&&o.__H&&o.__H.__h.length&&(1!==i.push(o)&&r===n.requestAnimationFrame||((r=n.requestAnimationFrame)||function(n){var t,u=function(){clearTimeout(r),b&&cancelAnimationFrame(t),setTimeout(n)},r=setTimeout(u,100);b&&(t=requestAnimationFrame(u))})(x)),u=null},n.__c=function(t,u){u.some(function(t){try{t.__h.forEach(g),t.__h=t.__h.filter(function(n){return!n.__||j(n)})}catch(r){u.some(function(n){n.__h&&(n.__h=[])}),u=[],n.__e(r,t.__v)}}),a&&a(t,u)},n.unmount=function(t){v&&v(t);var u,r=t.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{g(n)}catch(n){u=n}}),u&&n.__e(u,r.__v))};var b=\"function\"==typeof requestAnimationFrame;function g(n){var t=u,r=n.__c;\"function\"==typeof r&&(n.__c=void 0,r()),u=t}function j(n){var t=u;n.__c=n.__(),u=t}function k(n,t){return!n||n.length!==t.length||t.some(function(t,u){return t!==n[u]})}function w(n,t){return\"function\"==typeof t?t(n):t}export{m as useState,p as useReducer,y as useEffect,d as useLayoutEffect,h as useRef,s as useImperativeHandle,_ as useMemo,A as useCallback,F as useContext,T as useDebugValue,q as useErrorBoundary};\n//# sourceMappingURL=hooks.module.js.map\n","import{useState as n,useReducer as t,useEffect as e,useLayoutEffect as r,useRef as u,useImperativeHandle as o,useMemo as i,useCallback as l,useContext as f,useDebugValue as c}from\"preact/hooks\";export*from\"preact/hooks\";import{Component as a,createElement as s,options as h,toChildArray as d,Fragment as v,render as p,hydrate as m,cloneElement as y,createRef as b,createContext as _}from\"preact\";export{createElement,createContext,createRef,Fragment,Component}from\"preact\";function C(n,t){for(var e in t)n[e]=t[e];return n}function S(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function E(n){this.props=n}function g(n,t){function e(n){var e=this.props.ref,r=e==n.ref;return!r&&e&&(e.call?e(null):e.current=null),t?!t(this.props,n)||!r:S(this.props,n)}function r(t){return this.shouldComponentUpdate=e,s(n,t)}return r.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",r.prototype.isReactComponent=!0,r.__f=!0,r}(E.prototype=new a).isPureReactComponent=!0,E.prototype.shouldComponentUpdate=function(n,t){return S(this.props,n)||S(this.state,t)};var w=h.__b;h.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),w&&w(n)};var R=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function x(n){function t(t){var e=C({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=R,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var N=function(n,t){return null==n?null:d(d(n).map(t))},k={map:N,forEach:N,count:function(n){return n?d(n).length:0},only:function(n){var t=d(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:d},A=h.__e;h.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);A(n,t,e,r)};var O=h.unmount;function L(){this.__u=0,this.t=null,this.__b=null}function U(n){var t=n.__.__c;return t&&t.__e&&t.__e(n)}function F(n){var t,e,r;function u(u){if(t||(t=n()).then(function(n){e=n.default||n},function(n){r=n}),r)throw r;if(!e)throw t;return s(e,u)}return u.displayName=\"Lazy\",u.__f=!0,u}function M(){this.u=null,this.o=null}h.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),O&&O(n)},(L.prototype=new a).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=U(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__e){var n=r.state.__e;r.__v.__k[0]=function n(t,e,r){return t&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)}),t.__c&&t.__c.__P===e&&(t.__e&&r.insertBefore(t.__e,t.__d),t.__c.__e=!0,t.__c.__P=r)),t}(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__e:r.__b=null});t=r.t.pop();)t.forceUpdate()}},f=!0===t.__h;r.__u++||f||r.setState({__e:r.__b=r.__v.__k[0]}),n.then(i,i)},L.prototype.componentWillUnmount=function(){this.t=[]},L.prototype.render=function(n,t){if(this.__b){if(this.__v.__k){var e=document.createElement(\"div\"),r=this.__v.__k[0].__c;this.__v.__k[0]=function n(t,e,r){return t&&(t.__c&&t.__c.__H&&(t.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),t.__c.__H=null),null!=(t=C({},t)).__c&&(t.__c.__P===r&&(t.__c.__P=e),t.__c=null),t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)})),t}(this.__b,e,r.__O=r.__P)}this.__b=null}var u=t.__e&&s(v,null,n.fallback);return u&&(u.__h=null),[s(v,null,t.__e?null:n.children),u]};var T=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]>>1,1),t.i.removeChild(n)}}),p(s(D,{context:t.context},n.__v),t.l)):t.l&&t.componentWillUnmount()}function W(n,t){return s(I,{__v:n,i:t})}(M.prototype=new a).__e=function(n){var t=this,e=U(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),T(t,n,r)):u()};e?e(o):o()}},M.prototype.render=function(n){this.u=null,this.o=new Map;var t=d(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},M.prototype.componentDidUpdate=M.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){T(n,e,t)})};var P=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,V=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,j=\"undefined\"!=typeof document,z=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};function B(n,t,e){return null==t.__k&&(t.textContent=\"\"),p(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function $(n,t,e){return m(n,t),\"function\"==typeof e&&e(),n?n.__c:null}a.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(n){Object.defineProperty(a.prototype,n,{configurable:!0,get:function(){return this[\"UNSAFE_\"+n]},set:function(t){Object.defineProperty(this,n,{configurable:!0,writable:!0,value:t})}})});var H=h.event;function Z(){}function Y(){return this.cancelBubble}function q(){return this.defaultPrevented}h.event=function(n){return H&&(n=H(n)),n.persist=Z,n.isPropagationStopped=Y,n.isDefaultPrevented=q,n.nativeEvent=n};var G,J={configurable:!0,get:function(){return this.class}},K=h.vnode;h.vnode=function(n){var t=n.type,e=n.props,r=e;if(\"string\"==typeof t){var u=-1===t.indexOf(\"-\");for(var o in r={},e){var i=e[o];j&&\"children\"===o&&\"noscript\"===t||\"value\"===o&&\"defaultValue\"in e&&null==i||(\"defaultValue\"===o&&\"value\"in e&&null==e.value?o=\"value\":\"download\"===o&&!0===i?i=\"\":/ondoubleclick/i.test(o)?o=\"ondblclick\":/^onchange(textarea|input)/i.test(o+t)&&!z(e.type)?o=\"oninput\":/^onfocus$/i.test(o)?o=\"onfocusin\":/^onblur$/i.test(o)?o=\"onfocusout\":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(o)?o=o.toLowerCase():u&&V.test(o)?o=o.replace(/[A-Z0-9]/,\"-$&\").toLowerCase():null===i&&(i=void 0),r[o]=i)}\"select\"==t&&r.multiple&&Array.isArray(r.value)&&(r.value=d(e.children).forEach(function(n){n.props.selected=-1!=r.value.indexOf(n.props.value)})),\"select\"==t&&null!=r.defaultValue&&(r.value=d(e.children).forEach(function(n){n.props.selected=r.multiple?-1!=r.defaultValue.indexOf(n.props.value):r.defaultValue==n.props.value})),n.props=r,e.class!=e.className&&(J.enumerable=\"className\"in e,null!=e.className&&(r.class=e.className),Object.defineProperty(r,\"className\",J))}n.$$typeof=P,K&&K(n)};var Q=h.__r;h.__r=function(n){Q&&Q(n),G=n.__c};var X={ReactCurrentDispatcher:{current:{readContext:function(n){return G.__n[n.__c].props.value}}}},nn=\"17.0.2\";function tn(n){return s.bind(null,n)}function en(n){return!!n&&n.$$typeof===P}function rn(n){return en(n)?y.apply(null,arguments):n}function un(n){return!!n.__k&&(p(null,n),!0)}function on(n){return n&&(n.base||1===n.nodeType&&n)||null}var ln=function(n,t){return n(t)},fn=function(n,t){return n(t)},cn=v;export default{useState:n,useReducer:t,useEffect:e,useLayoutEffect:r,useRef:u,useImperativeHandle:o,useMemo:i,useCallback:l,useContext:f,useDebugValue:c,version:\"17.0.2\",Children:k,render:B,hydrate:$,unmountComponentAtNode:un,createPortal:W,createElement:s,createContext:_,createFactory:tn,cloneElement:rn,createRef:b,Fragment:v,isValidElement:en,findDOMNode:on,Component:a,PureComponent:E,memo:g,forwardRef:x,flushSync:fn,unstable_batchedUpdates:ln,StrictMode:v,Suspense:L,SuspenseList:M,lazy:F,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:X};export{nn as version,k as Children,B as render,$ as hydrate,un as unmountComponentAtNode,W as createPortal,tn as createFactory,rn as cloneElement,en as isValidElement,on as findDOMNode,E as PureComponent,g as memo,x as forwardRef,fn as flushSync,ln as unstable_batchedUpdates,cn as StrictMode,L as Suspense,M as SuspenseList,F as lazy,X as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED};\n//# sourceMappingURL=compat.module.js.map\n","import { __extends } from 'tslib';\nimport * as preact from 'preact';\nimport * as preactCompat from 'preact/compat';\n\nvar globalObj = typeof globalThis !== 'undefined' ? globalThis : window; // // TODO: streamline when killing IE11 support\nif (globalObj.FullCalendarVDom) {\n console.warn('FullCalendar VDOM already loaded');\n}\nelse {\n globalObj.FullCalendarVDom = {\n Component: preact.Component,\n createElement: preact.createElement,\n render: preact.render,\n createRef: preact.createRef,\n Fragment: preact.Fragment,\n createContext: createContext,\n createPortal: preactCompat.createPortal,\n flushSync: flushSync,\n unmountComponentAtNode: unmountComponentAtNode,\n };\n}\n// HACKS...\n// TODO: lock version\n// TODO: link gh issues\nfunction flushSync(runBeforeFlush) {\n runBeforeFlush();\n var oldDebounceRendering = preact.options.debounceRendering; // orig\n var callbackQ = [];\n function execCallbackSync(callback) {\n callbackQ.push(callback);\n }\n preact.options.debounceRendering = execCallbackSync;\n preact.render(preact.createElement(FakeComponent, {}), document.createElement('div'));\n while (callbackQ.length) {\n callbackQ.shift()();\n }\n preact.options.debounceRendering = oldDebounceRendering;\n}\nvar FakeComponent = /** @class */ (function (_super) {\n __extends(FakeComponent, _super);\n function FakeComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FakeComponent.prototype.render = function () { return preact.createElement('div', {}); };\n FakeComponent.prototype.componentDidMount = function () { this.setState({}); };\n return FakeComponent;\n}(preact.Component));\nfunction createContext(defaultValue) {\n var ContextType = preact.createContext(defaultValue);\n var origProvider = ContextType.Provider;\n ContextType.Provider = function () {\n var _this = this;\n var isNew = !this.getChildContext;\n var children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params\n if (isNew) {\n var subs_1 = [];\n this.shouldComponentUpdate = function (_props) {\n if (_this.props.value !== _props.value) {\n subs_1.forEach(function (c) {\n c.context = _props.value;\n c.forceUpdate();\n });\n }\n };\n this.sub = function (c) {\n subs_1.push(c);\n var old = c.componentWillUnmount;\n c.componentWillUnmount = function () {\n subs_1.splice(subs_1.indexOf(c), 1);\n old && old.call(c);\n };\n };\n }\n return children;\n };\n return ContextType;\n}\nfunction unmountComponentAtNode(node) {\n preact.render(null, node);\n}\n","/// \nif (typeof FullCalendarVDom === 'undefined') {\n throw new Error('Please import the top-level fullcalendar lib before attempting to import a plugin.');\n}\nvar Component = FullCalendarVDom.Component;\nvar createElement = FullCalendarVDom.createElement;\nvar render = FullCalendarVDom.render;\nvar createRef = FullCalendarVDom.createRef;\nvar Fragment = FullCalendarVDom.Fragment;\nvar createContext = FullCalendarVDom.createContext;\nvar createPortal = FullCalendarVDom.createPortal;\nvar flushSync = FullCalendarVDom.flushSync;\nvar unmountComponentAtNode = FullCalendarVDom.unmountComponentAtNode;\n/* eslint-enable */\n\nexport { Component, Fragment, createContext, createElement, createPortal, createRef, flushSync, render, unmountComponentAtNode };\n","/*!\nFullCalendar v5.10.2\nDocs & License: https://fullcalendar.io/\n(c) 2021 Adam Shaw\n*/\nimport './main.css';\n\nimport { __assign, __spreadArray, __extends } from 'tslib';\nimport { createContext, Component, createRef, createElement, Fragment, createPortal } from './vdom.js';\nexport * from './vdom.js';\n\n// no public types yet. when there are, export from:\n// import {} from './api-type-deps'\nvar EventSourceApi = /** @class */ (function () {\n function EventSourceApi(context, internalEventSource) {\n this.context = context;\n this.internalEventSource = internalEventSource;\n }\n EventSourceApi.prototype.remove = function () {\n this.context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: this.internalEventSource.sourceId,\n });\n };\n EventSourceApi.prototype.refetch = function () {\n this.context.dispatch({\n type: 'FETCH_EVENT_SOURCES',\n sourceIds: [this.internalEventSource.sourceId],\n isRefetch: true,\n });\n };\n Object.defineProperty(EventSourceApi.prototype, \"id\", {\n get: function () {\n return this.internalEventSource.publicId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventSourceApi.prototype, \"url\", {\n get: function () {\n return this.internalEventSource.meta.url;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventSourceApi.prototype, \"format\", {\n get: function () {\n return this.internalEventSource.meta.format; // TODO: bad. not guaranteed\n },\n enumerable: false,\n configurable: true\n });\n return EventSourceApi;\n}());\n\nfunction removeElement(el) {\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n}\n// Querying\n// ----------------------------------------------------------------------------------------------------------------\nfunction elementClosest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n // really bad fallback for IE\n // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n }\n if (!document.documentElement.contains(el)) {\n return null;\n }\n do {\n if (elementMatches(el, selector)) {\n return el;\n }\n el = (el.parentElement || el.parentNode);\n } while (el !== null && el.nodeType === 1);\n return null;\n}\nfunction elementMatches(el, selector) {\n var method = el.matches || el.matchesSelector || el.msMatchesSelector;\n return method.call(el, selector);\n}\n// accepts multiple subject els\n// returns a real array. good for methods like forEach\n// TODO: accept the document\nfunction findElements(container, selector) {\n var containers = container instanceof HTMLElement ? [container] : container;\n var allMatches = [];\n for (var i = 0; i < containers.length; i += 1) {\n var matches = containers[i].querySelectorAll(selector);\n for (var j = 0; j < matches.length; j += 1) {\n allMatches.push(matches[j]);\n }\n }\n return allMatches;\n}\n// accepts multiple subject els\n// only queries direct child elements // TODO: rename to findDirectChildren!\nfunction findDirectChildren(parent, selector) {\n var parents = parent instanceof HTMLElement ? [parent] : parent;\n var allMatches = [];\n for (var i = 0; i < parents.length; i += 1) {\n var childNodes = parents[i].children; // only ever elements\n for (var j = 0; j < childNodes.length; j += 1) {\n var childNode = childNodes[j];\n if (!selector || elementMatches(childNode, selector)) {\n allMatches.push(childNode);\n }\n }\n }\n return allMatches;\n}\n// Style\n// ----------------------------------------------------------------------------------------------------------------\nvar PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i;\nfunction applyStyle(el, props) {\n for (var propName in props) {\n applyStyleProp(el, propName, props[propName]);\n }\n}\nfunction applyStyleProp(el, name, val) {\n if (val == null) {\n el.style[name] = '';\n }\n else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {\n el.style[name] = val + \"px\";\n }\n else {\n el.style[name] = val;\n }\n}\n// Event Handling\n// ----------------------------------------------------------------------------------------------------------------\n// if intercepting bubbled events at the document/window/body level,\n// and want to see originating element (the 'target'), use this util instead\n// of `ev.target` because it goes within web-component boundaries.\nfunction getEventTargetViaRoot(ev) {\n var _a, _b;\n return (_b = (_a = ev.composedPath) === null || _a === void 0 ? void 0 : _a.call(ev)[0]) !== null && _b !== void 0 ? _b : ev.target;\n}\n// Shadow DOM consuderations\n// ----------------------------------------------------------------------------------------------------------------\nfunction getElRoot(el) {\n return el.getRootNode ? el.getRootNode() : document;\n}\n// Unique ID for DOM attribute\nvar guid$1 = 0;\nfunction getUniqueDomId() {\n guid$1 += 1;\n return 'fc-dom-' + guid$1;\n}\n\n// Stops a mouse/touch event from doing it's native browser action\nfunction preventDefault(ev) {\n ev.preventDefault();\n}\n// Event Delegation\n// ----------------------------------------------------------------------------------------------------------------\nfunction buildDelegationHandler(selector, handler) {\n return function (ev) {\n var matchedChild = elementClosest(ev.target, selector);\n if (matchedChild) {\n handler.call(matchedChild, ev, matchedChild);\n }\n };\n}\nfunction listenBySelector(container, eventType, selector, handler) {\n var attachedHandler = buildDelegationHandler(selector, handler);\n container.addEventListener(eventType, attachedHandler);\n return function () {\n container.removeEventListener(eventType, attachedHandler);\n };\n}\nfunction listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) {\n var currentMatchedChild;\n return listenBySelector(container, 'mouseover', selector, function (mouseOverEv, matchedChild) {\n if (matchedChild !== currentMatchedChild) {\n currentMatchedChild = matchedChild;\n onMouseEnter(mouseOverEv, matchedChild);\n var realOnMouseLeave_1 = function (mouseLeaveEv) {\n currentMatchedChild = null;\n onMouseLeave(mouseLeaveEv, matchedChild);\n matchedChild.removeEventListener('mouseleave', realOnMouseLeave_1);\n };\n // listen to the next mouseleave, and then unattach\n matchedChild.addEventListener('mouseleave', realOnMouseLeave_1);\n }\n });\n}\n// Animation\n// ----------------------------------------------------------------------------------------------------------------\nvar transitionEventNames = [\n 'webkitTransitionEnd',\n 'otransitionend',\n 'oTransitionEnd',\n 'msTransitionEnd',\n 'transitionend',\n];\n// triggered only when the next single subsequent transition finishes\nfunction whenTransitionDone(el, callback) {\n var realCallback = function (ev) {\n callback(ev);\n transitionEventNames.forEach(function (eventName) {\n el.removeEventListener(eventName, realCallback);\n });\n };\n transitionEventNames.forEach(function (eventName) {\n el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes\n });\n}\n// ARIA workarounds\n// ----------------------------------------------------------------------------------------------------------------\nfunction createAriaClickAttrs(handler) {\n return __assign({ onClick: handler }, createAriaKeyboardAttrs(handler));\n}\nfunction createAriaKeyboardAttrs(handler) {\n return {\n tabIndex: 0,\n onKeyDown: function (ev) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n handler(ev);\n ev.preventDefault(); // if space, don't scroll down page\n }\n },\n };\n}\n\nvar guidNumber = 0;\nfunction guid() {\n guidNumber += 1;\n return String(guidNumber);\n}\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n// Make the mouse cursor express that an event is not allowed in the current area\nfunction disableCursor() {\n document.body.classList.add('fc-not-allowed');\n}\n// Returns the mouse cursor to its original look\nfunction enableCursor() {\n document.body.classList.remove('fc-not-allowed');\n}\n/* Selection\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventSelection(el) {\n el.classList.add('fc-unselectable');\n el.addEventListener('selectstart', preventDefault);\n}\nfunction allowSelection(el) {\n el.classList.remove('fc-unselectable');\n el.removeEventListener('selectstart', preventDefault);\n}\n/* Context Menu\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventContextMenu(el) {\n el.addEventListener('contextmenu', preventDefault);\n}\nfunction allowContextMenu(el) {\n el.removeEventListener('contextmenu', preventDefault);\n}\nfunction parseFieldSpecs(input) {\n var specs = [];\n var tokens = [];\n var i;\n var token;\n if (typeof input === 'string') {\n tokens = input.split(/\\s*,\\s*/);\n }\n else if (typeof input === 'function') {\n tokens = [input];\n }\n else if (Array.isArray(input)) {\n tokens = input;\n }\n for (i = 0; i < tokens.length; i += 1) {\n token = tokens[i];\n if (typeof token === 'string') {\n specs.push(token.charAt(0) === '-' ?\n { field: token.substring(1), order: -1 } :\n { field: token, order: 1 });\n }\n else if (typeof token === 'function') {\n specs.push({ func: token });\n }\n }\n return specs;\n}\nfunction compareByFieldSpecs(obj0, obj1, fieldSpecs) {\n var i;\n var cmp;\n for (i = 0; i < fieldSpecs.length; i += 1) {\n cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]);\n if (cmp) {\n return cmp;\n }\n }\n return 0;\n}\nfunction compareByFieldSpec(obj0, obj1, fieldSpec) {\n if (fieldSpec.func) {\n return fieldSpec.func(obj0, obj1);\n }\n return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field])\n * (fieldSpec.order || 1);\n}\nfunction flexibleCompare(a, b) {\n if (!a && !b) {\n return 0;\n }\n if (b == null) {\n return -1;\n }\n if (a == null) {\n return 1;\n }\n if (typeof a === 'string' || typeof b === 'string') {\n return String(a).localeCompare(String(b));\n }\n return a - b;\n}\n/* String Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction padStart(val, len) {\n var s = String(val);\n return '000'.substr(0, len - s.length) + s;\n}\nfunction formatWithOrdinals(formatter, args, fallbackText) {\n if (typeof formatter === 'function') {\n return formatter.apply(void 0, args);\n }\n if (typeof formatter === 'string') { // non-blank string\n return args.reduce(function (str, arg, index) { return (str.replace('$' + index, arg || '')); }, formatter);\n }\n return fallbackText;\n}\n/* Number Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction compareNumbers(a, b) {\n return a - b;\n}\nfunction isInt(n) {\n return n % 1 === 0;\n}\n/* FC-specific DOM dimension stuff\n----------------------------------------------------------------------------------------------------------------------*/\nfunction computeSmallestCellWidth(cellEl) {\n var allWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-frame');\n var contentWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-cushion');\n if (!allWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-frame className'); // TODO: use const\n }\n if (!contentWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-cushion className');\n }\n return cellEl.getBoundingClientRect().width - allWidthEl.getBoundingClientRect().width + // the cell padding+border\n contentWidthEl.getBoundingClientRect().width;\n}\n\nvar DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n// Adding\nfunction addWeeks(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n * 7;\n return arrayToUtcDate(a);\n}\nfunction addDays(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n;\n return arrayToUtcDate(a);\n}\nfunction addMs(m, n) {\n var a = dateToUtcArray(m);\n a[6] += n;\n return arrayToUtcDate(a);\n}\n// Diffing (all return floats)\n// TODO: why not use ranges?\nfunction diffWeeks(m0, m1) {\n return diffDays(m0, m1) / 7;\n}\nfunction diffDays(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24);\n}\nfunction diffHours(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60);\n}\nfunction diffMinutes(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60);\n}\nfunction diffSeconds(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / 1000;\n}\nfunction diffDayAndTime(m0, m1) {\n var m0day = startOfDay(m0);\n var m1day = startOfDay(m1);\n return {\n years: 0,\n months: 0,\n days: Math.round(diffDays(m0day, m1day)),\n milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf()),\n };\n}\n// Diffing Whole Units\nfunction diffWholeWeeks(m0, m1) {\n var d = diffWholeDays(m0, m1);\n if (d !== null && d % 7 === 0) {\n return d / 7;\n }\n return null;\n}\nfunction diffWholeDays(m0, m1) {\n if (timeAsMs(m0) === timeAsMs(m1)) {\n return Math.round(diffDays(m0, m1));\n }\n return null;\n}\n// Start-Of\nfunction startOfDay(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n ]);\n}\nfunction startOfHour(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n ]);\n}\nfunction startOfMinute(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n m.getUTCMinutes(),\n ]);\n}\nfunction startOfSecond(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n m.getUTCMinutes(),\n m.getUTCSeconds(),\n ]);\n}\n// Week Computation\nfunction weekOfYear(marker, dow, doy) {\n var y = marker.getUTCFullYear();\n var w = weekOfGivenYear(marker, y, dow, doy);\n if (w < 1) {\n return weekOfGivenYear(marker, y - 1, dow, doy);\n }\n var nextW = weekOfGivenYear(marker, y + 1, dow, doy);\n if (nextW >= 1) {\n return Math.min(w, nextW);\n }\n return w;\n}\nfunction weekOfGivenYear(marker, year, dow, doy) {\n var firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]);\n var dayStart = startOfDay(marker);\n var days = Math.round(diffDays(firstWeekStart, dayStart));\n return Math.floor(days / 7) + 1; // zero-indexed\n}\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n var fwd = 7 + dow - doy;\n // first-week day local weekday -- which local weekday is fwd\n var fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n}\n// Array Conversion\nfunction dateToLocalArray(date) {\n return [\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n ];\n}\nfunction arrayToLocalDate(a) {\n return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month\n a[3] || 0, a[4] || 0, a[5] || 0);\n}\nfunction dateToUtcArray(date) {\n return [\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds(),\n ];\n}\nfunction arrayToUtcDate(a) {\n // according to web standards (and Safari), a month index is required.\n // massage if only given a year.\n if (a.length === 1) {\n a = a.concat([0]);\n }\n return new Date(Date.UTC.apply(Date, a));\n}\n// Other Utils\nfunction isValidDate(m) {\n return !isNaN(m.valueOf());\n}\nfunction timeAsMs(m) {\n return m.getUTCHours() * 1000 * 60 * 60 +\n m.getUTCMinutes() * 1000 * 60 +\n m.getUTCSeconds() * 1000 +\n m.getUTCMilliseconds();\n}\n\nfunction createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) {\n return {\n instanceId: guid(),\n defId: defId,\n range: range,\n forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,\n forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo,\n };\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n// Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\nfunction mergeProps(propObjs, complexPropsMap) {\n var dest = {};\n if (complexPropsMap) {\n for (var name_1 in complexPropsMap) {\n var complexObjs = [];\n // collect the trailing object values, stopping when a non-object is discovered\n for (var i = propObjs.length - 1; i >= 0; i -= 1) {\n var val = propObjs[i][name_1];\n if (typeof val === 'object' && val) { // non-null object\n complexObjs.unshift(val);\n }\n else if (val !== undefined) {\n dest[name_1] = val; // if there were no objects, this value will be used\n break;\n }\n }\n // if the trailing values were objects, use the merged value\n if (complexObjs.length) {\n dest[name_1] = mergeProps(complexObjs);\n }\n }\n }\n // copy values into the destination, going from last to first\n for (var i = propObjs.length - 1; i >= 0; i -= 1) {\n var props = propObjs[i];\n for (var name_2 in props) {\n if (!(name_2 in dest)) { // if already assigned by previous props or complex props, don't reassign\n dest[name_2] = props[name_2];\n }\n }\n }\n return dest;\n}\nfunction filterHash(hash, func) {\n var filtered = {};\n for (var key in hash) {\n if (func(hash[key], key)) {\n filtered[key] = hash[key];\n }\n }\n return filtered;\n}\nfunction mapHash(hash, func) {\n var newHash = {};\n for (var key in hash) {\n newHash[key] = func(hash[key], key);\n }\n return newHash;\n}\nfunction arrayToHash(a) {\n var hash = {};\n for (var _i = 0, a_1 = a; _i < a_1.length; _i++) {\n var item = a_1[_i];\n hash[item] = true;\n }\n return hash;\n}\nfunction buildHashFromArray(a, func) {\n var hash = {};\n for (var i = 0; i < a.length; i += 1) {\n var tuple = func(a[i], i);\n hash[tuple[0]] = tuple[1];\n }\n return hash;\n}\nfunction hashValuesToArray(obj) {\n var a = [];\n for (var key in obj) {\n a.push(obj[key]);\n }\n return a;\n}\nfunction isPropsEqual(obj0, obj1) {\n if (obj0 === obj1) {\n return true;\n }\n for (var key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n return false;\n }\n }\n }\n for (var key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n return false;\n }\n }\n }\n return true;\n}\nfunction getUnequalProps(obj0, obj1) {\n var keys = [];\n for (var key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n keys.push(key);\n }\n }\n }\n for (var key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n keys.push(key);\n }\n }\n }\n return keys;\n}\nfunction compareObjs(oldProps, newProps, equalityFuncs) {\n if (equalityFuncs === void 0) { equalityFuncs = {}; }\n if (oldProps === newProps) {\n return true;\n }\n for (var key in newProps) {\n if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;\n else {\n return false;\n }\n }\n // check for props that were omitted in the new\n for (var key in oldProps) {\n if (!(key in newProps)) {\n return false;\n }\n }\n return true;\n}\n/*\nassumed \"true\" equality for handler names like \"onReceiveSomething\"\n*/\nfunction isObjValsEqual(val0, val1, comparator) {\n if (val0 === val1 || comparator === true) {\n return true;\n }\n if (comparator) {\n return comparator(val0, val1);\n }\n return false;\n}\nfunction collectFromHash(hash, startIndex, endIndex, step) {\n if (startIndex === void 0) { startIndex = 0; }\n if (step === void 0) { step = 1; }\n var res = [];\n if (endIndex == null) {\n endIndex = Object.keys(hash).length;\n }\n for (var i = startIndex; i < endIndex; i += step) {\n var val = hash[i];\n if (val !== undefined) { // will disregard undefined for sparse arrays\n res.push(val);\n }\n }\n return res;\n}\n\nfunction parseRecurring(refined, defaultAllDay, dateEnv, recurringTypes) {\n for (var i = 0; i < recurringTypes.length; i += 1) {\n var parsed = recurringTypes[i].parse(refined, dateEnv);\n if (parsed) {\n var allDay = refined.allDay;\n if (allDay == null) {\n allDay = defaultAllDay;\n if (allDay == null) {\n allDay = parsed.allDayGuess;\n if (allDay == null) {\n allDay = false;\n }\n }\n }\n return {\n allDay: allDay,\n duration: parsed.duration,\n typeData: parsed.typeData,\n typeId: i,\n };\n }\n }\n return null;\n}\nfunction expandRecurring(eventStore, framingRange, context) {\n var dateEnv = context.dateEnv, pluginHooks = context.pluginHooks, options = context.options;\n var defs = eventStore.defs, instances = eventStore.instances;\n // remove existing recurring instances\n // TODO: bad. always expand events as a second step\n instances = filterHash(instances, function (instance) { return !defs[instance.defId].recurringDef; });\n for (var defId in defs) {\n var def = defs[defId];\n if (def.recurringDef) {\n var duration = def.recurringDef.duration;\n if (!duration) {\n duration = def.allDay ?\n options.defaultAllDayEventDuration :\n options.defaultTimedEventDuration;\n }\n var starts = expandRecurringRanges(def, duration, framingRange, dateEnv, pluginHooks.recurringTypes);\n for (var _i = 0, starts_1 = starts; _i < starts_1.length; _i++) {\n var start = starts_1[_i];\n var instance = createEventInstance(defId, {\n start: start,\n end: dateEnv.add(start, duration),\n });\n instances[instance.instanceId] = instance;\n }\n }\n }\n return { defs: defs, instances: instances };\n}\n/*\nEvent MUST have a recurringDef\n*/\nfunction expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) {\n var typeDef = recurringTypes[eventDef.recurringDef.typeId];\n var markers = typeDef.expand(eventDef.recurringDef.typeData, {\n start: dateEnv.subtract(framingRange.start, duration),\n end: framingRange.end,\n }, dateEnv);\n // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to\n if (eventDef.allDay) {\n markers = markers.map(startOfDay);\n }\n return markers;\n}\n\nvar INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds'];\nvar PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/;\n// Parsing and Creation\nfunction createDuration(input, unit) {\n var _a;\n if (typeof input === 'string') {\n return parseString(input);\n }\n if (typeof input === 'object' && input) { // non-null object\n return parseObject(input);\n }\n if (typeof input === 'number') {\n return parseObject((_a = {}, _a[unit || 'milliseconds'] = input, _a));\n }\n return null;\n}\nfunction parseString(s) {\n var m = PARSE_RE.exec(s);\n if (m) {\n var sign = m[1] ? -1 : 1;\n return {\n years: 0,\n months: 0,\n days: sign * (m[2] ? parseInt(m[2], 10) : 0),\n milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours\n (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes\n (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds\n (m[6] ? parseInt(m[6], 10) : 0) // ms\n ),\n };\n }\n return null;\n}\nfunction parseObject(obj) {\n var duration = {\n years: obj.years || obj.year || 0,\n months: obj.months || obj.month || 0,\n days: obj.days || obj.day || 0,\n milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours\n (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes\n (obj.seconds || obj.second || 0) * 1000 + // seconds\n (obj.milliseconds || obj.millisecond || obj.ms || 0), // ms\n };\n var weeks = obj.weeks || obj.week;\n if (weeks) {\n duration.days += weeks * 7;\n duration.specifiedWeeks = true;\n }\n return duration;\n}\n// Equality\nfunction durationsEqual(d0, d1) {\n return d0.years === d1.years &&\n d0.months === d1.months &&\n d0.days === d1.days &&\n d0.milliseconds === d1.milliseconds;\n}\nfunction asCleanDays(dur) {\n if (!dur.years && !dur.months && !dur.milliseconds) {\n return dur.days;\n }\n return 0;\n}\n// Simple Math\nfunction addDurations(d0, d1) {\n return {\n years: d0.years + d1.years,\n months: d0.months + d1.months,\n days: d0.days + d1.days,\n milliseconds: d0.milliseconds + d1.milliseconds,\n };\n}\nfunction subtractDurations(d1, d0) {\n return {\n years: d1.years - d0.years,\n months: d1.months - d0.months,\n days: d1.days - d0.days,\n milliseconds: d1.milliseconds - d0.milliseconds,\n };\n}\nfunction multiplyDuration(d, n) {\n return {\n years: d.years * n,\n months: d.months * n,\n days: d.days * n,\n milliseconds: d.milliseconds * n,\n };\n}\n// Conversions\n// \"Rough\" because they are based on average-case Gregorian months/years\nfunction asRoughYears(dur) {\n return asRoughDays(dur) / 365;\n}\nfunction asRoughMonths(dur) {\n return asRoughDays(dur) / 30;\n}\nfunction asRoughDays(dur) {\n return asRoughMs(dur) / 864e5;\n}\nfunction asRoughMinutes(dur) {\n return asRoughMs(dur) / (1000 * 60);\n}\nfunction asRoughSeconds(dur) {\n return asRoughMs(dur) / 1000;\n}\nfunction asRoughMs(dur) {\n return dur.years * (365 * 864e5) +\n dur.months * (30 * 864e5) +\n dur.days * 864e5 +\n dur.milliseconds;\n}\n// Advanced Math\nfunction wholeDivideDurations(numerator, denominator) {\n var res = null;\n for (var i = 0; i < INTERNAL_UNITS.length; i += 1) {\n var unit = INTERNAL_UNITS[i];\n if (denominator[unit]) {\n var localRes = numerator[unit] / denominator[unit];\n if (!isInt(localRes) || (res !== null && res !== localRes)) {\n return null;\n }\n res = localRes;\n }\n else if (numerator[unit]) {\n // needs to divide by something but can't!\n return null;\n }\n }\n return res;\n}\nfunction greatestDurationDenominator(dur) {\n var ms = dur.milliseconds;\n if (ms) {\n if (ms % 1000 !== 0) {\n return { unit: 'millisecond', value: ms };\n }\n if (ms % (1000 * 60) !== 0) {\n return { unit: 'second', value: ms / 1000 };\n }\n if (ms % (1000 * 60 * 60) !== 0) {\n return { unit: 'minute', value: ms / (1000 * 60) };\n }\n if (ms) {\n return { unit: 'hour', value: ms / (1000 * 60 * 60) };\n }\n }\n if (dur.days) {\n if (dur.specifiedWeeks && dur.days % 7 === 0) {\n return { unit: 'week', value: dur.days / 7 };\n }\n return { unit: 'day', value: dur.days };\n }\n if (dur.months) {\n return { unit: 'month', value: dur.months };\n }\n if (dur.years) {\n return { unit: 'year', value: dur.years };\n }\n return { unit: 'millisecond', value: 0 };\n}\n\n// timeZoneOffset is in minutes\nfunction buildIsoString(marker, timeZoneOffset, stripZeroTime) {\n if (stripZeroTime === void 0) { stripZeroTime = false; }\n var s = marker.toISOString();\n s = s.replace('.000', '');\n if (stripZeroTime) {\n s = s.replace('T00:00:00Z', '');\n }\n if (s.length > 10) { // time part wasn't stripped, can add timezone info\n if (timeZoneOffset == null) {\n s = s.replace('Z', '');\n }\n else if (timeZoneOffset !== 0) {\n s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true));\n }\n // otherwise, its UTC-0 and we want to keep the Z\n }\n return s;\n}\n// formats the date, but with no time part\n// TODO: somehow merge with buildIsoString and stripZeroTime\n// TODO: rename. omit \"string\"\nfunction formatDayString(marker) {\n return marker.toISOString().replace(/T.*$/, '');\n}\n// TODO: use Date::toISOString and use everything after the T?\nfunction formatIsoTimeString(marker) {\n return padStart(marker.getUTCHours(), 2) + ':' +\n padStart(marker.getUTCMinutes(), 2) + ':' +\n padStart(marker.getUTCSeconds(), 2);\n}\nfunction formatTimeZoneOffset(minutes, doIso) {\n if (doIso === void 0) { doIso = false; }\n var sign = minutes < 0 ? '-' : '+';\n var abs = Math.abs(minutes);\n var hours = Math.floor(abs / 60);\n var mins = Math.round(abs % 60);\n if (doIso) {\n return sign + padStart(hours, 2) + \":\" + padStart(mins, 2);\n }\n return \"GMT\" + sign + hours + (mins ? \":\" + padStart(mins, 2) : '');\n}\n\n// TODO: new util arrayify?\nfunction removeExact(array, exactVal) {\n var removeCnt = 0;\n var i = 0;\n while (i < array.length) {\n if (array[i] === exactVal) {\n array.splice(i, 1);\n removeCnt += 1;\n }\n else {\n i += 1;\n }\n }\n return removeCnt;\n}\nfunction isArraysEqual(a0, a1, equalityFunc) {\n if (a0 === a1) {\n return true;\n }\n var len = a0.length;\n var i;\n if (len !== a1.length) { // not array? or not same length?\n return false;\n }\n for (i = 0; i < len; i += 1) {\n if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoize(workerFunc, resEquality, teardownFunc) {\n var currentArgs;\n var currentRes;\n return function () {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (!currentArgs) {\n currentRes = workerFunc.apply(this, newArgs);\n }\n else if (!isArraysEqual(currentArgs, newArgs)) {\n if (teardownFunc) {\n teardownFunc(currentRes);\n }\n var res = workerFunc.apply(this, newArgs);\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res;\n }\n }\n currentArgs = newArgs;\n return currentRes;\n };\n}\nfunction memoizeObjArg(workerFunc, resEquality, teardownFunc) {\n var _this = this;\n var currentArg;\n var currentRes;\n return function (newArg) {\n if (!currentArg) {\n currentRes = workerFunc.call(_this, newArg);\n }\n else if (!isPropsEqual(currentArg, newArg)) {\n if (teardownFunc) {\n teardownFunc(currentRes);\n }\n var res = workerFunc.call(_this, newArg);\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res;\n }\n }\n currentArg = newArg;\n return currentRes;\n };\n}\nfunction memoizeArraylike(// used at all?\nworkerFunc, resEquality, teardownFunc) {\n var _this = this;\n var currentArgSets = [];\n var currentResults = [];\n return function (newArgSets) {\n var currentLen = currentArgSets.length;\n var newLen = newArgSets.length;\n var i = 0;\n for (; i < currentLen; i += 1) {\n if (!newArgSets[i]) { // one of the old sets no longer exists\n if (teardownFunc) {\n teardownFunc(currentResults[i]);\n }\n }\n else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {\n if (teardownFunc) {\n teardownFunc(currentResults[i]);\n }\n var res = workerFunc.apply(_this, newArgSets[i]);\n if (!resEquality || !resEquality(res, currentResults[i])) {\n currentResults[i] = res;\n }\n }\n }\n for (; i < newLen; i += 1) {\n currentResults[i] = workerFunc.apply(_this, newArgSets[i]);\n }\n currentArgSets = newArgSets;\n currentResults.splice(newLen); // remove excess\n return currentResults;\n };\n}\nfunction memoizeHashlike(// used?\nworkerFunc, resEquality, teardownFunc) {\n var _this = this;\n var currentArgHash = {};\n var currentResHash = {};\n return function (newArgHash) {\n var newResHash = {};\n for (var key in newArgHash) {\n if (!currentResHash[key]) {\n newResHash[key] = workerFunc.apply(_this, newArgHash[key]);\n }\n else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {\n if (teardownFunc) {\n teardownFunc(currentResHash[key]);\n }\n var res = workerFunc.apply(_this, newArgHash[key]);\n newResHash[key] = (resEquality && resEquality(res, currentResHash[key]))\n ? currentResHash[key]\n : res;\n }\n else {\n newResHash[key] = currentResHash[key];\n }\n }\n currentArgHash = newArgHash;\n currentResHash = newResHash;\n return newResHash;\n };\n}\n\nvar EXTENDED_SETTINGS_AND_SEVERITIES = {\n week: 3,\n separator: 0,\n omitZeroMinute: 0,\n meridiem: 0,\n omitCommas: 0,\n};\nvar STANDARD_DATE_PROP_SEVERITIES = {\n timeZoneName: 7,\n era: 6,\n year: 5,\n month: 4,\n day: 2,\n weekday: 2,\n hour: 1,\n minute: 1,\n second: 1,\n};\nvar MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i; // eats up leading spaces too\nvar COMMA_RE = /,/g; // we need re for globalness\nvar MULTI_SPACE_RE = /\\s+/g;\nvar LTR_RE = /\\u200e/g; // control character\nvar UTC_RE = /UTC|GMT/;\nvar NativeFormatter = /** @class */ (function () {\n function NativeFormatter(formatSettings) {\n var standardDateProps = {};\n var extendedSettings = {};\n var severity = 0;\n for (var name_1 in formatSettings) {\n if (name_1 in EXTENDED_SETTINGS_AND_SEVERITIES) {\n extendedSettings[name_1] = formatSettings[name_1];\n severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name_1], severity);\n }\n else {\n standardDateProps[name_1] = formatSettings[name_1];\n if (name_1 in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity\n severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name_1], severity);\n }\n }\n }\n this.standardDateProps = standardDateProps;\n this.extendedSettings = extendedSettings;\n this.severity = severity;\n this.buildFormattingFunc = memoize(buildFormattingFunc);\n }\n NativeFormatter.prototype.format = function (date, context) {\n return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date);\n };\n NativeFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n var _a = this, standardDateProps = _a.standardDateProps, extendedSettings = _a.extendedSettings;\n var diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem);\n if (!diffSeverity) {\n return this.format(start, context);\n }\n var biggestUnitForPartial = diffSeverity;\n if (biggestUnitForPartial > 1 && // the two dates are different in a way that's larger scale than time\n (standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') &&\n (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') &&\n (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) {\n biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time\n }\n var full0 = this.format(start, context);\n var full1 = this.format(end, context);\n if (full0 === full1) {\n return full0;\n }\n var partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial);\n var partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context);\n var partial0 = partialFormattingFunc(start);\n var partial1 = partialFormattingFunc(end);\n var insertion = findCommonInsertion(full0, partial0, full1, partial1);\n var separator = extendedSettings.separator || betterDefaultSeparator || context.defaultSeparator || '';\n if (insertion) {\n return insertion.before + partial0 + separator + partial1 + insertion.after;\n }\n return full0 + separator + full1;\n };\n NativeFormatter.prototype.getLargestUnit = function () {\n switch (this.severity) {\n case 7:\n case 6:\n case 5:\n return 'year';\n case 4:\n return 'month';\n case 3:\n return 'week';\n case 2:\n return 'day';\n default:\n return 'time'; // really?\n }\n };\n return NativeFormatter;\n}());\nfunction buildFormattingFunc(standardDateProps, extendedSettings, context) {\n var standardDatePropCnt = Object.keys(standardDateProps).length;\n if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {\n return function (date) { return (formatTimeZoneOffset(date.timeZoneOffset)); };\n }\n if (standardDatePropCnt === 0 && extendedSettings.week) {\n return function (date) { return (formatWeekNumber(context.computeWeekNumber(date.marker), context.weekText, context.weekTextLong, context.locale, extendedSettings.week)); };\n }\n return buildNativeFormattingFunc(standardDateProps, extendedSettings, context);\n}\nfunction buildNativeFormattingFunc(standardDateProps, extendedSettings, context) {\n standardDateProps = __assign({}, standardDateProps); // copy\n extendedSettings = __assign({}, extendedSettings); // copy\n sanitizeSettings(standardDateProps, extendedSettings);\n standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers\n var normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps);\n var zeroFormat; // needed?\n if (extendedSettings.omitZeroMinute) {\n var zeroProps = __assign({}, standardDateProps);\n delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings\n zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps);\n }\n return function (date) {\n var marker = date.marker;\n var format;\n if (zeroFormat && !marker.getUTCMinutes()) {\n format = zeroFormat;\n }\n else {\n format = normalFormat;\n }\n var s = format.format(marker);\n return postProcess(s, date, standardDateProps, extendedSettings, context);\n };\n}\nfunction sanitizeSettings(standardDateProps, extendedSettings) {\n // deal with a browser inconsistency where formatting the timezone\n // requires that the hour/minute be present.\n if (standardDateProps.timeZoneName) {\n if (!standardDateProps.hour) {\n standardDateProps.hour = '2-digit';\n }\n if (!standardDateProps.minute) {\n standardDateProps.minute = '2-digit';\n }\n }\n // only support short timezone names\n if (standardDateProps.timeZoneName === 'long') {\n standardDateProps.timeZoneName = 'short';\n }\n // if requesting to display seconds, MUST display minutes\n if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {\n delete extendedSettings.omitZeroMinute;\n }\n}\nfunction postProcess(s, date, standardDateProps, extendedSettings, context) {\n s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes\n if (standardDateProps.timeZoneName === 'short') {\n s = injectTzoStr(s, (context.timeZone === 'UTC' || date.timeZoneOffset == null) ?\n 'UTC' : // important to normalize for IE, which does \"GMT\"\n formatTimeZoneOffset(date.timeZoneOffset));\n }\n if (extendedSettings.omitCommas) {\n s = s.replace(COMMA_RE, '').trim();\n }\n if (extendedSettings.omitZeroMinute) {\n s = s.replace(':00', ''); // zeroFormat doesn't always achieve this\n }\n // ^ do anything that might create adjacent spaces before this point,\n // because MERIDIEM_RE likes to eat up loading spaces\n if (extendedSettings.meridiem === false) {\n s = s.replace(MERIDIEM_RE, '').trim();\n }\n else if (extendedSettings.meridiem === 'narrow') { // a/p\n s = s.replace(MERIDIEM_RE, function (m0, m1) { return m1.toLocaleLowerCase(); });\n }\n else if (extendedSettings.meridiem === 'short') { // am/pm\n s = s.replace(MERIDIEM_RE, function (m0, m1) { return m1.toLocaleLowerCase() + \"m\"; });\n }\n else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase\n s = s.replace(MERIDIEM_RE, function (m0) { return m0.toLocaleLowerCase(); });\n }\n s = s.replace(MULTI_SPACE_RE, ' ');\n s = s.trim();\n return s;\n}\nfunction injectTzoStr(s, tzoStr) {\n var replaced = false;\n s = s.replace(UTC_RE, function () {\n replaced = true;\n return tzoStr;\n });\n // IE11 doesn't include UTC/GMT in the original string, so append to end\n if (!replaced) {\n s += \" \" + tzoStr;\n }\n return s;\n}\nfunction formatWeekNumber(num, weekText, weekTextLong, locale, display) {\n var parts = [];\n if (display === 'long') {\n parts.push(weekTextLong);\n }\n else if (display === 'short' || display === 'narrow') {\n parts.push(weekText);\n }\n if (display === 'long' || display === 'short') {\n parts.push(' ');\n }\n parts.push(locale.simpleNumberFormat.format(num));\n if (locale.options.direction === 'rtl') { // TODO: use control characters instead?\n parts.reverse();\n }\n return parts.join('');\n}\n// Range Formatting Utils\n// 0 = exactly the same\n// 1 = different by time\n// and bigger\nfunction computeMarkerDiffSeverity(d0, d1, ca) {\n if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {\n return 5;\n }\n if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {\n return 4;\n }\n if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {\n return 2;\n }\n if (timeAsMs(d0) !== timeAsMs(d1)) {\n return 1;\n }\n return 0;\n}\nfunction computePartialFormattingOptions(options, biggestUnit) {\n var partialOptions = {};\n for (var name_2 in options) {\n if (!(name_2 in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone)\n STANDARD_DATE_PROP_SEVERITIES[name_2] <= biggestUnit) {\n partialOptions[name_2] = options[name_2];\n }\n }\n return partialOptions;\n}\nfunction findCommonInsertion(full0, partial0, full1, partial1) {\n var i0 = 0;\n while (i0 < full0.length) {\n var found0 = full0.indexOf(partial0, i0);\n if (found0 === -1) {\n break;\n }\n var before0 = full0.substr(0, found0);\n i0 = found0 + partial0.length;\n var after0 = full0.substr(i0);\n var i1 = 0;\n while (i1 < full1.length) {\n var found1 = full1.indexOf(partial1, i1);\n if (found1 === -1) {\n break;\n }\n var before1 = full1.substr(0, found1);\n i1 = found1 + partial1.length;\n var after1 = full1.substr(i1);\n if (before0 === before1 && after0 === after1) {\n return {\n before: before0,\n after: after0,\n };\n }\n }\n }\n return null;\n}\n\nfunction expandZonedMarker(dateInfo, calendarSystem) {\n var a = calendarSystem.markerToArray(dateInfo.marker);\n return {\n marker: dateInfo.marker,\n timeZoneOffset: dateInfo.timeZoneOffset,\n array: a,\n year: a[0],\n month: a[1],\n day: a[2],\n hour: a[3],\n minute: a[4],\n second: a[5],\n millisecond: a[6],\n };\n}\n\nfunction createVerboseFormattingArg(start, end, context, betterDefaultSeparator) {\n var startInfo = expandZonedMarker(start, context.calendarSystem);\n var endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null;\n return {\n date: startInfo,\n start: startInfo,\n end: endInfo,\n timeZone: context.timeZone,\n localeCodes: context.locale.codes,\n defaultSeparator: betterDefaultSeparator || context.defaultSeparator,\n };\n}\n\n/*\nTODO: fix the terminology of \"formatter\" vs \"formatting func\"\n*/\n/*\nAt the time of instantiation, this object does not know which cmd-formatting system it will use.\nIt receives this at the time of formatting, as a setting.\n*/\nvar CmdFormatter = /** @class */ (function () {\n function CmdFormatter(cmdStr) {\n this.cmdStr = cmdStr;\n }\n CmdFormatter.prototype.format = function (date, context, betterDefaultSeparator) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n };\n CmdFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n };\n return CmdFormatter;\n}());\n\nvar FuncFormatter = /** @class */ (function () {\n function FuncFormatter(func) {\n this.func = func;\n }\n FuncFormatter.prototype.format = function (date, context, betterDefaultSeparator) {\n return this.func(createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n };\n FuncFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n return this.func(createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n };\n return FuncFormatter;\n}());\n\nfunction createFormatter(input) {\n if (typeof input === 'object' && input) { // non-null object\n return new NativeFormatter(input);\n }\n if (typeof input === 'string') {\n return new CmdFormatter(input);\n }\n if (typeof input === 'function') {\n return new FuncFormatter(input);\n }\n return null;\n}\n\n// base options\n// ------------\nvar BASE_OPTION_REFINERS = {\n navLinkDayClick: identity,\n navLinkWeekClick: identity,\n duration: createDuration,\n bootstrapFontAwesome: identity,\n buttonIcons: identity,\n customButtons: identity,\n defaultAllDayEventDuration: createDuration,\n defaultTimedEventDuration: createDuration,\n nextDayThreshold: createDuration,\n scrollTime: createDuration,\n scrollTimeReset: Boolean,\n slotMinTime: createDuration,\n slotMaxTime: createDuration,\n dayPopoverFormat: createFormatter,\n slotDuration: createDuration,\n snapDuration: createDuration,\n headerToolbar: identity,\n footerToolbar: identity,\n defaultRangeSeparator: String,\n titleRangeSeparator: String,\n forceEventDuration: Boolean,\n dayHeaders: Boolean,\n dayHeaderFormat: createFormatter,\n dayHeaderClassNames: identity,\n dayHeaderContent: identity,\n dayHeaderDidMount: identity,\n dayHeaderWillUnmount: identity,\n dayCellClassNames: identity,\n dayCellContent: identity,\n dayCellDidMount: identity,\n dayCellWillUnmount: identity,\n initialView: String,\n aspectRatio: Number,\n weekends: Boolean,\n weekNumberCalculation: identity,\n weekNumbers: Boolean,\n weekNumberClassNames: identity,\n weekNumberContent: identity,\n weekNumberDidMount: identity,\n weekNumberWillUnmount: identity,\n editable: Boolean,\n viewClassNames: identity,\n viewDidMount: identity,\n viewWillUnmount: identity,\n nowIndicator: Boolean,\n nowIndicatorClassNames: identity,\n nowIndicatorContent: identity,\n nowIndicatorDidMount: identity,\n nowIndicatorWillUnmount: identity,\n showNonCurrentDates: Boolean,\n lazyFetching: Boolean,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n timeZone: String,\n locales: identity,\n locale: identity,\n themeSystem: String,\n dragRevertDuration: Number,\n dragScroll: Boolean,\n allDayMaintainDuration: Boolean,\n unselectAuto: Boolean,\n dropAccept: identity,\n eventOrder: parseFieldSpecs,\n eventOrderStrict: Boolean,\n handleWindowResize: Boolean,\n windowResizeDelay: Number,\n longPressDelay: Number,\n eventDragMinDistance: Number,\n expandRows: Boolean,\n height: identity,\n contentHeight: identity,\n direction: String,\n weekNumberFormat: createFormatter,\n eventResizableFromStart: Boolean,\n displayEventTime: Boolean,\n displayEventEnd: Boolean,\n weekText: String,\n weekTextLong: String,\n progressiveEventRendering: Boolean,\n businessHours: identity,\n initialDate: identity,\n now: identity,\n eventDataTransform: identity,\n stickyHeaderDates: identity,\n stickyFooterScrollbar: identity,\n viewHeight: identity,\n defaultAllDay: Boolean,\n eventSourceFailure: identity,\n eventSourceSuccess: identity,\n eventDisplay: String,\n eventStartEditable: Boolean,\n eventDurationEditable: Boolean,\n eventOverlap: identity,\n eventConstraint: identity,\n eventAllow: identity,\n eventBackgroundColor: String,\n eventBorderColor: String,\n eventTextColor: String,\n eventColor: String,\n eventClassNames: identity,\n eventContent: identity,\n eventDidMount: identity,\n eventWillUnmount: identity,\n selectConstraint: identity,\n selectOverlap: identity,\n selectAllow: identity,\n droppable: Boolean,\n unselectCancel: String,\n slotLabelFormat: identity,\n slotLaneClassNames: identity,\n slotLaneContent: identity,\n slotLaneDidMount: identity,\n slotLaneWillUnmount: identity,\n slotLabelClassNames: identity,\n slotLabelContent: identity,\n slotLabelDidMount: identity,\n slotLabelWillUnmount: identity,\n dayMaxEvents: identity,\n dayMaxEventRows: identity,\n dayMinWidth: Number,\n slotLabelInterval: createDuration,\n allDayText: String,\n allDayClassNames: identity,\n allDayContent: identity,\n allDayDidMount: identity,\n allDayWillUnmount: identity,\n slotMinWidth: Number,\n navLinks: Boolean,\n eventTimeFormat: createFormatter,\n rerenderDelay: Number,\n moreLinkText: identity,\n moreLinkHint: identity,\n selectMinDistance: Number,\n selectable: Boolean,\n selectLongPressDelay: Number,\n eventLongPressDelay: Number,\n selectMirror: Boolean,\n eventMaxStack: Number,\n eventMinHeight: Number,\n eventMinWidth: Number,\n eventShortHeight: Number,\n slotEventOverlap: Boolean,\n plugins: identity,\n firstDay: Number,\n dayCount: Number,\n dateAlignment: String,\n dateIncrement: createDuration,\n hiddenDays: identity,\n monthMode: Boolean,\n fixedWeekCount: Boolean,\n validRange: identity,\n visibleRange: identity,\n titleFormat: identity,\n eventInteractive: Boolean,\n // only used by list-view, but languages define the value, so we need it in base options\n noEventsText: String,\n viewHint: identity,\n navLinkHint: identity,\n closeHint: String,\n timeHint: String,\n eventHint: String,\n moreLinkClick: identity,\n moreLinkClassNames: identity,\n moreLinkContent: identity,\n moreLinkDidMount: identity,\n moreLinkWillUnmount: identity,\n};\n// do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results.\n// raw values.\nvar BASE_OPTION_DEFAULTS = {\n eventDisplay: 'auto',\n defaultRangeSeparator: ' - ',\n titleRangeSeparator: ' \\u2013 ',\n defaultTimedEventDuration: '01:00:00',\n defaultAllDayEventDuration: { day: 1 },\n forceEventDuration: false,\n nextDayThreshold: '00:00:00',\n dayHeaders: true,\n initialView: '',\n aspectRatio: 1.35,\n headerToolbar: {\n start: 'title',\n center: '',\n end: 'today prev,next',\n },\n weekends: true,\n weekNumbers: false,\n weekNumberCalculation: 'local',\n editable: false,\n nowIndicator: false,\n scrollTime: '06:00:00',\n scrollTimeReset: true,\n slotMinTime: '00:00:00',\n slotMaxTime: '24:00:00',\n showNonCurrentDates: true,\n lazyFetching: true,\n startParam: 'start',\n endParam: 'end',\n timeZoneParam: 'timeZone',\n timeZone: 'local',\n locales: [],\n locale: '',\n themeSystem: 'standard',\n dragRevertDuration: 500,\n dragScroll: true,\n allDayMaintainDuration: false,\n unselectAuto: true,\n dropAccept: '*',\n eventOrder: 'start,-duration,allDay,title',\n dayPopoverFormat: { month: 'long', day: 'numeric', year: 'numeric' },\n handleWindowResize: true,\n windowResizeDelay: 100,\n longPressDelay: 1000,\n eventDragMinDistance: 5,\n expandRows: false,\n navLinks: false,\n selectable: false,\n eventMinHeight: 15,\n eventMinWidth: 30,\n eventShortHeight: 30,\n};\n// calendar listeners\n// ------------------\nvar CALENDAR_LISTENER_REFINERS = {\n datesSet: identity,\n eventsSet: identity,\n eventAdd: identity,\n eventChange: identity,\n eventRemove: identity,\n windowResize: identity,\n eventClick: identity,\n eventMouseEnter: identity,\n eventMouseLeave: identity,\n select: identity,\n unselect: identity,\n loading: identity,\n // internal\n _unmount: identity,\n _beforeprint: identity,\n _afterprint: identity,\n _noEventDrop: identity,\n _noEventResize: identity,\n _resize: identity,\n _scrollRequest: identity,\n};\n// calendar-specific options\n// -------------------------\nvar CALENDAR_OPTION_REFINERS = {\n buttonText: identity,\n buttonHints: identity,\n views: identity,\n plugins: identity,\n initialEvents: identity,\n events: identity,\n eventSources: identity,\n};\nvar COMPLEX_OPTION_COMPARATORS = {\n headerToolbar: isBoolComplexEqual,\n footerToolbar: isBoolComplexEqual,\n buttonText: isBoolComplexEqual,\n buttonHints: isBoolComplexEqual,\n buttonIcons: isBoolComplexEqual,\n};\nfunction isBoolComplexEqual(a, b) {\n if (typeof a === 'object' && typeof b === 'object' && a && b) { // both non-null objects\n return isPropsEqual(a, b);\n }\n return a === b;\n}\n// view-specific options\n// ---------------------\nvar VIEW_OPTION_REFINERS = {\n type: String,\n component: identity,\n buttonText: String,\n buttonTextKey: String,\n dateProfileGeneratorClass: identity,\n usesMinMaxTime: Boolean,\n classNames: identity,\n content: identity,\n didMount: identity,\n willUnmount: identity,\n};\n// util funcs\n// ----------------------------------------------------------------------------------------------------\nfunction mergeRawOptions(optionSets) {\n return mergeProps(optionSets, COMPLEX_OPTION_COMPARATORS);\n}\nfunction refineProps(input, refiners) {\n var refined = {};\n var extra = {};\n for (var propName in refiners) {\n if (propName in input) {\n refined[propName] = refiners[propName](input[propName]);\n }\n }\n for (var propName in input) {\n if (!(propName in refiners)) {\n extra[propName] = input[propName];\n }\n }\n return { refined: refined, extra: extra };\n}\nfunction identity(raw) {\n return raw;\n}\n\nfunction parseEvents(rawEvents, eventSource, context, allowOpenRange) {\n var eventStore = createEmptyEventStore();\n var eventRefiners = buildEventRefiners(context);\n for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) {\n var rawEvent = rawEvents_1[_i];\n var tuple = parseEvent(rawEvent, eventSource, context, allowOpenRange, eventRefiners);\n if (tuple) {\n eventTupleToStore(tuple, eventStore);\n }\n }\n return eventStore;\n}\nfunction eventTupleToStore(tuple, eventStore) {\n if (eventStore === void 0) { eventStore = createEmptyEventStore(); }\n eventStore.defs[tuple.def.defId] = tuple.def;\n if (tuple.instance) {\n eventStore.instances[tuple.instance.instanceId] = tuple.instance;\n }\n return eventStore;\n}\n// retrieves events that have the same groupId as the instance specified by `instanceId`\n// or they are the same as the instance.\n// why might instanceId not be in the store? an event from another calendar?\nfunction getRelevantEvents(eventStore, instanceId) {\n var instance = eventStore.instances[instanceId];\n if (instance) {\n var def_1 = eventStore.defs[instance.defId];\n // get events/instances with same group\n var newStore = filterEventStoreDefs(eventStore, function (lookDef) { return isEventDefsGrouped(def_1, lookDef); });\n // add the original\n // TODO: wish we could use eventTupleToStore or something like it\n newStore.defs[def_1.defId] = def_1;\n newStore.instances[instance.instanceId] = instance;\n return newStore;\n }\n return createEmptyEventStore();\n}\nfunction isEventDefsGrouped(def0, def1) {\n return Boolean(def0.groupId && def0.groupId === def1.groupId);\n}\nfunction createEmptyEventStore() {\n return { defs: {}, instances: {} };\n}\nfunction mergeEventStores(store0, store1) {\n return {\n defs: __assign(__assign({}, store0.defs), store1.defs),\n instances: __assign(__assign({}, store0.instances), store1.instances),\n };\n}\nfunction filterEventStoreDefs(eventStore, filterFunc) {\n var defs = filterHash(eventStore.defs, filterFunc);\n var instances = filterHash(eventStore.instances, function (instance) { return (defs[instance.defId] // still exists?\n ); });\n return { defs: defs, instances: instances };\n}\nfunction excludeSubEventStore(master, sub) {\n var defs = master.defs, instances = master.instances;\n var filteredDefs = {};\n var filteredInstances = {};\n for (var defId in defs) {\n if (!sub.defs[defId]) { // not explicitly excluded\n filteredDefs[defId] = defs[defId];\n }\n }\n for (var instanceId in instances) {\n if (!sub.instances[instanceId] && // not explicitly excluded\n filteredDefs[instances[instanceId].defId] // def wasn't filtered away\n ) {\n filteredInstances[instanceId] = instances[instanceId];\n }\n }\n return {\n defs: filteredDefs,\n instances: filteredInstances,\n };\n}\n\nfunction normalizeConstraint(input, context) {\n if (Array.isArray(input)) {\n return parseEvents(input, null, context, true); // allowOpenRange=true\n }\n if (typeof input === 'object' && input) { // non-null object\n return parseEvents([input], null, context, true); // allowOpenRange=true\n }\n if (input != null) {\n return String(input);\n }\n return null;\n}\n\nfunction parseClassNames(raw) {\n if (Array.isArray(raw)) {\n return raw;\n }\n if (typeof raw === 'string') {\n return raw.split(/\\s+/);\n }\n return [];\n}\n\n// TODO: better called \"EventSettings\" or \"EventConfig\"\n// TODO: move this file into structs\n// TODO: separate constraint/overlap/allow, because selection uses only that, not other props\nvar EVENT_UI_REFINERS = {\n display: String,\n editable: Boolean,\n startEditable: Boolean,\n durationEditable: Boolean,\n constraint: identity,\n overlap: identity,\n allow: identity,\n className: parseClassNames,\n classNames: parseClassNames,\n color: String,\n backgroundColor: String,\n borderColor: String,\n textColor: String,\n};\nvar EMPTY_EVENT_UI = {\n display: null,\n startEditable: null,\n durationEditable: null,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: [],\n};\nfunction createEventUi(refined, context) {\n var constraint = normalizeConstraint(refined.constraint, context);\n return {\n display: refined.display || null,\n startEditable: refined.startEditable != null ? refined.startEditable : refined.editable,\n durationEditable: refined.durationEditable != null ? refined.durationEditable : refined.editable,\n constraints: constraint != null ? [constraint] : [],\n overlap: refined.overlap != null ? refined.overlap : null,\n allows: refined.allow != null ? [refined.allow] : [],\n backgroundColor: refined.backgroundColor || refined.color || '',\n borderColor: refined.borderColor || refined.color || '',\n textColor: refined.textColor || '',\n classNames: (refined.className || []).concat(refined.classNames || []), // join singular and plural\n };\n}\n// TODO: prevent against problems with <2 args!\nfunction combineEventUis(uis) {\n return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);\n}\nfunction combineTwoEventUis(item0, item1) {\n return {\n display: item1.display != null ? item1.display : item0.display,\n startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,\n durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,\n constraints: item0.constraints.concat(item1.constraints),\n overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,\n allows: item0.allows.concat(item1.allows),\n backgroundColor: item1.backgroundColor || item0.backgroundColor,\n borderColor: item1.borderColor || item0.borderColor,\n textColor: item1.textColor || item0.textColor,\n classNames: item0.classNames.concat(item1.classNames),\n };\n}\n\nvar EVENT_NON_DATE_REFINERS = {\n id: String,\n groupId: String,\n title: String,\n url: String,\n interactive: Boolean,\n};\nvar EVENT_DATE_REFINERS = {\n start: identity,\n end: identity,\n date: identity,\n allDay: Boolean,\n};\nvar EVENT_REFINERS = __assign(__assign(__assign({}, EVENT_NON_DATE_REFINERS), EVENT_DATE_REFINERS), { extendedProps: identity });\nfunction parseEvent(raw, eventSource, context, allowOpenRange, refiners) {\n if (refiners === void 0) { refiners = buildEventRefiners(context); }\n var _a = refineEventDef(raw, context, refiners), refined = _a.refined, extra = _a.extra;\n var defaultAllDay = computeIsDefaultAllDay(eventSource, context);\n var recurringRes = parseRecurring(refined, defaultAllDay, context.dateEnv, context.pluginHooks.recurringTypes);\n if (recurringRes) {\n var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', recurringRes.allDay, Boolean(recurringRes.duration), context);\n def.recurringDef = {\n typeId: recurringRes.typeId,\n typeData: recurringRes.typeData,\n duration: recurringRes.duration,\n };\n return { def: def, instance: null };\n }\n var singleRes = parseSingle(refined, defaultAllDay, context, allowOpenRange);\n if (singleRes) {\n var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', singleRes.allDay, singleRes.hasEnd, context);\n var instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);\n return { def: def, instance: instance };\n }\n return null;\n}\nfunction refineEventDef(raw, context, refiners) {\n if (refiners === void 0) { refiners = buildEventRefiners(context); }\n return refineProps(raw, refiners);\n}\nfunction buildEventRefiners(context) {\n return __assign(__assign(__assign({}, EVENT_UI_REFINERS), EVENT_REFINERS), context.pluginHooks.eventRefiners);\n}\n/*\nWill NOT populate extendedProps with the leftover properties.\nWill NOT populate date-related props.\n*/\nfunction parseEventDef(refined, extra, sourceId, allDay, hasEnd, context) {\n var def = {\n title: refined.title || '',\n groupId: refined.groupId || '',\n publicId: refined.id || '',\n url: refined.url || '',\n recurringDef: null,\n defId: guid(),\n sourceId: sourceId,\n allDay: allDay,\n hasEnd: hasEnd,\n interactive: refined.interactive,\n ui: createEventUi(refined, context),\n extendedProps: __assign(__assign({}, (refined.extendedProps || {})), extra),\n };\n for (var _i = 0, _a = context.pluginHooks.eventDefMemberAdders; _i < _a.length; _i++) {\n var memberAdder = _a[_i];\n __assign(def, memberAdder(refined));\n }\n // help out EventApi from having user modify props\n Object.freeze(def.ui.classNames);\n Object.freeze(def.extendedProps);\n return def;\n}\nfunction parseSingle(refined, defaultAllDay, context, allowOpenRange) {\n var allDay = refined.allDay;\n var startMeta;\n var startMarker = null;\n var hasEnd = false;\n var endMeta;\n var endMarker = null;\n var startInput = refined.start != null ? refined.start : refined.date;\n startMeta = context.dateEnv.createMarkerMeta(startInput);\n if (startMeta) {\n startMarker = startMeta.marker;\n }\n else if (!allowOpenRange) {\n return null;\n }\n if (refined.end != null) {\n endMeta = context.dateEnv.createMarkerMeta(refined.end);\n }\n if (allDay == null) {\n if (defaultAllDay != null) {\n allDay = defaultAllDay;\n }\n else {\n // fall back to the date props LAST\n allDay = (!startMeta || startMeta.isTimeUnspecified) &&\n (!endMeta || endMeta.isTimeUnspecified);\n }\n }\n if (allDay && startMarker) {\n startMarker = startOfDay(startMarker);\n }\n if (endMeta) {\n endMarker = endMeta.marker;\n if (allDay) {\n endMarker = startOfDay(endMarker);\n }\n if (startMarker && endMarker <= startMarker) {\n endMarker = null;\n }\n }\n if (endMarker) {\n hasEnd = true;\n }\n else if (!allowOpenRange) {\n hasEnd = context.options.forceEventDuration || false;\n endMarker = context.dateEnv.add(startMarker, allDay ?\n context.options.defaultAllDayEventDuration :\n context.options.defaultTimedEventDuration);\n }\n return {\n allDay: allDay,\n hasEnd: hasEnd,\n range: { start: startMarker, end: endMarker },\n forcedStartTzo: startMeta ? startMeta.forcedTzo : null,\n forcedEndTzo: endMeta ? endMeta.forcedTzo : null,\n };\n}\nfunction computeIsDefaultAllDay(eventSource, context) {\n var res = null;\n if (eventSource) {\n res = eventSource.defaultAllDay;\n }\n if (res == null) {\n res = context.options.defaultAllDay;\n }\n return res;\n}\n\n/* Date stuff that doesn't belong in datelib core\n----------------------------------------------------------------------------------------------------------------------*/\n// given a timed range, computes an all-day range that has the same exact duration,\n// but whose start time is aligned with the start of the day.\nfunction computeAlignedDayRange(timedRange) {\n var dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1;\n var start = startOfDay(timedRange.start);\n var end = addDays(start, dayCnt);\n return { start: start, end: end };\n}\n// given a timed range, computes an all-day range based on how for the end date bleeds into the next day\n// TODO: give nextDayThreshold a default arg\nfunction computeVisibleDayRange(timedRange, nextDayThreshold) {\n if (nextDayThreshold === void 0) { nextDayThreshold = createDuration(0); }\n var startDay = null;\n var endDay = null;\n if (timedRange.end) {\n endDay = startOfDay(timedRange.end);\n var endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay`\n // If the end time is actually inclusively part of the next day and is equal to or\n // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {\n endDay = addDays(endDay, 1);\n }\n }\n if (timedRange.start) {\n startDay = startOfDay(timedRange.start); // the beginning of the day the range starts\n // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\n if (endDay && endDay <= startDay) {\n endDay = addDays(startDay, 1);\n }\n }\n return { start: startDay, end: endDay };\n}\n// spans from one day into another?\nfunction isMultiDayRange(range) {\n var visibleRange = computeVisibleDayRange(range);\n return diffDays(visibleRange.start, visibleRange.end) > 1;\n}\nfunction diffDates(date0, date1, dateEnv, largeUnit) {\n if (largeUnit === 'year') {\n return createDuration(dateEnv.diffWholeYears(date0, date1), 'year');\n }\n if (largeUnit === 'month') {\n return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');\n }\n return diffDayAndTime(date0, date1); // returns a duration\n}\n\nfunction parseRange(input, dateEnv) {\n var start = null;\n var end = null;\n if (input.start) {\n start = dateEnv.createMarker(input.start);\n }\n if (input.end) {\n end = dateEnv.createMarker(input.end);\n }\n if (!start && !end) {\n return null;\n }\n if (start && end && end < start) {\n return null;\n }\n return { start: start, end: end };\n}\n// SIDE-EFFECT: will mutate ranges.\n// Will return a new array result.\nfunction invertRanges(ranges, constraintRange) {\n var invertedRanges = [];\n var start = constraintRange.start; // the end of the previous range. the start of the new range\n var i;\n var dateRange;\n // ranges need to be in order. required for our date-walking algorithm\n ranges.sort(compareRanges);\n for (i = 0; i < ranges.length; i += 1) {\n dateRange = ranges[i];\n // add the span of time before the event (if there is any)\n if (dateRange.start > start) { // compare millisecond time (skip any ambig logic)\n invertedRanges.push({ start: start, end: dateRange.start });\n }\n if (dateRange.end > start) {\n start = dateRange.end;\n }\n }\n // add the span of time after the last event (if there is any)\n if (start < constraintRange.end) { // compare millisecond time (skip any ambig logic)\n invertedRanges.push({ start: start, end: constraintRange.end });\n }\n return invertedRanges;\n}\nfunction compareRanges(range0, range1) {\n return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first\n}\nfunction intersectRanges(range0, range1) {\n var start = range0.start, end = range0.end;\n var newRange = null;\n if (range1.start !== null) {\n if (start === null) {\n start = range1.start;\n }\n else {\n start = new Date(Math.max(start.valueOf(), range1.start.valueOf()));\n }\n }\n if (range1.end != null) {\n if (end === null) {\n end = range1.end;\n }\n else {\n end = new Date(Math.min(end.valueOf(), range1.end.valueOf()));\n }\n }\n if (start === null || end === null || start < end) {\n newRange = { start: start, end: end };\n }\n return newRange;\n}\nfunction rangesEqual(range0, range1) {\n return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) &&\n (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf());\n}\nfunction rangesIntersect(range0, range1) {\n return (range0.end === null || range1.start === null || range0.end > range1.start) &&\n (range0.start === null || range1.end === null || range0.start < range1.end);\n}\nfunction rangeContainsRange(outerRange, innerRange) {\n return (outerRange.start === null || (innerRange.start !== null && innerRange.start >= outerRange.start)) &&\n (outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end));\n}\nfunction rangeContainsMarker(range, date) {\n return (range.start === null || date >= range.start) &&\n (range.end === null || date < range.end);\n}\n// If the given date is not within the given range, move it inside.\n// (If it's past the end, make it one millisecond before the end).\nfunction constrainMarkerToRange(date, range) {\n if (range.start != null && date < range.start) {\n return range.start;\n }\n if (range.end != null && date >= range.end) {\n return new Date(range.end.valueOf() - 1);\n }\n return date;\n}\n\n/*\nSpecifying nextDayThreshold signals that all-day ranges should be sliced.\n*/\nfunction sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) {\n var inverseBgByGroupId = {};\n var inverseBgByDefId = {};\n var defByGroupId = {};\n var bgRanges = [];\n var fgRanges = [];\n var eventUis = compileEventUis(eventStore.defs, eventUiBases);\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n var ui = eventUis[def.defId];\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId] = [];\n if (!defByGroupId[def.groupId]) {\n defByGroupId[def.groupId] = def;\n }\n }\n else {\n inverseBgByDefId[defId] = [];\n }\n }\n }\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = eventStore.defs[instance.defId];\n var ui = eventUis[def.defId];\n var origRange = instance.range;\n var normalRange = (!def.allDay && nextDayThreshold) ?\n computeVisibleDayRange(origRange, nextDayThreshold) :\n origRange;\n var slicedRange = intersectRanges(normalRange, framingRange);\n if (slicedRange) {\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId].push(slicedRange);\n }\n else {\n inverseBgByDefId[instance.defId].push(slicedRange);\n }\n }\n else if (ui.display !== 'none') {\n (ui.display === 'background' ? bgRanges : fgRanges).push({\n def: def,\n ui: ui,\n instance: instance,\n range: slicedRange,\n isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),\n isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf(),\n });\n }\n }\n }\n for (var groupId in inverseBgByGroupId) { // BY GROUP\n var ranges = inverseBgByGroupId[groupId];\n var invertedRanges = invertRanges(ranges, framingRange);\n for (var _i = 0, invertedRanges_1 = invertedRanges; _i < invertedRanges_1.length; _i++) {\n var invertedRange = invertedRanges_1[_i];\n var def = defByGroupId[groupId];\n var ui = eventUis[def.defId];\n bgRanges.push({\n def: def,\n ui: ui,\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false,\n });\n }\n }\n for (var defId in inverseBgByDefId) {\n var ranges = inverseBgByDefId[defId];\n var invertedRanges = invertRanges(ranges, framingRange);\n for (var _a = 0, invertedRanges_2 = invertedRanges; _a < invertedRanges_2.length; _a++) {\n var invertedRange = invertedRanges_2[_a];\n bgRanges.push({\n def: eventStore.defs[defId],\n ui: eventUis[defId],\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false,\n });\n }\n }\n return { bg: bgRanges, fg: fgRanges };\n}\nfunction hasBgRendering(def) {\n return def.ui.display === 'background' || def.ui.display === 'inverse-background';\n}\nfunction setElSeg(el, seg) {\n el.fcSeg = seg;\n}\nfunction getElSeg(el) {\n return el.fcSeg ||\n el.parentNode.fcSeg || // for the harness\n null;\n}\n// event ui computation\nfunction compileEventUis(eventDefs, eventUiBases) {\n return mapHash(eventDefs, function (eventDef) { return compileEventUi(eventDef, eventUiBases); });\n}\nfunction compileEventUi(eventDef, eventUiBases) {\n var uis = [];\n if (eventUiBases['']) {\n uis.push(eventUiBases['']);\n }\n if (eventUiBases[eventDef.defId]) {\n uis.push(eventUiBases[eventDef.defId]);\n }\n uis.push(eventDef.ui);\n return combineEventUis(uis);\n}\nfunction sortEventSegs(segs, eventOrderSpecs) {\n var objs = segs.map(buildSegCompareObj);\n objs.sort(function (obj0, obj1) { return compareByFieldSpecs(obj0, obj1, eventOrderSpecs); });\n return objs.map(function (c) { return c._seg; });\n}\n// returns a object with all primitive props that can be compared\nfunction buildSegCompareObj(seg) {\n var eventRange = seg.eventRange;\n var eventDef = eventRange.def;\n var range = eventRange.instance ? eventRange.instance.range : eventRange.range;\n var start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events\n var end = range.end ? range.end.valueOf() : 0; // \"\n return __assign(__assign(__assign({}, eventDef.extendedProps), eventDef), { id: eventDef.publicId, start: start,\n end: end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg });\n}\nfunction computeSegDraggable(seg, context) {\n var pluginHooks = context.pluginHooks;\n var transformers = pluginHooks.isDraggableTransformers;\n var _a = seg.eventRange, def = _a.def, ui = _a.ui;\n var val = ui.startEditable;\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n val = transformer(val, def, ui, context);\n }\n return val;\n}\nfunction computeSegStartResizable(seg, context) {\n return seg.isStart && seg.eventRange.ui.durationEditable && context.options.eventResizableFromStart;\n}\nfunction computeSegEndResizable(seg, context) {\n return seg.isEnd && seg.eventRange.ui.durationEditable;\n}\nfunction buildSegTimeText(seg, timeFormat, context, defaultDisplayEventTime, // defaults to true\ndefaultDisplayEventEnd, // defaults to true\nstartOverride, endOverride) {\n var dateEnv = context.dateEnv, options = context.options;\n var displayEventTime = options.displayEventTime, displayEventEnd = options.displayEventEnd;\n var eventDef = seg.eventRange.def;\n var eventInstance = seg.eventRange.instance;\n if (displayEventTime == null) {\n displayEventTime = defaultDisplayEventTime !== false;\n }\n if (displayEventEnd == null) {\n displayEventEnd = defaultDisplayEventEnd !== false;\n }\n var wholeEventStart = eventInstance.range.start;\n var wholeEventEnd = eventInstance.range.end;\n var segStart = startOverride || seg.start || seg.eventRange.range.start;\n var segEnd = endOverride || seg.end || seg.eventRange.range.end;\n var isStartDay = startOfDay(wholeEventStart).valueOf() === startOfDay(segStart).valueOf();\n var isEndDay = startOfDay(addMs(wholeEventEnd, -1)).valueOf() === startOfDay(addMs(segEnd, -1)).valueOf();\n if (displayEventTime && !eventDef.allDay && (isStartDay || isEndDay)) {\n segStart = isStartDay ? wholeEventStart : segStart;\n segEnd = isEndDay ? wholeEventEnd : segEnd;\n if (displayEventEnd && eventDef.hasEnd) {\n return dateEnv.formatRange(segStart, segEnd, timeFormat, {\n forcedStartTzo: startOverride ? null : eventInstance.forcedStartTzo,\n forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo,\n });\n }\n return dateEnv.format(segStart, timeFormat, {\n forcedTzo: startOverride ? null : eventInstance.forcedStartTzo, // nooooo, same\n });\n }\n return '';\n}\nfunction getSegMeta(seg, todayRange, nowDate) {\n var segRange = seg.eventRange.range;\n return {\n isPast: segRange.end < (nowDate || todayRange.start),\n isFuture: segRange.start >= (nowDate || todayRange.end),\n isToday: todayRange && rangeContainsMarker(todayRange, segRange.start),\n };\n}\nfunction getEventClassNames(props) {\n var classNames = ['fc-event'];\n if (props.isMirror) {\n classNames.push('fc-event-mirror');\n }\n if (props.isDraggable) {\n classNames.push('fc-event-draggable');\n }\n if (props.isStartResizable || props.isEndResizable) {\n classNames.push('fc-event-resizable');\n }\n if (props.isDragging) {\n classNames.push('fc-event-dragging');\n }\n if (props.isResizing) {\n classNames.push('fc-event-resizing');\n }\n if (props.isSelected) {\n classNames.push('fc-event-selected');\n }\n if (props.isStart) {\n classNames.push('fc-event-start');\n }\n if (props.isEnd) {\n classNames.push('fc-event-end');\n }\n if (props.isPast) {\n classNames.push('fc-event-past');\n }\n if (props.isToday) {\n classNames.push('fc-event-today');\n }\n if (props.isFuture) {\n classNames.push('fc-event-future');\n }\n return classNames;\n}\nfunction buildEventRangeKey(eventRange) {\n return eventRange.instance\n ? eventRange.instance.instanceId\n : eventRange.def.defId + \":\" + eventRange.range.start.toISOString();\n // inverse-background events don't have specific instances. TODO: better solution\n}\nfunction getSegAnchorAttrs(seg, context) {\n var _a = seg.eventRange, def = _a.def, instance = _a.instance;\n var url = def.url;\n if (url) {\n return { href: url };\n }\n var emitter = context.emitter, options = context.options;\n var eventInteractive = options.eventInteractive;\n if (eventInteractive == null) {\n eventInteractive = def.interactive;\n if (eventInteractive == null) {\n eventInteractive = Boolean(emitter.hasHandlers('eventClick'));\n }\n }\n // mock what happens in EventClicking\n if (eventInteractive) {\n // only attach keyboard-related handlers because click handler is already done in EventClicking\n return createAriaKeyboardAttrs(function (ev) {\n emitter.trigger('eventClick', {\n el: ev.target,\n event: new EventApi(context, def, instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n });\n }\n return {};\n}\n\nvar STANDARD_PROPS = {\n start: identity,\n end: identity,\n allDay: Boolean,\n};\nfunction parseDateSpan(raw, dateEnv, defaultDuration) {\n var span = parseOpenDateSpan(raw, dateEnv);\n var range = span.range;\n if (!range.start) {\n return null;\n }\n if (!range.end) {\n if (defaultDuration == null) {\n return null;\n }\n range.end = dateEnv.add(range.start, defaultDuration);\n }\n return span;\n}\n/*\nTODO: somehow combine with parseRange?\nWill return null if the start/end props were present but parsed invalidly.\n*/\nfunction parseOpenDateSpan(raw, dateEnv) {\n var _a = refineProps(raw, STANDARD_PROPS), standardProps = _a.refined, extra = _a.extra;\n var startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null;\n var endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null;\n var allDay = standardProps.allDay;\n if (allDay == null) {\n allDay = (startMeta && startMeta.isTimeUnspecified) &&\n (!endMeta || endMeta.isTimeUnspecified);\n }\n return __assign({ range: {\n start: startMeta ? startMeta.marker : null,\n end: endMeta ? endMeta.marker : null,\n }, allDay: allDay }, extra);\n}\nfunction isDateSpansEqual(span0, span1) {\n return rangesEqual(span0.range, span1.range) &&\n span0.allDay === span1.allDay &&\n isSpanPropsEqual(span0, span1);\n}\n// the NON-DATE-RELATED props\nfunction isSpanPropsEqual(span0, span1) {\n for (var propName in span1) {\n if (propName !== 'range' && propName !== 'allDay') {\n if (span0[propName] !== span1[propName]) {\n return false;\n }\n }\n }\n // are there any props that span0 has that span1 DOESN'T have?\n // both have range/allDay, so no need to special-case.\n for (var propName in span0) {\n if (!(propName in span1)) {\n return false;\n }\n }\n return true;\n}\nfunction buildDateSpanApi(span, dateEnv) {\n return __assign(__assign({}, buildRangeApi(span.range, dateEnv, span.allDay)), { allDay: span.allDay });\n}\nfunction buildRangeApiWithTimeZone(range, dateEnv, omitTime) {\n return __assign(__assign({}, buildRangeApi(range, dateEnv, omitTime)), { timeZone: dateEnv.timeZone });\n}\nfunction buildRangeApi(range, dateEnv, omitTime) {\n return {\n start: dateEnv.toDate(range.start),\n end: dateEnv.toDate(range.end),\n startStr: dateEnv.formatIso(range.start, { omitTime: omitTime }),\n endStr: dateEnv.formatIso(range.end, { omitTime: omitTime }),\n };\n}\nfunction fabricateEventRange(dateSpan, eventUiBases, context) {\n var res = refineEventDef({ editable: false }, context);\n var def = parseEventDef(res.refined, res.extra, '', // sourceId\n dateSpan.allDay, true, // hasEnd\n context);\n return {\n def: def,\n ui: compileEventUi(def, eventUiBases),\n instance: createEventInstance(def.defId, dateSpan.range),\n range: dateSpan.range,\n isStart: true,\n isEnd: true,\n };\n}\n\nfunction triggerDateSelect(selection, pev, context) {\n context.emitter.trigger('select', __assign(__assign({}, buildDateSpanApiWithContext(selection, context)), { jsEvent: pev ? pev.origEvent : null, view: context.viewApi || context.calendarApi.view }));\n}\nfunction triggerDateUnselect(pev, context) {\n context.emitter.trigger('unselect', {\n jsEvent: pev ? pev.origEvent : null,\n view: context.viewApi || context.calendarApi.view,\n });\n}\nfunction buildDateSpanApiWithContext(dateSpan, context) {\n var props = {};\n for (var _i = 0, _a = context.pluginHooks.dateSpanTransforms; _i < _a.length; _i++) {\n var transform = _a[_i];\n __assign(props, transform(dateSpan, context));\n }\n __assign(props, buildDateSpanApi(dateSpan, context.dateEnv));\n return props;\n}\n// Given an event's allDay status and start date, return what its fallback end date should be.\n// TODO: rename to computeDefaultEventEnd\nfunction getDefaultEventEnd(allDay, marker, context) {\n var dateEnv = context.dateEnv, options = context.options;\n var end = marker;\n if (allDay) {\n end = startOfDay(end);\n end = dateEnv.add(end, options.defaultAllDayEventDuration);\n }\n else {\n end = dateEnv.add(end, options.defaultTimedEventDuration);\n }\n return end;\n}\n\n// applies the mutation to ALL defs/instances within the event store\nfunction applyMutationToEventStore(eventStore, eventConfigBase, mutation, context) {\n var eventConfigs = compileEventUis(eventStore.defs, eventConfigBase);\n var dest = createEmptyEventStore();\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, context);\n }\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = dest.defs[instance.defId]; // important to grab the newly modified def\n dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, context);\n }\n return dest;\n}\nfunction applyMutationToEventDef(eventDef, eventConfig, mutation, context) {\n var standardProps = mutation.standardProps || {};\n // if hasEnd has not been specified, guess a good value based on deltas.\n // if duration will change, there's no way the default duration will persist,\n // and thus, we need to mark the event as having a real end\n if (standardProps.hasEnd == null &&\n eventConfig.durationEditable &&\n (mutation.startDelta || mutation.endDelta)) {\n standardProps.hasEnd = true; // TODO: is this mutation okay?\n }\n var copy = __assign(__assign(__assign({}, eventDef), standardProps), { ui: __assign(__assign({}, eventDef.ui), standardProps.ui) });\n if (mutation.extendedProps) {\n copy.extendedProps = __assign(__assign({}, copy.extendedProps), mutation.extendedProps);\n }\n for (var _i = 0, _a = context.pluginHooks.eventDefMutationAppliers; _i < _a.length; _i++) {\n var applier = _a[_i];\n applier(copy, mutation, context);\n }\n if (!copy.hasEnd && context.options.forceEventDuration) {\n copy.hasEnd = true;\n }\n return copy;\n}\nfunction applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef\neventConfig, mutation, context) {\n var dateEnv = context.dateEnv;\n var forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true;\n var clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false;\n var copy = __assign({}, eventInstance);\n if (forceAllDay) {\n copy.range = computeAlignedDayRange(copy.range);\n }\n if (mutation.datesDelta && eventConfig.startEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.datesDelta),\n end: dateEnv.add(copy.range.end, mutation.datesDelta),\n };\n }\n if (mutation.startDelta && eventConfig.durationEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.startDelta),\n end: copy.range.end,\n };\n }\n if (mutation.endDelta && eventConfig.durationEditable) {\n copy.range = {\n start: copy.range.start,\n end: dateEnv.add(copy.range.end, mutation.endDelta),\n };\n }\n if (clearEnd) {\n copy.range = {\n start: copy.range.start,\n end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context),\n };\n }\n // in case event was all-day but the supplied deltas were not\n // better util for this?\n if (eventDef.allDay) {\n copy.range = {\n start: startOfDay(copy.range.start),\n end: startOfDay(copy.range.end),\n };\n }\n // handle invalid durations\n if (copy.range.end < copy.range.start) {\n copy.range.end = getDefaultEventEnd(eventDef.allDay, copy.range.start, context);\n }\n return copy;\n}\n\n// no public types yet. when there are, export from:\n// import {} from './api-type-deps'\nvar ViewApi = /** @class */ (function () {\n function ViewApi(type, getCurrentData, dateEnv) {\n this.type = type;\n this.getCurrentData = getCurrentData;\n this.dateEnv = dateEnv;\n }\n Object.defineProperty(ViewApi.prototype, \"calendar\", {\n get: function () {\n return this.getCurrentData().calendarApi;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"title\", {\n get: function () {\n return this.getCurrentData().viewTitle;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"activeStart\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"activeEnd\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"currentStart\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"currentEnd\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);\n },\n enumerable: false,\n configurable: true\n });\n ViewApi.prototype.getOption = function (name) {\n return this.getCurrentData().options[name]; // are the view-specific options\n };\n return ViewApi;\n}());\n\nvar EVENT_SOURCE_REFINERS = {\n id: String,\n defaultAllDay: Boolean,\n url: String,\n format: String,\n events: identity,\n eventDataTransform: identity,\n // for any network-related sources\n success: identity,\n failure: identity,\n};\nfunction parseEventSource(raw, context, refiners) {\n if (refiners === void 0) { refiners = buildEventSourceRefiners(context); }\n var rawObj;\n if (typeof raw === 'string') {\n rawObj = { url: raw };\n }\n else if (typeof raw === 'function' || Array.isArray(raw)) {\n rawObj = { events: raw };\n }\n else if (typeof raw === 'object' && raw) { // not null\n rawObj = raw;\n }\n if (rawObj) {\n var _a = refineProps(rawObj, refiners), refined = _a.refined, extra = _a.extra;\n var metaRes = buildEventSourceMeta(refined, context);\n if (metaRes) {\n return {\n _raw: raw,\n isFetching: false,\n latestFetchId: '',\n fetchRange: null,\n defaultAllDay: refined.defaultAllDay,\n eventDataTransform: refined.eventDataTransform,\n success: refined.success,\n failure: refined.failure,\n publicId: refined.id || '',\n sourceId: guid(),\n sourceDefId: metaRes.sourceDefId,\n meta: metaRes.meta,\n ui: createEventUi(refined, context),\n extendedProps: extra,\n };\n }\n }\n return null;\n}\nfunction buildEventSourceRefiners(context) {\n return __assign(__assign(__assign({}, EVENT_UI_REFINERS), EVENT_SOURCE_REFINERS), context.pluginHooks.eventSourceRefiners);\n}\nfunction buildEventSourceMeta(raw, context) {\n var defs = context.pluginHooks.eventSourceDefs;\n for (var i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence\n var def = defs[i];\n var meta = def.parseMeta(raw);\n if (meta) {\n return { sourceDefId: i, meta: meta };\n }\n }\n return null;\n}\n\nfunction reduceCurrentDate(currentDate, action) {\n switch (action.type) {\n case 'CHANGE_DATE':\n return action.dateMarker;\n default:\n return currentDate;\n }\n}\nfunction getInitialDate(options, dateEnv) {\n var initialDateInput = options.initialDate;\n // compute the initial ambig-timezone date\n if (initialDateInput != null) {\n return dateEnv.createMarker(initialDateInput);\n }\n return getNow(options.now, dateEnv); // getNow already returns unzoned\n}\nfunction getNow(nowInput, dateEnv) {\n if (typeof nowInput === 'function') {\n nowInput = nowInput();\n }\n if (nowInput == null) {\n return dateEnv.createNowMarker();\n }\n return dateEnv.createMarker(nowInput);\n}\n\nvar CalendarApi = /** @class */ (function () {\n function CalendarApi() {\n }\n CalendarApi.prototype.getCurrentData = function () {\n return this.currentDataManager.getCurrentData();\n };\n CalendarApi.prototype.dispatch = function (action) {\n return this.currentDataManager.dispatch(action);\n };\n Object.defineProperty(CalendarApi.prototype, \"view\", {\n get: function () { return this.getCurrentData().viewApi; } // for public API\n ,\n enumerable: false,\n configurable: true\n });\n CalendarApi.prototype.batchRendering = function (callback) {\n callback();\n };\n CalendarApi.prototype.updateSize = function () {\n this.trigger('_resize', true);\n };\n // Options\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.setOption = function (name, val) {\n this.dispatch({\n type: 'SET_OPTION',\n optionName: name,\n rawOptionValue: val,\n });\n };\n CalendarApi.prototype.getOption = function (name) {\n return this.currentDataManager.currentCalendarOptionsInput[name];\n };\n CalendarApi.prototype.getAvailableLocaleCodes = function () {\n return Object.keys(this.getCurrentData().availableRawLocales);\n };\n // Trigger\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.on = function (handlerName, handler) {\n var currentDataManager = this.currentDataManager;\n if (currentDataManager.currentCalendarOptionsRefiners[handlerName]) {\n currentDataManager.emitter.on(handlerName, handler);\n }\n else {\n console.warn(\"Unknown listener name '\" + handlerName + \"'\");\n }\n };\n CalendarApi.prototype.off = function (handlerName, handler) {\n this.currentDataManager.emitter.off(handlerName, handler);\n };\n // not meant for public use\n CalendarApi.prototype.trigger = function (handlerName) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n (_a = this.currentDataManager.emitter).trigger.apply(_a, __spreadArray([handlerName], args));\n };\n // View\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.changeView = function (viewType, dateOrRange) {\n var _this = this;\n this.batchRendering(function () {\n _this.unselect();\n if (dateOrRange) {\n if (dateOrRange.start && dateOrRange.end) { // a range\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType,\n });\n _this.dispatch({\n type: 'SET_OPTION',\n optionName: 'visibleRange',\n rawOptionValue: dateOrRange,\n });\n }\n else {\n var dateEnv = _this.getCurrentData().dateEnv;\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType,\n dateMarker: dateEnv.createMarker(dateOrRange),\n });\n }\n }\n else {\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType,\n });\n }\n });\n };\n // Forces navigation to a view for the given date.\n // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n // needs to change\n CalendarApi.prototype.zoomTo = function (dateMarker, viewType) {\n var state = this.getCurrentData();\n var spec;\n viewType = viewType || 'day'; // day is default zoom\n spec = state.viewSpecs[viewType] || this.getUnitViewSpec(viewType);\n this.unselect();\n if (spec) {\n this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: spec.type,\n dateMarker: dateMarker,\n });\n }\n else {\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: dateMarker,\n });\n }\n };\n // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n // Preference is given to views that have corresponding buttons.\n CalendarApi.prototype.getUnitViewSpec = function (unit) {\n var _a = this.getCurrentData(), viewSpecs = _a.viewSpecs, toolbarConfig = _a.toolbarConfig;\n var viewTypes = [].concat(toolbarConfig.header ? toolbarConfig.header.viewsWithButtons : [], toolbarConfig.footer ? toolbarConfig.footer.viewsWithButtons : []);\n var i;\n var spec;\n for (var viewType in viewSpecs) {\n viewTypes.push(viewType);\n }\n for (i = 0; i < viewTypes.length; i += 1) {\n spec = viewSpecs[viewTypes[i]];\n if (spec) {\n if (spec.singleUnit === unit) {\n return spec;\n }\n }\n }\n return null;\n };\n // Current Date\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.prev = function () {\n this.unselect();\n this.dispatch({ type: 'PREV' });\n };\n CalendarApi.prototype.next = function () {\n this.unselect();\n this.dispatch({ type: 'NEXT' });\n };\n CalendarApi.prototype.prevYear = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, -1),\n });\n };\n CalendarApi.prototype.nextYear = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, 1),\n });\n };\n CalendarApi.prototype.today = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: getNow(state.calendarOptions.now, state.dateEnv),\n });\n };\n CalendarApi.prototype.gotoDate = function (zonedDateInput) {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.createMarker(zonedDateInput),\n });\n };\n CalendarApi.prototype.incrementDate = function (deltaInput) {\n var state = this.getCurrentData();\n var delta = createDuration(deltaInput);\n if (delta) { // else, warn about invalid input?\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.add(state.currentDate, delta),\n });\n }\n };\n // for external API\n CalendarApi.prototype.getDate = function () {\n var state = this.getCurrentData();\n return state.dateEnv.toDate(state.currentDate);\n };\n // Date Formatting Utils\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.formatDate = function (d, formatter) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter));\n };\n // `settings` is for formatter AND isEndExclusive\n CalendarApi.prototype.formatRange = function (d0, d1, settings) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings), settings);\n };\n CalendarApi.prototype.formatIso = function (d, omitTime) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime: omitTime });\n };\n // Date Selection / Event Selection / DayClick\n // -----------------------------------------------------------------------------------------------------------------\n // this public method receives start/end dates in any format, with any timezone\n // NOTE: args were changed from v3\n CalendarApi.prototype.select = function (dateOrObj, endDate) {\n var selectionInput;\n if (endDate == null) {\n if (dateOrObj.start != null) {\n selectionInput = dateOrObj;\n }\n else {\n selectionInput = {\n start: dateOrObj,\n end: null,\n };\n }\n }\n else {\n selectionInput = {\n start: dateOrObj,\n end: endDate,\n };\n }\n var state = this.getCurrentData();\n var selection = parseDateSpan(selectionInput, state.dateEnv, createDuration({ days: 1 }));\n if (selection) { // throw parse error otherwise?\n this.dispatch({ type: 'SELECT_DATES', selection: selection });\n triggerDateSelect(selection, null, state);\n }\n };\n // public method\n CalendarApi.prototype.unselect = function (pev) {\n var state = this.getCurrentData();\n if (state.dateSelection) {\n this.dispatch({ type: 'UNSELECT_DATES' });\n triggerDateUnselect(pev, state);\n }\n };\n // Public Events API\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.addEvent = function (eventInput, sourceInput) {\n if (eventInput instanceof EventApi) {\n var def = eventInput._def;\n var instance = eventInput._instance;\n var currentData = this.getCurrentData();\n // not already present? don't want to add an old snapshot\n if (!currentData.eventStore.defs[def.defId]) {\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore({ def: def, instance: instance }), // TODO: better util for two args?\n });\n this.triggerEventAdd(eventInput);\n }\n return eventInput;\n }\n var state = this.getCurrentData();\n var eventSource;\n if (sourceInput instanceof EventSourceApi) {\n eventSource = sourceInput.internalEventSource;\n }\n else if (typeof sourceInput === 'boolean') {\n if (sourceInput) { // true. part of the first event source\n eventSource = hashValuesToArray(state.eventSources)[0];\n }\n }\n else if (sourceInput != null) { // an ID. accepts a number too\n var sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function\n if (!sourceApi) {\n console.warn(\"Could not find an event source with ID \\\"\" + sourceInput + \"\\\"\"); // TODO: test\n return null;\n }\n eventSource = sourceApi.internalEventSource;\n }\n var tuple = parseEvent(eventInput, eventSource, state, false);\n if (tuple) {\n var newEventApi = new EventApi(state, tuple.def, tuple.def.recurringDef ? null : tuple.instance);\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore(tuple),\n });\n this.triggerEventAdd(newEventApi);\n return newEventApi;\n }\n return null;\n };\n CalendarApi.prototype.triggerEventAdd = function (eventApi) {\n var _this = this;\n var emitter = this.getCurrentData().emitter;\n emitter.trigger('eventAdd', {\n event: eventApi,\n relatedEvents: [],\n revert: function () {\n _this.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: eventApiToStore(eventApi),\n });\n },\n });\n };\n // TODO: optimize\n CalendarApi.prototype.getEventById = function (id) {\n var state = this.getCurrentData();\n var _a = state.eventStore, defs = _a.defs, instances = _a.instances;\n id = String(id);\n for (var defId in defs) {\n var def = defs[defId];\n if (def.publicId === id) {\n if (def.recurringDef) {\n return new EventApi(state, def, null);\n }\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n if (instance.defId === def.defId) {\n return new EventApi(state, def, instance);\n }\n }\n }\n }\n return null;\n };\n CalendarApi.prototype.getEvents = function () {\n var currentData = this.getCurrentData();\n return buildEventApis(currentData.eventStore, currentData);\n };\n CalendarApi.prototype.removeAllEvents = function () {\n this.dispatch({ type: 'REMOVE_ALL_EVENTS' });\n };\n // Public Event Sources API\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.getEventSources = function () {\n var state = this.getCurrentData();\n var sourceHash = state.eventSources;\n var sourceApis = [];\n for (var internalId in sourceHash) {\n sourceApis.push(new EventSourceApi(state, sourceHash[internalId]));\n }\n return sourceApis;\n };\n CalendarApi.prototype.getEventSourceById = function (id) {\n var state = this.getCurrentData();\n var sourceHash = state.eventSources;\n id = String(id);\n for (var sourceId in sourceHash) {\n if (sourceHash[sourceId].publicId === id) {\n return new EventSourceApi(state, sourceHash[sourceId]);\n }\n }\n return null;\n };\n CalendarApi.prototype.addEventSource = function (sourceInput) {\n var state = this.getCurrentData();\n if (sourceInput instanceof EventSourceApi) {\n // not already present? don't want to add an old snapshot\n if (!state.eventSources[sourceInput.internalEventSource.sourceId]) {\n this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: [sourceInput.internalEventSource],\n });\n }\n return sourceInput;\n }\n var eventSource = parseEventSource(sourceInput, state);\n if (eventSource) { // TODO: error otherwise?\n this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] });\n return new EventSourceApi(state, eventSource);\n }\n return null;\n };\n CalendarApi.prototype.removeAllEventSources = function () {\n this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' });\n };\n CalendarApi.prototype.refetchEvents = function () {\n this.dispatch({ type: 'FETCH_EVENT_SOURCES', isRefetch: true });\n };\n // Scroll\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.scrollToTime = function (timeInput) {\n var time = createDuration(timeInput);\n if (time) {\n this.trigger('_scrollRequest', { time: time });\n }\n };\n return CalendarApi;\n}());\n\nvar EventApi = /** @class */ (function () {\n // instance will be null if expressing a recurring event that has no current instances,\n // OR if trying to validate an incoming external event that has no dates assigned\n function EventApi(context, def, instance) {\n this._context = context;\n this._def = def;\n this._instance = instance || null;\n }\n /*\n TODO: make event struct more responsible for this\n */\n EventApi.prototype.setProp = function (name, val) {\n var _a, _b;\n if (name in EVENT_DATE_REFINERS) {\n console.warn('Could not set date-related prop \\'name\\'. Use one of the date-related methods instead.');\n // TODO: make proper aliasing system?\n }\n else if (name === 'id') {\n val = EVENT_NON_DATE_REFINERS[name](val);\n this.mutate({\n standardProps: { publicId: val }, // hardcoded internal name\n });\n }\n else if (name in EVENT_NON_DATE_REFINERS) {\n val = EVENT_NON_DATE_REFINERS[name](val);\n this.mutate({\n standardProps: (_a = {}, _a[name] = val, _a),\n });\n }\n else if (name in EVENT_UI_REFINERS) {\n var ui = EVENT_UI_REFINERS[name](val);\n if (name === 'color') {\n ui = { backgroundColor: val, borderColor: val };\n }\n else if (name === 'editable') {\n ui = { startEditable: val, durationEditable: val };\n }\n else {\n ui = (_b = {}, _b[name] = val, _b);\n }\n this.mutate({\n standardProps: { ui: ui },\n });\n }\n else {\n console.warn(\"Could not set prop '\" + name + \"'. Use setExtendedProp instead.\");\n }\n };\n EventApi.prototype.setExtendedProp = function (name, val) {\n var _a;\n this.mutate({\n extendedProps: (_a = {}, _a[name] = val, _a),\n });\n };\n EventApi.prototype.setStart = function (startInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = this._context.dateEnv;\n var start = dateEnv.createMarker(startInput);\n if (start && this._instance) { // TODO: warning if parsed bad\n var instanceRange = this._instance.range;\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!?\n if (options.maintainDuration) {\n this.mutate({ datesDelta: startDelta });\n }\n else {\n this.mutate({ startDelta: startDelta });\n }\n }\n };\n EventApi.prototype.setEnd = function (endInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = this._context.dateEnv;\n var end;\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n if (!end) {\n return; // TODO: warning if parsed bad\n }\n }\n if (this._instance) {\n if (end) {\n var endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity);\n this.mutate({ endDelta: endDelta });\n }\n else {\n this.mutate({ standardProps: { hasEnd: false } });\n }\n }\n };\n EventApi.prototype.setDates = function (startInput, endInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = this._context.dateEnv;\n var standardProps = { allDay: options.allDay };\n var start = dateEnv.createMarker(startInput);\n var end;\n if (!start) {\n return; // TODO: warning if parsed bad\n }\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n if (!end) { // TODO: warning if parsed bad\n return;\n }\n }\n if (this._instance) {\n var instanceRange = this._instance.range;\n // when computing the diff for an event being converted to all-day,\n // compute diff off of the all-day values the way event-mutation does.\n if (options.allDay === true) {\n instanceRange = computeAlignedDayRange(instanceRange);\n }\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity);\n if (end) {\n var endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity);\n if (durationsEqual(startDelta, endDelta)) {\n this.mutate({ datesDelta: startDelta, standardProps: standardProps });\n }\n else {\n this.mutate({ startDelta: startDelta, endDelta: endDelta, standardProps: standardProps });\n }\n }\n else { // means \"clear the end\"\n standardProps.hasEnd = false;\n this.mutate({ datesDelta: startDelta, standardProps: standardProps });\n }\n }\n };\n EventApi.prototype.moveStart = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ startDelta: delta });\n }\n };\n EventApi.prototype.moveEnd = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ endDelta: delta });\n }\n };\n EventApi.prototype.moveDates = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ datesDelta: delta });\n }\n };\n EventApi.prototype.setAllDay = function (allDay, options) {\n if (options === void 0) { options = {}; }\n var standardProps = { allDay: allDay };\n var maintainDuration = options.maintainDuration;\n if (maintainDuration == null) {\n maintainDuration = this._context.options.allDayMaintainDuration;\n }\n if (this._def.allDay !== allDay) {\n standardProps.hasEnd = maintainDuration;\n }\n this.mutate({ standardProps: standardProps });\n };\n EventApi.prototype.formatRange = function (formatInput) {\n var dateEnv = this._context.dateEnv;\n var instance = this._instance;\n var formatter = createFormatter(formatInput);\n if (this._def.hasEnd) {\n return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {\n forcedStartTzo: instance.forcedStartTzo,\n forcedEndTzo: instance.forcedEndTzo,\n });\n }\n return dateEnv.format(instance.range.start, formatter, {\n forcedTzo: instance.forcedStartTzo,\n });\n };\n EventApi.prototype.mutate = function (mutation) {\n var instance = this._instance;\n if (instance) {\n var def = this._def;\n var context_1 = this._context;\n var eventStore_1 = context_1.getCurrentData().eventStore;\n var relevantEvents = getRelevantEvents(eventStore_1, instance.instanceId);\n var eventConfigBase = {\n '': {\n display: '',\n startEditable: true,\n durationEditable: true,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: [],\n },\n };\n relevantEvents = applyMutationToEventStore(relevantEvents, eventConfigBase, mutation, context_1);\n var oldEvent = new EventApi(context_1, def, instance); // snapshot\n this._def = relevantEvents.defs[def.defId];\n this._instance = relevantEvents.instances[instance.instanceId];\n context_1.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents,\n });\n context_1.emitter.trigger('eventChange', {\n oldEvent: oldEvent,\n event: this,\n relatedEvents: buildEventApis(relevantEvents, context_1, instance),\n revert: function () {\n context_1.dispatch({\n type: 'RESET_EVENTS',\n eventStore: eventStore_1,\n });\n },\n });\n }\n };\n EventApi.prototype.remove = function () {\n var context = this._context;\n var asStore = eventApiToStore(this);\n context.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: asStore,\n });\n context.emitter.trigger('eventRemove', {\n event: this,\n relatedEvents: [],\n revert: function () {\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: asStore,\n });\n },\n });\n };\n Object.defineProperty(EventApi.prototype, \"source\", {\n get: function () {\n var sourceId = this._def.sourceId;\n if (sourceId) {\n return new EventSourceApi(this._context, this._context.getCurrentData().eventSources[sourceId]);\n }\n return null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"start\", {\n get: function () {\n return this._instance ?\n this._context.dateEnv.toDate(this._instance.range.start) :\n null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"end\", {\n get: function () {\n return (this._instance && this._def.hasEnd) ?\n this._context.dateEnv.toDate(this._instance.range.end) :\n null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"startStr\", {\n get: function () {\n var instance = this._instance;\n if (instance) {\n return this._context.dateEnv.formatIso(instance.range.start, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedStartTzo,\n });\n }\n return '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"endStr\", {\n get: function () {\n var instance = this._instance;\n if (instance && this._def.hasEnd) {\n return this._context.dateEnv.formatIso(instance.range.end, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedEndTzo,\n });\n }\n return '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"id\", {\n // computable props that all access the def\n // TODO: find a TypeScript-compatible way to do this at scale\n get: function () { return this._def.publicId; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"groupId\", {\n get: function () { return this._def.groupId; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allDay\", {\n get: function () { return this._def.allDay; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"title\", {\n get: function () { return this._def.title; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"url\", {\n get: function () { return this._def.url; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"display\", {\n get: function () { return this._def.ui.display || 'auto'; } // bad. just normalize the type earlier\n ,\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"startEditable\", {\n get: function () { return this._def.ui.startEditable; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"durationEditable\", {\n get: function () { return this._def.ui.durationEditable; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"constraint\", {\n get: function () { return this._def.ui.constraints[0] || null; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"overlap\", {\n get: function () { return this._def.ui.overlap; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allow\", {\n get: function () { return this._def.ui.allows[0] || null; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"backgroundColor\", {\n get: function () { return this._def.ui.backgroundColor; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"borderColor\", {\n get: function () { return this._def.ui.borderColor; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"textColor\", {\n get: function () { return this._def.ui.textColor; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"classNames\", {\n // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n get: function () { return this._def.ui.classNames; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"extendedProps\", {\n get: function () { return this._def.extendedProps; },\n enumerable: false,\n configurable: true\n });\n EventApi.prototype.toPlainObject = function (settings) {\n if (settings === void 0) { settings = {}; }\n var def = this._def;\n var ui = def.ui;\n var _a = this, startStr = _a.startStr, endStr = _a.endStr;\n var res = {};\n if (def.title) {\n res.title = def.title;\n }\n if (startStr) {\n res.start = startStr;\n }\n if (endStr) {\n res.end = endStr;\n }\n if (def.publicId) {\n res.id = def.publicId;\n }\n if (def.groupId) {\n res.groupId = def.groupId;\n }\n if (def.url) {\n res.url = def.url;\n }\n if (ui.display && ui.display !== 'auto') {\n res.display = ui.display;\n }\n // TODO: what about recurring-event properties???\n // TODO: include startEditable/durationEditable/constraint/overlap/allow\n if (settings.collapseColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n res.color = ui.backgroundColor;\n }\n else {\n if (ui.backgroundColor) {\n res.backgroundColor = ui.backgroundColor;\n }\n if (ui.borderColor) {\n res.borderColor = ui.borderColor;\n }\n }\n if (ui.textColor) {\n res.textColor = ui.textColor;\n }\n if (ui.classNames.length) {\n res.classNames = ui.classNames;\n }\n if (Object.keys(def.extendedProps).length) {\n if (settings.collapseExtendedProps) {\n __assign(res, def.extendedProps);\n }\n else {\n res.extendedProps = def.extendedProps;\n }\n }\n return res;\n };\n EventApi.prototype.toJSON = function () {\n return this.toPlainObject();\n };\n return EventApi;\n}());\nfunction eventApiToStore(eventApi) {\n var _a, _b;\n var def = eventApi._def;\n var instance = eventApi._instance;\n return {\n defs: (_a = {}, _a[def.defId] = def, _a),\n instances: instance\n ? (_b = {}, _b[instance.instanceId] = instance, _b) : {},\n };\n}\nfunction buildEventApis(eventStore, context, excludeInstance) {\n var defs = eventStore.defs, instances = eventStore.instances;\n var eventApis = [];\n var excludeInstanceId = excludeInstance ? excludeInstance.instanceId : '';\n for (var id in instances) {\n var instance = instances[id];\n var def = defs[instance.defId];\n if (instance.instanceId !== excludeInstanceId) {\n eventApis.push(new EventApi(context, def, instance));\n }\n }\n return eventApis;\n}\n\nvar calendarSystemClassMap = {};\nfunction registerCalendarSystem(name, theClass) {\n calendarSystemClassMap[name] = theClass;\n}\nfunction createCalendarSystem(name) {\n return new calendarSystemClassMap[name]();\n}\nvar GregorianCalendarSystem = /** @class */ (function () {\n function GregorianCalendarSystem() {\n }\n GregorianCalendarSystem.prototype.getMarkerYear = function (d) {\n return d.getUTCFullYear();\n };\n GregorianCalendarSystem.prototype.getMarkerMonth = function (d) {\n return d.getUTCMonth();\n };\n GregorianCalendarSystem.prototype.getMarkerDay = function (d) {\n return d.getUTCDate();\n };\n GregorianCalendarSystem.prototype.arrayToMarker = function (arr) {\n return arrayToUtcDate(arr);\n };\n GregorianCalendarSystem.prototype.markerToArray = function (marker) {\n return dateToUtcArray(marker);\n };\n return GregorianCalendarSystem;\n}());\nregisterCalendarSystem('gregory', GregorianCalendarSystem);\n\nvar ISO_RE = /^\\s*(\\d{4})(-?(\\d{2})(-?(\\d{2})([T ](\\d{2}):?(\\d{2})(:?(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;\nfunction parse(str) {\n var m = ISO_RE.exec(str);\n if (m) {\n var marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number(\"0.\" + m[12]) * 1000 : 0));\n if (isValidDate(marker)) {\n var timeZoneOffset = null;\n if (m[13]) {\n timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 +\n Number(m[18] || 0));\n }\n return {\n marker: marker,\n isTimeUnspecified: !m[6],\n timeZoneOffset: timeZoneOffset,\n };\n }\n }\n return null;\n}\n\nvar DateEnv = /** @class */ (function () {\n function DateEnv(settings) {\n var timeZone = this.timeZone = settings.timeZone;\n var isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC';\n if (settings.namedTimeZoneImpl && isNamedTimeZone) {\n this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone);\n }\n this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl);\n this.calendarSystem = createCalendarSystem(settings.calendarSystem);\n this.locale = settings.locale;\n this.weekDow = settings.locale.week.dow;\n this.weekDoy = settings.locale.week.doy;\n if (settings.weekNumberCalculation === 'ISO') {\n this.weekDow = 1;\n this.weekDoy = 4;\n }\n if (typeof settings.firstDay === 'number') {\n this.weekDow = settings.firstDay;\n }\n if (typeof settings.weekNumberCalculation === 'function') {\n this.weekNumberFunc = settings.weekNumberCalculation;\n }\n this.weekText = settings.weekText != null ? settings.weekText : settings.locale.options.weekText;\n this.weekTextLong = (settings.weekTextLong != null ? settings.weekTextLong : settings.locale.options.weekTextLong) || this.weekText;\n this.cmdFormatter = settings.cmdFormatter;\n this.defaultSeparator = settings.defaultSeparator;\n }\n // Creating / Parsing\n DateEnv.prototype.createMarker = function (input) {\n var meta = this.createMarkerMeta(input);\n if (meta === null) {\n return null;\n }\n return meta.marker;\n };\n DateEnv.prototype.createNowMarker = function () {\n if (this.canComputeOffset) {\n return this.timestampToMarker(new Date().valueOf());\n }\n // if we can't compute the current date val for a timezone,\n // better to give the current local date vals than UTC\n return arrayToUtcDate(dateToLocalArray(new Date()));\n };\n DateEnv.prototype.createMarkerMeta = function (input) {\n if (typeof input === 'string') {\n return this.parse(input);\n }\n var marker = null;\n if (typeof input === 'number') {\n marker = this.timestampToMarker(input);\n }\n else if (input instanceof Date) {\n input = input.valueOf();\n if (!isNaN(input)) {\n marker = this.timestampToMarker(input);\n }\n }\n else if (Array.isArray(input)) {\n marker = arrayToUtcDate(input);\n }\n if (marker === null || !isValidDate(marker)) {\n return null;\n }\n return { marker: marker, isTimeUnspecified: false, forcedTzo: null };\n };\n DateEnv.prototype.parse = function (s) {\n var parts = parse(s);\n if (parts === null) {\n return null;\n }\n var marker = parts.marker;\n var forcedTzo = null;\n if (parts.timeZoneOffset !== null) {\n if (this.canComputeOffset) {\n marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000);\n }\n else {\n forcedTzo = parts.timeZoneOffset;\n }\n }\n return { marker: marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo: forcedTzo };\n };\n // Accessors\n DateEnv.prototype.getYear = function (marker) {\n return this.calendarSystem.getMarkerYear(marker);\n };\n DateEnv.prototype.getMonth = function (marker) {\n return this.calendarSystem.getMarkerMonth(marker);\n };\n // Adding / Subtracting\n DateEnv.prototype.add = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += dur.years;\n a[1] += dur.months;\n a[2] += dur.days;\n a[6] += dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.subtract = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] -= dur.years;\n a[1] -= dur.months;\n a[2] -= dur.days;\n a[6] -= dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.addYears = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += n;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.addMonths = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[1] += n;\n return this.calendarSystem.arrayToMarker(a);\n };\n // Diffing Whole Units\n DateEnv.prototype.diffWholeYears = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n if (timeAsMs(m0) === timeAsMs(m1) &&\n calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) &&\n calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) {\n return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0);\n }\n return null;\n };\n DateEnv.prototype.diffWholeMonths = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n if (timeAsMs(m0) === timeAsMs(m1) &&\n calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) {\n return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) +\n (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12;\n }\n return null;\n };\n // Range / Duration\n DateEnv.prototype.greatestWholeUnit = function (m0, m1) {\n var n = this.diffWholeYears(m0, m1);\n if (n !== null) {\n return { unit: 'year', value: n };\n }\n n = this.diffWholeMonths(m0, m1);\n if (n !== null) {\n return { unit: 'month', value: n };\n }\n n = diffWholeWeeks(m0, m1);\n if (n !== null) {\n return { unit: 'week', value: n };\n }\n n = diffWholeDays(m0, m1);\n if (n !== null) {\n return { unit: 'day', value: n };\n }\n n = diffHours(m0, m1);\n if (isInt(n)) {\n return { unit: 'hour', value: n };\n }\n n = diffMinutes(m0, m1);\n if (isInt(n)) {\n return { unit: 'minute', value: n };\n }\n n = diffSeconds(m0, m1);\n if (isInt(n)) {\n return { unit: 'second', value: n };\n }\n return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() };\n };\n DateEnv.prototype.countDurationsBetween = function (m0, m1, d) {\n // TODO: can use greatestWholeUnit\n var diff;\n if (d.years) {\n diff = this.diffWholeYears(m0, m1);\n if (diff !== null) {\n return diff / asRoughYears(d);\n }\n }\n if (d.months) {\n diff = this.diffWholeMonths(m0, m1);\n if (diff !== null) {\n return diff / asRoughMonths(d);\n }\n }\n if (d.days) {\n diff = diffWholeDays(m0, m1);\n if (diff !== null) {\n return diff / asRoughDays(d);\n }\n }\n return (m1.valueOf() - m0.valueOf()) / asRoughMs(d);\n };\n // Start-Of\n // these DON'T return zoned-dates. only UTC start-of dates\n DateEnv.prototype.startOf = function (m, unit) {\n if (unit === 'year') {\n return this.startOfYear(m);\n }\n if (unit === 'month') {\n return this.startOfMonth(m);\n }\n if (unit === 'week') {\n return this.startOfWeek(m);\n }\n if (unit === 'day') {\n return startOfDay(m);\n }\n if (unit === 'hour') {\n return startOfHour(m);\n }\n if (unit === 'minute') {\n return startOfMinute(m);\n }\n if (unit === 'second') {\n return startOfSecond(m);\n }\n return null;\n };\n DateEnv.prototype.startOfYear = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n ]);\n };\n DateEnv.prototype.startOfMonth = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n this.calendarSystem.getMarkerMonth(m),\n ]);\n };\n DateEnv.prototype.startOfWeek = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n this.calendarSystem.getMarkerMonth(m),\n m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7),\n ]);\n };\n // Week Number\n DateEnv.prototype.computeWeekNumber = function (marker) {\n if (this.weekNumberFunc) {\n return this.weekNumberFunc(this.toDate(marker));\n }\n return weekOfYear(marker, this.weekDow, this.weekDoy);\n };\n // TODO: choke on timeZoneName: long\n DateEnv.prototype.format = function (marker, formatter, dateOptions) {\n if (dateOptions === void 0) { dateOptions = {}; }\n return formatter.format({\n marker: marker,\n timeZoneOffset: dateOptions.forcedTzo != null ?\n dateOptions.forcedTzo :\n this.offsetForMarker(marker),\n }, this);\n };\n DateEnv.prototype.formatRange = function (start, end, formatter, dateOptions) {\n if (dateOptions === void 0) { dateOptions = {}; }\n if (dateOptions.isEndExclusive) {\n end = addMs(end, -1);\n }\n return formatter.formatRange({\n marker: start,\n timeZoneOffset: dateOptions.forcedStartTzo != null ?\n dateOptions.forcedStartTzo :\n this.offsetForMarker(start),\n }, {\n marker: end,\n timeZoneOffset: dateOptions.forcedEndTzo != null ?\n dateOptions.forcedEndTzo :\n this.offsetForMarker(end),\n }, this, dateOptions.defaultSeparator);\n };\n /*\n DUMB: the omitTime arg is dumb. if we omit the time, we want to omit the timezone offset. and if we do that,\n might as well use buildIsoString or some other util directly\n */\n DateEnv.prototype.formatIso = function (marker, extraOptions) {\n if (extraOptions === void 0) { extraOptions = {}; }\n var timeZoneOffset = null;\n if (!extraOptions.omitTimeZoneOffset) {\n if (extraOptions.forcedTzo != null) {\n timeZoneOffset = extraOptions.forcedTzo;\n }\n else {\n timeZoneOffset = this.offsetForMarker(marker);\n }\n }\n return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime);\n };\n // TimeZone\n DateEnv.prototype.timestampToMarker = function (ms) {\n if (this.timeZone === 'local') {\n return arrayToUtcDate(dateToLocalArray(new Date(ms)));\n }\n if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {\n return new Date(ms);\n }\n return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));\n };\n DateEnv.prototype.offsetForMarker = function (m) {\n if (this.timeZone === 'local') {\n return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert \"inverse\" offset to \"normal\" offset\n }\n if (this.timeZone === 'UTC') {\n return 0;\n }\n if (this.namedTimeZoneImpl) {\n return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));\n }\n return null;\n };\n // Conversion\n DateEnv.prototype.toDate = function (m, forcedTzo) {\n if (this.timeZone === 'local') {\n return arrayToLocalDate(dateToUtcArray(m));\n }\n if (this.timeZone === 'UTC') {\n return new Date(m.valueOf()); // make sure it's a copy\n }\n if (!this.namedTimeZoneImpl) {\n return new Date(m.valueOf() - (forcedTzo || 0));\n }\n return new Date(m.valueOf() -\n this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60);\n };\n return DateEnv;\n}());\n\nvar globalLocales = [];\n\nvar MINIMAL_RAW_EN_LOCALE = {\n code: 'en',\n week: {\n dow: 0,\n doy: 4, // 4 days need to be within the year to be considered the first week\n },\n direction: 'ltr',\n buttonText: {\n prev: 'prev',\n next: 'next',\n prevYear: 'prev year',\n nextYear: 'next year',\n year: 'year',\n today: 'today',\n month: 'month',\n week: 'week',\n day: 'day',\n list: 'list',\n },\n weekText: 'W',\n weekTextLong: 'Week',\n closeHint: 'Close',\n timeHint: 'Time',\n eventHint: 'Event',\n allDayText: 'all-day',\n moreLinkText: 'more',\n noEventsText: 'No events to display',\n};\nvar RAW_EN_LOCALE = __assign(__assign({}, MINIMAL_RAW_EN_LOCALE), { \n // Includes things we don't want other locales to inherit,\n // things that derive from other translatable strings.\n buttonHints: {\n prev: 'Previous $0',\n next: 'Next $0',\n today: function (buttonText, unit) {\n return (unit === 'day')\n ? 'Today'\n : \"This \" + buttonText;\n },\n }, viewHint: '$0 view', navLinkHint: 'Go to $0', moreLinkHint: function (eventCnt) {\n return \"Show \" + eventCnt + \" more event\" + (eventCnt === 1 ? '' : 's');\n } });\nfunction organizeRawLocales(explicitRawLocales) {\n var defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n var allRawLocales = globalLocales.concat(explicitRawLocales);\n var rawLocaleMap = {\n en: RAW_EN_LOCALE,\n };\n for (var _i = 0, allRawLocales_1 = allRawLocales; _i < allRawLocales_1.length; _i++) {\n var rawLocale = allRawLocales_1[_i];\n rawLocaleMap[rawLocale.code] = rawLocale;\n }\n return {\n map: rawLocaleMap,\n defaultCode: defaultCode,\n };\n}\nfunction buildLocale(inputSingular, available) {\n if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n }\n return queryLocale(inputSingular, available);\n}\nfunction queryLocale(codeArg, available) {\n var codes = [].concat(codeArg || []); // will convert to array\n var raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n return parseLocale(codeArg, codes, raw);\n}\nfunction queryRawLocale(codes, available) {\n for (var i = 0; i < codes.length; i += 1) {\n var parts = codes[i].toLocaleLowerCase().split('-');\n for (var j = parts.length; j > 0; j -= 1) {\n var simpleId = parts.slice(0, j).join('-');\n if (available[simpleId]) {\n return available[simpleId];\n }\n }\n }\n return null;\n}\nfunction parseLocale(codeArg, codes, raw) {\n var merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);\n delete merged.code; // don't want this part of the options\n var week = merged.week;\n delete merged.week;\n return {\n codeArg: codeArg,\n codes: codes,\n week: week,\n simpleNumberFormat: new Intl.NumberFormat(codeArg),\n options: merged,\n };\n}\n\nfunction formatDate(dateInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = buildDateEnv$1(options);\n var formatter = createFormatter(options);\n var dateMeta = dateEnv.createMarkerMeta(dateInput);\n if (!dateMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.format(dateMeta.marker, formatter, {\n forcedTzo: dateMeta.forcedTzo,\n });\n}\nfunction formatRange(startInput, endInput, options) {\n var dateEnv = buildDateEnv$1(typeof options === 'object' && options ? options : {}); // pass in if non-null object\n var formatter = createFormatter(options);\n var startMeta = dateEnv.createMarkerMeta(startInput);\n var endMeta = dateEnv.createMarkerMeta(endInput);\n if (!startMeta || !endMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n forcedStartTzo: startMeta.forcedTzo,\n forcedEndTzo: endMeta.forcedTzo,\n isEndExclusive: options.isEndExclusive,\n defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator,\n });\n}\n// TODO: more DRY and optimized\nfunction buildDateEnv$1(settings) {\n var locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n return new DateEnv(__assign(__assign({ timeZone: BASE_OPTION_DEFAULTS.timeZone, calendarSystem: 'gregory' }, settings), { locale: locale }));\n}\n\nvar DEF_DEFAULTS = {\n startTime: '09:00',\n endTime: '17:00',\n daysOfWeek: [1, 2, 3, 4, 5],\n display: 'inverse-background',\n classNames: 'fc-non-business',\n groupId: '_businessHours', // so multiple defs get grouped\n};\n/*\nTODO: pass around as EventDefHash!!!\n*/\nfunction parseBusinessHours(input, context) {\n return parseEvents(refineInputs(input), null, context);\n}\nfunction refineInputs(input) {\n var rawDefs;\n if (input === true) {\n rawDefs = [{}]; // will get DEF_DEFAULTS verbatim\n }\n else if (Array.isArray(input)) {\n // if specifying an array, every sub-definition NEEDS a day-of-week\n rawDefs = input.filter(function (rawDef) { return rawDef.daysOfWeek; });\n }\n else if (typeof input === 'object' && input) { // non-null object\n rawDefs = [input];\n }\n else { // is probably false\n rawDefs = [];\n }\n rawDefs = rawDefs.map(function (rawDef) { return (__assign(__assign({}, DEF_DEFAULTS), rawDef)); });\n return rawDefs;\n}\n\nfunction pointInsideRect(point, rect) {\n return point.left >= rect.left &&\n point.left < rect.right &&\n point.top >= rect.top &&\n point.top < rect.bottom;\n}\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\nfunction intersectRects(rect1, rect2) {\n var res = {\n left: Math.max(rect1.left, rect2.left),\n right: Math.min(rect1.right, rect2.right),\n top: Math.max(rect1.top, rect2.top),\n bottom: Math.min(rect1.bottom, rect2.bottom),\n };\n if (res.left < res.right && res.top < res.bottom) {\n return res;\n }\n return false;\n}\nfunction translateRect(rect, deltaX, deltaY) {\n return {\n left: rect.left + deltaX,\n right: rect.right + deltaX,\n top: rect.top + deltaY,\n bottom: rect.bottom + deltaY,\n };\n}\n// Returns a new point that will have been moved to reside within the given rectangle\nfunction constrainPoint(point, rect) {\n return {\n left: Math.min(Math.max(point.left, rect.left), rect.right),\n top: Math.min(Math.max(point.top, rect.top), rect.bottom),\n };\n}\n// Returns a point that is the center of the given rectangle\nfunction getRectCenter(rect) {\n return {\n left: (rect.left + rect.right) / 2,\n top: (rect.top + rect.bottom) / 2,\n };\n}\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\nfunction diffPoints(point1, point2) {\n return {\n left: point1.left - point2.left,\n top: point1.top - point2.top,\n };\n}\n\nvar canVGrowWithinCell;\nfunction getCanVGrowWithinCell() {\n if (canVGrowWithinCell == null) {\n canVGrowWithinCell = computeCanVGrowWithinCell();\n }\n return canVGrowWithinCell;\n}\nfunction computeCanVGrowWithinCell() {\n // for SSR, because this function is call immediately at top-level\n // TODO: just make this logic execute top-level, immediately, instead of doing lazily\n if (typeof document === 'undefined') {\n return true;\n }\n var el = document.createElement('div');\n el.style.position = 'absolute';\n el.style.top = '0px';\n el.style.left = '0px';\n el.innerHTML = '
';\n el.querySelector('table').style.height = '100px';\n el.querySelector('div').style.height = '100%';\n document.body.appendChild(el);\n var div = el.querySelector('div');\n var possible = div.offsetHeight > 0;\n document.body.removeChild(el);\n return possible;\n}\n\nvar EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere\nvar Splitter = /** @class */ (function () {\n function Splitter() {\n this.getKeysForEventDefs = memoize(this._getKeysForEventDefs);\n this.splitDateSelection = memoize(this._splitDateSpan);\n this.splitEventStore = memoize(this._splitEventStore);\n this.splitIndividualUi = memoize(this._splitIndividualUi);\n this.splitEventDrag = memoize(this._splitInteraction);\n this.splitEventResize = memoize(this._splitInteraction);\n this.eventUiBuilders = {}; // TODO: typescript protection\n }\n Splitter.prototype.splitProps = function (props) {\n var _this = this;\n var keyInfos = this.getKeyInfo(props);\n var defKeys = this.getKeysForEventDefs(props.eventStore);\n var dateSelections = this.splitDateSelection(props.dateSelection);\n var individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases*\n var eventStores = this.splitEventStore(props.eventStore, defKeys);\n var eventDrags = this.splitEventDrag(props.eventDrag);\n var eventResizes = this.splitEventResize(props.eventResize);\n var splitProps = {};\n this.eventUiBuilders = mapHash(keyInfos, function (info, key) { return _this.eventUiBuilders[key] || memoize(buildEventUiForKey); });\n for (var key in keyInfos) {\n var keyInfo = keyInfos[key];\n var eventStore = eventStores[key] || EMPTY_EVENT_STORE;\n var buildEventUi = this.eventUiBuilders[key];\n splitProps[key] = {\n businessHours: keyInfo.businessHours || props.businessHours,\n dateSelection: dateSelections[key] || null,\n eventStore: eventStore,\n eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),\n eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',\n eventDrag: eventDrags[key] || null,\n eventResize: eventResizes[key] || null,\n };\n }\n return splitProps;\n };\n Splitter.prototype._splitDateSpan = function (dateSpan) {\n var dateSpans = {};\n if (dateSpan) {\n var keys = this.getKeysForDateSpan(dateSpan);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n dateSpans[key] = dateSpan;\n }\n }\n return dateSpans;\n };\n Splitter.prototype._getKeysForEventDefs = function (eventStore) {\n var _this = this;\n return mapHash(eventStore.defs, function (eventDef) { return _this.getKeysForEventDef(eventDef); });\n };\n Splitter.prototype._splitEventStore = function (eventStore, defKeys) {\n var defs = eventStore.defs, instances = eventStore.instances;\n var splitStores = {};\n for (var defId in defs) {\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n if (!splitStores[key]) {\n splitStores[key] = createEmptyEventStore();\n }\n splitStores[key].defs[defId] = defs[defId];\n }\n }\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n for (var _b = 0, _c = defKeys[instance.defId]; _b < _c.length; _b++) {\n var key = _c[_b];\n if (splitStores[key]) { // must have already been created\n splitStores[key].instances[instanceId] = instance;\n }\n }\n }\n return splitStores;\n };\n Splitter.prototype._splitIndividualUi = function (eventUiBases, defKeys) {\n var splitHashes = {};\n for (var defId in eventUiBases) {\n if (defId) { // not the '' key\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n if (!splitHashes[key]) {\n splitHashes[key] = {};\n }\n splitHashes[key][defId] = eventUiBases[defId];\n }\n }\n }\n return splitHashes;\n };\n Splitter.prototype._splitInteraction = function (interaction) {\n var splitStates = {};\n if (interaction) {\n var affectedStores_1 = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents));\n // can't rely on defKeys because event data is mutated\n var mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents);\n var mutatedStores_1 = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);\n var populate = function (key) {\n if (!splitStates[key]) {\n splitStates[key] = {\n affectedEvents: affectedStores_1[key] || EMPTY_EVENT_STORE,\n mutatedEvents: mutatedStores_1[key] || EMPTY_EVENT_STORE,\n isEvent: interaction.isEvent,\n };\n }\n };\n for (var key in affectedStores_1) {\n populate(key);\n }\n for (var key in mutatedStores_1) {\n populate(key);\n }\n }\n return splitStates;\n };\n return Splitter;\n}());\nfunction buildEventUiForKey(allUi, eventUiForKey, individualUi) {\n var baseParts = [];\n if (allUi) {\n baseParts.push(allUi);\n }\n if (eventUiForKey) {\n baseParts.push(eventUiForKey);\n }\n var stuff = {\n '': combineEventUis(baseParts),\n };\n if (individualUi) {\n __assign(stuff, individualUi);\n }\n return stuff;\n}\n\nfunction getDateMeta(date, todayRange, nowDate, dateProfile) {\n return {\n dow: date.getUTCDay(),\n isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),\n isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),\n isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),\n isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),\n isFuture: Boolean(nowDate ? (date > nowDate) : todayRange ? (date >= todayRange.end) : false),\n };\n}\nfunction getDayClassNames(meta, theme) {\n var classNames = [\n 'fc-day',\n \"fc-day-\" + DAY_IDS[meta.dow],\n ];\n if (meta.isDisabled) {\n classNames.push('fc-day-disabled');\n }\n else {\n if (meta.isToday) {\n classNames.push('fc-day-today');\n classNames.push(theme.getClass('today'));\n }\n if (meta.isPast) {\n classNames.push('fc-day-past');\n }\n if (meta.isFuture) {\n classNames.push('fc-day-future');\n }\n if (meta.isOther) {\n classNames.push('fc-day-other');\n }\n }\n return classNames;\n}\nfunction getSlotClassNames(meta, theme) {\n var classNames = [\n 'fc-slot',\n \"fc-slot-\" + DAY_IDS[meta.dow],\n ];\n if (meta.isDisabled) {\n classNames.push('fc-slot-disabled');\n }\n else {\n if (meta.isToday) {\n classNames.push('fc-slot-today');\n classNames.push(theme.getClass('today'));\n }\n if (meta.isPast) {\n classNames.push('fc-slot-past');\n }\n if (meta.isFuture) {\n classNames.push('fc-slot-future');\n }\n }\n return classNames;\n}\n\nvar DAY_FORMAT = createFormatter({ year: 'numeric', month: 'long', day: 'numeric' });\nvar WEEK_FORMAT = createFormatter({ week: 'long' });\nfunction buildNavLinkAttrs(context, dateMarker, viewType, isTabbable) {\n if (viewType === void 0) { viewType = 'day'; }\n if (isTabbable === void 0) { isTabbable = true; }\n var dateEnv = context.dateEnv, options = context.options, calendarApi = context.calendarApi;\n var dateStr = dateEnv.format(dateMarker, viewType === 'week' ? WEEK_FORMAT : DAY_FORMAT);\n if (options.navLinks) {\n var zonedDate = dateEnv.toDate(dateMarker);\n var handleInteraction = function (ev) {\n var customAction = viewType === 'day' ? options.navLinkDayClick :\n viewType === 'week' ? options.navLinkWeekClick : null;\n if (typeof customAction === 'function') {\n customAction.call(calendarApi, dateEnv.toDate(dateMarker), ev);\n }\n else {\n if (typeof customAction === 'string') {\n viewType = customAction;\n }\n calendarApi.zoomTo(dateMarker, viewType);\n }\n };\n return __assign({ title: formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr), 'data-navlink': '' }, (isTabbable\n ? createAriaClickAttrs(handleInteraction)\n : { onClick: handleInteraction }));\n }\n return { 'aria-label': dateStr };\n}\n\nvar _isRtlScrollbarOnLeft = null;\nfunction getIsRtlScrollbarOnLeft() {\n if (_isRtlScrollbarOnLeft === null) {\n _isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft();\n }\n return _isRtlScrollbarOnLeft;\n}\nfunction computeIsRtlScrollbarOnLeft() {\n var outerEl = document.createElement('div');\n applyStyle(outerEl, {\n position: 'absolute',\n top: -1000,\n left: 0,\n border: 0,\n padding: 0,\n overflow: 'scroll',\n direction: 'rtl',\n });\n outerEl.innerHTML = '
';\n document.body.appendChild(outerEl);\n var innerEl = outerEl.firstChild;\n var res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left;\n removeElement(outerEl);\n return res;\n}\n\nvar _scrollbarWidths;\nfunction getScrollbarWidths() {\n if (!_scrollbarWidths) {\n _scrollbarWidths = computeScrollbarWidths();\n }\n return _scrollbarWidths;\n}\nfunction computeScrollbarWidths() {\n var el = document.createElement('div');\n el.style.overflow = 'scroll';\n el.style.position = 'absolute';\n el.style.top = '-9999px';\n el.style.left = '-9999px';\n document.body.appendChild(el);\n var res = computeScrollbarWidthsForEl(el);\n document.body.removeChild(el);\n return res;\n}\n// WARNING: will include border\nfunction computeScrollbarWidthsForEl(el) {\n return {\n x: el.offsetHeight - el.clientHeight,\n y: el.offsetWidth - el.clientWidth,\n };\n}\n\nfunction computeEdges(el, getPadding) {\n if (getPadding === void 0) { getPadding = false; }\n var computedStyle = window.getComputedStyle(el);\n var borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0;\n var borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0;\n var borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0;\n var borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;\n var badScrollbarWidths = computeScrollbarWidthsForEl(el); // includes border!\n var scrollbarLeftRight = badScrollbarWidths.y - borderLeft - borderRight;\n var scrollbarBottom = badScrollbarWidths.x - borderTop - borderBottom;\n var res = {\n borderLeft: borderLeft,\n borderRight: borderRight,\n borderTop: borderTop,\n borderBottom: borderBottom,\n scrollbarBottom: scrollbarBottom,\n scrollbarLeft: 0,\n scrollbarRight: 0,\n };\n if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side?\n res.scrollbarLeft = scrollbarLeftRight;\n }\n else {\n res.scrollbarRight = scrollbarLeftRight;\n }\n if (getPadding) {\n res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;\n res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;\n res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;\n res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;\n }\n return res;\n}\nfunction computeInnerRect(el, goWithinPadding, doFromWindowViewport) {\n if (goWithinPadding === void 0) { goWithinPadding = false; }\n var outerRect = doFromWindowViewport ? el.getBoundingClientRect() : computeRect(el);\n var edges = computeEdges(el, goWithinPadding);\n var res = {\n left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,\n right: outerRect.right - edges.borderRight - edges.scrollbarRight,\n top: outerRect.top + edges.borderTop,\n bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom,\n };\n if (goWithinPadding) {\n res.left += edges.paddingLeft;\n res.right -= edges.paddingRight;\n res.top += edges.paddingTop;\n res.bottom -= edges.paddingBottom;\n }\n return res;\n}\nfunction computeRect(el) {\n var rect = el.getBoundingClientRect();\n return {\n left: rect.left + window.pageXOffset,\n top: rect.top + window.pageYOffset,\n right: rect.right + window.pageXOffset,\n bottom: rect.bottom + window.pageYOffset,\n };\n}\nfunction computeClippedClientRect(el) {\n var clippingParents = getClippingParents(el);\n var rect = el.getBoundingClientRect();\n for (var _i = 0, clippingParents_1 = clippingParents; _i < clippingParents_1.length; _i++) {\n var clippingParent = clippingParents_1[_i];\n var intersection = intersectRects(rect, clippingParent.getBoundingClientRect());\n if (intersection) {\n rect = intersection;\n }\n else {\n return null;\n }\n }\n return rect;\n}\nfunction computeHeightAndMargins(el) {\n return el.getBoundingClientRect().height + computeVMargins(el);\n}\nfunction computeVMargins(el) {\n var computed = window.getComputedStyle(el);\n return parseInt(computed.marginTop, 10) +\n parseInt(computed.marginBottom, 10);\n}\n// does not return window\nfunction getClippingParents(el) {\n var parents = [];\n while (el instanceof HTMLElement) { // will stop when gets to document or null\n var computedStyle = window.getComputedStyle(el);\n if (computedStyle.position === 'fixed') {\n break;\n }\n if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {\n parents.push(el);\n }\n el = el.parentNode;\n }\n return parents;\n}\n\n// given a function that resolves a result asynchronously.\n// the function can either call passed-in success and failure callbacks,\n// or it can return a promise.\n// if you need to pass additional params to func, bind them first.\nfunction unpromisify(func, success, failure) {\n // guard against success/failure callbacks being called more than once\n // and guard against a promise AND callback being used together.\n var isResolved = false;\n var wrappedSuccess = function () {\n if (!isResolved) {\n isResolved = true;\n success.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n };\n var wrappedFailure = function () {\n if (!isResolved) {\n isResolved = true;\n if (failure) {\n failure.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n }\n };\n var res = func(wrappedSuccess, wrappedFailure);\n if (res && typeof res.then === 'function') {\n res.then(wrappedSuccess, wrappedFailure);\n }\n}\n\nvar Emitter = /** @class */ (function () {\n function Emitter() {\n this.handlers = {};\n this.thisContext = null;\n }\n Emitter.prototype.setThisContext = function (thisContext) {\n this.thisContext = thisContext;\n };\n Emitter.prototype.setOptions = function (options) {\n this.options = options;\n };\n Emitter.prototype.on = function (type, handler) {\n addToHash(this.handlers, type, handler);\n };\n Emitter.prototype.off = function (type, handler) {\n removeFromHash(this.handlers, type, handler);\n };\n Emitter.prototype.trigger = function (type) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var attachedHandlers = this.handlers[type] || [];\n var optionHandler = this.options && this.options[type];\n var handlers = [].concat(optionHandler || [], attachedHandlers);\n for (var _a = 0, handlers_1 = handlers; _a < handlers_1.length; _a++) {\n var handler = handlers_1[_a];\n handler.apply(this.thisContext, args);\n }\n };\n Emitter.prototype.hasHandlers = function (type) {\n return Boolean((this.handlers[type] && this.handlers[type].length) ||\n (this.options && this.options[type]));\n };\n return Emitter;\n}());\nfunction addToHash(hash, type, handler) {\n (hash[type] || (hash[type] = []))\n .push(handler);\n}\nfunction removeFromHash(hash, type, handler) {\n if (handler) {\n if (hash[type]) {\n hash[type] = hash[type].filter(function (func) { return func !== handler; });\n }\n }\n else {\n delete hash[type]; // remove all handler funcs for this type\n }\n}\n\n/*\nRecords offset information for a set of elements, relative to an origin element.\nCan record the left/right OR the top/bottom OR both.\nProvides methods for querying the cache by position.\n*/\nvar PositionCache = /** @class */ (function () {\n function PositionCache(originEl, els, isHorizontal, isVertical) {\n this.els = els;\n var originClientRect = this.originClientRect = originEl.getBoundingClientRect(); // relative to viewport top-left\n if (isHorizontal) {\n this.buildElHorizontals(originClientRect.left);\n }\n if (isVertical) {\n this.buildElVerticals(originClientRect.top);\n }\n }\n // Populates the left/right internal coordinate arrays\n PositionCache.prototype.buildElHorizontals = function (originClientLeft) {\n var lefts = [];\n var rights = [];\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n lefts.push(rect.left - originClientLeft);\n rights.push(rect.right - originClientLeft);\n }\n this.lefts = lefts;\n this.rights = rights;\n };\n // Populates the top/bottom internal coordinate arrays\n PositionCache.prototype.buildElVerticals = function (originClientTop) {\n var tops = [];\n var bottoms = [];\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n tops.push(rect.top - originClientTop);\n bottoms.push(rect.bottom - originClientTop);\n }\n this.tops = tops;\n this.bottoms = bottoms;\n };\n // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n // If no intersection is made, returns undefined.\n PositionCache.prototype.leftToIndex = function (leftPosition) {\n var _a = this, lefts = _a.lefts, rights = _a.rights;\n var len = lefts.length;\n var i;\n for (i = 0; i < len; i += 1) {\n if (leftPosition >= lefts[i] && leftPosition < rights[i]) {\n return i;\n }\n }\n return undefined; // TODO: better\n };\n // Given a top offset (from document top), returns the index of the el that it vertically intersects.\n // If no intersection is made, returns undefined.\n PositionCache.prototype.topToIndex = function (topPosition) {\n var _a = this, tops = _a.tops, bottoms = _a.bottoms;\n var len = tops.length;\n var i;\n for (i = 0; i < len; i += 1) {\n if (topPosition >= tops[i] && topPosition < bottoms[i]) {\n return i;\n }\n }\n return undefined; // TODO: better\n };\n // Gets the width of the element at the given index\n PositionCache.prototype.getWidth = function (leftIndex) {\n return this.rights[leftIndex] - this.lefts[leftIndex];\n };\n // Gets the height of the element at the given index\n PositionCache.prototype.getHeight = function (topIndex) {\n return this.bottoms[topIndex] - this.tops[topIndex];\n };\n return PositionCache;\n}());\n\n/* eslint max-classes-per-file: \"off\" */\n/*\nAn object for getting/setting scroll-related information for an element.\nInternally, this is done very differently for window versus DOM element,\nso this object serves as a common interface.\n*/\nvar ScrollController = /** @class */ (function () {\n function ScrollController() {\n }\n ScrollController.prototype.getMaxScrollTop = function () {\n return this.getScrollHeight() - this.getClientHeight();\n };\n ScrollController.prototype.getMaxScrollLeft = function () {\n return this.getScrollWidth() - this.getClientWidth();\n };\n ScrollController.prototype.canScrollVertically = function () {\n return this.getMaxScrollTop() > 0;\n };\n ScrollController.prototype.canScrollHorizontally = function () {\n return this.getMaxScrollLeft() > 0;\n };\n ScrollController.prototype.canScrollUp = function () {\n return this.getScrollTop() > 0;\n };\n ScrollController.prototype.canScrollDown = function () {\n return this.getScrollTop() < this.getMaxScrollTop();\n };\n ScrollController.prototype.canScrollLeft = function () {\n return this.getScrollLeft() > 0;\n };\n ScrollController.prototype.canScrollRight = function () {\n return this.getScrollLeft() < this.getMaxScrollLeft();\n };\n return ScrollController;\n}());\nvar ElementScrollController = /** @class */ (function (_super) {\n __extends(ElementScrollController, _super);\n function ElementScrollController(el) {\n var _this = _super.call(this) || this;\n _this.el = el;\n return _this;\n }\n ElementScrollController.prototype.getScrollTop = function () {\n return this.el.scrollTop;\n };\n ElementScrollController.prototype.getScrollLeft = function () {\n return this.el.scrollLeft;\n };\n ElementScrollController.prototype.setScrollTop = function (top) {\n this.el.scrollTop = top;\n };\n ElementScrollController.prototype.setScrollLeft = function (left) {\n this.el.scrollLeft = left;\n };\n ElementScrollController.prototype.getScrollWidth = function () {\n return this.el.scrollWidth;\n };\n ElementScrollController.prototype.getScrollHeight = function () {\n return this.el.scrollHeight;\n };\n ElementScrollController.prototype.getClientHeight = function () {\n return this.el.clientHeight;\n };\n ElementScrollController.prototype.getClientWidth = function () {\n return this.el.clientWidth;\n };\n return ElementScrollController;\n}(ScrollController));\nvar WindowScrollController = /** @class */ (function (_super) {\n __extends(WindowScrollController, _super);\n function WindowScrollController() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WindowScrollController.prototype.getScrollTop = function () {\n return window.pageYOffset;\n };\n WindowScrollController.prototype.getScrollLeft = function () {\n return window.pageXOffset;\n };\n WindowScrollController.prototype.setScrollTop = function (n) {\n window.scroll(window.pageXOffset, n);\n };\n WindowScrollController.prototype.setScrollLeft = function (n) {\n window.scroll(n, window.pageYOffset);\n };\n WindowScrollController.prototype.getScrollWidth = function () {\n return document.documentElement.scrollWidth;\n };\n WindowScrollController.prototype.getScrollHeight = function () {\n return document.documentElement.scrollHeight;\n };\n WindowScrollController.prototype.getClientHeight = function () {\n return document.documentElement.clientHeight;\n };\n WindowScrollController.prototype.getClientWidth = function () {\n return document.documentElement.clientWidth;\n };\n return WindowScrollController;\n}(ScrollController));\n\nvar Theme = /** @class */ (function () {\n function Theme(calendarOptions) {\n if (this.iconOverrideOption) {\n this.setIconOverride(calendarOptions[this.iconOverrideOption]);\n }\n }\n Theme.prototype.setIconOverride = function (iconOverrideHash) {\n var iconClassesCopy;\n var buttonName;\n if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object\n iconClassesCopy = __assign({}, this.iconClasses);\n for (buttonName in iconOverrideHash) {\n iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);\n }\n this.iconClasses = iconClassesCopy;\n }\n else if (iconOverrideHash === false) {\n this.iconClasses = {};\n }\n };\n Theme.prototype.applyIconOverridePrefix = function (className) {\n var prefix = this.iconOverridePrefix;\n if (prefix && className.indexOf(prefix) !== 0) { // if not already present\n className = prefix + className;\n }\n return className;\n };\n Theme.prototype.getClass = function (key) {\n return this.classes[key] || '';\n };\n Theme.prototype.getIconClass = function (buttonName, isRtl) {\n var className;\n if (isRtl && this.rtlIconClasses) {\n className = this.rtlIconClasses[buttonName] || this.iconClasses[buttonName];\n }\n else {\n className = this.iconClasses[buttonName];\n }\n if (className) {\n return this.baseIconClass + \" \" + className;\n }\n return '';\n };\n Theme.prototype.getCustomButtonIconClass = function (customButtonProps) {\n var className;\n if (this.iconOverrideCustomButtonOption) {\n className = customButtonProps[this.iconOverrideCustomButtonOption];\n if (className) {\n return this.baseIconClass + \" \" + this.applyIconOverridePrefix(className);\n }\n }\n return '';\n };\n return Theme;\n}());\nTheme.prototype.classes = {};\nTheme.prototype.iconClasses = {};\nTheme.prototype.baseIconClass = '';\nTheme.prototype.iconOverridePrefix = '';\n\nvar ScrollResponder = /** @class */ (function () {\n function ScrollResponder(execFunc, emitter, scrollTime, scrollTimeReset) {\n var _this = this;\n this.execFunc = execFunc;\n this.emitter = emitter;\n this.scrollTime = scrollTime;\n this.scrollTimeReset = scrollTimeReset;\n this.handleScrollRequest = function (request) {\n _this.queuedRequest = __assign({}, _this.queuedRequest || {}, request);\n _this.drain();\n };\n emitter.on('_scrollRequest', this.handleScrollRequest);\n this.fireInitialScroll();\n }\n ScrollResponder.prototype.detach = function () {\n this.emitter.off('_scrollRequest', this.handleScrollRequest);\n };\n ScrollResponder.prototype.update = function (isDatesNew) {\n if (isDatesNew && this.scrollTimeReset) {\n this.fireInitialScroll(); // will drain\n }\n else {\n this.drain();\n }\n };\n ScrollResponder.prototype.fireInitialScroll = function () {\n this.handleScrollRequest({\n time: this.scrollTime,\n });\n };\n ScrollResponder.prototype.drain = function () {\n if (this.queuedRequest && this.execFunc(this.queuedRequest)) {\n this.queuedRequest = null;\n }\n };\n return ScrollResponder;\n}());\n\nvar ViewContextType = createContext({}); // for Components\nfunction buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {\n return {\n dateEnv: dateEnv,\n options: viewOptions,\n pluginHooks: pluginHooks,\n emitter: emitter,\n dispatch: dispatch,\n getCurrentData: getCurrentData,\n calendarApi: calendarApi,\n viewSpec: viewSpec,\n viewApi: viewApi,\n dateProfileGenerator: dateProfileGenerator,\n theme: theme,\n isRtl: viewOptions.direction === 'rtl',\n addResizeHandler: function (handler) {\n emitter.on('_resize', handler);\n },\n removeResizeHandler: function (handler) {\n emitter.off('_resize', handler);\n },\n createScrollResponder: function (execFunc) {\n return new ScrollResponder(execFunc, emitter, createDuration(viewOptions.scrollTime), viewOptions.scrollTimeReset);\n },\n registerInteractiveComponent: registerInteractiveComponent,\n unregisterInteractiveComponent: unregisterInteractiveComponent,\n };\n}\n\n/* eslint max-classes-per-file: off */\nvar PureComponent = /** @class */ (function (_super) {\n __extends(PureComponent, _super);\n function PureComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PureComponent.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state));\n }\n return !compareObjs(this.props, nextProps, this.propEquality) ||\n !compareObjs(this.state, nextState, this.stateEquality);\n };\n PureComponent.addPropsEquality = addPropsEquality;\n PureComponent.addStateEquality = addStateEquality;\n PureComponent.contextType = ViewContextType;\n return PureComponent;\n}(Component));\nPureComponent.prototype.propEquality = {};\nPureComponent.prototype.stateEquality = {};\nvar BaseComponent = /** @class */ (function (_super) {\n __extends(BaseComponent, _super);\n function BaseComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BaseComponent.contextType = ViewContextType;\n return BaseComponent;\n}(PureComponent));\nfunction addPropsEquality(propEquality) {\n var hash = Object.create(this.prototype.propEquality);\n __assign(hash, propEquality);\n this.prototype.propEquality = hash;\n}\nfunction addStateEquality(stateEquality) {\n var hash = Object.create(this.prototype.stateEquality);\n __assign(hash, stateEquality);\n this.prototype.stateEquality = hash;\n}\n// use other one\nfunction setRef(ref, current) {\n if (typeof ref === 'function') {\n ref(current);\n }\n else if (ref) {\n // see https://github.com/facebook/react/issues/13029\n ref.current = current;\n }\n}\n\n/*\nan INTERACTABLE date component\n\nPURPOSES:\n- hook up to fg, fill, and mirror renderers\n- interface for dragging and hits\n*/\nvar DateComponent = /** @class */ (function (_super) {\n __extends(DateComponent, _super);\n function DateComponent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.uid = guid();\n return _this;\n }\n // Hit System\n // -----------------------------------------------------------------------------------------------------------------\n DateComponent.prototype.prepareHits = function () {\n };\n DateComponent.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {\n return null; // this should be abstract\n };\n // Pointer Interaction Utils\n // -----------------------------------------------------------------------------------------------------------------\n DateComponent.prototype.isValidSegDownEl = function (el) {\n return !this.props.eventDrag && // HACK\n !this.props.eventResize && // HACK\n !elementClosest(el, '.fc-event-mirror');\n };\n DateComponent.prototype.isValidDateDownEl = function (el) {\n return !elementClosest(el, '.fc-event:not(.fc-bg-event)') &&\n !elementClosest(el, '.fc-more-link') && // a \"more..\" link\n !elementClosest(el, 'a[data-navlink]') && // a clickable nav link\n !elementClosest(el, '.fc-popover'); // hack\n };\n return DateComponent;\n}(BaseComponent));\n\n// TODO: easier way to add new hooks? need to update a million things\nfunction createPlugin(input) {\n return {\n id: guid(),\n deps: input.deps || [],\n reducers: input.reducers || [],\n isLoadingFuncs: input.isLoadingFuncs || [],\n contextInit: [].concat(input.contextInit || []),\n eventRefiners: input.eventRefiners || {},\n eventDefMemberAdders: input.eventDefMemberAdders || [],\n eventSourceRefiners: input.eventSourceRefiners || {},\n isDraggableTransformers: input.isDraggableTransformers || [],\n eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n dateSelectionTransformers: input.dateSelectionTransformers || [],\n datePointTransforms: input.datePointTransforms || [],\n dateSpanTransforms: input.dateSpanTransforms || [],\n views: input.views || {},\n viewPropsTransformers: input.viewPropsTransformers || [],\n isPropsValid: input.isPropsValid || null,\n externalDefTransforms: input.externalDefTransforms || [],\n viewContainerAppends: input.viewContainerAppends || [],\n eventDropTransformers: input.eventDropTransformers || [],\n componentInteractions: input.componentInteractions || [],\n calendarInteractions: input.calendarInteractions || [],\n themeClasses: input.themeClasses || {},\n eventSourceDefs: input.eventSourceDefs || [],\n cmdFormatter: input.cmdFormatter,\n recurringTypes: input.recurringTypes || [],\n namedTimeZonedImpl: input.namedTimeZonedImpl,\n initialView: input.initialView || '',\n elementDraggingImpl: input.elementDraggingImpl,\n optionChangeHandlers: input.optionChangeHandlers || {},\n scrollGridImpl: input.scrollGridImpl || null,\n contentTypeHandlers: input.contentTypeHandlers || {},\n listenerRefiners: input.listenerRefiners || {},\n optionRefiners: input.optionRefiners || {},\n propSetHandlers: input.propSetHandlers || {},\n };\n}\nfunction buildPluginHooks(pluginDefs, globalDefs) {\n var isAdded = {};\n var hooks = {\n reducers: [],\n isLoadingFuncs: [],\n contextInit: [],\n eventRefiners: {},\n eventDefMemberAdders: [],\n eventSourceRefiners: {},\n isDraggableTransformers: [],\n eventDragMutationMassagers: [],\n eventDefMutationAppliers: [],\n dateSelectionTransformers: [],\n datePointTransforms: [],\n dateSpanTransforms: [],\n views: {},\n viewPropsTransformers: [],\n isPropsValid: null,\n externalDefTransforms: [],\n viewContainerAppends: [],\n eventDropTransformers: [],\n componentInteractions: [],\n calendarInteractions: [],\n themeClasses: {},\n eventSourceDefs: [],\n cmdFormatter: null,\n recurringTypes: [],\n namedTimeZonedImpl: null,\n initialView: '',\n elementDraggingImpl: null,\n optionChangeHandlers: {},\n scrollGridImpl: null,\n contentTypeHandlers: {},\n listenerRefiners: {},\n optionRefiners: {},\n propSetHandlers: {},\n };\n function addDefs(defs) {\n for (var _i = 0, defs_1 = defs; _i < defs_1.length; _i++) {\n var def = defs_1[_i];\n if (!isAdded[def.id]) {\n isAdded[def.id] = true;\n addDefs(def.deps);\n hooks = combineHooks(hooks, def);\n }\n }\n }\n if (pluginDefs) {\n addDefs(pluginDefs);\n }\n addDefs(globalDefs);\n return hooks;\n}\nfunction buildBuildPluginHooks() {\n var currentOverrideDefs = [];\n var currentGlobalDefs = [];\n var currentHooks;\n return function (overrideDefs, globalDefs) {\n if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n currentHooks = buildPluginHooks(overrideDefs, globalDefs);\n }\n currentOverrideDefs = overrideDefs;\n currentGlobalDefs = globalDefs;\n return currentHooks;\n };\n}\nfunction combineHooks(hooks0, hooks1) {\n return {\n reducers: hooks0.reducers.concat(hooks1.reducers),\n isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n eventRefiners: __assign(__assign({}, hooks0.eventRefiners), hooks1.eventRefiners),\n eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n eventSourceRefiners: __assign(__assign({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners),\n isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n views: __assign(__assign({}, hooks0.views), hooks1.views),\n viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n themeClasses: __assign(__assign({}, hooks0.themeClasses), hooks1.themeClasses),\n eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n initialView: hooks0.initialView || hooks1.initialView,\n elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n optionChangeHandlers: __assign(__assign({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers),\n scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n contentTypeHandlers: __assign(__assign({}, hooks0.contentTypeHandlers), hooks1.contentTypeHandlers),\n listenerRefiners: __assign(__assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),\n optionRefiners: __assign(__assign({}, hooks0.optionRefiners), hooks1.optionRefiners),\n propSetHandlers: __assign(__assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers),\n };\n}\n\nvar StandardTheme = /** @class */ (function (_super) {\n __extends(StandardTheme, _super);\n function StandardTheme() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StandardTheme;\n}(Theme));\nStandardTheme.prototype.classes = {\n root: 'fc-theme-standard',\n tableCellShaded: 'fc-cell-shaded',\n buttonGroup: 'fc-button-group',\n button: 'fc-button fc-button-primary',\n buttonActive: 'fc-button-active',\n};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.prototype.iconClasses = {\n close: 'fc-icon-x',\n prev: 'fc-icon-chevron-left',\n next: 'fc-icon-chevron-right',\n prevYear: 'fc-icon-chevrons-left',\n nextYear: 'fc-icon-chevrons-right',\n};\nStandardTheme.prototype.rtlIconClasses = {\n prev: 'fc-icon-chevron-right',\n next: 'fc-icon-chevron-left',\n prevYear: 'fc-icon-chevrons-right',\n nextYear: 'fc-icon-chevrons-left',\n};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n\nfunction compileViewDefs(defaultConfigs, overrideConfigs) {\n var hash = {};\n var viewType;\n for (viewType in defaultConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n for (viewType in overrideConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n return hash;\n}\nfunction ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n if (hash[viewType]) {\n return hash[viewType];\n }\n var viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n if (viewDef) {\n hash[viewType] = viewDef;\n }\n return viewDef;\n}\nfunction buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n var defaultConfig = defaultConfigs[viewType];\n var overrideConfig = overrideConfigs[viewType];\n var queryProp = function (name) { return ((defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null)); };\n var theComponent = queryProp('component');\n var superType = queryProp('superType');\n var superDef = null;\n if (superType) {\n if (superType === viewType) {\n throw new Error('Can\\'t have a custom view type that references itself');\n }\n superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n }\n if (!theComponent && superDef) {\n theComponent = superDef.component;\n }\n if (!theComponent) {\n return null; // don't throw a warning, might be settings for a single-unit view\n }\n return {\n type: viewType,\n component: theComponent,\n defaults: __assign(__assign({}, (superDef ? superDef.defaults : {})), (defaultConfig ? defaultConfig.rawOptions : {})),\n overrides: __assign(__assign({}, (superDef ? superDef.overrides : {})), (overrideConfig ? overrideConfig.rawOptions : {})),\n };\n}\n\n/* eslint max-classes-per-file: off */\n// NOTE: in JSX, you should always use this class with arg. otherwise, will default to any???\nvar RenderHook = /** @class */ (function (_super) {\n __extends(RenderHook, _super);\n function RenderHook() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rootElRef = createRef();\n _this.handleRootEl = function (el) {\n setRef(_this.rootElRef, el);\n if (_this.props.elRef) {\n setRef(_this.props.elRef, el);\n }\n };\n return _this;\n }\n RenderHook.prototype.render = function () {\n var _this = this;\n var props = this.props;\n var hookProps = props.hookProps;\n return (createElement(MountHook, { hookProps: hookProps, didMount: props.didMount, willUnmount: props.willUnmount, elRef: this.handleRootEl }, function (rootElRef) { return (createElement(ContentHook, { hookProps: hookProps, content: props.content, defaultContent: props.defaultContent, backupElRef: _this.rootElRef }, function (innerElRef, innerContent) { return props.children(rootElRef, normalizeClassNames(props.classNames, hookProps), innerElRef, innerContent); })); }));\n };\n return RenderHook;\n}(BaseComponent));\n// TODO: rename to be about function, not default. use in above type\n// for forcing rerender of components that use the ContentHook\nvar CustomContentRenderContext = createContext(0);\nfunction ContentHook(props) {\n return (createElement(CustomContentRenderContext.Consumer, null, function (renderId) { return (createElement(ContentHookInner, __assign({ renderId: renderId }, props))); }));\n}\nvar ContentHookInner = /** @class */ (function (_super) {\n __extends(ContentHookInner, _super);\n function ContentHookInner() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.innerElRef = createRef();\n return _this;\n }\n ContentHookInner.prototype.render = function () {\n return this.props.children(this.innerElRef, this.renderInnerContent());\n };\n ContentHookInner.prototype.componentDidMount = function () {\n this.updateCustomContent();\n };\n ContentHookInner.prototype.componentDidUpdate = function () {\n this.updateCustomContent();\n };\n ContentHookInner.prototype.componentWillUnmount = function () {\n if (this.customContentInfo && this.customContentInfo.destroy) {\n this.customContentInfo.destroy();\n }\n };\n ContentHookInner.prototype.renderInnerContent = function () {\n var customContentInfo = this.customContentInfo; // only populated if using non-[p]react node(s)\n var innerContent = this.getInnerContent();\n var meta = this.getContentMeta(innerContent);\n // initial run, or content-type changing? (from vue -> react for example)\n if (!customContentInfo || customContentInfo.contentKey !== meta.contentKey) {\n // clearing old value\n if (customContentInfo) {\n if (customContentInfo.destroy) {\n customContentInfo.destroy();\n }\n customContentInfo = this.customContentInfo = null;\n }\n // assigning new value\n if (meta.contentKey) {\n customContentInfo = this.customContentInfo = __assign({ contentKey: meta.contentKey, contentVal: innerContent[meta.contentKey] }, meta.buildLifecycleFuncs());\n }\n // updating\n }\n else if (customContentInfo) {\n customContentInfo.contentVal = innerContent[meta.contentKey];\n }\n return customContentInfo\n ? [] // signal that something was specified\n : innerContent; // assume a [p]react vdom node. use it\n };\n ContentHookInner.prototype.getInnerContent = function () {\n var props = this.props;\n var innerContent = normalizeContent(props.content, props.hookProps);\n if (innerContent === undefined) { // use the default\n innerContent = normalizeContent(props.defaultContent, props.hookProps);\n }\n return innerContent == null ? null : innerContent; // convert undefined to null (better for React)\n };\n ContentHookInner.prototype.getContentMeta = function (innerContent) {\n var contentTypeHandlers = this.context.pluginHooks.contentTypeHandlers;\n var contentKey = '';\n var buildLifecycleFuncs = null;\n if (innerContent) { // allowed to be null, for convenience to caller\n for (var searchKey in contentTypeHandlers) {\n if (innerContent[searchKey] !== undefined) {\n contentKey = searchKey;\n buildLifecycleFuncs = contentTypeHandlers[searchKey];\n break;\n }\n }\n }\n return { contentKey: contentKey, buildLifecycleFuncs: buildLifecycleFuncs };\n };\n ContentHookInner.prototype.updateCustomContent = function () {\n if (this.customContentInfo) { // for non-[p]react\n this.customContentInfo.render(this.innerElRef.current || this.props.backupElRef.current, // the element to render into\n this.customContentInfo.contentVal);\n }\n };\n return ContentHookInner;\n}(BaseComponent));\nvar MountHook = /** @class */ (function (_super) {\n __extends(MountHook, _super);\n function MountHook() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleRootEl = function (rootEl) {\n _this.rootEl = rootEl;\n if (_this.props.elRef) {\n setRef(_this.props.elRef, rootEl);\n }\n };\n return _this;\n }\n MountHook.prototype.render = function () {\n return this.props.children(this.handleRootEl);\n };\n MountHook.prototype.componentDidMount = function () {\n var callback = this.props.didMount;\n if (callback) {\n callback(__assign(__assign({}, this.props.hookProps), { el: this.rootEl }));\n }\n };\n MountHook.prototype.componentWillUnmount = function () {\n var callback = this.props.willUnmount;\n if (callback) {\n callback(__assign(__assign({}, this.props.hookProps), { el: this.rootEl }));\n }\n };\n return MountHook;\n}(BaseComponent));\nfunction buildClassNameNormalizer() {\n var currentGenerator;\n var currentHookProps;\n var currentClassNames = [];\n return function (generator, hookProps) {\n if (!currentHookProps || !isPropsEqual(currentHookProps, hookProps) || generator !== currentGenerator) {\n currentGenerator = generator;\n currentHookProps = hookProps;\n currentClassNames = normalizeClassNames(generator, hookProps);\n }\n return currentClassNames;\n };\n}\nfunction normalizeClassNames(classNames, hookProps) {\n if (typeof classNames === 'function') {\n classNames = classNames(hookProps);\n }\n return parseClassNames(classNames);\n}\nfunction normalizeContent(input, hookProps) {\n if (typeof input === 'function') {\n return input(hookProps, createElement); // give the function the vdom-creation func\n }\n return input;\n}\n\nvar ViewRoot = /** @class */ (function (_super) {\n __extends(ViewRoot, _super);\n function ViewRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.normalizeClassNames = buildClassNameNormalizer();\n return _this;\n }\n ViewRoot.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var hookProps = { view: context.viewApi };\n var customClassNames = this.normalizeClassNames(options.viewClassNames, hookProps);\n return (createElement(MountHook, { hookProps: hookProps, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount, elRef: props.elRef }, function (rootElRef) { return props.children(rootElRef, [\"fc-\" + props.viewSpec.type + \"-view\", 'fc-view'].concat(customClassNames)); }));\n };\n return ViewRoot;\n}(BaseComponent));\n\nfunction parseViewConfigs(inputs) {\n return mapHash(inputs, parseViewConfig);\n}\nfunction parseViewConfig(input) {\n var rawOptions = typeof input === 'function' ?\n { component: input } :\n input;\n var component = rawOptions.component;\n if (rawOptions.content) {\n component = createViewHookComponent(rawOptions);\n // TODO: remove content/classNames/didMount/etc from options?\n }\n return {\n superType: rawOptions.type,\n component: component,\n rawOptions: rawOptions,\n };\n}\nfunction createViewHookComponent(options) {\n return function (viewProps) { return (createElement(ViewContextType.Consumer, null, function (context) { return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (viewElRef, viewClassNames) {\n var hookProps = __assign(__assign({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold });\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.classNames, content: options.content, didMount: options.didMount, willUnmount: options.willUnmount, elRef: viewElRef }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"div\", { className: viewClassNames.concat(customClassNames).join(' '), ref: rootElRef }, innerContent)); }));\n })); })); };\n}\n\nfunction buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n var defaultConfigs = parseViewConfigs(defaultInputs);\n var overrideConfigs = parseViewConfigs(optionOverrides.views);\n var viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n return mapHash(viewDefs, function (viewDef) { return buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults); });\n}\nfunction buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n var durationInput = viewDef.overrides.duration ||\n viewDef.defaults.duration ||\n dynamicOptionOverrides.duration ||\n optionOverrides.duration;\n var duration = null;\n var durationUnit = '';\n var singleUnit = '';\n var singleUnitOverrides = {};\n if (durationInput) {\n duration = createDurationCached(durationInput);\n if (duration) { // valid?\n var denom = greatestDurationDenominator(duration);\n durationUnit = denom.unit;\n if (denom.value === 1) {\n singleUnit = durationUnit;\n singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {};\n }\n }\n }\n var queryButtonText = function (optionsSubset) {\n var buttonTextMap = optionsSubset.buttonText || {};\n var buttonTextKey = viewDef.defaults.buttonTextKey;\n if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n return buttonTextMap[buttonTextKey];\n }\n if (buttonTextMap[viewDef.type] != null) {\n return buttonTextMap[viewDef.type];\n }\n if (buttonTextMap[singleUnit] != null) {\n return buttonTextMap[singleUnit];\n }\n return null;\n };\n var queryButtonTitle = function (optionsSubset) {\n var buttonHints = optionsSubset.buttonHints || {};\n var buttonKey = viewDef.defaults.buttonTextKey; // use same key as text\n if (buttonKey != null && buttonHints[buttonKey] != null) {\n return buttonHints[buttonKey];\n }\n if (buttonHints[viewDef.type] != null) {\n return buttonHints[viewDef.type];\n }\n if (buttonHints[singleUnit] != null) {\n return buttonHints[singleUnit];\n }\n return null;\n };\n return {\n type: viewDef.type,\n component: viewDef.component,\n duration: duration,\n durationUnit: durationUnit,\n singleUnit: singleUnit,\n optionDefaults: viewDef.defaults,\n optionOverrides: __assign(__assign({}, singleUnitOverrides), viewDef.overrides),\n buttonTextOverride: queryButtonText(dynamicOptionOverrides) ||\n queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n viewDef.overrides.buttonText,\n buttonTextDefault: queryButtonText(localeDefaults) ||\n viewDef.defaults.buttonText ||\n queryButtonText(BASE_OPTION_DEFAULTS) ||\n viewDef.type,\n // not DRY\n buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) ||\n queryButtonTitle(optionOverrides) ||\n viewDef.overrides.buttonHint,\n buttonTitleDefault: queryButtonTitle(localeDefaults) ||\n viewDef.defaults.buttonHint ||\n queryButtonTitle(BASE_OPTION_DEFAULTS),\n // will eventually fall back to buttonText\n };\n}\n// hack to get memoization working\nvar durationInputMap = {};\nfunction createDurationCached(durationInput) {\n var json = JSON.stringify(durationInput);\n var res = durationInputMap[json];\n if (res === undefined) {\n res = createDuration(durationInput);\n durationInputMap[json] = res;\n }\n return res;\n}\n\nvar DateProfileGenerator = /** @class */ (function () {\n function DateProfileGenerator(props) {\n this.props = props;\n this.nowDate = getNow(props.nowInput, props.dateEnv);\n this.initHiddenDays();\n }\n /* Date Range Computation\n ------------------------------------------------------------------------------------------------------------------*/\n // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\n DateProfileGenerator.prototype.buildPrev = function (currentDateProfile, currentDate, forceToValid) {\n var dateEnv = this.props.dateEnv;\n var prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(prevDate, -1, forceToValid);\n };\n // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\n DateProfileGenerator.prototype.buildNext = function (currentDateProfile, currentDate, forceToValid) {\n var dateEnv = this.props.dateEnv;\n var nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(nextDate, 1, forceToValid);\n };\n // Builds a structure holding dates/ranges for rendering around the given date.\n // Optional direction param indicates whether the date is being incremented/decremented\n // from its previous value. decremented = -1, incremented = 1 (default).\n DateProfileGenerator.prototype.build = function (currentDate, direction, forceToValid) {\n if (forceToValid === void 0) { forceToValid = true; }\n var props = this.props;\n var validRange;\n var currentInfo;\n var isRangeAllDay;\n var renderRange;\n var activeRange;\n var isValid;\n validRange = this.buildValidRange();\n validRange = this.trimHiddenDays(validRange);\n if (forceToValid) {\n currentDate = constrainMarkerToRange(currentDate, validRange);\n }\n currentInfo = this.buildCurrentRangeInfo(currentDate, direction);\n isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);\n renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay);\n renderRange = this.trimHiddenDays(renderRange);\n activeRange = renderRange;\n if (!props.showNonCurrentDates) {\n activeRange = intersectRanges(activeRange, currentInfo.range);\n }\n activeRange = this.adjustActiveRange(activeRange);\n activeRange = intersectRanges(activeRange, validRange); // might return null\n // it's invalid if the originally requested date is not contained,\n // or if the range is completely outside of the valid range.\n isValid = rangesIntersect(currentInfo.range, validRange);\n return {\n // constraint for where prev/next operations can go and where events can be dragged/resized to.\n // an object with optional start and end properties.\n validRange: validRange,\n // range the view is formally responsible for.\n // for example, a month view might have 1st-31st, excluding padded dates\n currentRange: currentInfo.range,\n // name of largest unit being displayed, like \"month\" or \"week\"\n currentRangeUnit: currentInfo.unit,\n isRangeAllDay: isRangeAllDay,\n // dates that display events and accept drag-n-drop\n // will be `null` if no dates accept events\n activeRange: activeRange,\n // date range with a rendered skeleton\n // includes not-active days that need some sort of DOM\n renderRange: renderRange,\n // Duration object that denotes the first visible time of any given day\n slotMinTime: props.slotMinTime,\n // Duration object that denotes the exclusive visible end time of any given day\n slotMaxTime: props.slotMaxTime,\n isValid: isValid,\n // how far the current date will move for a prev/next operation\n dateIncrement: this.buildDateIncrement(currentInfo.duration),\n // pass a fallback (might be null) ^\n };\n };\n // Builds an object with optional start/end properties.\n // Indicates the minimum/maximum dates to display.\n // not responsible for trimming hidden days.\n DateProfileGenerator.prototype.buildValidRange = function () {\n var input = this.props.validRangeInput;\n var simpleInput = typeof input === 'function'\n ? input.call(this.props.calendarApi, this.nowDate)\n : input;\n return this.refineRange(simpleInput) ||\n { start: null, end: null }; // completely open-ended\n };\n // Builds a structure with info about the \"current\" range, the range that is\n // highlighted as being the current month for example.\n // See build() for a description of `direction`.\n // Guaranteed to have `range` and `unit` properties. `duration` is optional.\n DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) {\n var props = this.props;\n var duration = null;\n var unit = null;\n var range = null;\n var dayCount;\n if (props.duration) {\n duration = props.duration;\n unit = props.durationUnit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n }\n else if ((dayCount = this.props.dayCount)) {\n unit = 'day';\n range = this.buildRangeFromDayCount(date, direction, dayCount);\n }\n else if ((range = this.buildCustomVisibleRange(date))) {\n unit = props.dateEnv.greatestWholeUnit(range.start, range.end).unit;\n }\n else {\n duration = this.getFallbackDuration();\n unit = greatestDurationDenominator(duration).unit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n }\n return { duration: duration, unit: unit, range: range };\n };\n DateProfileGenerator.prototype.getFallbackDuration = function () {\n return createDuration({ day: 1 });\n };\n // Returns a new activeRange to have time values (un-ambiguate)\n // slotMinTime or slotMaxTime causes the range to expand.\n DateProfileGenerator.prototype.adjustActiveRange = function (range) {\n var _a = this.props, dateEnv = _a.dateEnv, usesMinMaxTime = _a.usesMinMaxTime, slotMinTime = _a.slotMinTime, slotMaxTime = _a.slotMaxTime;\n var start = range.start, end = range.end;\n if (usesMinMaxTime) {\n // expand active range if slotMinTime is negative (why not when positive?)\n if (asRoughDays(slotMinTime) < 0) {\n start = startOfDay(start); // necessary?\n start = dateEnv.add(start, slotMinTime);\n }\n // expand active range if slotMaxTime is beyond one day (why not when negative?)\n if (asRoughDays(slotMaxTime) > 1) {\n end = startOfDay(end); // necessary?\n end = addDays(end, -1);\n end = dateEnv.add(end, slotMaxTime);\n }\n }\n return { start: start, end: end };\n };\n // Builds the \"current\" range when it is specified as an explicit duration.\n // `unit` is the already-computed greatestDurationDenominator unit of duration.\n DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) {\n var _a = this.props, dateEnv = _a.dateEnv, dateAlignment = _a.dateAlignment;\n var start;\n var end;\n var res;\n // compute what the alignment should be\n if (!dateAlignment) {\n var dateIncrement = this.props.dateIncrement;\n if (dateIncrement) {\n // use the smaller of the two units\n if (asRoughMs(dateIncrement) < asRoughMs(duration)) {\n dateAlignment = greatestDurationDenominator(dateIncrement).unit;\n }\n else {\n dateAlignment = unit;\n }\n }\n else {\n dateAlignment = unit;\n }\n }\n // if the view displays a single day or smaller\n if (asRoughDays(duration) <= 1) {\n if (this.isHiddenDay(start)) {\n start = this.skipHiddenDays(start, direction);\n start = startOfDay(start);\n }\n }\n function computeRes() {\n start = dateEnv.startOf(date, dateAlignment);\n end = dateEnv.add(start, duration);\n res = { start: start, end: end };\n }\n computeRes();\n // if range is completely enveloped by hidden days, go past the hidden days\n if (!this.trimHiddenDays(res)) {\n date = this.skipHiddenDays(date, direction);\n computeRes();\n }\n return res;\n };\n // Builds the \"current\" range when a dayCount is specified.\n DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) {\n var _a = this.props, dateEnv = _a.dateEnv, dateAlignment = _a.dateAlignment;\n var runningCount = 0;\n var start = date;\n var end;\n if (dateAlignment) {\n start = dateEnv.startOf(start, dateAlignment);\n }\n start = startOfDay(start);\n start = this.skipHiddenDays(start, direction);\n end = start;\n do {\n end = addDays(end, 1);\n if (!this.isHiddenDay(end)) {\n runningCount += 1;\n }\n } while (runningCount < dayCount);\n return { start: start, end: end };\n };\n // Builds a normalized range object for the \"visible\" range,\n // which is a way to define the currentRange and activeRange at the same time.\n DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) {\n var props = this.props;\n var input = props.visibleRangeInput;\n var simpleInput = typeof input === 'function'\n ? input.call(props.calendarApi, props.dateEnv.toDate(date))\n : input;\n var range = this.refineRange(simpleInput);\n if (range && (range.start == null || range.end == null)) {\n return null;\n }\n return range;\n };\n // Computes the range that will represent the element/cells for *rendering*,\n // but which may have voided days/times.\n // not responsible for trimming hidden days.\n DateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) {\n return currentRange;\n };\n // Compute the duration value that should be added/substracted to the current date\n // when a prev/next operation happens.\n DateProfileGenerator.prototype.buildDateIncrement = function (fallback) {\n var dateIncrement = this.props.dateIncrement;\n var customAlignment;\n if (dateIncrement) {\n return dateIncrement;\n }\n if ((customAlignment = this.props.dateAlignment)) {\n return createDuration(1, customAlignment);\n }\n if (fallback) {\n return fallback;\n }\n return createDuration({ days: 1 });\n };\n DateProfileGenerator.prototype.refineRange = function (rangeInput) {\n if (rangeInput) {\n var range = parseRange(rangeInput, this.props.dateEnv);\n if (range) {\n range = computeVisibleDayRange(range);\n }\n return range;\n }\n return null;\n };\n /* Hidden Days\n ------------------------------------------------------------------------------------------------------------------*/\n // Initializes internal variables related to calculating hidden days-of-week\n DateProfileGenerator.prototype.initHiddenDays = function () {\n var hiddenDays = this.props.hiddenDays || []; // array of day-of-week indices that are hidden\n var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n var dayCnt = 0;\n var i;\n if (this.props.weekends === false) {\n hiddenDays.push(0, 6); // 0=sunday, 6=saturday\n }\n for (i = 0; i < 7; i += 1) {\n if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) {\n dayCnt += 1;\n }\n }\n if (!dayCnt) {\n throw new Error('invalid hiddenDays'); // all days were hidden? bad.\n }\n this.isHiddenDayHash = isHiddenDayHash;\n };\n // Remove days from the beginning and end of the range that are computed as hidden.\n // If the whole range is trimmed off, returns null\n DateProfileGenerator.prototype.trimHiddenDays = function (range) {\n var start = range.start, end = range.end;\n if (start) {\n start = this.skipHiddenDays(start);\n }\n if (end) {\n end = this.skipHiddenDays(end, -1, true);\n }\n if (start == null || end == null || start < end) {\n return { start: start, end: end };\n }\n return null;\n };\n // Is the current day hidden?\n // `day` is a day-of-week index (0-6), or a Date (used for UTC)\n DateProfileGenerator.prototype.isHiddenDay = function (day) {\n if (day instanceof Date) {\n day = day.getUTCDay();\n }\n return this.isHiddenDayHash[day];\n };\n // Incrementing the current day until it is no longer a hidden day, returning a copy.\n // DOES NOT CONSIDER validRange!\n // If the initial value of `date` is not a hidden day, don't do anything.\n // Pass `isExclusive` as `true` if you are dealing with an end date.\n // `inc` defaults to `1` (increment one day forward each time)\n DateProfileGenerator.prototype.skipHiddenDays = function (date, inc, isExclusive) {\n if (inc === void 0) { inc = 1; }\n if (isExclusive === void 0) { isExclusive = false; }\n while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) {\n date = addDays(date, inc);\n }\n return date;\n };\n return DateProfileGenerator;\n}());\n\nfunction reduceViewType(viewType, action) {\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n viewType = action.viewType;\n }\n return viewType;\n}\n\nfunction reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {\n var _a;\n switch (action.type) {\n case 'SET_OPTION':\n return __assign(__assign({}, dynamicOptionOverrides), (_a = {}, _a[action.optionName] = action.rawOptionValue, _a));\n default:\n return dynamicOptionOverrides;\n }\n}\n\nfunction reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator) {\n var dp;\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n return dateProfileGenerator.build(action.dateMarker || currentDate);\n case 'CHANGE_DATE':\n return dateProfileGenerator.build(action.dateMarker);\n case 'PREV':\n dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n case 'NEXT':\n dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n }\n return currentDateProfile;\n}\n\nfunction initEventSources(calendarOptions, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null;\n return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context);\n}\nfunction reduceEventSources(eventSources, action, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n switch (action.type) {\n case 'ADD_EVENT_SOURCES': // already parsed\n return addSources(eventSources, action.sources, activeRange, context);\n case 'REMOVE_EVENT_SOURCE':\n return removeSource(eventSources, action.sourceId);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return fetchDirtySources(eventSources, activeRange, context);\n }\n return eventSources;\n case 'FETCH_EVENT_SOURCES':\n return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type?\n arrayToHash(action.sourceIds) :\n excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context);\n case 'RECEIVE_EVENTS':\n case 'RECEIVE_EVENT_ERROR':\n return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return {};\n default:\n return eventSources;\n }\n}\nfunction reduceEventSourcesNewTimeZone(eventSources, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, true, context);\n}\nfunction computeEventSourcesLoading(eventSources) {\n for (var sourceId in eventSources) {\n if (eventSources[sourceId].isFetching) {\n return true;\n }\n }\n return false;\n}\nfunction addSources(eventSourceHash, sources, fetchRange, context) {\n var hash = {};\n for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) {\n var source = sources_1[_i];\n hash[source.sourceId] = source;\n }\n if (fetchRange) {\n hash = fetchDirtySources(hash, fetchRange, context);\n }\n return __assign(__assign({}, eventSourceHash), hash);\n}\nfunction removeSource(eventSourceHash, sourceId) {\n return filterHash(eventSourceHash, function (eventSource) { return eventSource.sourceId !== sourceId; });\n}\nfunction fetchDirtySources(sourceHash, fetchRange, context) {\n return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) { return isSourceDirty(eventSource, fetchRange, context); }), fetchRange, false, context);\n}\nfunction isSourceDirty(eventSource, fetchRange, context) {\n if (!doesSourceNeedRange(eventSource, context)) {\n return !eventSource.latestFetchId;\n }\n return !context.options.lazyFetching ||\n !eventSource.fetchRange ||\n eventSource.isFetching || // always cancel outdated in-progress fetches\n fetchRange.start < eventSource.fetchRange.start ||\n fetchRange.end > eventSource.fetchRange.end;\n}\nfunction fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, context) {\n var nextSources = {};\n for (var sourceId in prevSources) {\n var source = prevSources[sourceId];\n if (sourceIdHash[sourceId]) {\n nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context);\n }\n else {\n nextSources[sourceId] = source;\n }\n }\n return nextSources;\n}\nfunction fetchSource(eventSource, fetchRange, isRefetch, context) {\n var options = context.options, calendarApi = context.calendarApi;\n var sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];\n var fetchId = guid();\n sourceDef.fetch({\n eventSource: eventSource,\n range: fetchRange,\n isRefetch: isRefetch,\n context: context,\n }, function (res) {\n var rawEvents = res.rawEvents;\n if (options.eventSourceSuccess) {\n rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.xhr) || rawEvents;\n }\n if (eventSource.success) {\n rawEvents = eventSource.success.call(calendarApi, rawEvents, res.xhr) || rawEvents;\n }\n context.dispatch({\n type: 'RECEIVE_EVENTS',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n rawEvents: rawEvents,\n });\n }, function (error) {\n console.warn(error.message, error);\n if (options.eventSourceFailure) {\n options.eventSourceFailure.call(calendarApi, error);\n }\n if (eventSource.failure) {\n eventSource.failure(error);\n }\n context.dispatch({\n type: 'RECEIVE_EVENT_ERROR',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n error: error,\n });\n });\n return __assign(__assign({}, eventSource), { isFetching: true, latestFetchId: fetchId });\n}\nfunction receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n var _a;\n var eventSource = sourceHash[sourceId];\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId) {\n return __assign(__assign({}, sourceHash), (_a = {}, _a[sourceId] = __assign(__assign({}, eventSource), { isFetching: false, fetchRange: fetchRange }), _a));\n }\n return sourceHash;\n}\nfunction excludeStaticSources(eventSources, context) {\n return filterHash(eventSources, function (eventSource) { return doesSourceNeedRange(eventSource, context); });\n}\nfunction parseInitialSources(rawOptions, context) {\n var refiners = buildEventSourceRefiners(context);\n var rawSources = [].concat(rawOptions.eventSources || []);\n var sources = []; // parsed\n if (rawOptions.initialEvents) {\n rawSources.unshift(rawOptions.initialEvents);\n }\n if (rawOptions.events) {\n rawSources.unshift(rawOptions.events);\n }\n for (var _i = 0, rawSources_1 = rawSources; _i < rawSources_1.length; _i++) {\n var rawSource = rawSources_1[_i];\n var source = parseEventSource(rawSource, context, refiners);\n if (source) {\n sources.push(source);\n }\n }\n return sources;\n}\nfunction doesSourceNeedRange(eventSource, context) {\n var defs = context.pluginHooks.eventSourceDefs;\n return !defs[eventSource.sourceDefId].ignoreRange;\n}\n\nfunction reduceEventStore(eventStore, action, eventSources, dateProfile, context) {\n switch (action.type) {\n case 'RECEIVE_EVENTS': // raw\n return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, context);\n case 'ADD_EVENTS': // already parsed, but not expanded\n return addEvent(eventStore, action.eventStore, // new ones\n dateProfile ? dateProfile.activeRange : null, context);\n case 'RESET_EVENTS':\n return action.eventStore;\n case 'MERGE_EVENTS': // already parsed and expanded\n return mergeEventStores(eventStore, action.eventStore);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return expandRecurring(eventStore, dateProfile.activeRange, context);\n }\n return eventStore;\n case 'REMOVE_EVENTS':\n return excludeSubEventStore(eventStore, action.eventStore);\n case 'REMOVE_EVENT_SOURCE':\n return excludeEventsBySourceId(eventStore, action.sourceId);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return filterEventStoreDefs(eventStore, function (eventDef) { return (!eventDef.sourceId // only keep events with no source id\n ); });\n case 'REMOVE_ALL_EVENTS':\n return createEmptyEventStore();\n default:\n return eventStore;\n }\n}\nfunction receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, context) {\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources\n ) {\n var subset = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context);\n if (fetchRange) {\n subset = expandRecurring(subset, fetchRange, context);\n }\n return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset);\n }\n return eventStore;\n}\nfunction transformRawEvents(rawEvents, eventSource, context) {\n var calEachTransform = context.options.eventDataTransform;\n var sourceEachTransform = eventSource ? eventSource.eventDataTransform : null;\n if (sourceEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform);\n }\n if (calEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, calEachTransform);\n }\n return rawEvents;\n}\nfunction transformEachRawEvent(rawEvents, func) {\n var refinedEvents;\n if (!func) {\n refinedEvents = rawEvents;\n }\n else {\n refinedEvents = [];\n for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) {\n var rawEvent = rawEvents_1[_i];\n var refinedEvent = func(rawEvent);\n if (refinedEvent) {\n refinedEvents.push(refinedEvent);\n }\n else if (refinedEvent == null) {\n refinedEvents.push(rawEvent);\n } // if a different falsy value, do nothing\n }\n }\n return refinedEvents;\n}\nfunction addEvent(eventStore, subset, expandRange, context) {\n if (expandRange) {\n subset = expandRecurring(subset, expandRange, context);\n }\n return mergeEventStores(eventStore, subset);\n}\nfunction rezoneEventStoreDates(eventStore, oldDateEnv, newDateEnv) {\n var defs = eventStore.defs;\n var instances = mapHash(eventStore.instances, function (instance) {\n var def = defs[instance.defId];\n if (def.allDay || def.recurringDef) {\n return instance; // isn't dependent on timezone\n }\n return __assign(__assign({}, instance), { range: {\n start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),\n end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo)),\n }, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo });\n });\n return { defs: defs, instances: instances };\n}\nfunction excludeEventsBySourceId(eventStore, sourceId) {\n return filterEventStoreDefs(eventStore, function (eventDef) { return eventDef.sourceId !== sourceId; });\n}\n// QUESTION: why not just return instances? do a general object-property-exclusion util\nfunction excludeInstances(eventStore, removals) {\n return {\n defs: eventStore.defs,\n instances: filterHash(eventStore.instances, function (instance) { return !removals[instance.instanceId]; }),\n };\n}\n\nfunction reduceDateSelection(currentSelection, action) {\n switch (action.type) {\n case 'UNSELECT_DATES':\n return null;\n case 'SELECT_DATES':\n return action.selection;\n default:\n return currentSelection;\n }\n}\n\nfunction reduceSelectedEvent(currentInstanceId, action) {\n switch (action.type) {\n case 'UNSELECT_EVENT':\n return '';\n case 'SELECT_EVENT':\n return action.eventInstanceId;\n default:\n return currentInstanceId;\n }\n}\n\nfunction reduceEventDrag(currentDrag, action) {\n var newDrag;\n switch (action.type) {\n case 'UNSET_EVENT_DRAG':\n return null;\n case 'SET_EVENT_DRAG':\n newDrag = action.state;\n return {\n affectedEvents: newDrag.affectedEvents,\n mutatedEvents: newDrag.mutatedEvents,\n isEvent: newDrag.isEvent,\n };\n default:\n return currentDrag;\n }\n}\n\nfunction reduceEventResize(currentResize, action) {\n var newResize;\n switch (action.type) {\n case 'UNSET_EVENT_RESIZE':\n return null;\n case 'SET_EVENT_RESIZE':\n newResize = action.state;\n return {\n affectedEvents: newResize.affectedEvents,\n mutatedEvents: newResize.mutatedEvents,\n isEvent: newResize.isEvent,\n };\n default:\n return currentResize;\n }\n}\n\nfunction parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n var header = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n var footer = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n return { header: header, footer: footer };\n}\nfunction parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n var sectionWidgets = {};\n var viewsWithButtons = [];\n var hasTitle = false;\n for (var sectionName in sectionStrHash) {\n var sectionStr = sectionStrHash[sectionName];\n var sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi);\n sectionWidgets[sectionName] = sectionRes.widgets;\n viewsWithButtons.push.apply(viewsWithButtons, sectionRes.viewsWithButtons);\n hasTitle = hasTitle || sectionRes.hasTitle;\n }\n return { sectionWidgets: sectionWidgets, viewsWithButtons: viewsWithButtons, hasTitle: hasTitle };\n}\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(sectionStr, calendarOptions, // defaults+overrides, then refined\ncalendarOptionOverrides, // overrides only!, unrefined :(\ntheme, viewSpecs, calendarApi) {\n var isRtl = calendarOptions.direction === 'rtl';\n var calendarCustomButtons = calendarOptions.customButtons || {};\n var calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};\n var calendarButtonText = calendarOptions.buttonText || {};\n var calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {};\n var calendarButtonHints = calendarOptions.buttonHints || {};\n var sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];\n var viewsWithButtons = [];\n var hasTitle = false;\n var widgets = sectionSubstrs.map(function (buttonGroupStr) { return (buttonGroupStr.split(',').map(function (buttonName) {\n if (buttonName === 'title') {\n hasTitle = true;\n return { buttonName: buttonName };\n }\n var customButtonProps;\n var viewSpec;\n var buttonClick;\n var buttonIcon; // only one of these will be set\n var buttonText; // \"\n var buttonHint;\n // ^ for the title=\"\" attribute, for accessibility\n if ((customButtonProps = calendarCustomButtons[buttonName])) {\n buttonClick = function (ev) {\n if (customButtonProps.click) {\n customButtonProps.click.call(ev.target, ev, ev.target); // TODO: use Calendar this context?\n }\n };\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = customButtonProps.text);\n buttonHint = customButtonProps.hint || customButtonProps.text;\n }\n else if ((viewSpec = viewSpecs[buttonName])) {\n viewsWithButtons.push(buttonName);\n buttonClick = function () {\n calendarApi.changeView(buttonName);\n };\n (buttonText = viewSpec.buttonTextOverride) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = viewSpec.buttonTextDefault);\n var textFallback = viewSpec.buttonTextOverride ||\n viewSpec.buttonTextDefault;\n buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride ||\n viewSpec.buttonTitleDefault ||\n calendarOptions.viewHint, [textFallback, buttonName], // view-name = buttonName\n textFallback);\n }\n else if (calendarApi[buttonName]) { // a calendarApi method\n buttonClick = function () {\n calendarApi[buttonName]();\n };\n (buttonText = calendarButtonTextOverrides[buttonName]) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = calendarButtonText[buttonName]); // everything else is considered default\n if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n var prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next';\n buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] ||\n calendarButtonHints[prevOrNext], [\n calendarButtonText.year || 'year',\n 'year',\n ], calendarButtonText[buttonName]);\n }\n else {\n buttonHint = function (navUnit) { return formatWithOrdinals(calendarButtonHintOverrides[buttonName] ||\n calendarButtonHints[buttonName], [\n calendarButtonText[navUnit] || navUnit,\n navUnit,\n ], calendarButtonText[buttonName]); };\n }\n }\n return { buttonName: buttonName, buttonClick: buttonClick, buttonIcon: buttonIcon, buttonText: buttonText, buttonHint: buttonHint };\n })); });\n return { widgets: widgets, viewsWithButtons: viewsWithButtons, hasTitle: hasTitle };\n}\n\nvar eventSourceDef$2 = {\n ignoreRange: true,\n parseMeta: function (refined) {\n if (Array.isArray(refined.events)) {\n return refined.events;\n }\n return null;\n },\n fetch: function (arg, success) {\n success({\n rawEvents: arg.eventSource.meta,\n });\n },\n};\nvar arrayEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$2],\n});\n\nvar eventSourceDef$1 = {\n parseMeta: function (refined) {\n if (typeof refined.events === 'function') {\n return refined.events;\n }\n return null;\n },\n fetch: function (arg, success, failure) {\n var dateEnv = arg.context.dateEnv;\n var func = arg.eventSource.meta;\n unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), function (rawEvents) {\n success({ rawEvents: rawEvents }); // needs an object response\n }, failure);\n },\n};\nvar funcEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$1],\n});\n\nfunction requestJson(method, url, params, successCallback, failureCallback) {\n method = method.toUpperCase();\n var body = null;\n if (method === 'GET') {\n url = injectQueryStringParams(url, params);\n }\n else {\n body = encodeParams(params);\n }\n var xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n if (method !== 'GET') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 400) {\n var parsed = false;\n var res = void 0;\n try {\n res = JSON.parse(xhr.responseText);\n parsed = true;\n }\n catch (err) {\n // will handle parsed=false\n }\n if (parsed) {\n successCallback(res, xhr);\n }\n else {\n failureCallback('Failure parsing JSON', xhr);\n }\n }\n else {\n failureCallback('Request failed', xhr);\n }\n };\n xhr.onerror = function () {\n failureCallback('Request failed', xhr);\n };\n xhr.send(body);\n}\nfunction injectQueryStringParams(url, params) {\n return url +\n (url.indexOf('?') === -1 ? '?' : '&') +\n encodeParams(params);\n}\nfunction encodeParams(params) {\n var parts = [];\n for (var key in params) {\n parts.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(params[key]));\n }\n return parts.join('&');\n}\n\nvar JSON_FEED_EVENT_SOURCE_REFINERS = {\n method: String,\n extraParams: identity,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n};\n\nvar eventSourceDef = {\n parseMeta: function (refined) {\n if (refined.url && (refined.format === 'json' || !refined.format)) {\n return {\n url: refined.url,\n format: 'json',\n method: (refined.method || 'GET').toUpperCase(),\n extraParams: refined.extraParams,\n startParam: refined.startParam,\n endParam: refined.endParam,\n timeZoneParam: refined.timeZoneParam,\n };\n }\n return null;\n },\n fetch: function (arg, success, failure) {\n var meta = arg.eventSource.meta;\n var requestParams = buildRequestParams(meta, arg.range, arg.context);\n requestJson(meta.method, meta.url, requestParams, function (rawEvents, xhr) {\n success({ rawEvents: rawEvents, xhr: xhr });\n }, function (errorMessage, xhr) {\n failure({ message: errorMessage, xhr: xhr });\n });\n },\n};\nvar jsonFeedEventSourcePlugin = createPlugin({\n eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n eventSourceDefs: [eventSourceDef],\n});\nfunction buildRequestParams(meta, range, context) {\n var dateEnv = context.dateEnv, options = context.options;\n var startParam;\n var endParam;\n var timeZoneParam;\n var customRequestParams;\n var params = {};\n startParam = meta.startParam;\n if (startParam == null) {\n startParam = options.startParam;\n }\n endParam = meta.endParam;\n if (endParam == null) {\n endParam = options.endParam;\n }\n timeZoneParam = meta.timeZoneParam;\n if (timeZoneParam == null) {\n timeZoneParam = options.timeZoneParam;\n }\n // retrieve any outbound GET/POST data from the options\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams();\n }\n else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {};\n }\n __assign(params, customRequestParams);\n params[startParam] = dateEnv.formatIso(range.start);\n params[endParam] = dateEnv.formatIso(range.end);\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone;\n }\n return params;\n}\n\nvar SIMPLE_RECURRING_REFINERS = {\n daysOfWeek: identity,\n startTime: createDuration,\n endTime: createDuration,\n duration: createDuration,\n startRecur: identity,\n endRecur: identity,\n};\n\nvar recurring = {\n parse: function (refined, dateEnv) {\n if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n var recurringData = {\n daysOfWeek: refined.daysOfWeek || null,\n startTime: refined.startTime || null,\n endTime: refined.endTime || null,\n startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,\n };\n var duration = void 0;\n if (refined.duration) {\n duration = refined.duration;\n }\n if (!duration && refined.startTime && refined.endTime) {\n duration = subtractDurations(refined.endTime, refined.startTime);\n }\n return {\n allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n duration: duration,\n typeData: recurringData, // doesn't need endTime anymore but oh well\n };\n }\n return null;\n },\n expand: function (typeData, framingRange, dateEnv) {\n var clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });\n if (clippedFramingRange) {\n return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);\n }\n return [];\n },\n};\nvar simpleRecurringEventsPlugin = createPlugin({\n recurringTypes: [recurring],\n eventRefiners: SIMPLE_RECURRING_REFINERS,\n});\nfunction expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {\n var dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n var dayMarker = startOfDay(framingRange.start);\n var endMarker = framingRange.end;\n var instanceStarts = [];\n while (dayMarker < endMarker) {\n var instanceStart \n // if everyday, or this particular day-of-week\n = void 0;\n // if everyday, or this particular day-of-week\n if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n if (startTime) {\n instanceStart = dateEnv.add(dayMarker, startTime);\n }\n else {\n instanceStart = dayMarker;\n }\n instanceStarts.push(instanceStart);\n }\n dayMarker = addDays(dayMarker, 1);\n }\n return instanceStarts;\n}\n\nvar changeHandlerPlugin = createPlugin({\n optionChangeHandlers: {\n events: function (events, context) {\n handleEventSources([events], context);\n },\n eventSources: handleEventSources,\n },\n});\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\nfunction handleEventSources(inputs, context) {\n var unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);\n var newInputs = [];\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input = inputs_1[_i];\n var inputFound = false;\n for (var i = 0; i < unfoundSources.length; i += 1) {\n if (unfoundSources[i]._raw === input) {\n unfoundSources.splice(i, 1); // delete\n inputFound = true;\n break;\n }\n }\n if (!inputFound) {\n newInputs.push(input);\n }\n }\n for (var _a = 0, unfoundSources_1 = unfoundSources; _a < unfoundSources_1.length; _a++) {\n var unfoundSource = unfoundSources_1[_a];\n context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: unfoundSource.sourceId,\n });\n }\n for (var _b = 0, newInputs_1 = newInputs; _b < newInputs_1.length; _b++) {\n var newInput = newInputs_1[_b];\n context.calendarApi.addEventSource(newInput);\n }\n}\n\nfunction handleDateProfile(dateProfile, context) {\n context.emitter.trigger('datesSet', __assign(__assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi }));\n}\n\nfunction handleEventStore(eventStore, context) {\n var emitter = context.emitter;\n if (emitter.hasHandlers('eventsSet')) {\n emitter.trigger('eventsSet', buildEventApis(eventStore, context));\n }\n}\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nvar globalPlugins = [\n arrayEventSourcePlugin,\n funcEventSourcePlugin,\n jsonFeedEventSourcePlugin,\n simpleRecurringEventsPlugin,\n changeHandlerPlugin,\n createPlugin({\n isLoadingFuncs: [\n function (state) { return computeEventSourcesLoading(state.eventSources); },\n ],\n contentTypeHandlers: {\n html: buildHtmlRenderer,\n domNodes: buildDomNodeRenderer,\n },\n propSetHandlers: {\n dateProfile: handleDateProfile,\n eventStore: handleEventStore,\n },\n }),\n];\nfunction buildHtmlRenderer() {\n var currentEl = null;\n var currentHtml = '';\n function render(el, html) {\n if (el !== currentEl || html !== currentHtml) {\n el.innerHTML = html;\n }\n currentEl = el;\n currentHtml = html;\n }\n function destroy() {\n currentEl.innerHTML = '';\n currentEl = null;\n currentHtml = '';\n }\n return { render: render, destroy: destroy };\n}\nfunction buildDomNodeRenderer() {\n var currentEl = null;\n var currentDomNodes = [];\n function render(el, domNodes) {\n var newDomNodes = Array.prototype.slice.call(domNodes);\n if (el !== currentEl || !isArraysEqual(currentDomNodes, newDomNodes)) {\n // append first, remove second (for scroll resetting)\n for (var _i = 0, newDomNodes_1 = newDomNodes; _i < newDomNodes_1.length; _i++) {\n var newNode = newDomNodes_1[_i];\n el.appendChild(newNode);\n }\n destroy();\n }\n currentEl = el;\n currentDomNodes = newDomNodes;\n }\n function destroy() {\n currentDomNodes.forEach(removeElement);\n currentDomNodes = [];\n currentEl = null;\n }\n return { render: render, destroy: destroy };\n}\n\nvar DelayedRunner = /** @class */ (function () {\n function DelayedRunner(drainedOption) {\n this.drainedOption = drainedOption;\n this.isRunning = false;\n this.isDirty = false;\n this.pauseDepths = {};\n this.timeoutId = 0;\n }\n DelayedRunner.prototype.request = function (delay) {\n this.isDirty = true;\n if (!this.isPaused()) {\n this.clearTimeout();\n if (delay == null) {\n this.tryDrain();\n }\n else {\n this.timeoutId = setTimeout(// NOT OPTIMAL! TODO: look at debounce\n this.tryDrain.bind(this), delay);\n }\n }\n };\n DelayedRunner.prototype.pause = function (scope) {\n if (scope === void 0) { scope = ''; }\n var pauseDepths = this.pauseDepths;\n pauseDepths[scope] = (pauseDepths[scope] || 0) + 1;\n this.clearTimeout();\n };\n DelayedRunner.prototype.resume = function (scope, force) {\n if (scope === void 0) { scope = ''; }\n var pauseDepths = this.pauseDepths;\n if (scope in pauseDepths) {\n if (force) {\n delete pauseDepths[scope];\n }\n else {\n pauseDepths[scope] -= 1;\n var depth = pauseDepths[scope];\n if (depth <= 0) {\n delete pauseDepths[scope];\n }\n }\n this.tryDrain();\n }\n };\n DelayedRunner.prototype.isPaused = function () {\n return Object.keys(this.pauseDepths).length;\n };\n DelayedRunner.prototype.tryDrain = function () {\n if (!this.isRunning && !this.isPaused()) {\n this.isRunning = true;\n while (this.isDirty) {\n this.isDirty = false;\n this.drained(); // might set isDirty to true again\n }\n this.isRunning = false;\n }\n };\n DelayedRunner.prototype.clear = function () {\n this.clearTimeout();\n this.isDirty = false;\n this.pauseDepths = {};\n };\n DelayedRunner.prototype.clearTimeout = function () {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = 0;\n }\n };\n DelayedRunner.prototype.drained = function () {\n if (this.drainedOption) {\n this.drainedOption();\n }\n };\n return DelayedRunner;\n}());\n\nvar TaskRunner = /** @class */ (function () {\n function TaskRunner(runTaskOption, drainedOption) {\n this.runTaskOption = runTaskOption;\n this.drainedOption = drainedOption;\n this.queue = [];\n this.delayedRunner = new DelayedRunner(this.drain.bind(this));\n }\n TaskRunner.prototype.request = function (task, delay) {\n this.queue.push(task);\n this.delayedRunner.request(delay);\n };\n TaskRunner.prototype.pause = function (scope) {\n this.delayedRunner.pause(scope);\n };\n TaskRunner.prototype.resume = function (scope, force) {\n this.delayedRunner.resume(scope, force);\n };\n TaskRunner.prototype.drain = function () {\n var queue = this.queue;\n while (queue.length) {\n var completedTasks = [];\n var task = void 0;\n while ((task = queue.shift())) {\n this.runTask(task);\n completedTasks.push(task);\n }\n this.drained(completedTasks);\n } // keep going, in case new tasks were added in the drained handler\n };\n TaskRunner.prototype.runTask = function (task) {\n if (this.runTaskOption) {\n this.runTaskOption(task);\n }\n };\n TaskRunner.prototype.drained = function (completedTasks) {\n if (this.drainedOption) {\n this.drainedOption(completedTasks);\n }\n };\n return TaskRunner;\n}());\n\n// Computes what the title at the top of the calendarApi should be for this view\nfunction buildTitle(dateProfile, viewOptions, dateEnv) {\n var range;\n // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n range = dateProfile.currentRange;\n }\n else { // for day units or smaller, use the actual day range\n range = dateProfile.activeRange;\n }\n return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {\n isEndExclusive: dateProfile.isRangeAllDay,\n defaultSeparator: viewOptions.titleRangeSeparator,\n });\n}\n// Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\nfunction buildTitleFormat(dateProfile) {\n var currentRangeUnit = dateProfile.currentRangeUnit;\n if (currentRangeUnit === 'year') {\n return { year: 'numeric' };\n }\n if (currentRangeUnit === 'month') {\n return { year: 'numeric', month: 'long' }; // like \"September 2014\"\n }\n var days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n if (days !== null && days > 1) {\n // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n return { year: 'numeric', month: 'short', day: 'numeric' };\n }\n // one day. longer, like \"September 9 2014\"\n return { year: 'numeric', month: 'long', day: 'numeric' };\n}\n\n// in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\nvar CalendarDataManager = /** @class */ (function () {\n function CalendarDataManager(props) {\n var _this = this;\n this.computeOptionsData = memoize(this._computeOptionsData);\n this.computeCurrentViewData = memoize(this._computeCurrentViewData);\n this.organizeRawLocales = memoize(organizeRawLocales);\n this.buildLocale = memoize(buildLocale);\n this.buildPluginHooks = buildBuildPluginHooks();\n this.buildDateEnv = memoize(buildDateEnv);\n this.buildTheme = memoize(buildTheme);\n this.parseToolbars = memoize(parseToolbars);\n this.buildViewSpecs = memoize(buildViewSpecs);\n this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator);\n this.buildViewApi = memoize(buildViewApi);\n this.buildViewUiProps = memoizeObjArg(buildViewUiProps);\n this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual);\n this.buildEventUiBases = memoize(buildEventUiBases);\n this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);\n this.buildTitle = memoize(buildTitle);\n this.emitter = new Emitter();\n this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));\n this.currentCalendarOptionsInput = {};\n this.currentCalendarOptionsRefined = {};\n this.currentViewOptionsInput = {};\n this.currentViewOptionsRefined = {};\n this.currentCalendarOptionsRefiners = {};\n this.getCurrentData = function () { return _this.data; };\n this.dispatch = function (action) {\n _this.actionRunner.request(action); // protects against recursive calls to _handleAction\n };\n this.props = props;\n this.actionRunner.pause();\n var dynamicOptionOverrides = {};\n var optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n var currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;\n var currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n this.emitter.setThisContext(props.calendarApi);\n this.emitter.setOptions(currentViewData.options);\n var currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv);\n var dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n var calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: this.emitter,\n getCurrentData: this.getCurrentData,\n };\n // needs to be after setThisContext\n for (var _i = 0, _a = optionsData.pluginHooks.contextInit; _i < _a.length; _i++) {\n var callback = _a[_i];\n callback(calendarContext);\n }\n // NOT DRY\n var eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext);\n var initialState = {\n dynamicOptionOverrides: dynamicOptionOverrides,\n currentViewType: currentViewType,\n currentDate: currentDate,\n dateProfile: dateProfile,\n businessHours: this.parseContextBusinessHours(calendarContext),\n eventSources: eventSources,\n eventUiBases: {},\n eventStore: createEmptyEventStore(),\n renderableEventStore: createEmptyEventStore(),\n dateSelection: null,\n eventSelection: '',\n eventDrag: null,\n eventResize: null,\n selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig,\n };\n var contextAndState = __assign(__assign({}, calendarContext), initialState);\n for (var _b = 0, _c = optionsData.pluginHooks.reducers; _b < _c.length; _b++) {\n var reducer = _c[_b];\n __assign(initialState, reducer(null, null, contextAndState));\n }\n if (computeIsLoading(initialState, calendarContext)) {\n this.emitter.trigger('loading', true); // NOT DRY\n }\n this.state = initialState;\n this.updateData();\n this.actionRunner.resume();\n }\n CalendarDataManager.prototype.resetOptions = function (optionOverrides, append) {\n var props = this.props;\n props.optionOverrides = append\n ? __assign(__assign({}, props.optionOverrides), optionOverrides) : optionOverrides;\n this.actionRunner.request({\n type: 'NOTHING',\n });\n };\n CalendarDataManager.prototype._handleAction = function (action) {\n var _a = this, props = _a.props, state = _a.state, emitter = _a.emitter;\n var dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action);\n var optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n var currentViewType = reduceViewType(state.currentViewType, action);\n var currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n emitter.setThisContext(props.calendarApi);\n emitter.setOptions(currentViewData.options);\n var calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: emitter,\n getCurrentData: this.getCurrentData,\n };\n var currentDate = state.currentDate, dateProfile = state.dateProfile;\n if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack\n dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n }\n currentDate = reduceCurrentDate(currentDate, action);\n dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);\n if (action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n action.type === 'NEXT' || // \"\n !rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n var eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);\n var eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);\n var isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading\n var renderableEventStore = (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?\n (state.renderableEventStore || eventStore) : // try from previous state\n eventStore;\n var _b = this.buildViewUiProps(calendarContext), eventUiSingleBase = _b.eventUiSingleBase, selectionConfig = _b.selectionConfig; // will memoize obj\n var eventUiBySource = this.buildEventUiBySource(eventSources);\n var eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n var newState = {\n dynamicOptionOverrides: dynamicOptionOverrides,\n currentViewType: currentViewType,\n currentDate: currentDate,\n dateProfile: dateProfile,\n eventSources: eventSources,\n eventStore: eventStore,\n renderableEventStore: renderableEventStore,\n selectionConfig: selectionConfig,\n eventUiBases: eventUiBases,\n businessHours: this.parseContextBusinessHours(calendarContext),\n dateSelection: reduceDateSelection(state.dateSelection, action),\n eventSelection: reduceSelectedEvent(state.eventSelection, action),\n eventDrag: reduceEventDrag(state.eventDrag, action),\n eventResize: reduceEventResize(state.eventResize, action),\n };\n var contextAndState = __assign(__assign({}, calendarContext), newState);\n for (var _i = 0, _c = optionsData.pluginHooks.reducers; _i < _c.length; _i++) {\n var reducer = _c[_i];\n __assign(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value\n }\n var wasLoading = computeIsLoading(state, calendarContext);\n var isLoading = computeIsLoading(newState, calendarContext);\n // TODO: use propSetHandlers in plugin system\n if (!wasLoading && isLoading) {\n emitter.trigger('loading', true);\n }\n else if (wasLoading && !isLoading) {\n emitter.trigger('loading', false);\n }\n this.state = newState;\n if (props.onAction) {\n props.onAction(action);\n }\n };\n CalendarDataManager.prototype.updateData = function () {\n var _a = this, props = _a.props, state = _a.state;\n var oldData = this.data;\n var optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);\n var currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);\n var data = this.data = __assign(__assign(__assign({ viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state);\n var changeHandlers = optionsData.pluginHooks.optionChangeHandlers;\n var oldCalendarOptions = oldData && oldData.calendarOptions;\n var newCalendarOptions = optionsData.calendarOptions;\n if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n // hack\n state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);\n state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);\n }\n for (var optionName in changeHandlers) {\n if (oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n changeHandlers[optionName](newCalendarOptions[optionName], data);\n }\n }\n }\n if (props.onData) {\n props.onData(data);\n }\n };\n CalendarDataManager.prototype._computeOptionsData = function (optionOverrides, dynamicOptionOverrides, calendarApi) {\n // TODO: blacklist options that are handled by optionChangeHandlers\n var _a = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides), refinedOptions = _a.refinedOptions, pluginHooks = _a.pluginHooks, localeDefaults = _a.localeDefaults, availableLocaleData = _a.availableLocaleData, extra = _a.extra;\n warnUnknownOptions(extra);\n var dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);\n var viewSpecs = this.buildViewSpecs(pluginHooks.views, optionOverrides, dynamicOptionOverrides, localeDefaults);\n var theme = this.buildTheme(refinedOptions, pluginHooks);\n var toolbarConfig = this.parseToolbars(refinedOptions, optionOverrides, theme, viewSpecs, calendarApi);\n return {\n calendarOptions: refinedOptions,\n pluginHooks: pluginHooks,\n dateEnv: dateEnv,\n viewSpecs: viewSpecs,\n theme: theme,\n toolbarConfig: toolbarConfig,\n localeDefaults: localeDefaults,\n availableRawLocales: availableLocaleData.map,\n };\n };\n // always called from behind a memoizer\n CalendarDataManager.prototype.processRawCalendarOptions = function (optionOverrides, dynamicOptionOverrides) {\n var _a = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n optionOverrides,\n dynamicOptionOverrides,\n ]), locales = _a.locales, locale = _a.locale;\n var availableLocaleData = this.organizeRawLocales(locales);\n var availableRawLocales = availableLocaleData.map;\n var localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options;\n var pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins);\n var refiners = this.currentCalendarOptionsRefiners = __assign(__assign(__assign(__assign(__assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n var extra = {};\n var raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n localeDefaults,\n optionOverrides,\n dynamicOptionOverrides,\n ]);\n var refined = {};\n var currentRaw = this.currentCalendarOptionsInput;\n var currentRefined = this.currentCalendarOptionsRefined;\n var anyChanges = false;\n for (var optionName in raw) {\n if (optionName !== 'plugins') { // because plugins is special-cased\n if (raw[optionName] === currentRaw[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n (optionName in currentRaw) &&\n COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName]))) {\n refined[optionName] = currentRefined[optionName];\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n anyChanges = true;\n }\n else {\n extra[optionName] = currentRaw[optionName];\n }\n }\n }\n if (anyChanges) {\n this.currentCalendarOptionsInput = raw;\n this.currentCalendarOptionsRefined = refined;\n }\n return {\n rawOptions: this.currentCalendarOptionsInput,\n refinedOptions: this.currentCalendarOptionsRefined,\n pluginHooks: pluginHooks,\n availableLocaleData: availableLocaleData,\n localeDefaults: localeDefaults,\n extra: extra,\n };\n };\n CalendarDataManager.prototype._computeCurrentViewData = function (viewType, optionsData, optionOverrides, dynamicOptionOverrides) {\n var viewSpec = optionsData.viewSpecs[viewType];\n if (!viewSpec) {\n throw new Error(\"viewType \\\"\" + viewType + \"\\\" is not available. Please make sure you've loaded all neccessary plugins\");\n }\n var _a = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides), refinedOptions = _a.refinedOptions, extra = _a.extra;\n warnUnknownOptions(extra);\n var dateProfileGenerator = this.buildDateProfileGenerator({\n dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,\n duration: viewSpec.duration,\n durationUnit: viewSpec.durationUnit,\n usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,\n dateEnv: optionsData.dateEnv,\n calendarApi: this.props.calendarApi,\n slotMinTime: refinedOptions.slotMinTime,\n slotMaxTime: refinedOptions.slotMaxTime,\n showNonCurrentDates: refinedOptions.showNonCurrentDates,\n dayCount: refinedOptions.dayCount,\n dateAlignment: refinedOptions.dateAlignment,\n dateIncrement: refinedOptions.dateIncrement,\n hiddenDays: refinedOptions.hiddenDays,\n weekends: refinedOptions.weekends,\n nowInput: refinedOptions.now,\n validRangeInput: refinedOptions.validRange,\n visibleRangeInput: refinedOptions.visibleRange,\n monthMode: refinedOptions.monthMode,\n fixedWeekCount: refinedOptions.fixedWeekCount,\n });\n var viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);\n return { viewSpec: viewSpec, options: refinedOptions, dateProfileGenerator: dateProfileGenerator, viewApi: viewApi };\n };\n CalendarDataManager.prototype.processRawViewOptions = function (viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) {\n var raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n viewSpec.optionDefaults,\n localeDefaults,\n optionOverrides,\n viewSpec.optionOverrides,\n dynamicOptionOverrides,\n ]);\n var refiners = __assign(__assign(__assign(__assign(__assign(__assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n var refined = {};\n var currentRaw = this.currentViewOptionsInput;\n var currentRefined = this.currentViewOptionsRefined;\n var anyChanges = false;\n var extra = {};\n for (var optionName in raw) {\n if (raw[optionName] === currentRaw[optionName]) {\n refined[optionName] = currentRefined[optionName];\n }\n else {\n if (raw[optionName] === this.currentCalendarOptionsInput[optionName]) {\n if (optionName in this.currentCalendarOptionsRefined) { // might be an \"extra\" prop\n refined[optionName] = this.currentCalendarOptionsRefined[optionName];\n }\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n }\n else {\n extra[optionName] = raw[optionName];\n }\n anyChanges = true;\n }\n }\n if (anyChanges) {\n this.currentViewOptionsInput = raw;\n this.currentViewOptionsRefined = refined;\n }\n return {\n rawOptions: this.currentViewOptionsInput,\n refinedOptions: this.currentViewOptionsRefined,\n extra: extra,\n };\n };\n return CalendarDataManager;\n}());\nfunction buildDateEnv(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) {\n var locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map);\n return new DateEnv({\n calendarSystem: 'gregory',\n timeZone: timeZone,\n namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n locale: locale,\n weekNumberCalculation: weekNumberCalculation,\n firstDay: firstDay,\n weekText: weekText,\n cmdFormatter: pluginHooks.cmdFormatter,\n defaultSeparator: defaultSeparator,\n });\n}\nfunction buildTheme(options, pluginHooks) {\n var ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme;\n return new ThemeClass(options);\n}\nfunction buildDateProfileGenerator(props) {\n var DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator;\n return new DateProfileGeneratorClass(props);\n}\nfunction buildViewApi(type, getCurrentData, dateEnv) {\n return new ViewApi(type, getCurrentData, dateEnv);\n}\nfunction buildEventUiBySource(eventSources) {\n return mapHash(eventSources, function (eventSource) { return eventSource.ui; });\n}\nfunction buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n var eventUiBases = { '': eventUiSingleBase };\n for (var defId in eventDefs) {\n var def = eventDefs[defId];\n if (def.sourceId && eventUiBySource[def.sourceId]) {\n eventUiBases[defId] = eventUiBySource[def.sourceId];\n }\n }\n return eventUiBases;\n}\nfunction buildViewUiProps(calendarContext) {\n var options = calendarContext.options;\n return {\n eventUiSingleBase: createEventUi({\n display: options.eventDisplay,\n editable: options.editable,\n startEditable: options.eventStartEditable,\n durationEditable: options.eventDurationEditable,\n constraint: options.eventConstraint,\n overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n allow: options.eventAllow,\n backgroundColor: options.eventBackgroundColor,\n borderColor: options.eventBorderColor,\n textColor: options.eventTextColor,\n color: options.eventColor,\n // classNames: options.eventClassNames // render hook will handle this\n }, calendarContext),\n selectionConfig: createEventUi({\n constraint: options.selectConstraint,\n overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n allow: options.selectAllow,\n }, calendarContext),\n };\n}\nfunction computeIsLoading(state, context) {\n for (var _i = 0, _a = context.pluginHooks.isLoadingFuncs; _i < _a.length; _i++) {\n var isLoadingFunc = _a[_i];\n if (isLoadingFunc(state)) {\n return true;\n }\n }\n return false;\n}\nfunction parseContextBusinessHours(calendarContext) {\n return parseBusinessHours(calendarContext.options.businessHours, calendarContext);\n}\nfunction warnUnknownOptions(options, viewName) {\n for (var optionName in options) {\n console.warn(\"Unknown option '\" + optionName + \"'\" +\n (viewName ? \" for view '\" + viewName + \"'\" : ''));\n }\n}\n\n// TODO: move this to react plugin?\nvar CalendarDataProvider = /** @class */ (function (_super) {\n __extends(CalendarDataProvider, _super);\n function CalendarDataProvider(props) {\n var _this = _super.call(this, props) || this;\n _this.handleData = function (data) {\n if (!_this.dataManager) { // still within initial run, before assignment in constructor\n // eslint-disable-next-line react/no-direct-mutation-state\n _this.state = data; // can't use setState yet\n }\n else {\n _this.setState(data);\n }\n };\n _this.dataManager = new CalendarDataManager({\n optionOverrides: props.optionOverrides,\n calendarApi: props.calendarApi,\n onData: _this.handleData,\n });\n return _this;\n }\n CalendarDataProvider.prototype.render = function () {\n return this.props.children(this.state);\n };\n CalendarDataProvider.prototype.componentDidUpdate = function (prevProps) {\n var newOptionOverrides = this.props.optionOverrides;\n if (newOptionOverrides !== prevProps.optionOverrides) { // prevent recursive handleData\n this.dataManager.resetOptions(newOptionOverrides);\n }\n };\n return CalendarDataProvider;\n}(Component));\n\n// HELPERS\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\nfunction sliceEvents(props, allDay) {\n return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;\n}\n\nvar NamedTimeZoneImpl = /** @class */ (function () {\n function NamedTimeZoneImpl(timeZoneName) {\n this.timeZoneName = timeZoneName;\n }\n return NamedTimeZoneImpl;\n}());\n\nvar SegHierarchy = /** @class */ (function () {\n function SegHierarchy() {\n // settings\n this.strictOrder = false;\n this.allowReslicing = false;\n this.maxCoord = -1; // -1 means no max\n this.maxStackCnt = -1; // -1 means no max\n this.levelCoords = []; // ordered\n this.entriesByLevel = []; // parallel with levelCoords\n this.stackCnts = {}; // TODO: use better technique!?\n }\n SegHierarchy.prototype.addSegs = function (inputs) {\n var hiddenEntries = [];\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input = inputs_1[_i];\n this.insertEntry(input, hiddenEntries);\n }\n return hiddenEntries;\n };\n SegHierarchy.prototype.insertEntry = function (entry, hiddenEntries) {\n var insertion = this.findInsertion(entry);\n if (this.isInsertionValid(insertion, entry)) {\n this.insertEntryAt(entry, insertion);\n return 1;\n }\n return this.handleInvalidInsertion(insertion, entry, hiddenEntries);\n };\n SegHierarchy.prototype.isInsertionValid = function (insertion, entry) {\n return (this.maxCoord === -1 || insertion.levelCoord + entry.thickness <= this.maxCoord) &&\n (this.maxStackCnt === -1 || insertion.stackCnt < this.maxStackCnt);\n };\n // returns number of new entries inserted\n SegHierarchy.prototype.handleInvalidInsertion = function (insertion, entry, hiddenEntries) {\n if (this.allowReslicing && insertion.touchingEntry) {\n return this.splitEntry(entry, insertion.touchingEntry, hiddenEntries);\n }\n hiddenEntries.push(entry);\n return 0;\n };\n SegHierarchy.prototype.splitEntry = function (entry, barrier, hiddenEntries) {\n var partCnt = 0;\n var splitHiddenEntries = [];\n var entrySpan = entry.span;\n var barrierSpan = barrier.span;\n if (entrySpan.start < barrierSpan.start) {\n partCnt += this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: { start: entrySpan.start, end: barrierSpan.start },\n }, splitHiddenEntries);\n }\n if (entrySpan.end > barrierSpan.end) {\n partCnt += this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: { start: barrierSpan.end, end: entrySpan.end },\n }, splitHiddenEntries);\n }\n if (partCnt) {\n hiddenEntries.push.apply(hiddenEntries, __spreadArray([{\n index: entry.index,\n thickness: entry.thickness,\n span: intersectSpans(barrierSpan, entrySpan), // guaranteed to intersect\n }], splitHiddenEntries));\n return partCnt;\n }\n hiddenEntries.push(entry);\n return 0;\n };\n SegHierarchy.prototype.insertEntryAt = function (entry, insertion) {\n var _a = this, entriesByLevel = _a.entriesByLevel, levelCoords = _a.levelCoords;\n if (insertion.lateral === -1) {\n // create a new level\n insertAt(levelCoords, insertion.level, insertion.levelCoord);\n insertAt(entriesByLevel, insertion.level, [entry]);\n }\n else {\n // insert into existing level\n insertAt(entriesByLevel[insertion.level], insertion.lateral, entry);\n }\n this.stackCnts[buildEntryKey(entry)] = insertion.stackCnt;\n };\n SegHierarchy.prototype.findInsertion = function (newEntry) {\n var _a = this, levelCoords = _a.levelCoords, entriesByLevel = _a.entriesByLevel, strictOrder = _a.strictOrder, stackCnts = _a.stackCnts;\n var levelCnt = levelCoords.length;\n var candidateCoord = 0;\n var touchingLevel = -1;\n var touchingLateral = -1;\n var touchingEntry = null;\n var stackCnt = 0;\n for (var trackingLevel = 0; trackingLevel < levelCnt; trackingLevel += 1) {\n var trackingCoord = levelCoords[trackingLevel];\n // if the current level is past the placed entry, we have found a good empty space and can stop.\n // if strictOrder, keep finding more lateral intersections.\n if (!strictOrder && trackingCoord >= candidateCoord + newEntry.thickness) {\n break;\n }\n var trackingEntries = entriesByLevel[trackingLevel];\n var trackingEntry = void 0;\n var searchRes = binarySearch(trackingEntries, newEntry.span.start, getEntrySpanEnd); // find first entry after newEntry's end\n var lateralIndex = searchRes[0] + searchRes[1]; // if exact match (which doesn't collide), go to next one\n while ( // loop through entries that horizontally intersect\n (trackingEntry = trackingEntries[lateralIndex]) && // but not past the whole entry list\n trackingEntry.span.start < newEntry.span.end // and not entirely past newEntry\n ) {\n var trackingEntryBottom = trackingCoord + trackingEntry.thickness;\n // intersects into the top of the candidate?\n if (trackingEntryBottom > candidateCoord) {\n candidateCoord = trackingEntryBottom;\n touchingEntry = trackingEntry;\n touchingLevel = trackingLevel;\n touchingLateral = lateralIndex;\n }\n // butts up against top of candidate? (will happen if just intersected as well)\n if (trackingEntryBottom === candidateCoord) {\n // accumulate the highest possible stackCnt of the trackingEntries that butt up\n stackCnt = Math.max(stackCnt, stackCnts[buildEntryKey(trackingEntry)] + 1);\n }\n lateralIndex += 1;\n }\n }\n // the destination level will be after touchingEntry's level. find it\n var destLevel = 0;\n if (touchingEntry) {\n destLevel = touchingLevel + 1;\n while (destLevel < levelCnt && levelCoords[destLevel] < candidateCoord) {\n destLevel += 1;\n }\n }\n // if adding to an existing level, find where to insert\n var destLateral = -1;\n if (destLevel < levelCnt && levelCoords[destLevel] === candidateCoord) {\n destLateral = binarySearch(entriesByLevel[destLevel], newEntry.span.end, getEntrySpanEnd)[0];\n }\n return {\n touchingLevel: touchingLevel,\n touchingLateral: touchingLateral,\n touchingEntry: touchingEntry,\n stackCnt: stackCnt,\n levelCoord: candidateCoord,\n level: destLevel,\n lateral: destLateral,\n };\n };\n // sorted by levelCoord (lowest to highest)\n SegHierarchy.prototype.toRects = function () {\n var _a = this, entriesByLevel = _a.entriesByLevel, levelCoords = _a.levelCoords;\n var levelCnt = entriesByLevel.length;\n var rects = [];\n for (var level = 0; level < levelCnt; level += 1) {\n var entries = entriesByLevel[level];\n var levelCoord = levelCoords[level];\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n rects.push(__assign(__assign({}, entry), { levelCoord: levelCoord }));\n }\n }\n return rects;\n };\n return SegHierarchy;\n}());\nfunction getEntrySpanEnd(entry) {\n return entry.span.end;\n}\nfunction buildEntryKey(entry) {\n return entry.index + ':' + entry.span.start;\n}\n// returns groups with entries sorted by input order\nfunction groupIntersectingEntries(entries) {\n var merges = [];\n for (var _i = 0, entries_2 = entries; _i < entries_2.length; _i++) {\n var entry = entries_2[_i];\n var filteredMerges = [];\n var hungryMerge = {\n span: entry.span,\n entries: [entry],\n };\n for (var _a = 0, merges_1 = merges; _a < merges_1.length; _a++) {\n var merge = merges_1[_a];\n if (intersectSpans(merge.span, hungryMerge.span)) {\n hungryMerge = {\n entries: merge.entries.concat(hungryMerge.entries),\n span: joinSpans(merge.span, hungryMerge.span),\n };\n }\n else {\n filteredMerges.push(merge);\n }\n }\n filteredMerges.push(hungryMerge);\n merges = filteredMerges;\n }\n return merges;\n}\nfunction joinSpans(span0, span1) {\n return {\n start: Math.min(span0.start, span1.start),\n end: Math.max(span0.end, span1.end),\n };\n}\nfunction intersectSpans(span0, span1) {\n var start = Math.max(span0.start, span1.start);\n var end = Math.min(span0.end, span1.end);\n if (start < end) {\n return { start: start, end: end };\n }\n return null;\n}\n// general util\n// ---------------------------------------------------------------------------------------------------------------------\nfunction insertAt(arr, index, item) {\n arr.splice(index, 0, item);\n}\nfunction binarySearch(a, searchVal, getItemVal) {\n var startIndex = 0;\n var endIndex = a.length; // exclusive\n if (!endIndex || searchVal < getItemVal(a[startIndex])) { // no items OR before first item\n return [0, 0];\n }\n if (searchVal > getItemVal(a[endIndex - 1])) { // after last item\n return [endIndex, 0];\n }\n while (startIndex < endIndex) {\n var middleIndex = Math.floor(startIndex + (endIndex - startIndex) / 2);\n var middleVal = getItemVal(a[middleIndex]);\n if (searchVal < middleVal) {\n endIndex = middleIndex;\n }\n else if (searchVal > middleVal) {\n startIndex = middleIndex + 1;\n }\n else { // equal!\n return [middleIndex, 1];\n }\n }\n return [startIndex, 0];\n}\n\nvar Interaction = /** @class */ (function () {\n function Interaction(settings) {\n this.component = settings.component;\n this.isHitComboAllowed = settings.isHitComboAllowed || null;\n }\n Interaction.prototype.destroy = function () {\n };\n return Interaction;\n}());\nfunction parseInteractionSettings(component, input) {\n return {\n component: component,\n el: input.el,\n useEventCenter: input.useEventCenter != null ? input.useEventCenter : true,\n isHitComboAllowed: input.isHitComboAllowed || null,\n };\n}\nfunction interactionSettingsToStore(settings) {\n var _a;\n return _a = {},\n _a[settings.component.uid] = settings,\n _a;\n}\n// global state\nvar interactionSettingsStore = {};\n\n/*\nAn abstraction for a dragging interaction originating on an event.\nDoes higher-level things than PointerDragger, such as possibly:\n- a \"mirror\" that moves with the pointer\n- a minimum number of pixels or other criteria for a true drag to begin\n\nsubclasses must emit:\n- pointerdown\n- dragstart\n- dragmove\n- pointerup\n- dragend\n*/\nvar ElementDragging = /** @class */ (function () {\n function ElementDragging(el, selector) {\n this.emitter = new Emitter();\n }\n ElementDragging.prototype.destroy = function () {\n };\n ElementDragging.prototype.setMirrorIsVisible = function (bool) {\n // optional if subclass doesn't want to support a mirror\n };\n ElementDragging.prototype.setMirrorNeedsRevert = function (bool) {\n // optional if subclass doesn't want to support a mirror\n };\n ElementDragging.prototype.setAutoScrollEnabled = function (bool) {\n // optional\n };\n return ElementDragging;\n}());\n\n// TODO: get rid of this in favor of options system,\n// tho it's really easy to access this globally rather than pass thru options.\nvar config = {};\n\n/*\nInformation about what will happen when an external element is dragged-and-dropped\nonto a calendar. Contains information for creating an event.\n*/\nvar DRAG_META_REFINERS = {\n startTime: createDuration,\n duration: createDuration,\n create: Boolean,\n sourceId: String,\n};\nfunction parseDragMeta(raw) {\n var _a = refineProps(raw, DRAG_META_REFINERS), refined = _a.refined, extra = _a.extra;\n return {\n startTime: refined.startTime || null,\n duration: refined.duration || null,\n create: refined.create != null ? refined.create : true,\n sourceId: refined.sourceId,\n leftoverProps: extra,\n };\n}\n\nvar ToolbarSection = /** @class */ (function (_super) {\n __extends(ToolbarSection, _super);\n function ToolbarSection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ToolbarSection.prototype.render = function () {\n var _this = this;\n var children = this.props.widgetGroups.map(function (widgetGroup) { return _this.renderWidgetGroup(widgetGroup); });\n return createElement.apply(void 0, __spreadArray(['div', { className: 'fc-toolbar-chunk' }], children));\n };\n ToolbarSection.prototype.renderWidgetGroup = function (widgetGroup) {\n var props = this.props;\n var theme = this.context.theme;\n var children = [];\n var isOnlyButtons = true;\n for (var _i = 0, widgetGroup_1 = widgetGroup; _i < widgetGroup_1.length; _i++) {\n var widget = widgetGroup_1[_i];\n var buttonName = widget.buttonName, buttonClick = widget.buttonClick, buttonText = widget.buttonText, buttonIcon = widget.buttonIcon, buttonHint = widget.buttonHint;\n if (buttonName === 'title') {\n isOnlyButtons = false;\n children.push(createElement(\"h2\", { className: \"fc-toolbar-title\", id: props.titleId }, props.title));\n }\n else {\n var isPressed = buttonName === props.activeButton;\n var isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||\n (!props.isPrevEnabled && buttonName === 'prev') ||\n (!props.isNextEnabled && buttonName === 'next');\n var buttonClasses = [\"fc-\" + buttonName + \"-button\", theme.getClass('button')];\n if (isPressed) {\n buttonClasses.push(theme.getClass('buttonActive'));\n }\n children.push(createElement(\"button\", { type: \"button\", title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, disabled: isDisabled, \"aria-pressed\": isPressed, className: buttonClasses.join(' '), onClick: buttonClick }, buttonText || (buttonIcon ? createElement(\"span\", { className: buttonIcon }) : '')));\n }\n }\n if (children.length > 1) {\n var groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || '';\n return createElement.apply(void 0, __spreadArray(['div', { className: groupClassName }], children));\n }\n return children[0];\n };\n return ToolbarSection;\n}(BaseComponent));\n\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n function Toolbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Toolbar.prototype.render = function () {\n var _a = this.props, model = _a.model, extraClassName = _a.extraClassName;\n var forceLtr = false;\n var startContent;\n var endContent;\n var sectionWidgets = model.sectionWidgets;\n var centerContent = sectionWidgets.center;\n if (sectionWidgets.left) {\n forceLtr = true;\n startContent = sectionWidgets.left;\n }\n else {\n startContent = sectionWidgets.start;\n }\n if (sectionWidgets.right) {\n forceLtr = true;\n endContent = sectionWidgets.right;\n }\n else {\n endContent = sectionWidgets.end;\n }\n var classNames = [\n extraClassName || '',\n 'fc-toolbar',\n forceLtr ? 'fc-toolbar-ltr' : '',\n ];\n return (createElement(\"div\", { className: classNames.join(' ') },\n this.renderSection('start', startContent || []),\n this.renderSection('center', centerContent || []),\n this.renderSection('end', endContent || [])));\n };\n Toolbar.prototype.renderSection = function (key, widgetGroups) {\n var props = this.props;\n return (createElement(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, navUnit: props.navUnit, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled, titleId: props.titleId }));\n };\n return Toolbar;\n}(BaseComponent));\n\n// TODO: do function component?\nvar ViewContainer = /** @class */ (function (_super) {\n __extends(ViewContainer, _super);\n function ViewContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n availableWidth: null,\n };\n _this.handleEl = function (el) {\n _this.el = el;\n setRef(_this.props.elRef, el);\n _this.updateAvailableWidth();\n };\n _this.handleResize = function () {\n _this.updateAvailableWidth();\n };\n return _this;\n }\n ViewContainer.prototype.render = function () {\n var _a = this, props = _a.props, state = _a.state;\n var aspectRatio = props.aspectRatio;\n var classNames = [\n 'fc-view-harness',\n (aspectRatio || props.liquid || props.height)\n ? 'fc-view-harness-active' // harness controls the height\n : 'fc-view-harness-passive', // let the view do the height\n ];\n var height = '';\n var paddingBottom = '';\n if (aspectRatio) {\n if (state.availableWidth !== null) {\n height = state.availableWidth / aspectRatio;\n }\n else {\n // while waiting to know availableWidth, we can't set height to *zero*\n // because will cause lots of unnecessary scrollbars within scrollgrid.\n // BETTER: don't start rendering ANYTHING yet until we know container width\n // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n paddingBottom = (1 / aspectRatio) * 100 + \"%\";\n }\n }\n else {\n height = props.height || '';\n }\n return (createElement(\"div\", { \"aria-labelledby\": props.labeledById, ref: this.handleEl, className: classNames.join(' '), style: { height: height, paddingBottom: paddingBottom } }, props.children));\n };\n ViewContainer.prototype.componentDidMount = function () {\n this.context.addResizeHandler(this.handleResize);\n };\n ViewContainer.prototype.componentWillUnmount = function () {\n this.context.removeResizeHandler(this.handleResize);\n };\n ViewContainer.prototype.updateAvailableWidth = function () {\n if (this.el && // needed. but why?\n this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n ) {\n this.setState({ availableWidth: this.el.offsetWidth });\n }\n };\n return ViewContainer;\n}(BaseComponent));\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nvar EventClicking = /** @class */ (function (_super) {\n __extends(EventClicking, _super);\n function EventClicking(settings) {\n var _this = _super.call(this, settings) || this;\n _this.handleSegClick = function (ev, segEl) {\n var component = _this.component;\n var context = component.context;\n var seg = getElSeg(segEl);\n if (seg && // might be the
surrounding the more link\n component.isValidSegDownEl(ev.target)) {\n // our way to simulate a link click for elements that can't be tags\n // grab before trigger fired in case trigger trashes DOM thru rerendering\n var hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');\n var url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n context.emitter.trigger('eventClick', {\n el: segEl,\n event: new EventApi(component.context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n if (url && !ev.defaultPrevented) {\n window.location.href = url;\n }\n }\n };\n _this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events\n _this.handleSegClick);\n return _this;\n }\n return EventClicking;\n}(Interaction));\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nvar EventHovering = /** @class */ (function (_super) {\n __extends(EventHovering, _super);\n function EventHovering(settings) {\n var _this = _super.call(this, settings) || this;\n // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n _this.handleEventElRemove = function (el) {\n if (el === _this.currentSegEl) {\n _this.handleSegLeave(null, _this.currentSegEl);\n }\n };\n _this.handleSegEnter = function (ev, segEl) {\n if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper\n _this.currentSegEl = segEl;\n _this.triggerEvent('eventMouseEnter', ev, segEl);\n }\n };\n _this.handleSegLeave = function (ev, segEl) {\n if (_this.currentSegEl) {\n _this.currentSegEl = null;\n _this.triggerEvent('eventMouseLeave', ev, segEl);\n }\n };\n _this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events\n _this.handleSegEnter, _this.handleSegLeave);\n return _this;\n }\n EventHovering.prototype.destroy = function () {\n this.removeHoverListeners();\n };\n EventHovering.prototype.triggerEvent = function (publicEvName, ev, segEl) {\n var component = this.component;\n var context = component.context;\n var seg = getElSeg(segEl);\n if (!ev || component.isValidSegDownEl(ev.target)) {\n context.emitter.trigger(publicEvName, {\n el: segEl,\n event: new EventApi(context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n }\n };\n return EventHovering;\n}(Interaction));\n\nvar CalendarContent = /** @class */ (function (_super) {\n __extends(CalendarContent, _super);\n function CalendarContent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buildViewContext = memoize(buildViewContext);\n _this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n _this.buildToolbarProps = memoize(buildToolbarProps);\n _this.headerRef = createRef();\n _this.footerRef = createRef();\n _this.interactionsStore = {};\n // eslint-disable-next-line\n _this.state = {\n viewLabelId: getUniqueDomId(),\n };\n // Component Registration\n // -----------------------------------------------------------------------------------------------------------------\n _this.registerInteractiveComponent = function (component, settingsInput) {\n var settings = parseInteractionSettings(component, settingsInput);\n var DEFAULT_INTERACTIONS = [\n EventClicking,\n EventHovering,\n ];\n var interactionClasses = DEFAULT_INTERACTIONS.concat(_this.props.pluginHooks.componentInteractions);\n var interactions = interactionClasses.map(function (TheInteractionClass) { return new TheInteractionClass(settings); });\n _this.interactionsStore[component.uid] = interactions;\n interactionSettingsStore[component.uid] = settings;\n };\n _this.unregisterInteractiveComponent = function (component) {\n var listeners = _this.interactionsStore[component.uid];\n if (listeners) {\n for (var _i = 0, listeners_1 = listeners; _i < listeners_1.length; _i++) {\n var listener = listeners_1[_i];\n listener.destroy();\n }\n delete _this.interactionsStore[component.uid];\n }\n delete interactionSettingsStore[component.uid];\n };\n // Resizing\n // -----------------------------------------------------------------------------------------------------------------\n _this.resizeRunner = new DelayedRunner(function () {\n _this.props.emitter.trigger('_resize', true); // should window resizes be considered \"forced\" ?\n _this.props.emitter.trigger('windowResize', { view: _this.props.viewApi });\n });\n _this.handleWindowResize = function (ev) {\n var options = _this.props.options;\n if (options.handleWindowResize &&\n ev.target === window // avoid jqui events\n ) {\n _this.resizeRunner.request(options.windowResizeDelay);\n }\n };\n return _this;\n }\n /*\n renders INSIDE of an outer div\n */\n CalendarContent.prototype.render = function () {\n var props = this.props;\n var toolbarConfig = props.toolbarConfig, options = props.options;\n var toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, getNow(props.options.now, props.dateEnv), // TODO: use NowTimer????\n props.viewTitle);\n var viewVGrow = false;\n var viewHeight = '';\n var viewAspectRatio;\n if (props.isHeightAuto || props.forPrint) {\n viewHeight = '';\n }\n else if (options.height != null) {\n viewVGrow = true;\n }\n else if (options.contentHeight != null) {\n viewHeight = options.contentHeight;\n }\n else {\n viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall\n }\n var viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);\n var viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)\n ? this.state.viewLabelId\n : '';\n return (createElement(ViewContextType.Provider, { value: viewContext },\n toolbarConfig.header && (createElement(Toolbar, __assign({ ref: this.headerRef, extraClassName: \"fc-header-toolbar\", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),\n createElement(ViewContainer, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },\n this.renderView(props),\n this.buildAppendContent()),\n toolbarConfig.footer && (createElement(Toolbar, __assign({ ref: this.footerRef, extraClassName: \"fc-footer-toolbar\", model: toolbarConfig.footer, titleId: \"\" }, toolbarProps)))));\n };\n CalendarContent.prototype.componentDidMount = function () {\n var props = this.props;\n this.calendarInteractions = props.pluginHooks.calendarInteractions\n .map(function (CalendarInteractionClass) { return new CalendarInteractionClass(props); });\n window.addEventListener('resize', this.handleWindowResize);\n var propSetHandlers = props.pluginHooks.propSetHandlers;\n for (var propName in propSetHandlers) {\n propSetHandlers[propName](props[propName], props);\n }\n };\n CalendarContent.prototype.componentDidUpdate = function (prevProps) {\n var props = this.props;\n var propSetHandlers = props.pluginHooks.propSetHandlers;\n for (var propName in propSetHandlers) {\n if (props[propName] !== prevProps[propName]) {\n propSetHandlers[propName](props[propName], props);\n }\n }\n };\n CalendarContent.prototype.componentWillUnmount = function () {\n window.removeEventListener('resize', this.handleWindowResize);\n this.resizeRunner.clear();\n for (var _i = 0, _a = this.calendarInteractions; _i < _a.length; _i++) {\n var interaction = _a[_i];\n interaction.destroy();\n }\n this.props.emitter.trigger('_unmount');\n };\n CalendarContent.prototype.buildAppendContent = function () {\n var props = this.props;\n var children = props.pluginHooks.viewContainerAppends.map(function (buildAppendContent) { return buildAppendContent(props); });\n return createElement.apply(void 0, __spreadArray([Fragment, {}], children));\n };\n CalendarContent.prototype.renderView = function (props) {\n var pluginHooks = props.pluginHooks;\n var viewSpec = props.viewSpec;\n var viewProps = {\n dateProfile: props.dateProfile,\n businessHours: props.businessHours,\n eventStore: props.renderableEventStore,\n eventUiBases: props.eventUiBases,\n dateSelection: props.dateSelection,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n isHeightAuto: props.isHeightAuto,\n forPrint: props.forPrint,\n };\n var transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n __assign(viewProps, transformer.transform(viewProps, props));\n }\n var ViewComponent = viewSpec.component;\n return (createElement(ViewComponent, __assign({}, viewProps)));\n };\n return CalendarContent;\n}(PureComponent));\nfunction buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) {\n // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n var todayInfo = dateProfileGenerator.build(now, undefined, false); // TODO: need `undefined` or else INFINITE LOOP for some reason\n var prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false);\n var nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false);\n return {\n title: title,\n activeButton: viewSpec.type,\n navUnit: viewSpec.singleUnit,\n isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n isPrevEnabled: prevInfo.isValid,\n isNextEnabled: nextInfo.isValid,\n };\n}\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\nfunction buildViewPropTransformers(theClasses) {\n return theClasses.map(function (TheClass) { return new TheClass(); });\n}\n\nvar CalendarRoot = /** @class */ (function (_super) {\n __extends(CalendarRoot, _super);\n function CalendarRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n forPrint: false,\n };\n _this.handleBeforePrint = function () {\n _this.setState({ forPrint: true });\n };\n _this.handleAfterPrint = function () {\n _this.setState({ forPrint: false });\n };\n return _this;\n }\n CalendarRoot.prototype.render = function () {\n var props = this.props;\n var options = props.options;\n var forPrint = this.state.forPrint;\n var isHeightAuto = forPrint || options.height === 'auto' || options.contentHeight === 'auto';\n var height = (!isHeightAuto && options.height != null) ? options.height : '';\n var classNames = [\n 'fc',\n forPrint ? 'fc-media-print' : 'fc-media-screen',\n \"fc-direction-\" + options.direction,\n props.theme.getClass('root'),\n ];\n if (!getCanVGrowWithinCell()) {\n classNames.push('fc-liquid-hack');\n }\n return props.children(classNames, height, isHeightAuto, forPrint);\n };\n CalendarRoot.prototype.componentDidMount = function () {\n var emitter = this.props.emitter;\n emitter.on('_beforeprint', this.handleBeforePrint);\n emitter.on('_afterprint', this.handleAfterPrint);\n };\n CalendarRoot.prototype.componentWillUnmount = function () {\n var emitter = this.props.emitter;\n emitter.off('_beforeprint', this.handleBeforePrint);\n emitter.off('_afterprint', this.handleAfterPrint);\n };\n return CalendarRoot;\n}(BaseComponent));\n\n// Computes a default column header formatting string if `colFormat` is not explicitly defined\nfunction computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) {\n // if more than one week row, or if there are a lot of columns with not much space,\n // put just the day numbers will be in each cell\n if (!datesRepDistinctDays || dayCnt > 10) {\n return createFormatter({ weekday: 'short' }); // \"Sat\"\n }\n if (dayCnt > 1) {\n return createFormatter({ weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }); // \"Sat 11/12\"\n }\n return createFormatter({ weekday: 'long' }); // \"Saturday\"\n}\n\nvar CLASS_NAME = 'fc-col-header-cell'; // do the cushion too? no\nfunction renderInner$1(hookProps) {\n return hookProps.text;\n}\n\nvar TableDateCell = /** @class */ (function (_super) {\n __extends(TableDateCell, _super);\n function TableDateCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableDateCell.prototype.render = function () {\n var _a = this.context, dateEnv = _a.dateEnv, options = _a.options, theme = _a.theme, viewApi = _a.viewApi;\n var props = this.props;\n var date = props.date, dateProfile = props.dateProfile;\n var dayMeta = getDateMeta(date, props.todayRange, null, dateProfile);\n var classNames = [CLASS_NAME].concat(getDayClassNames(dayMeta, theme));\n var text = dateEnv.format(date, props.dayHeaderFormat);\n // if colCnt is 1, we are already in a day-view and don't need a navlink\n var navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)\n ? buildNavLinkAttrs(this.context, date)\n : {};\n var hookProps = __assign(__assign(__assign({ date: dateEnv.toDate(date), view: viewApi }, props.extraHookProps), { text: text }), dayMeta);\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner$1, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"th\", __assign({ ref: rootElRef, role: \"columnheader\", className: classNames.concat(customClassNames).join(' '), \"data-date\": !dayMeta.isDisabled ? formatDayString(date) : undefined, colSpan: props.colSpan }, props.extraDataAttrs),\n createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" }, !dayMeta.isDisabled && (createElement(\"a\", __assign({ ref: innerElRef, className: [\n 'fc-col-header-cell-cushion',\n props.isSticky ? 'fc-sticky' : '',\n ].join(' ') }, navLinkAttrs), innerContent))))); }));\n };\n return TableDateCell;\n}(BaseComponent));\n\nvar WEEKDAY_FORMAT = createFormatter({ weekday: 'long' });\nvar TableDowCell = /** @class */ (function (_super) {\n __extends(TableDowCell, _super);\n function TableDowCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableDowCell.prototype.render = function () {\n var props = this.props;\n var _a = this.context, dateEnv = _a.dateEnv, theme = _a.theme, viewApi = _a.viewApi, options = _a.options;\n var date = addDays(new Date(259200000), props.dow); // start with Sun, 04 Jan 1970 00:00:00 GMT\n var dateMeta = {\n dow: props.dow,\n isDisabled: false,\n isFuture: false,\n isPast: false,\n isToday: false,\n isOther: false,\n };\n var classNames = [CLASS_NAME].concat(getDayClassNames(dateMeta, theme), props.extraClassNames || []);\n var text = dateEnv.format(date, props.dayHeaderFormat);\n var hookProps = __assign(__assign(__assign(__assign({ // TODO: make this public?\n date: date }, dateMeta), { view: viewApi }), props.extraHookProps), { text: text });\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner$1, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"th\", __assign({ ref: rootElRef, role: \"columnheader\", className: classNames.concat(customClassNames).join(' '), colSpan: props.colSpan }, props.extraDataAttrs),\n createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" },\n createElement(\"a\", { \"aria-label\": dateEnv.format(date, WEEKDAY_FORMAT), className: [\n 'fc-col-header-cell-cushion',\n props.isSticky ? 'fc-sticky' : '',\n ].join(' '), ref: innerElRef }, innerContent)))); }));\n };\n return TableDowCell;\n}(BaseComponent));\n\nvar NowTimer = /** @class */ (function (_super) {\n __extends(NowTimer, _super);\n function NowTimer(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.initialNowDate = getNow(context.options.now, context.dateEnv);\n _this.initialNowQueriedMs = new Date().valueOf();\n _this.state = _this.computeTiming().currentState;\n return _this;\n }\n NowTimer.prototype.render = function () {\n var _a = this, props = _a.props, state = _a.state;\n return props.children(state.nowDate, state.todayRange);\n };\n NowTimer.prototype.componentDidMount = function () {\n this.setTimeout();\n };\n NowTimer.prototype.componentDidUpdate = function (prevProps) {\n if (prevProps.unit !== this.props.unit) {\n this.clearTimeout();\n this.setTimeout();\n }\n };\n NowTimer.prototype.componentWillUnmount = function () {\n this.clearTimeout();\n };\n NowTimer.prototype.computeTiming = function () {\n var _a = this, props = _a.props, context = _a.context;\n var unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs);\n var currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);\n var nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));\n var waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();\n // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)\n // ensure no longer than a day\n waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);\n return {\n currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },\n nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) },\n waitMs: waitMs,\n };\n };\n NowTimer.prototype.setTimeout = function () {\n var _this = this;\n var _a = this.computeTiming(), nextState = _a.nextState, waitMs = _a.waitMs;\n this.timeoutId = setTimeout(function () {\n _this.setState(nextState, function () {\n _this.setTimeout();\n });\n }, waitMs);\n };\n NowTimer.prototype.clearTimeout = function () {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n };\n NowTimer.contextType = ViewContextType;\n return NowTimer;\n}(Component));\nfunction buildDayRange(date) {\n var start = startOfDay(date);\n var end = addDays(start, 1);\n return { start: start, end: end };\n}\n\nvar DayHeader = /** @class */ (function (_super) {\n __extends(DayHeader, _super);\n function DayHeader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.createDayHeaderFormatter = memoize(createDayHeaderFormatter);\n return _this;\n }\n DayHeader.prototype.render = function () {\n var context = this.context;\n var _a = this.props, dates = _a.dates, dateProfile = _a.dateProfile, datesRepDistinctDays = _a.datesRepDistinctDays, renderIntro = _a.renderIntro;\n var dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, dates.length);\n return (createElement(NowTimer, { unit: \"day\" }, function (nowDate, todayRange) { return (createElement(\"tr\", { role: \"row\" },\n renderIntro && renderIntro('day'),\n dates.map(function (date) { return (datesRepDistinctDays ? (createElement(TableDateCell, { key: date.toISOString(), date: date, dateProfile: dateProfile, todayRange: todayRange, colCnt: dates.length, dayHeaderFormat: dayHeaderFormat })) : (createElement(TableDowCell, { key: date.getUTCDay(), dow: date.getUTCDay(), dayHeaderFormat: dayHeaderFormat }))); }))); }));\n };\n return DayHeader;\n}(BaseComponent));\nfunction createDayHeaderFormatter(explicitFormat, datesRepDistinctDays, dateCnt) {\n return explicitFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dateCnt);\n}\n\nvar DaySeriesModel = /** @class */ (function () {\n function DaySeriesModel(range, dateProfileGenerator) {\n var date = range.start;\n var end = range.end;\n var indices = [];\n var dates = [];\n var dayIndex = -1;\n while (date < end) { // loop each day from start to end\n if (dateProfileGenerator.isHiddenDay(date)) {\n indices.push(dayIndex + 0.5); // mark that it's between indices\n }\n else {\n dayIndex += 1;\n indices.push(dayIndex);\n dates.push(date);\n }\n date = addDays(date, 1);\n }\n this.dates = dates;\n this.indices = indices;\n this.cnt = dates.length;\n }\n DaySeriesModel.prototype.sliceRange = function (range) {\n var firstIndex = this.getDateDayIndex(range.start); // inclusive first index\n var lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index\n var clippedFirstIndex = Math.max(0, firstIndex);\n var clippedLastIndex = Math.min(this.cnt - 1, lastIndex);\n // deal with in-between indices\n clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell\n clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell\n if (clippedFirstIndex <= clippedLastIndex) {\n return {\n firstIndex: clippedFirstIndex,\n lastIndex: clippedLastIndex,\n isStart: firstIndex === clippedFirstIndex,\n isEnd: lastIndex === clippedLastIndex,\n };\n }\n return null;\n };\n // Given a date, returns its chronolocial cell-index from the first cell of the grid.\n // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n // If before the first offset, returns a negative number.\n // If after the last offset, returns an offset past the last cell offset.\n // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n DaySeriesModel.prototype.getDateDayIndex = function (date) {\n var indices = this.indices;\n var dayOffset = Math.floor(diffDays(this.dates[0], date));\n if (dayOffset < 0) {\n return indices[0] - 1;\n }\n if (dayOffset >= indices.length) {\n return indices[indices.length - 1] + 1;\n }\n return indices[dayOffset];\n };\n return DaySeriesModel;\n}());\n\nvar DayTableModel = /** @class */ (function () {\n function DayTableModel(daySeries, breakOnWeeks) {\n var dates = daySeries.dates;\n var daysPerRow;\n var firstDay;\n var rowCnt;\n if (breakOnWeeks) {\n // count columns until the day-of-week repeats\n firstDay = dates[0].getUTCDay();\n for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow += 1) {\n if (dates[daysPerRow].getUTCDay() === firstDay) {\n break;\n }\n }\n rowCnt = Math.ceil(dates.length / daysPerRow);\n }\n else {\n rowCnt = 1;\n daysPerRow = dates.length;\n }\n this.rowCnt = rowCnt;\n this.colCnt = daysPerRow;\n this.daySeries = daySeries;\n this.cells = this.buildCells();\n this.headerDates = this.buildHeaderDates();\n }\n DayTableModel.prototype.buildCells = function () {\n var rows = [];\n for (var row = 0; row < this.rowCnt; row += 1) {\n var cells = [];\n for (var col = 0; col < this.colCnt; col += 1) {\n cells.push(this.buildCell(row, col));\n }\n rows.push(cells);\n }\n return rows;\n };\n DayTableModel.prototype.buildCell = function (row, col) {\n var date = this.daySeries.dates[row * this.colCnt + col];\n return {\n key: date.toISOString(),\n date: date,\n };\n };\n DayTableModel.prototype.buildHeaderDates = function () {\n var dates = [];\n for (var col = 0; col < this.colCnt; col += 1) {\n dates.push(this.cells[0][col].date);\n }\n return dates;\n };\n DayTableModel.prototype.sliceRange = function (range) {\n var colCnt = this.colCnt;\n var seriesSeg = this.daySeries.sliceRange(range);\n var segs = [];\n if (seriesSeg) {\n var firstIndex = seriesSeg.firstIndex, lastIndex = seriesSeg.lastIndex;\n var index = firstIndex;\n while (index <= lastIndex) {\n var row = Math.floor(index / colCnt);\n var nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1);\n segs.push({\n row: row,\n firstCol: index % colCnt,\n lastCol: (nextIndex - 1) % colCnt,\n isStart: seriesSeg.isStart && index === firstIndex,\n isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex,\n });\n index = nextIndex;\n }\n }\n return segs;\n };\n return DayTableModel;\n}());\n\nvar Slicer = /** @class */ (function () {\n function Slicer() {\n this.sliceBusinessHours = memoize(this._sliceBusinessHours);\n this.sliceDateSelection = memoize(this._sliceDateSpan);\n this.sliceEventStore = memoize(this._sliceEventStore);\n this.sliceEventDrag = memoize(this._sliceInteraction);\n this.sliceEventResize = memoize(this._sliceInteraction);\n this.forceDayIfListItem = false; // hack\n }\n Slicer.prototype.sliceProps = function (props, dateProfile, nextDayThreshold, context) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n var eventUiBases = props.eventUiBases;\n var eventSegs = this.sliceEventStore.apply(this, __spreadArray([props.eventStore, eventUiBases, dateProfile, nextDayThreshold], extraArgs));\n return {\n dateSelectionSegs: this.sliceDateSelection.apply(this, __spreadArray([props.dateSelection, eventUiBases, context], extraArgs)),\n businessHourSegs: this.sliceBusinessHours.apply(this, __spreadArray([props.businessHours, dateProfile, nextDayThreshold, context], extraArgs)),\n fgEventSegs: eventSegs.fg,\n bgEventSegs: eventSegs.bg,\n eventDrag: this.sliceEventDrag.apply(this, __spreadArray([props.eventDrag, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),\n eventResize: this.sliceEventResize.apply(this, __spreadArray([props.eventResize, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),\n eventSelection: props.eventSelection,\n }; // TODO: give interactionSegs?\n };\n Slicer.prototype.sliceNowDate = function (// does not memoize\n date, context) {\n var extraArgs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n extraArgs[_i - 2] = arguments[_i];\n }\n return this._sliceDateSpan.apply(this, __spreadArray([{ range: { start: date, end: addMs(date, 1) }, allDay: false },\n {},\n context], extraArgs));\n };\n Slicer.prototype._sliceBusinessHours = function (businessHours, dateProfile, nextDayThreshold, context) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n if (!businessHours) {\n return [];\n }\n return this._sliceEventStore.apply(this, __spreadArray([expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), context),\n {},\n dateProfile,\n nextDayThreshold], extraArgs)).bg;\n };\n Slicer.prototype._sliceEventStore = function (eventStore, eventUiBases, dateProfile, nextDayThreshold) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n if (eventStore) {\n var rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n bg: this.sliceEventRanges(rangeRes.bg, extraArgs),\n fg: this.sliceEventRanges(rangeRes.fg, extraArgs),\n };\n }\n return { bg: [], fg: [] };\n };\n Slicer.prototype._sliceInteraction = function (interaction, eventUiBases, dateProfile, nextDayThreshold) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n if (!interaction) {\n return null;\n }\n var rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n segs: this.sliceEventRanges(rangeRes.fg, extraArgs),\n affectedInstances: interaction.affectedEvents.instances,\n isEvent: interaction.isEvent,\n };\n };\n Slicer.prototype._sliceDateSpan = function (dateSpan, eventUiBases, context) {\n var extraArgs = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n extraArgs[_i - 3] = arguments[_i];\n }\n if (!dateSpan) {\n return [];\n }\n var eventRange = fabricateEventRange(dateSpan, eventUiBases, context);\n var segs = this.sliceRange.apply(this, __spreadArray([dateSpan.range], extraArgs));\n for (var _a = 0, segs_1 = segs; _a < segs_1.length; _a++) {\n var seg = segs_1[_a];\n seg.eventRange = eventRange;\n }\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n Slicer.prototype.sliceEventRanges = function (eventRanges, extraArgs) {\n var segs = [];\n for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) {\n var eventRange = eventRanges_1[_i];\n segs.push.apply(segs, this.sliceEventRange(eventRange, extraArgs));\n }\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n Slicer.prototype.sliceEventRange = function (eventRange, extraArgs) {\n var dateRange = eventRange.range;\n // hack to make multi-day events that are being force-displayed as list-items to take up only one day\n if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') {\n dateRange = {\n start: dateRange.start,\n end: addDays(dateRange.start, 1),\n };\n }\n var segs = this.sliceRange.apply(this, __spreadArray([dateRange], extraArgs));\n for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {\n var seg = segs_2[_i];\n seg.eventRange = eventRange;\n seg.isStart = eventRange.isStart && seg.isStart;\n seg.isEnd = eventRange.isEnd && seg.isEnd;\n }\n return segs;\n };\n return Slicer;\n}());\n/*\nfor incorporating slotMinTime/slotMaxTime if appropriate\nTODO: should be part of DateProfile!\nTimelineDateProfile already does this btw\n*/\nfunction computeActiveRange(dateProfile, isComponentAllDay) {\n var range = dateProfile.activeRange;\n if (isComponentAllDay) {\n return range;\n }\n return {\n start: addMs(range.start, dateProfile.slotMinTime.milliseconds),\n end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5), // 864e5 = ms in a day\n };\n}\n\n// high-level segmenting-aware tester functions\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionValid(interaction, dateProfile, context) {\n var instances = interaction.mutatedEvents.instances;\n for (var instanceId in instances) {\n if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) {\n return false;\n }\n }\n return isNewPropsValid({ eventDrag: interaction }, context); // HACK: the eventDrag props is used for ALL interactions\n}\nfunction isDateSelectionValid(dateSelection, dateProfile, context) {\n if (!rangeContainsRange(dateProfile.validRange, dateSelection.range)) {\n return false;\n }\n return isNewPropsValid({ dateSelection: dateSelection }, context);\n}\nfunction isNewPropsValid(newProps, context) {\n var calendarState = context.getCurrentData();\n var props = __assign({ businessHours: calendarState.businessHours, dateSelection: '', eventStore: calendarState.eventStore, eventUiBases: calendarState.eventUiBases, eventSelection: '', eventDrag: null, eventResize: null }, newProps);\n return (context.pluginHooks.isPropsValid || isPropsValid)(props, context);\n}\nfunction isPropsValid(state, context, dateSpanMeta, filterConfig) {\n if (dateSpanMeta === void 0) { dateSpanMeta = {}; }\n if (state.eventDrag && !isInteractionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n return false;\n }\n if (state.dateSelection && !isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n return false;\n }\n return true;\n}\n// Moving Event Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionPropsValid(state, context, dateSpanMeta, filterConfig) {\n var currentState = context.getCurrentData();\n var interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions\n var subjectEventStore = interaction.mutatedEvents;\n var subjectDefs = subjectEventStore.defs;\n var subjectInstances = subjectEventStore.instances;\n var subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ?\n state.eventUiBases :\n { '': currentState.selectionConfig });\n if (filterConfig) {\n subjectConfigs = mapHash(subjectConfigs, filterConfig);\n }\n // exclude the subject events. TODO: exclude defs too?\n var otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances);\n var otherDefs = otherEventStore.defs;\n var otherInstances = otherEventStore.instances;\n var otherConfigs = compileEventUis(otherDefs, state.eventUiBases);\n for (var subjectInstanceId in subjectInstances) {\n var subjectInstance = subjectInstances[subjectInstanceId];\n var subjectRange = subjectInstance.range;\n var subjectConfig = subjectConfigs[subjectInstance.defId];\n var subjectDef = subjectDefs[subjectInstance.defId];\n // constraint\n if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, context)) {\n return false;\n }\n // overlap\n var eventOverlap = context.options.eventOverlap;\n var eventOverlapFunc = typeof eventOverlap === 'function' ? eventOverlap : null;\n for (var otherInstanceId in otherInstances) {\n var otherInstance = otherInstances[otherInstanceId];\n // intersect! evaluate\n if (rangesIntersect(subjectRange, otherInstance.range)) {\n var otherOverlap = otherConfigs[otherInstance.defId].overlap;\n // consider the other event's overlap. only do this if the subject event is a \"real\" event\n if (otherOverlap === false && interaction.isEvent) {\n return false;\n }\n if (subjectConfig.overlap === false) {\n return false;\n }\n if (eventOverlapFunc && !eventOverlapFunc(new EventApi(context, otherDefs[otherInstance.defId], otherInstance), // still event\n new EventApi(context, subjectDef, subjectInstance))) {\n return false;\n }\n }\n }\n // allow (a function)\n var calendarEventStore = currentState.eventStore; // need global-to-calendar, not local to component (splittable)state\n for (var _i = 0, _a = subjectConfig.allows; _i < _a.length; _i++) {\n var subjectAllow = _a[_i];\n var subjectDateSpan = __assign(__assign({}, dateSpanMeta), { range: subjectInstance.range, allDay: subjectDef.allDay });\n var origDef = calendarEventStore.defs[subjectDef.defId];\n var origInstance = calendarEventStore.instances[subjectInstanceId];\n var eventApi = void 0;\n if (origDef) { // was previously in the calendar\n eventApi = new EventApi(context, origDef, origInstance);\n }\n else { // was an external event\n eventApi = new EventApi(context, subjectDef); // no instance, because had no dates\n }\n if (!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan, context), eventApi)) {\n return false;\n }\n }\n }\n return true;\n}\n// Date Selection Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig) {\n var relevantEventStore = state.eventStore;\n var relevantDefs = relevantEventStore.defs;\n var relevantInstances = relevantEventStore.instances;\n var selection = state.dateSelection;\n var selectionRange = selection.range;\n var selectionConfig = context.getCurrentData().selectionConfig;\n if (filterConfig) {\n selectionConfig = filterConfig(selectionConfig);\n }\n // constraint\n if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, context)) {\n return false;\n }\n // overlap\n var selectOverlap = context.options.selectOverlap;\n var selectOverlapFunc = typeof selectOverlap === 'function' ? selectOverlap : null;\n for (var relevantInstanceId in relevantInstances) {\n var relevantInstance = relevantInstances[relevantInstanceId];\n // intersect! evaluate\n if (rangesIntersect(selectionRange, relevantInstance.range)) {\n if (selectionConfig.overlap === false) {\n return false;\n }\n if (selectOverlapFunc && !selectOverlapFunc(new EventApi(context, relevantDefs[relevantInstance.defId], relevantInstance), null)) {\n return false;\n }\n }\n }\n // allow (a function)\n for (var _i = 0, _a = selectionConfig.allows; _i < _a.length; _i++) {\n var selectionAllow = _a[_i];\n var fullDateSpan = __assign(__assign({}, dateSpanMeta), selection);\n if (!selectionAllow(buildDateSpanApiWithContext(fullDateSpan, context), null)) {\n return false;\n }\n }\n return true;\n}\n// Constraint Utils\n// ------------------------------------------------------------------------------------------------------------------------\nfunction allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, context) {\n for (var _i = 0, constraints_1 = constraints; _i < constraints_1.length; _i++) {\n var constraint = constraints_1[_i];\n if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, context), subjectRange)) {\n return false;\n }\n }\n return true;\n}\nfunction constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours\notherEventStore, // for if constraint is an even group ID\nbusinessHoursUnexpanded, // for if constraint is 'businessHours'\ncontext) {\n if (constraint === 'businessHours') {\n return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, context));\n }\n if (typeof constraint === 'string') { // an group ID\n return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef) { return eventDef.groupId === constraint; }));\n }\n if (typeof constraint === 'object' && constraint) { // non-null object\n return eventStoreToRanges(expandRecurring(constraint, subjectRange, context));\n }\n return []; // if it's false\n}\n// TODO: move to event-store file?\nfunction eventStoreToRanges(eventStore) {\n var instances = eventStore.instances;\n var ranges = [];\n for (var instanceId in instances) {\n ranges.push(instances[instanceId].range);\n }\n return ranges;\n}\n// TODO: move to geom file?\nfunction anyRangesContainRange(outerRanges, innerRange) {\n for (var _i = 0, outerRanges_1 = outerRanges; _i < outerRanges_1.length; _i++) {\n var outerRange = outerRanges_1[_i];\n if (rangeContainsRange(outerRange, innerRange)) {\n return true;\n }\n }\n return false;\n}\n\nvar VISIBLE_HIDDEN_RE = /^(visible|hidden)$/;\nvar Scroller = /** @class */ (function (_super) {\n __extends(Scroller, _super);\n function Scroller() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleEl = function (el) {\n _this.el = el;\n setRef(_this.props.elRef, el);\n };\n return _this;\n }\n Scroller.prototype.render = function () {\n var props = this.props;\n var liquid = props.liquid, liquidIsAbsolute = props.liquidIsAbsolute;\n var isAbsolute = liquid && liquidIsAbsolute;\n var className = ['fc-scroller'];\n if (liquid) {\n if (liquidIsAbsolute) {\n className.push('fc-scroller-liquid-absolute');\n }\n else {\n className.push('fc-scroller-liquid');\n }\n }\n return (createElement(\"div\", { ref: this.handleEl, className: className.join(' '), style: {\n overflowX: props.overflowX,\n overflowY: props.overflowY,\n left: (isAbsolute && -(props.overcomeLeft || 0)) || '',\n right: (isAbsolute && -(props.overcomeRight || 0)) || '',\n bottom: (isAbsolute && -(props.overcomeBottom || 0)) || '',\n marginLeft: (!isAbsolute && -(props.overcomeLeft || 0)) || '',\n marginRight: (!isAbsolute && -(props.overcomeRight || 0)) || '',\n marginBottom: (!isAbsolute && -(props.overcomeBottom || 0)) || '',\n maxHeight: props.maxHeight || '',\n } }, props.children));\n };\n Scroller.prototype.needsXScrolling = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return false;\n }\n // testing scrollWidth>clientWidth is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n var el = this.el;\n var realClientWidth = this.el.getBoundingClientRect().width - this.getYScrollbarWidth();\n var children = el.children;\n for (var i = 0; i < children.length; i += 1) {\n var childEl = children[i];\n if (childEl.getBoundingClientRect().width > realClientWidth) {\n return true;\n }\n }\n return false;\n };\n Scroller.prototype.needsYScrolling = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return false;\n }\n // testing scrollHeight>clientHeight is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n var el = this.el;\n var realClientHeight = this.el.getBoundingClientRect().height - this.getXScrollbarWidth();\n var children = el.children;\n for (var i = 0; i < children.length; i += 1) {\n var childEl = children[i];\n if (childEl.getBoundingClientRect().height > realClientHeight) {\n return true;\n }\n }\n return false;\n };\n Scroller.prototype.getXScrollbarWidth = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return 0;\n }\n return this.el.offsetHeight - this.el.clientHeight; // only works because we guarantee no borders. TODO: add to CSS with important?\n };\n Scroller.prototype.getYScrollbarWidth = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return 0;\n }\n return this.el.offsetWidth - this.el.clientWidth; // only works because we guarantee no borders. TODO: add to CSS with important?\n };\n return Scroller;\n}(BaseComponent));\n\n/*\nTODO: somehow infer OtherArgs from masterCallback?\nTODO: infer RefType from masterCallback if provided\n*/\nvar RefMap = /** @class */ (function () {\n function RefMap(masterCallback) {\n var _this = this;\n this.masterCallback = masterCallback;\n this.currentMap = {};\n this.depths = {};\n this.callbackMap = {};\n this.handleValue = function (val, key) {\n var _a = _this, depths = _a.depths, currentMap = _a.currentMap;\n var removed = false;\n var added = false;\n if (val !== null) {\n // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore\n removed = (key in currentMap);\n currentMap[key] = val;\n depths[key] = (depths[key] || 0) + 1;\n added = true;\n }\n else {\n depths[key] -= 1;\n if (!depths[key]) {\n delete currentMap[key];\n delete _this.callbackMap[key];\n removed = true;\n }\n }\n if (_this.masterCallback) {\n if (removed) {\n _this.masterCallback(null, String(key));\n }\n if (added) {\n _this.masterCallback(val, String(key));\n }\n }\n };\n }\n RefMap.prototype.createRef = function (key) {\n var _this = this;\n var refCallback = this.callbackMap[key];\n if (!refCallback) {\n refCallback = this.callbackMap[key] = function (val) {\n _this.handleValue(val, String(key));\n };\n }\n return refCallback;\n };\n // TODO: check callers that don't care about order. should use getAll instead\n // NOTE: this method has become less valuable now that we are encouraged to map order by some other index\n // TODO: provide ONE array-export function, buildArray, which fails on non-numeric indexes. caller can manipulate and \"collect\"\n RefMap.prototype.collect = function (startIndex, endIndex, step) {\n return collectFromHash(this.currentMap, startIndex, endIndex, step);\n };\n RefMap.prototype.getAll = function () {\n return hashValuesToArray(this.currentMap);\n };\n return RefMap;\n}());\n\nfunction computeShrinkWidth(chunkEls) {\n var shrinkCells = findElements(chunkEls, '.fc-scrollgrid-shrink');\n var largestWidth = 0;\n for (var _i = 0, shrinkCells_1 = shrinkCells; _i < shrinkCells_1.length; _i++) {\n var shrinkCell = shrinkCells_1[_i];\n largestWidth = Math.max(largestWidth, computeSmallestCellWidth(shrinkCell));\n }\n return Math.ceil(largestWidth); // elements work best with integers. round up to ensure contents fits\n}\nfunction getSectionHasLiquidHeight(props, sectionConfig) {\n return props.liquid && sectionConfig.liquid; // does the section do liquid-height? (need to have whole scrollgrid liquid-height as well)\n}\nfunction getAllowYScrolling(props, sectionConfig) {\n return sectionConfig.maxHeight != null || // if its possible for the height to max out, we might need scrollbars\n getSectionHasLiquidHeight(props, sectionConfig); // if the section is liquid height, it might condense enough to require scrollbars\n}\n// TODO: ONLY use `arg`. force out internal function to use same API\nfunction renderChunkContent(sectionConfig, chunkConfig, arg, isHeader) {\n var expandRows = arg.expandRows;\n var content = typeof chunkConfig.content === 'function' ?\n chunkConfig.content(arg) :\n createElement('table', {\n role: 'presentation',\n className: [\n chunkConfig.tableClassName,\n sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : '',\n ].join(' '),\n style: {\n minWidth: arg.tableMinWidth,\n width: arg.clientWidth,\n height: expandRows ? arg.clientHeight : '', // css `height` on a
serves as a min-height\n },\n }, arg.tableColGroupNode, createElement(isHeader ? 'thead' : 'tbody', {\n role: 'presentation',\n }, typeof chunkConfig.rowContent === 'function'\n ? chunkConfig.rowContent(arg)\n : chunkConfig.rowContent));\n return content;\n}\nfunction isColPropsEqual(cols0, cols1) {\n return isArraysEqual(cols0, cols1, isPropsEqual);\n}\nfunction renderMicroColGroup(cols, shrinkWidth) {\n var colNodes = [];\n /*\n for ColProps with spans, it would have been great to make a single \n HOWEVER, Chrome was getting messing up distributing the width to elements makes Chrome behave.\n */\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var colProps = cols_1[_i];\n var span = colProps.span || 1;\n for (var i = 0; i < span; i += 1) {\n colNodes.push(createElement(\"col\", { style: {\n width: colProps.width === 'shrink' ? sanitizeShrinkWidth(shrinkWidth) : (colProps.width || ''),\n minWidth: colProps.minWidth || '',\n } }));\n }\n }\n return createElement.apply(void 0, __spreadArray(['colgroup', {}], colNodes));\n}\nfunction sanitizeShrinkWidth(shrinkWidth) {\n /* why 4? if we do 0, it will kill any border, which are needed for computeSmallestCellWidth\n 4 accounts for 2 2-pixel borders. TODO: better solution? */\n return shrinkWidth == null ? 4 : shrinkWidth;\n}\nfunction hasShrinkWidth(cols) {\n for (var _i = 0, cols_2 = cols; _i < cols_2.length; _i++) {\n var col = cols_2[_i];\n if (col.width === 'shrink') {\n return true;\n }\n }\n return false;\n}\nfunction getScrollGridClassNames(liquid, context) {\n var classNames = [\n 'fc-scrollgrid',\n context.theme.getClass('table'),\n ];\n if (liquid) {\n classNames.push('fc-scrollgrid-liquid');\n }\n return classNames;\n}\nfunction getSectionClassNames(sectionConfig, wholeTableVGrow) {\n var classNames = [\n 'fc-scrollgrid-section',\n \"fc-scrollgrid-section-\" + sectionConfig.type,\n sectionConfig.className, // used?\n ];\n if (wholeTableVGrow && sectionConfig.liquid && sectionConfig.maxHeight == null) {\n classNames.push('fc-scrollgrid-section-liquid');\n }\n if (sectionConfig.isSticky) {\n classNames.push('fc-scrollgrid-section-sticky');\n }\n return classNames;\n}\nfunction renderScrollShim(arg) {\n return (createElement(\"div\", { className: \"fc-scrollgrid-sticky-shim\", style: {\n width: arg.clientWidth,\n minWidth: arg.tableMinWidth,\n } }));\n}\nfunction getStickyHeaderDates(options) {\n var stickyHeaderDates = options.stickyHeaderDates;\n if (stickyHeaderDates == null || stickyHeaderDates === 'auto') {\n stickyHeaderDates = options.height === 'auto' || options.viewHeight === 'auto';\n }\n return stickyHeaderDates;\n}\nfunction getStickyFooterScrollbar(options) {\n var stickyFooterScrollbar = options.stickyFooterScrollbar;\n if (stickyFooterScrollbar == null || stickyFooterScrollbar === 'auto') {\n stickyFooterScrollbar = options.height === 'auto' || options.viewHeight === 'auto';\n }\n return stickyFooterScrollbar;\n}\n\nvar SimpleScrollGrid = /** @class */ (function (_super) {\n __extends(SimpleScrollGrid, _super);\n function SimpleScrollGrid() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.processCols = memoize(function (a) { return a; }, isColPropsEqual); // so we get same `cols` props every time\n // yucky to memoize VNodes, but much more efficient for consumers\n _this.renderMicroColGroup = memoize(renderMicroColGroup);\n _this.scrollerRefs = new RefMap();\n _this.scrollerElRefs = new RefMap(_this._handleScrollerEl.bind(_this));\n _this.state = {\n shrinkWidth: null,\n forceYScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {},\n };\n // TODO: can do a really simple print-view. dont need to join rows\n _this.handleSizing = function () {\n _this.setState(__assign({ shrinkWidth: _this.computeShrinkWidth() }, _this.computeScrollerDims()));\n };\n return _this;\n }\n SimpleScrollGrid.prototype.render = function () {\n var _a = this, props = _a.props, state = _a.state, context = _a.context;\n var sectionConfigs = props.sections || [];\n var cols = this.processCols(props.cols);\n var microColGroupNode = this.renderMicroColGroup(cols, state.shrinkWidth);\n var classNames = getScrollGridClassNames(props.liquid, context);\n if (props.collapsibleWidth) {\n classNames.push('fc-scrollgrid-collapsible');\n }\n // TODO: make DRY\n var configCnt = sectionConfigs.length;\n var configI = 0;\n var currentConfig;\n var headSectionNodes = [];\n var bodySectionNodes = [];\n var footSectionNodes = [];\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode, false));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n configI += 1;\n }\n // firefox bug: when setting height on table and there is a thead or tfoot,\n // the necessary height:100% on the liquid-height body section forces the *whole* table to be taller. (bug #5524)\n // use getCanVGrowWithinCell as a way to detect table-stupid firefox.\n // if so, use a simpler dom structure, jam everything into a lone tbody.\n var isBuggy = !getCanVGrowWithinCell();\n var roleAttrs = { role: 'rowgroup' };\n return createElement('table', {\n role: 'grid',\n className: classNames.join(' '),\n style: { height: props.height },\n }, Boolean(!isBuggy && headSectionNodes.length) && createElement.apply(void 0, __spreadArray(['thead', roleAttrs], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && createElement.apply(void 0, __spreadArray(['tbody', roleAttrs], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && createElement.apply(void 0, __spreadArray(['tfoot', roleAttrs], footSectionNodes)), isBuggy && createElement.apply(void 0, __spreadArray(__spreadArray(__spreadArray(['tbody', roleAttrs], headSectionNodes), bodySectionNodes), footSectionNodes)));\n };\n SimpleScrollGrid.prototype.renderSection = function (sectionConfig, microColGroupNode, isHeader) {\n if ('outerContent' in sectionConfig) {\n return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));\n }\n return (createElement(\"tr\", { key: sectionConfig.key, role: \"presentation\", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk, isHeader)));\n };\n SimpleScrollGrid.prototype.renderChunkTd = function (sectionConfig, microColGroupNode, chunkConfig, isHeader) {\n if ('outerContent' in chunkConfig) {\n return chunkConfig.outerContent;\n }\n var props = this.props;\n var _a = this.state, forceYScrollbars = _a.forceYScrollbars, scrollerClientWidths = _a.scrollerClientWidths, scrollerClientHeights = _a.scrollerClientHeights;\n var needsYScrolling = getAllowYScrolling(props, sectionConfig); // TODO: do lazily. do in section config?\n var isLiquid = getSectionHasLiquidHeight(props, sectionConfig);\n // for `!props.liquid` - is WHOLE scrollgrid natural height?\n // TODO: do same thing in advanced scrollgrid? prolly not b/c always has horizontal scrollbars\n var overflowY = !props.liquid ? 'visible' :\n forceYScrollbars ? 'scroll' :\n !needsYScrolling ? 'hidden' :\n 'auto';\n var sectionKey = sectionConfig.key;\n var content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth: '',\n clientWidth: (!props.collapsibleWidth && scrollerClientWidths[sectionKey] !== undefined) ? scrollerClientWidths[sectionKey] : null,\n clientHeight: scrollerClientHeights[sectionKey] !== undefined ? scrollerClientHeights[sectionKey] : null,\n expandRows: sectionConfig.expandRows,\n syncRowHeights: false,\n rowSyncHeights: [],\n reportRowHeightChange: function () { },\n }, isHeader);\n return createElement(isHeader ? 'th' : 'td', {\n ref: chunkConfig.elRef,\n role: 'presentation',\n }, createElement(\"div\", { className: \"fc-scroller-harness\" + (isLiquid ? ' fc-scroller-harness-liquid' : '') },\n createElement(Scroller, { ref: this.scrollerRefs.createRef(sectionKey), elRef: this.scrollerElRefs.createRef(sectionKey), overflowY: overflowY, overflowX: !props.liquid ? 'visible' : 'hidden' /* natural height? */, maxHeight: sectionConfig.maxHeight, liquid: isLiquid, liquidIsAbsolute // because its within a harness\n : true }, content)));\n };\n SimpleScrollGrid.prototype._handleScrollerEl = function (scrollerEl, key) {\n var section = getSectionByKey(this.props.sections, key);\n if (section) {\n setRef(section.chunk.scrollerElRef, scrollerEl);\n }\n };\n SimpleScrollGrid.prototype.componentDidMount = function () {\n this.handleSizing();\n this.context.addResizeHandler(this.handleSizing);\n };\n SimpleScrollGrid.prototype.componentDidUpdate = function () {\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing();\n };\n SimpleScrollGrid.prototype.componentWillUnmount = function () {\n this.context.removeResizeHandler(this.handleSizing);\n };\n SimpleScrollGrid.prototype.computeShrinkWidth = function () {\n return hasShrinkWidth(this.props.cols)\n ? computeShrinkWidth(this.scrollerElRefs.getAll())\n : 0;\n };\n SimpleScrollGrid.prototype.computeScrollerDims = function () {\n var scrollbarWidth = getScrollbarWidths();\n var _a = this, scrollerRefs = _a.scrollerRefs, scrollerElRefs = _a.scrollerElRefs;\n var forceYScrollbars = false;\n var scrollerClientWidths = {};\n var scrollerClientHeights = {};\n for (var sectionKey in scrollerRefs.currentMap) {\n var scroller = scrollerRefs.currentMap[sectionKey];\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true;\n break;\n }\n }\n for (var _i = 0, _b = this.props.sections; _i < _b.length; _i++) {\n var section = _b[_i];\n var sectionKey = section.key;\n var scrollerEl = scrollerElRefs.currentMap[sectionKey];\n if (scrollerEl) {\n var harnessEl = scrollerEl.parentNode; // TODO: weird way to get this. need harness b/c doesn't include table borders\n scrollerClientWidths[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().width - (forceYScrollbars\n ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n scrollerClientHeights[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().height);\n }\n }\n return { forceYScrollbars: forceYScrollbars, scrollerClientWidths: scrollerClientWidths, scrollerClientHeights: scrollerClientHeights };\n };\n return SimpleScrollGrid;\n}(BaseComponent));\nSimpleScrollGrid.addStateEquality({\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual,\n});\nfunction getSectionByKey(sections, key) {\n for (var _i = 0, sections_1 = sections; _i < sections_1.length; _i++) {\n var section = sections_1[_i];\n if (section.key === key) {\n return section;\n }\n }\n return null;\n}\n\nvar EventRoot = /** @class */ (function (_super) {\n __extends(EventRoot, _super);\n function EventRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.elRef = createRef();\n return _this;\n }\n EventRoot.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var seg = props.seg;\n var eventRange = seg.eventRange;\n var ui = eventRange.ui;\n var hookProps = {\n event: new EventApi(context, eventRange.def, eventRange.instance),\n view: context.viewApi,\n timeText: props.timeText,\n textColor: ui.textColor,\n backgroundColor: ui.backgroundColor,\n borderColor: ui.borderColor,\n isDraggable: !props.disableDragging && computeSegDraggable(seg, context),\n isStartResizable: !props.disableResizing && computeSegStartResizable(seg, context),\n isEndResizable: !props.disableResizing && computeSegEndResizable(seg),\n isMirror: Boolean(props.isDragging || props.isResizing || props.isDateSelecting),\n isStart: Boolean(seg.isStart),\n isEnd: Boolean(seg.isEnd),\n isPast: Boolean(props.isPast),\n isFuture: Boolean(props.isFuture),\n isToday: Boolean(props.isToday),\n isSelected: Boolean(props.isSelected),\n isDragging: Boolean(props.isDragging),\n isResizing: Boolean(props.isResizing),\n };\n var standardClassNames = getEventClassNames(hookProps).concat(ui.classNames);\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.eventClassNames, content: options.eventContent, defaultContent: props.defaultContent, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount, elRef: this.elRef }, function (rootElRef, customClassNames, innerElRef, innerContent) { return props.children(rootElRef, standardClassNames.concat(customClassNames), innerElRef, innerContent, hookProps); }));\n };\n EventRoot.prototype.componentDidMount = function () {\n setElSeg(this.elRef.current, this.props.seg);\n };\n /*\n need to re-assign seg to the element if seg changes, even if the element is the same\n */\n EventRoot.prototype.componentDidUpdate = function (prevProps) {\n var seg = this.props.seg;\n if (seg !== prevProps.seg) {\n setElSeg(this.elRef.current, seg);\n }\n };\n return EventRoot;\n}(BaseComponent));\n\n// should not be a purecomponent\nvar StandardEvent = /** @class */ (function (_super) {\n __extends(StandardEvent, _super);\n function StandardEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StandardEvent.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var seg = props.seg;\n var timeFormat = context.options.eventTimeFormat || props.defaultTimeFormat;\n var timeText = buildSegTimeText(seg, timeFormat, context, props.defaultDisplayEventTime, props.defaultDisplayEventEnd);\n return (createElement(EventRoot, { seg: seg, timeText: timeText, disableDragging: props.disableDragging, disableResizing: props.disableResizing, defaultContent: props.defaultContent || renderInnerContent$1, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (createElement(\"a\", __assign({ className: props.extraClassNames.concat(classNames).join(' '), style: {\n borderColor: hookProps.borderColor,\n backgroundColor: hookProps.backgroundColor,\n }, ref: rootElRef }, getSegAnchorAttrs(seg, context)),\n createElement(\"div\", { className: \"fc-event-main\", ref: innerElRef, style: { color: hookProps.textColor } }, innerContent),\n hookProps.isStartResizable &&\n createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-start\" }),\n hookProps.isEndResizable &&\n createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-end\" }))); }));\n };\n return StandardEvent;\n}(BaseComponent));\nfunction renderInnerContent$1(innerProps) {\n return (createElement(\"div\", { className: \"fc-event-main-frame\" },\n innerProps.timeText && (createElement(\"div\", { className: \"fc-event-time\" }, innerProps.timeText)),\n createElement(\"div\", { className: \"fc-event-title-container\" },\n createElement(\"div\", { className: \"fc-event-title fc-sticky\" }, innerProps.event.title || createElement(Fragment, null, \"\\u00A0\")))));\n}\n\nvar NowIndicatorRoot = function (props) { return (createElement(ViewContextType.Consumer, null, function (context) {\n var options = context.options;\n var hookProps = {\n isAxis: props.isAxis,\n date: context.dateEnv.toDate(props.date),\n view: context.viewApi,\n };\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.nowIndicatorClassNames, content: options.nowIndicatorContent, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount }, props.children));\n})); };\n\nvar DAY_NUM_FORMAT = createFormatter({ day: 'numeric' });\nvar DayCellContent = /** @class */ (function (_super) {\n __extends(DayCellContent, _super);\n function DayCellContent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DayCellContent.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var hookProps = refineDayCellHookProps({\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n showDayNumber: props.showDayNumber,\n extraProps: props.extraHookProps,\n viewApi: context.viewApi,\n dateEnv: context.dateEnv,\n });\n return (createElement(ContentHook, { hookProps: hookProps, content: options.dayCellContent, defaultContent: props.defaultContent }, props.children));\n };\n return DayCellContent;\n}(BaseComponent));\nfunction refineDayCellHookProps(raw) {\n var date = raw.date, dateEnv = raw.dateEnv;\n var dayMeta = getDateMeta(date, raw.todayRange, null, raw.dateProfile);\n return __assign(__assign(__assign({ date: dateEnv.toDate(date), view: raw.viewApi }, dayMeta), { dayNumberText: raw.showDayNumber ? dateEnv.format(date, DAY_NUM_FORMAT) : '' }), raw.extraProps);\n}\n\nvar DayCellRoot = /** @class */ (function (_super) {\n __extends(DayCellRoot, _super);\n function DayCellRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.refineHookProps = memoizeObjArg(refineDayCellHookProps);\n _this.normalizeClassNames = buildClassNameNormalizer();\n return _this;\n }\n DayCellRoot.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var hookProps = this.refineHookProps({\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n showDayNumber: props.showDayNumber,\n extraProps: props.extraHookProps,\n viewApi: context.viewApi,\n dateEnv: context.dateEnv,\n });\n var classNames = getDayClassNames(hookProps, context.theme).concat(hookProps.isDisabled\n ? [] // don't use custom classNames if disabled\n : this.normalizeClassNames(options.dayCellClassNames, hookProps));\n var dataAttrs = hookProps.isDisabled ? {} : {\n 'data-date': formatDayString(props.date),\n };\n return (createElement(MountHook, { hookProps: hookProps, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount, elRef: props.elRef }, function (rootElRef) { return props.children(rootElRef, classNames, dataAttrs, hookProps.isDisabled); }));\n };\n return DayCellRoot;\n}(BaseComponent));\n\nfunction renderFill(fillType) {\n return (createElement(\"div\", { className: \"fc-\" + fillType }));\n}\nvar BgEvent = function (props) { return (createElement(EventRoot, { defaultContent: renderInnerContent, seg: props.seg /* uselesss i think */, timeText: \"\", disableDragging: true, disableResizing: true, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (createElement(\"div\", { ref: rootElRef, className: ['fc-bg-event'].concat(classNames).join(' '), style: {\n backgroundColor: hookProps.backgroundColor,\n } }, innerContent)); })); };\nfunction renderInnerContent(props) {\n var title = props.event.title;\n return title && (createElement(\"div\", { className: \"fc-event-title\" }, props.event.title));\n}\n\nvar WeekNumberRoot = function (props) { return (createElement(ViewContextType.Consumer, null, function (context) {\n var dateEnv = context.dateEnv, options = context.options;\n var date = props.date;\n var format = options.weekNumberFormat || props.defaultFormat;\n var num = dateEnv.computeWeekNumber(date); // TODO: somehow use for formatting as well?\n var text = dateEnv.format(date, format);\n var hookProps = { num: num, text: text, date: date };\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.weekNumberClassNames, content: options.weekNumberContent, defaultContent: renderInner, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount }, props.children));\n})); };\nfunction renderInner(innerProps) {\n return innerProps.text;\n}\n\nvar PADDING_FROM_VIEWPORT = 10;\nvar Popover = /** @class */ (function (_super) {\n __extends(Popover, _super);\n function Popover() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n titleId: getUniqueDomId(),\n };\n _this.handleRootEl = function (el) {\n _this.rootEl = el;\n if (_this.props.elRef) {\n setRef(_this.props.elRef, el);\n }\n };\n // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n _this.handleDocumentMouseDown = function (ev) {\n // only hide the popover if the click happened outside the popover\n var target = getEventTargetViaRoot(ev);\n if (!_this.rootEl.contains(target)) {\n _this.handleCloseClick();\n }\n };\n _this.handleDocumentKeyDown = function (ev) {\n if (ev.key === 'Escape') {\n _this.handleCloseClick();\n }\n };\n _this.handleCloseClick = function () {\n var onClose = _this.props.onClose;\n if (onClose) {\n onClose();\n }\n };\n return _this;\n }\n Popover.prototype.render = function () {\n var _a = this.context, theme = _a.theme, options = _a.options;\n var _b = this, props = _b.props, state = _b.state;\n var classNames = [\n 'fc-popover',\n theme.getClass('popover'),\n ].concat(props.extraClassNames || []);\n return createPortal(createElement(\"div\", __assign({ id: props.id, className: classNames.join(' '), \"aria-labelledby\": state.titleId }, props.extraAttrs, { ref: this.handleRootEl }),\n createElement(\"div\", { className: 'fc-popover-header ' + theme.getClass('popoverHeader') },\n createElement(\"span\", { className: \"fc-popover-title\", id: state.titleId }, props.title),\n createElement(\"span\", { className: 'fc-popover-close ' + theme.getIconClass('close'), title: options.closeHint, onClick: this.handleCloseClick })),\n createElement(\"div\", { className: 'fc-popover-body ' + theme.getClass('popoverContent') }, props.children)), props.parentEl);\n };\n Popover.prototype.componentDidMount = function () {\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n this.updateSize();\n };\n Popover.prototype.componentWillUnmount = function () {\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n };\n Popover.prototype.updateSize = function () {\n var isRtl = this.context.isRtl;\n var _a = this.props, alignmentEl = _a.alignmentEl, alignGridTop = _a.alignGridTop;\n var rootEl = this.rootEl;\n var alignmentRect = computeClippedClientRect(alignmentEl);\n if (alignmentRect) {\n var popoverDims = rootEl.getBoundingClientRect();\n // position relative to viewport\n var popoverTop = alignGridTop\n ? elementClosest(alignmentEl, '.fc-scrollgrid').getBoundingClientRect().top\n : alignmentRect.top;\n var popoverLeft = isRtl ? alignmentRect.right - popoverDims.width : alignmentRect.left;\n // constrain\n popoverTop = Math.max(popoverTop, PADDING_FROM_VIEWPORT);\n popoverLeft = Math.min(popoverLeft, document.documentElement.clientWidth - PADDING_FROM_VIEWPORT - popoverDims.width);\n popoverLeft = Math.max(popoverLeft, PADDING_FROM_VIEWPORT);\n var origin_1 = rootEl.offsetParent.getBoundingClientRect();\n applyStyle(rootEl, {\n top: popoverTop - origin_1.top,\n left: popoverLeft - origin_1.left,\n });\n }\n };\n return Popover;\n}(BaseComponent));\n\nvar MorePopover = /** @class */ (function (_super) {\n __extends(MorePopover, _super);\n function MorePopover() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleRootEl = function (rootEl) {\n _this.rootEl = rootEl;\n if (rootEl) {\n _this.context.registerInteractiveComponent(_this, {\n el: rootEl,\n useEventCenter: false,\n });\n }\n else {\n _this.context.unregisterInteractiveComponent(_this);\n }\n };\n return _this;\n }\n MorePopover.prototype.render = function () {\n var _a = this.context, options = _a.options, dateEnv = _a.dateEnv;\n var props = this.props;\n var startDate = props.startDate, todayRange = props.todayRange, dateProfile = props.dateProfile;\n var title = dateEnv.format(startDate, options.dayPopoverFormat);\n return (createElement(DayCellRoot, { date: startDate, dateProfile: dateProfile, todayRange: todayRange, elRef: this.handleRootEl }, function (rootElRef, dayClassNames, dataAttrs) { return (createElement(Popover, { elRef: rootElRef, id: props.id, title: title, extraClassNames: ['fc-more-popover'].concat(dayClassNames), extraAttrs: dataAttrs /* TODO: make these time-based when not whole-day? */, parentEl: props.parentEl, alignmentEl: props.alignmentEl, alignGridTop: props.alignGridTop, onClose: props.onClose },\n createElement(DayCellContent, { date: startDate, dateProfile: dateProfile, todayRange: todayRange }, function (innerElRef, innerContent) { return (innerContent &&\n createElement(\"div\", { className: \"fc-more-popover-misc\", ref: innerElRef }, innerContent)); }),\n props.children)); }));\n };\n MorePopover.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {\n var _a = this, rootEl = _a.rootEl, props = _a.props;\n if (positionLeft >= 0 && positionLeft < elWidth &&\n positionTop >= 0 && positionTop < elHeight) {\n return {\n dateProfile: props.dateProfile,\n dateSpan: __assign({ allDay: true, range: {\n start: props.startDate,\n end: props.endDate,\n } }, props.extraDateSpan),\n dayEl: rootEl,\n rect: {\n left: 0,\n top: 0,\n right: elWidth,\n bottom: elHeight,\n },\n layer: 1, // important when comparing with hits from other components\n };\n }\n return null;\n };\n return MorePopover;\n}(DateComponent));\n\nvar MoreLinkRoot = /** @class */ (function (_super) {\n __extends(MoreLinkRoot, _super);\n function MoreLinkRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.linkElRef = createRef();\n _this.state = {\n isPopoverOpen: false,\n popoverId: getUniqueDomId(),\n };\n _this.handleClick = function (ev) {\n var _a = _this, props = _a.props, context = _a.context;\n var moreLinkClick = context.options.moreLinkClick;\n var date = computeRange(props).start;\n function buildPublicSeg(seg) {\n var _a = seg.eventRange, def = _a.def, instance = _a.instance, range = _a.range;\n return {\n event: new EventApi(context, def, instance),\n start: context.dateEnv.toDate(range.start),\n end: context.dateEnv.toDate(range.end),\n isStart: seg.isStart,\n isEnd: seg.isEnd,\n };\n }\n if (typeof moreLinkClick === 'function') {\n moreLinkClick = moreLinkClick({\n date: date,\n allDay: Boolean(props.allDayDate),\n allSegs: props.allSegs.map(buildPublicSeg),\n hiddenSegs: props.hiddenSegs.map(buildPublicSeg),\n jsEvent: ev,\n view: context.viewApi,\n });\n }\n if (!moreLinkClick || moreLinkClick === 'popover') {\n _this.setState({ isPopoverOpen: true });\n }\n else if (typeof moreLinkClick === 'string') { // a view name\n context.calendarApi.zoomTo(date, moreLinkClick);\n }\n };\n _this.handlePopoverClose = function () {\n _this.setState({ isPopoverOpen: false });\n };\n return _this;\n }\n MoreLinkRoot.prototype.render = function () {\n var _this = this;\n var _a = this, props = _a.props, state = _a.state;\n return (createElement(ViewContextType.Consumer, null, function (context) {\n var viewApi = context.viewApi, options = context.options, calendarApi = context.calendarApi;\n var moreLinkText = options.moreLinkText;\n var moreCnt = props.moreCnt;\n var range = computeRange(props);\n var text = typeof moreLinkText === 'function' // TODO: eventually use formatWithOrdinals\n ? moreLinkText.call(calendarApi, moreCnt)\n : \"+\" + moreCnt + \" \" + moreLinkText;\n var title = formatWithOrdinals(options.moreLinkHint, [moreCnt], text);\n var hookProps = {\n num: moreCnt,\n shortText: \"+\" + moreCnt,\n text: text,\n view: viewApi,\n };\n return (createElement(Fragment, null,\n Boolean(props.moreCnt) && (createElement(RenderHook, { elRef: _this.linkElRef, hookProps: hookProps, classNames: options.moreLinkClassNames, content: options.moreLinkContent, defaultContent: props.defaultContent || renderMoreLinkInner, didMount: options.moreLinkDidMount, willUnmount: options.moreLinkWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return props.children(rootElRef, ['fc-more-link'].concat(customClassNames), innerElRef, innerContent, _this.handleClick, title, state.isPopoverOpen, state.isPopoverOpen ? state.popoverId : ''); })),\n state.isPopoverOpen && (createElement(MorePopover, { id: state.popoverId, startDate: range.start, endDate: range.end, dateProfile: props.dateProfile, todayRange: props.todayRange, extraDateSpan: props.extraDateSpan, parentEl: _this.parentEl, alignmentEl: props.alignmentElRef.current, alignGridTop: props.alignGridTop, onClose: _this.handlePopoverClose }, props.popoverContent()))));\n }));\n };\n MoreLinkRoot.prototype.componentDidMount = function () {\n this.updateParentEl();\n };\n MoreLinkRoot.prototype.componentDidUpdate = function () {\n this.updateParentEl();\n };\n MoreLinkRoot.prototype.updateParentEl = function () {\n if (this.linkElRef.current) {\n this.parentEl = elementClosest(this.linkElRef.current, '.fc-view-harness');\n }\n };\n return MoreLinkRoot;\n}(BaseComponent));\nfunction renderMoreLinkInner(props) {\n return props.text;\n}\nfunction computeRange(props) {\n if (props.allDayDate) {\n return {\n start: props.allDayDate,\n end: addDays(props.allDayDate, 1),\n };\n }\n var hiddenSegs = props.hiddenSegs;\n return {\n start: computeEarliestSegStart(hiddenSegs),\n end: computeLatestSegEnd(hiddenSegs),\n };\n}\nfunction computeEarliestSegStart(segs) {\n return segs.reduce(pickEarliestStart).eventRange.range.start;\n}\nfunction pickEarliestStart(seg0, seg1) {\n return seg0.eventRange.range.start < seg1.eventRange.range.start ? seg0 : seg1;\n}\nfunction computeLatestSegEnd(segs) {\n return segs.reduce(pickLatestEnd).eventRange.range.end;\n}\nfunction pickLatestEnd(seg0, seg1) {\n return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1;\n}\n\n// exports\n// --------------------------------------------------------------------------------------------------\nvar version = '5.10.2'; // important to type it, so .d.ts has generic string\n\nexport { BASE_OPTION_DEFAULTS, BASE_OPTION_REFINERS, BaseComponent, BgEvent, CalendarApi, CalendarContent, CalendarDataManager, CalendarDataProvider, CalendarRoot, ContentHook, CustomContentRenderContext, DateComponent, DateEnv, DateProfileGenerator, DayCellContent, DayCellRoot, DayHeader, DaySeriesModel, DayTableModel, DelayedRunner, ElementDragging, ElementScrollController, Emitter, EventApi, EventRoot, EventSourceApi, Interaction, MoreLinkRoot, MountHook, NamedTimeZoneImpl, NowIndicatorRoot, NowTimer, PositionCache, RefMap, RenderHook, ScrollController, ScrollResponder, Scroller, SegHierarchy, SimpleScrollGrid, Slicer, Splitter, StandardEvent, TableDateCell, TableDowCell, Theme, ViewApi, ViewContextType, ViewRoot, WeekNumberRoot, WindowScrollController, addDays, addDurations, addMs, addWeeks, allowContextMenu, allowSelection, applyMutationToEventStore, applyStyle, applyStyleProp, asCleanDays, asRoughMinutes, asRoughMs, asRoughSeconds, binarySearch, buildClassNameNormalizer, buildEntryKey, buildEventApis, buildEventRangeKey, buildHashFromArray, buildIsoString, buildNavLinkAttrs, buildSegCompareObj, buildSegTimeText, collectFromHash, combineEventUis, compareByFieldSpec, compareByFieldSpecs, compareNumbers, compareObjs, computeEarliestSegStart, computeEdges, computeFallbackHeaderFormat, computeHeightAndMargins, computeInnerRect, computeRect, computeSegDraggable, computeSegEndResizable, computeSegStartResizable, computeShrinkWidth, computeSmallestCellWidth, computeVisibleDayRange, config, constrainPoint, createAriaClickAttrs, createDuration, createEmptyEventStore, createEventInstance, createEventUi, createFormatter, createPlugin, diffDates, diffDayAndTime, diffDays, diffPoints, diffWeeks, diffWholeDays, diffWholeWeeks, disableCursor, elementClosest, elementMatches, enableCursor, eventTupleToStore, filterEventStoreDefs, filterHash, findDirectChildren, findElements, flexibleCompare, formatDate, formatDayString, formatIsoTimeString, formatRange, getAllowYScrolling, getCanVGrowWithinCell, getClippingParents, getDateMeta, getDayClassNames, getDefaultEventEnd, getElRoot, getElSeg, getEntrySpanEnd, getEventClassNames, getEventTargetViaRoot, getIsRtlScrollbarOnLeft, getRectCenter, getRelevantEvents, getScrollGridClassNames, getScrollbarWidths, getSectionClassNames, getSectionHasLiquidHeight, getSegAnchorAttrs, getSegMeta, getSlotClassNames, getStickyFooterScrollbar, getStickyHeaderDates, getUnequalProps, getUniqueDomId, globalLocales, globalPlugins, greatestDurationDenominator, groupIntersectingEntries, guid, hasBgRendering, hasShrinkWidth, identity, interactionSettingsStore, interactionSettingsToStore, intersectRanges, intersectRects, intersectSpans, isArraysEqual, isColPropsEqual, isDateSelectionValid, isDateSpansEqual, isInt, isInteractionValid, isMultiDayRange, isPropsEqual, isPropsValid, isValidDate, joinSpans, listenBySelector, mapHash, memoize, memoizeArraylike, memoizeHashlike, memoizeObjArg, mergeEventStores, multiplyDuration, padStart, parseBusinessHours, parseClassNames, parseDragMeta, parseEventDef, parseFieldSpecs, parse as parseMarker, pointInsideRect, preventContextMenu, preventDefault, preventSelection, rangeContainsMarker, rangeContainsRange, rangesEqual, rangesIntersect, refineEventDef, refineProps, removeElement, removeExact, renderChunkContent, renderFill, renderMicroColGroup, renderScrollShim, requestJson, sanitizeShrinkWidth, setElSeg, setRef, sliceEventStore, sliceEvents, sortEventSegs, startOfDay, translateRect, triggerDateSelect, unpromisify, version, whenTransitionDone, wholeDivideDurations };\n//# sourceMappingURL=main.js.map\n","/*!\nFullCalendar v5.10.2\nDocs & License: https://fullcalendar.io/\n(c) 2021 Adam Shaw\n*/\nimport './vdom.js';\nimport { __extends, __assign } from 'tslib';\nimport { flushSync, render, createElement, CalendarRoot, CustomContentRenderContext, CalendarContent, unmountComponentAtNode, DelayedRunner, CalendarDataManager, isArraysEqual, applyStyleProp, CalendarApi } from '@fullcalendar/common';\nexport * from '@fullcalendar/common';\n\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n function Calendar(el, optionOverrides) {\n if (optionOverrides === void 0) { optionOverrides = {}; }\n var _this = _super.call(this) || this;\n _this.isRendering = false;\n _this.isRendered = false;\n _this.currentClassNames = [];\n _this.customContentRenderId = 0; // will affect custom generated classNames?\n _this.handleAction = function (action) {\n // actions we know we want to render immediately\n switch (action.type) {\n case 'SET_EVENT_DRAG':\n case 'SET_EVENT_RESIZE':\n _this.renderRunner.tryDrain();\n }\n };\n _this.handleData = function (data) {\n _this.currentData = data;\n _this.renderRunner.request(data.calendarOptions.rerenderDelay);\n };\n _this.handleRenderRequest = function () {\n if (_this.isRendering) {\n _this.isRendered = true;\n var currentData_1 = _this.currentData;\n flushSync(function () {\n render(createElement(CalendarRoot, { options: currentData_1.calendarOptions, theme: currentData_1.theme, emitter: currentData_1.emitter }, function (classNames, height, isHeightAuto, forPrint) {\n _this.setClassNames(classNames);\n _this.setHeight(height);\n return (createElement(CustomContentRenderContext.Provider, { value: _this.customContentRenderId },\n createElement(CalendarContent, __assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData_1))));\n }), _this.el);\n });\n }\n else if (_this.isRendered) {\n _this.isRendered = false;\n unmountComponentAtNode(_this.el);\n _this.setClassNames([]);\n _this.setHeight('');\n }\n };\n _this.el = el;\n _this.renderRunner = new DelayedRunner(_this.handleRenderRequest);\n new CalendarDataManager({\n optionOverrides: optionOverrides,\n calendarApi: _this,\n onAction: _this.handleAction,\n onData: _this.handleData,\n });\n return _this;\n }\n Object.defineProperty(Calendar.prototype, \"view\", {\n get: function () { return this.currentData.viewApi; } // for public API\n ,\n enumerable: false,\n configurable: true\n });\n Calendar.prototype.render = function () {\n var wasRendering = this.isRendering;\n if (!wasRendering) {\n this.isRendering = true;\n }\n else {\n this.customContentRenderId += 1;\n }\n this.renderRunner.request();\n if (wasRendering) {\n this.updateSize();\n }\n };\n Calendar.prototype.destroy = function () {\n if (this.isRendering) {\n this.isRendering = false;\n this.renderRunner.request();\n }\n };\n Calendar.prototype.updateSize = function () {\n var _this = this;\n flushSync(function () {\n _super.prototype.updateSize.call(_this);\n });\n };\n Calendar.prototype.batchRendering = function (func) {\n this.renderRunner.pause('batchRendering');\n func();\n this.renderRunner.resume('batchRendering');\n };\n Calendar.prototype.pauseRendering = function () {\n this.renderRunner.pause('pauseRendering');\n };\n Calendar.prototype.resumeRendering = function () {\n this.renderRunner.resume('pauseRendering', true);\n };\n Calendar.prototype.resetOptions = function (optionOverrides, append) {\n this.currentDataManager.resetOptions(optionOverrides, append);\n };\n Calendar.prototype.setClassNames = function (classNames) {\n if (!isArraysEqual(classNames, this.currentClassNames)) {\n var classList = this.el.classList;\n for (var _i = 0, _a = this.currentClassNames; _i < _a.length; _i++) {\n var className = _a[_i];\n classList.remove(className);\n }\n for (var _b = 0, classNames_1 = classNames; _b < classNames_1.length; _b++) {\n var className = classNames_1[_b];\n classList.add(className);\n }\n this.currentClassNames = classNames;\n }\n };\n Calendar.prototype.setHeight = function (height) {\n applyStyleProp(this.el, 'height', height);\n };\n return Calendar;\n}(CalendarApi));\n\nexport { Calendar };\n//# sourceMappingURL=main.js.map\n","/*!\nFullCalendar v5.10.2\nDocs & License: https://fullcalendar.io/\n(c) 2021 Adam Shaw\n*/\nimport './main.css';\n\nimport { createRef, getStickyHeaderDates, createElement, ViewRoot, SimpleScrollGrid, getStickyFooterScrollbar, renderScrollShim, DateComponent, buildNavLinkAttrs, DayCellContent, Fragment, BaseComponent, createFormatter, StandardEvent, buildSegTimeText, EventRoot, getSegAnchorAttrs, memoize, MoreLinkRoot, getSegMeta, createAriaClickAttrs, getUniqueDomId, setRef, DayCellRoot, WeekNumberRoot, buildEntryKey, intersectSpans, SegHierarchy, intersectRanges, addDays, RefMap, sortEventSegs, isPropsEqual, buildEventRangeKey, BgEvent, renderFill, PositionCache, NowTimer, Slicer, DayHeader, DaySeriesModel, DayTableModel, addWeeks, diffWeeks, DateProfileGenerator, createPlugin } from '@fullcalendar/common';\nimport { __extends, __assign, __spreadArray } from 'tslib';\n\n/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.\n----------------------------------------------------------------------------------------------------------------------*/\n// It is a manager for a Table subcomponent, which does most of the heavy lifting.\n// It is responsible for managing width/height.\nvar TableView = /** @class */ (function (_super) {\n __extends(TableView, _super);\n function TableView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.headerElRef = createRef();\n return _this;\n }\n TableView.prototype.renderSimpleLayout = function (headerRowContent, bodyContent) {\n var _a = this, props = _a.props, context = _a.context;\n var sections = [];\n var stickyHeaderDates = getStickyHeaderDates(context.options);\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n chunk: {\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent,\n },\n });\n }\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n chunk: { content: bodyContent },\n });\n return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return (createElement(\"div\", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') },\n createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections }))); }));\n };\n TableView.prototype.renderHScrollLayout = function (headerRowContent, bodyContent, colCnt, dayMinWidth) {\n var ScrollGrid = this.context.pluginHooks.scrollGridImpl;\n if (!ScrollGrid) {\n throw new Error('No ScrollGrid implementation');\n }\n var _a = this, props = _a.props, context = _a.context;\n var stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);\n var stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);\n var sections = [];\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n chunks: [{\n key: 'main',\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent,\n }],\n });\n }\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n chunks: [{\n key: 'main',\n content: bodyContent,\n }],\n });\n if (stickyFooterScrollbar) {\n sections.push({\n type: 'footer',\n key: 'footer',\n isSticky: true,\n chunks: [{\n key: 'main',\n content: renderScrollShim,\n }],\n });\n }\n return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return (createElement(\"div\", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') },\n createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections }))); }));\n };\n return TableView;\n}(DateComponent));\n\nfunction splitSegsByRow(segs, rowCnt) {\n var byRow = [];\n for (var i = 0; i < rowCnt; i += 1) {\n byRow[i] = [];\n }\n for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {\n var seg = segs_1[_i];\n byRow[seg.row].push(seg);\n }\n return byRow;\n}\nfunction splitSegsByFirstCol(segs, colCnt) {\n var byCol = [];\n for (var i = 0; i < colCnt; i += 1) {\n byCol[i] = [];\n }\n for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {\n var seg = segs_2[_i];\n byCol[seg.firstCol].push(seg);\n }\n return byCol;\n}\nfunction splitInteractionByRow(ui, rowCnt) {\n var byRow = [];\n if (!ui) {\n for (var i = 0; i < rowCnt; i += 1) {\n byRow[i] = null;\n }\n }\n else {\n for (var i = 0; i < rowCnt; i += 1) {\n byRow[i] = {\n affectedInstances: ui.affectedInstances,\n isEvent: ui.isEvent,\n segs: [],\n };\n }\n for (var _i = 0, _a = ui.segs; _i < _a.length; _i++) {\n var seg = _a[_i];\n byRow[seg.row].segs.push(seg);\n }\n }\n return byRow;\n}\n\nvar TableCellTop = /** @class */ (function (_super) {\n __extends(TableCellTop, _super);\n function TableCellTop() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableCellTop.prototype.render = function () {\n var props = this.props;\n var navLinkAttrs = buildNavLinkAttrs(this.context, props.date);\n return (createElement(DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, defaultContent: renderTopInner }, function (innerElRef, innerContent) { return ((innerContent || props.forceDayTop) && (createElement(\"div\", { className: \"fc-daygrid-day-top\", ref: innerElRef },\n createElement(\"a\", __assign({ id: props.dayNumberId, className: \"fc-daygrid-day-number\" }, navLinkAttrs), innerContent || createElement(Fragment, null, \"\\u00A0\"))))); }));\n };\n return TableCellTop;\n}(BaseComponent));\nfunction renderTopInner(props) {\n return props.dayNumberText;\n}\n\nvar DEFAULT_TABLE_EVENT_TIME_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true,\n meridiem: 'narrow',\n});\nfunction hasListItemDisplay(seg) {\n var display = seg.eventRange.ui.display;\n return display === 'list-item' || (display === 'auto' &&\n !seg.eventRange.def.allDay &&\n seg.firstCol === seg.lastCol && // can't be multi-day\n seg.isStart && // \"\n seg.isEnd // \"\n );\n}\n\nvar TableBlockEvent = /** @class */ (function (_super) {\n __extends(TableBlockEvent, _super);\n function TableBlockEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableBlockEvent.prototype.render = function () {\n var props = this.props;\n return (createElement(StandardEvent, __assign({}, props, { extraClassNames: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay })));\n };\n return TableBlockEvent;\n}(BaseComponent));\n\nvar TableListItemEvent = /** @class */ (function (_super) {\n __extends(TableListItemEvent, _super);\n function TableListItemEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableListItemEvent.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var timeFormat = context.options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT;\n var timeText = buildSegTimeText(props.seg, timeFormat, context, true, props.defaultDisplayEventEnd);\n return (createElement(EventRoot, { seg: props.seg, timeText: timeText, defaultContent: renderInnerContent, isDragging: props.isDragging, isResizing: false, isDateSelecting: false, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent) { return ( // we don't use styles!\n createElement(\"a\", __assign({ className: ['fc-daygrid-event', 'fc-daygrid-dot-event'].concat(classNames).join(' '), ref: rootElRef }, getSegAnchorAttrs(props.seg, context)), innerContent)); }));\n };\n return TableListItemEvent;\n}(BaseComponent));\nfunction renderInnerContent(innerProps) {\n return (createElement(Fragment, null,\n createElement(\"div\", { className: \"fc-daygrid-event-dot\", style: { borderColor: innerProps.borderColor || innerProps.backgroundColor } }),\n innerProps.timeText && (createElement(\"div\", { className: \"fc-event-time\" }, innerProps.timeText)),\n createElement(\"div\", { className: \"fc-event-title\" }, innerProps.event.title || createElement(Fragment, null, \"\\u00A0\"))));\n}\n\nvar TableCellMoreLink = /** @class */ (function (_super) {\n __extends(TableCellMoreLink, _super);\n function TableCellMoreLink() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.compileSegs = memoize(compileSegs);\n return _this;\n }\n TableCellMoreLink.prototype.render = function () {\n var props = this.props;\n var _a = this.compileSegs(props.singlePlacements), allSegs = _a.allSegs, invisibleSegs = _a.invisibleSegs;\n return (createElement(MoreLinkRoot, { dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs: allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: function () {\n var isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) ||\n (props.eventResize ? props.eventResize.affectedInstances : null) ||\n {};\n return (createElement(Fragment, null, allSegs.map(function (seg) {\n var instanceId = seg.eventRange.instance.instanceId;\n return (createElement(\"div\", { className: \"fc-daygrid-event-harness\", key: instanceId, style: {\n visibility: isForcedInvisible[instanceId] ? 'hidden' : '',\n } }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, __assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange)))) : (createElement(TableBlockEvent, __assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange))))));\n })));\n } }, function (rootElRef, classNames, innerElRef, innerContent, handleClick, title, isExpanded, popoverId) { return (createElement(\"a\", __assign({ ref: rootElRef, className: ['fc-daygrid-more-link'].concat(classNames).join(' '), title: title, \"aria-expanded\": isExpanded, \"aria-controls\": popoverId }, createAriaClickAttrs(handleClick)), innerContent)); }));\n };\n return TableCellMoreLink;\n}(BaseComponent));\nfunction compileSegs(singlePlacements) {\n var allSegs = [];\n var invisibleSegs = [];\n for (var _i = 0, singlePlacements_1 = singlePlacements; _i < singlePlacements_1.length; _i++) {\n var placement = singlePlacements_1[_i];\n allSegs.push(placement.seg);\n if (!placement.isVisible) {\n invisibleSegs.push(placement.seg);\n }\n }\n return { allSegs: allSegs, invisibleSegs: invisibleSegs };\n}\n\nvar DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'narrow' });\nvar TableCell = /** @class */ (function (_super) {\n __extends(TableCell, _super);\n function TableCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rootElRef = createRef();\n _this.state = {\n dayNumberId: getUniqueDomId(),\n };\n _this.handleRootEl = function (el) {\n setRef(_this.rootElRef, el);\n setRef(_this.props.elRef, el);\n };\n return _this;\n }\n TableCell.prototype.render = function () {\n var _a = this, context = _a.context, props = _a.props, state = _a.state, rootElRef = _a.rootElRef;\n var date = props.date, dateProfile = props.dateProfile;\n var navLinkAttrs = buildNavLinkAttrs(context, date, 'week');\n return (createElement(DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, elRef: this.handleRootEl }, function (dayElRef, dayClassNames, rootDataAttrs, isDisabled) { return (createElement(\"td\", __assign({ ref: dayElRef, role: \"gridcell\", className: ['fc-daygrid-day'].concat(dayClassNames, props.extraClassNames || []).join(' ') }, rootDataAttrs, props.extraDataAttrs, (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})),\n createElement(\"div\", { className: \"fc-daygrid-day-frame fc-scrollgrid-sync-inner\", ref: props.innerElRef /* different from hook system! RENAME */ },\n props.showWeekNumber && (createElement(WeekNumberRoot, { date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, function (weekElRef, weekClassNames, innerElRef, innerContent) { return (createElement(\"a\", __assign({ ref: weekElRef, className: ['fc-daygrid-week-number'].concat(weekClassNames).join(' ') }, navLinkAttrs), innerContent)); })),\n !isDisabled && (createElement(TableCellTop, { date: date, dateProfile: dateProfile, showDayNumber: props.showDayNumber, dayNumberId: state.dayNumberId, forceDayTop: props.forceDayTop, todayRange: props.todayRange, extraHookProps: props.extraHookProps })),\n createElement(\"div\", { className: \"fc-daygrid-day-events\", ref: props.fgContentElRef },\n props.fgContent,\n createElement(\"div\", { className: \"fc-daygrid-day-bottom\", style: { marginTop: props.moreMarginTop } },\n createElement(TableCellMoreLink, { allDayDate: date, singlePlacements: props.singlePlacements, moreCnt: props.moreCnt, alignmentElRef: rootElRef, alignGridTop: !props.showDayNumber, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange }))),\n createElement(\"div\", { className: \"fc-daygrid-day-bg\" }, props.bgContent)))); }));\n };\n return TableCell;\n}(DateComponent));\n\nfunction computeFgSegPlacement(segs, // assumed already sorted\ndayMaxEvents, dayMaxEventRows, strictOrder, eventInstanceHeights, maxContentHeight, cells) {\n var hierarchy = new DayGridSegHierarchy();\n hierarchy.allowReslicing = true;\n hierarchy.strictOrder = strictOrder;\n if (dayMaxEvents === true || dayMaxEventRows === true) {\n hierarchy.maxCoord = maxContentHeight;\n hierarchy.hiddenConsumes = true;\n }\n else if (typeof dayMaxEvents === 'number') {\n hierarchy.maxStackCnt = dayMaxEvents;\n }\n else if (typeof dayMaxEventRows === 'number') {\n hierarchy.maxStackCnt = dayMaxEventRows;\n hierarchy.hiddenConsumes = true;\n }\n // create segInputs only for segs with known heights\n var segInputs = [];\n var unknownHeightSegs = [];\n for (var i = 0; i < segs.length; i += 1) {\n var seg = segs[i];\n var instanceId = seg.eventRange.instance.instanceId;\n var eventHeight = eventInstanceHeights[instanceId];\n if (eventHeight != null) {\n segInputs.push({\n index: i,\n thickness: eventHeight,\n span: {\n start: seg.firstCol,\n end: seg.lastCol + 1,\n },\n });\n }\n else {\n unknownHeightSegs.push(seg);\n }\n }\n var hiddenEntries = hierarchy.addSegs(segInputs);\n var segRects = hierarchy.toRects();\n var _a = placeRects(segRects, segs, cells), singleColPlacements = _a.singleColPlacements, multiColPlacements = _a.multiColPlacements, leftoverMargins = _a.leftoverMargins;\n var moreCnts = [];\n var moreMarginTops = [];\n // add segs with unknown heights\n for (var _i = 0, unknownHeightSegs_1 = unknownHeightSegs; _i < unknownHeightSegs_1.length; _i++) {\n var seg = unknownHeightSegs_1[_i];\n multiColPlacements[seg.firstCol].push({\n seg: seg,\n isVisible: false,\n isAbsolute: true,\n absoluteTop: 0,\n marginTop: 0,\n });\n for (var col = seg.firstCol; col <= seg.lastCol; col += 1) {\n singleColPlacements[col].push({\n seg: resliceSeg(seg, col, col + 1, cells),\n isVisible: false,\n isAbsolute: false,\n absoluteTop: 0,\n marginTop: 0,\n });\n }\n }\n // add the hidden entries\n for (var col = 0; col < cells.length; col += 1) {\n moreCnts.push(0);\n }\n for (var _b = 0, hiddenEntries_1 = hiddenEntries; _b < hiddenEntries_1.length; _b++) {\n var hiddenEntry = hiddenEntries_1[_b];\n var seg = segs[hiddenEntry.index];\n var hiddenSpan = hiddenEntry.span;\n multiColPlacements[hiddenSpan.start].push({\n seg: resliceSeg(seg, hiddenSpan.start, hiddenSpan.end, cells),\n isVisible: false,\n isAbsolute: true,\n absoluteTop: 0,\n marginTop: 0,\n });\n for (var col = hiddenSpan.start; col < hiddenSpan.end; col += 1) {\n moreCnts[col] += 1;\n singleColPlacements[col].push({\n seg: resliceSeg(seg, col, col + 1, cells),\n isVisible: false,\n isAbsolute: false,\n absoluteTop: 0,\n marginTop: 0,\n });\n }\n }\n // deal with leftover margins\n for (var col = 0; col < cells.length; col += 1) {\n moreMarginTops.push(leftoverMargins[col]);\n }\n return { singleColPlacements: singleColPlacements, multiColPlacements: multiColPlacements, moreCnts: moreCnts, moreMarginTops: moreMarginTops };\n}\n// rects ordered by top coord, then left\nfunction placeRects(allRects, segs, cells) {\n var rectsByEachCol = groupRectsByEachCol(allRects, cells.length);\n var singleColPlacements = [];\n var multiColPlacements = [];\n var leftoverMargins = [];\n for (var col = 0; col < cells.length; col += 1) {\n var rects = rectsByEachCol[col];\n // compute all static segs in singlePlacements\n var singlePlacements = [];\n var currentHeight = 0;\n var currentMarginTop = 0;\n for (var _i = 0, rects_1 = rects; _i < rects_1.length; _i++) {\n var rect = rects_1[_i];\n var seg = segs[rect.index];\n singlePlacements.push({\n seg: resliceSeg(seg, col, col + 1, cells),\n isVisible: true,\n isAbsolute: false,\n absoluteTop: rect.levelCoord,\n marginTop: rect.levelCoord - currentHeight,\n });\n currentHeight = rect.levelCoord + rect.thickness;\n }\n // compute mixed static/absolute segs in multiPlacements\n var multiPlacements = [];\n currentHeight = 0;\n currentMarginTop = 0;\n for (var _a = 0, rects_2 = rects; _a < rects_2.length; _a++) {\n var rect = rects_2[_a];\n var seg = segs[rect.index];\n var isAbsolute = rect.span.end - rect.span.start > 1; // multi-column?\n var isFirstCol = rect.span.start === col;\n currentMarginTop += rect.levelCoord - currentHeight; // amount of space since bottom of previous seg\n currentHeight = rect.levelCoord + rect.thickness; // height will now be bottom of current seg\n if (isAbsolute) {\n currentMarginTop += rect.thickness;\n if (isFirstCol) {\n multiPlacements.push({\n seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n isVisible: true,\n isAbsolute: true,\n absoluteTop: rect.levelCoord,\n marginTop: 0,\n });\n }\n }\n else if (isFirstCol) {\n multiPlacements.push({\n seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n isVisible: true,\n isAbsolute: false,\n absoluteTop: rect.levelCoord,\n marginTop: currentMarginTop, // claim the margin\n });\n currentMarginTop = 0;\n }\n }\n singleColPlacements.push(singlePlacements);\n multiColPlacements.push(multiPlacements);\n leftoverMargins.push(currentMarginTop);\n }\n return { singleColPlacements: singleColPlacements, multiColPlacements: multiColPlacements, leftoverMargins: leftoverMargins };\n}\nfunction groupRectsByEachCol(rects, colCnt) {\n var rectsByEachCol = [];\n for (var col = 0; col < colCnt; col += 1) {\n rectsByEachCol.push([]);\n }\n for (var _i = 0, rects_3 = rects; _i < rects_3.length; _i++) {\n var rect = rects_3[_i];\n for (var col = rect.span.start; col < rect.span.end; col += 1) {\n rectsByEachCol[col].push(rect);\n }\n }\n return rectsByEachCol;\n}\nfunction resliceSeg(seg, spanStart, spanEnd, cells) {\n if (seg.firstCol === spanStart && seg.lastCol === spanEnd - 1) {\n return seg;\n }\n var eventRange = seg.eventRange;\n var origRange = eventRange.range;\n var slicedRange = intersectRanges(origRange, {\n start: cells[spanStart].date,\n end: addDays(cells[spanEnd - 1].date, 1),\n });\n return __assign(__assign({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: {\n def: eventRange.def,\n ui: __assign(__assign({}, eventRange.ui), { durationEditable: false }),\n instance: eventRange.instance,\n range: slicedRange,\n }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() });\n}\nvar DayGridSegHierarchy = /** @class */ (function (_super) {\n __extends(DayGridSegHierarchy, _super);\n function DayGridSegHierarchy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // config\n _this.hiddenConsumes = false;\n // allows us to keep hidden entries in the hierarchy so they take up space\n _this.forceHidden = {};\n return _this;\n }\n DayGridSegHierarchy.prototype.addSegs = function (segInputs) {\n var _this = this;\n var hiddenSegs = _super.prototype.addSegs.call(this, segInputs);\n var entriesByLevel = this.entriesByLevel;\n var excludeHidden = function (entry) { return !_this.forceHidden[buildEntryKey(entry)]; };\n // remove the forced-hidden segs\n for (var level = 0; level < entriesByLevel.length; level += 1) {\n entriesByLevel[level] = entriesByLevel[level].filter(excludeHidden);\n }\n return hiddenSegs;\n };\n DayGridSegHierarchy.prototype.handleInvalidInsertion = function (insertion, entry, hiddenEntries) {\n var _a = this, entriesByLevel = _a.entriesByLevel, forceHidden = _a.forceHidden;\n var touchingEntry = insertion.touchingEntry, touchingLevel = insertion.touchingLevel, touchingLateral = insertion.touchingLateral;\n if (this.hiddenConsumes && touchingEntry) {\n var touchingEntryId = buildEntryKey(touchingEntry);\n // if not already hidden\n if (!forceHidden[touchingEntryId]) {\n if (this.allowReslicing) {\n var placeholderEntry = __assign(__assign({}, touchingEntry), { span: intersectSpans(touchingEntry.span, entry.span) });\n var placeholderEntryId = buildEntryKey(placeholderEntry);\n forceHidden[placeholderEntryId] = true;\n entriesByLevel[touchingLevel][touchingLateral] = placeholderEntry; // replace touchingEntry with our placeholder\n this.splitEntry(touchingEntry, entry, hiddenEntries); // split up the touchingEntry, reinsert it\n }\n else {\n forceHidden[touchingEntryId] = true;\n hiddenEntries.push(touchingEntry);\n }\n }\n }\n return _super.prototype.handleInvalidInsertion.call(this, insertion, entry, hiddenEntries);\n };\n return DayGridSegHierarchy;\n}(SegHierarchy));\n\nvar TableRow = /** @class */ (function (_super) {\n __extends(TableRow, _super);\n function TableRow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellElRefs = new RefMap(); // the
/ elements with colspans.\n SOLUTION: making individual
\n _this.frameElRefs = new RefMap(); // the fc-daygrid-day-frame\n _this.fgElRefs = new RefMap(); // the fc-daygrid-day-events\n _this.segHarnessRefs = new RefMap(); // indexed by \"instanceId:firstCol\"\n _this.rootElRef = createRef();\n _this.state = {\n framePositions: null,\n maxContentHeight: null,\n eventInstanceHeights: {},\n };\n return _this;\n }\n TableRow.prototype.render = function () {\n var _this = this;\n var _a = this, props = _a.props, state = _a.state, context = _a.context;\n var options = context.options;\n var colCnt = props.cells.length;\n var businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt);\n var bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt);\n var highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt);\n var mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt);\n var _b = computeFgSegPlacement(sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.eventInstanceHeights, state.maxContentHeight, props.cells), singleColPlacements = _b.singleColPlacements, multiColPlacements = _b.multiColPlacements, moreCnts = _b.moreCnts, moreMarginTops = _b.moreMarginTops;\n var isForcedInvisible = // TODO: messy way to compute this\n (props.eventDrag && props.eventDrag.affectedInstances) ||\n (props.eventResize && props.eventResize.affectedInstances) ||\n {};\n return (createElement(\"tr\", { ref: this.rootElRef, role: \"row\" },\n props.renderIntro && props.renderIntro(),\n props.cells.map(function (cell, col) {\n var normalFgNodes = _this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible);\n var mirrorFgNodes = _this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false);\n return (createElement(TableCell, { key: cell.key, elRef: _this.cellElRefs.createRef(cell.key), innerElRef: _this.frameElRefs.createRef(cell.key) /* FF problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: _this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys\n createElement(Fragment, null,\n createElement(Fragment, null, normalFgNodes),\n createElement(Fragment, null, mirrorFgNodes))), bgContent: ( // Fragment scopes the keys\n createElement(Fragment, null,\n _this.renderFillSegs(highlightSegsByCol[col], 'highlight'),\n _this.renderFillSegs(businessHoursByCol[col], 'non-business'),\n _this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))) }));\n })));\n };\n TableRow.prototype.componentDidMount = function () {\n this.updateSizing(true);\n };\n TableRow.prototype.componentDidUpdate = function (prevProps, prevState) {\n var currentProps = this.props;\n this.updateSizing(!isPropsEqual(prevProps, currentProps));\n };\n TableRow.prototype.getHighlightSegs = function () {\n var props = this.props;\n if (props.eventDrag && props.eventDrag.segs.length) { // messy check\n return props.eventDrag.segs;\n }\n if (props.eventResize && props.eventResize.segs.length) { // messy check\n return props.eventResize.segs;\n }\n return props.dateSelectionSegs;\n };\n TableRow.prototype.getMirrorSegs = function () {\n var props = this.props;\n if (props.eventResize && props.eventResize.segs.length) { // messy check\n return props.eventResize.segs;\n }\n return [];\n };\n TableRow.prototype.renderFgSegs = function (col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) {\n var context = this.context;\n var eventSelection = this.props.eventSelection;\n var framePositions = this.state.framePositions;\n var defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1\n var isMirror = isDragging || isResizing || isDateSelecting;\n var nodes = [];\n if (framePositions) {\n for (var _i = 0, segPlacements_1 = segPlacements; _i < segPlacements_1.length; _i++) {\n var placement = segPlacements_1[_i];\n var seg = placement.seg;\n var instanceId = seg.eventRange.instance.instanceId;\n var key = instanceId + ':' + col;\n var isVisible = placement.isVisible && !isForcedInvisible[instanceId];\n var isAbsolute = placement.isAbsolute;\n var left = '';\n var right = '';\n if (isAbsolute) {\n if (context.isRtl) {\n right = 0;\n left = framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol];\n }\n else {\n left = 0;\n right = framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol];\n }\n }\n /*\n known bug: events that are force to be list-item but span multiple days still take up space in later columns\n todo: in print view, for multi-day events, don't display title within non-start/end segs\n */\n nodes.push(createElement(\"div\", { className: 'fc-daygrid-event-harness' + (isAbsolute ? ' fc-daygrid-event-harness-abs' : ''), key: key, ref: isMirror ? null : this.segHarnessRefs.createRef(key), style: {\n visibility: isVisible ? '' : 'hidden',\n marginTop: isAbsolute ? '' : placement.marginTop,\n top: isAbsolute ? placement.absoluteTop : '',\n left: left,\n right: right,\n } }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, __assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange)))) : (createElement(TableBlockEvent, __assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange))))));\n }\n }\n return nodes;\n };\n TableRow.prototype.renderFillSegs = function (segs, fillType) {\n var isRtl = this.context.isRtl;\n var todayRange = this.props.todayRange;\n var framePositions = this.state.framePositions;\n var nodes = [];\n if (framePositions) {\n for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {\n var seg = segs_1[_i];\n var leftRightCss = isRtl ? {\n right: 0,\n left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol],\n } : {\n left: 0,\n right: framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol],\n };\n nodes.push(createElement(\"div\", { key: buildEventRangeKey(seg.eventRange), className: \"fc-daygrid-bg-harness\", style: leftRightCss }, fillType === 'bg-event' ?\n createElement(BgEvent, __assign({ seg: seg }, getSegMeta(seg, todayRange))) :\n renderFill(fillType)));\n }\n }\n return createElement.apply(void 0, __spreadArray([Fragment, {}], nodes));\n };\n TableRow.prototype.updateSizing = function (isExternalSizingChange) {\n var _a = this, props = _a.props, frameElRefs = _a.frameElRefs;\n if (!props.forPrint &&\n props.clientWidth !== null // positioning ready?\n ) {\n if (isExternalSizingChange) {\n var frameEls = props.cells.map(function (cell) { return frameElRefs.currentMap[cell.key]; });\n if (frameEls.length) {\n var originEl = this.rootElRef.current;\n this.setState({\n framePositions: new PositionCache(originEl, frameEls, true, // isHorizontal\n false),\n });\n }\n }\n var oldInstanceHeights = this.state.eventInstanceHeights;\n var newInstanceHeights = this.queryEventInstanceHeights();\n var limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true;\n this.setState({\n // HACK to prevent oscillations of events being shown/hidden from max-event-rows\n // Essentially, once you compute an element's height, never null-out.\n // TODO: always display all events, as visibility:hidden?\n eventInstanceHeights: __assign(__assign({}, oldInstanceHeights), newInstanceHeights),\n maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null,\n });\n }\n };\n TableRow.prototype.queryEventInstanceHeights = function () {\n var segElMap = this.segHarnessRefs.currentMap;\n var eventInstanceHeights = {};\n // get the max height amongst instance segs\n for (var key in segElMap) {\n var height = Math.round(segElMap[key].getBoundingClientRect().height);\n var instanceId = key.split(':')[0]; // deconstruct how renderFgSegs makes the key\n eventInstanceHeights[instanceId] = Math.max(eventInstanceHeights[instanceId] || 0, height);\n }\n return eventInstanceHeights;\n };\n TableRow.prototype.computeMaxContentHeight = function () {\n var firstKey = this.props.cells[0].key;\n var cellEl = this.cellElRefs.currentMap[firstKey];\n var fcContainerEl = this.fgElRefs.currentMap[firstKey];\n return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top;\n };\n TableRow.prototype.getCellEls = function () {\n var elMap = this.cellElRefs.currentMap;\n return this.props.cells.map(function (cell) { return elMap[cell.key]; });\n };\n return TableRow;\n}(DateComponent));\nTableRow.addStateEquality({\n eventInstanceHeights: isPropsEqual,\n});\nfunction buildMirrorPlacements(mirrorSegs, colPlacements) {\n if (!mirrorSegs.length) {\n return [];\n }\n var topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render?\n return mirrorSegs.map(function (seg) { return ({\n seg: seg,\n isVisible: true,\n isAbsolute: true,\n absoluteTop: topsByInstanceId[seg.eventRange.instance.instanceId],\n marginTop: 0,\n }); });\n}\nfunction buildAbsoluteTopHash(colPlacements) {\n var topsByInstanceId = {};\n for (var _i = 0, colPlacements_1 = colPlacements; _i < colPlacements_1.length; _i++) {\n var placements = colPlacements_1[_i];\n for (var _a = 0, placements_1 = placements; _a < placements_1.length; _a++) {\n var placement = placements_1[_a];\n topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop;\n }\n }\n return topsByInstanceId;\n}\n\nvar Table = /** @class */ (function (_super) {\n __extends(Table, _super);\n function Table() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.splitBusinessHourSegs = memoize(splitSegsByRow);\n _this.splitBgEventSegs = memoize(splitSegsByRow);\n _this.splitFgEventSegs = memoize(splitSegsByRow);\n _this.splitDateSelectionSegs = memoize(splitSegsByRow);\n _this.splitEventDrag = memoize(splitInteractionByRow);\n _this.splitEventResize = memoize(splitInteractionByRow);\n _this.rowRefs = new RefMap();\n _this.handleRootEl = function (rootEl) {\n _this.rootEl = rootEl;\n if (rootEl) {\n _this.context.registerInteractiveComponent(_this, {\n el: rootEl,\n isHitComboAllowed: _this.props.isHitComboAllowed,\n });\n }\n else {\n _this.context.unregisterInteractiveComponent(_this);\n }\n };\n return _this;\n }\n Table.prototype.render = function () {\n var _this = this;\n var props = this.props;\n var dateProfile = props.dateProfile, dayMaxEventRows = props.dayMaxEventRows, dayMaxEvents = props.dayMaxEvents, expandRows = props.expandRows;\n var rowCnt = props.cells.length;\n var businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt);\n var bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt);\n var fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt);\n var dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt);\n var eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt);\n var eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt);\n var limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true;\n // if rows can't expand to fill fixed height, can't do balanced-height event limit\n // TODO: best place to normalize these options?\n if (limitViaBalanced && !expandRows) {\n limitViaBalanced = false;\n dayMaxEventRows = null;\n dayMaxEvents = null;\n }\n var classNames = [\n 'fc-daygrid-body',\n limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced',\n expandRows ? '' : 'fc-daygrid-body-natural', // will height of one row depend on the others?\n ];\n return (createElement(\"div\", { className: classNames.join(' '), ref: this.handleRootEl, style: {\n // these props are important to give this wrapper correct dimensions for interactions\n // TODO: if we set it here, can we avoid giving to inner tables?\n width: props.clientWidth,\n minWidth: props.tableMinWidth,\n } },\n createElement(NowTimer, { unit: \"day\" }, function (nowDate, todayRange) { return (createElement(Fragment, null,\n createElement(\"table\", { role: \"presentation\", className: \"fc-scrollgrid-sync-table\", style: {\n width: props.clientWidth,\n minWidth: props.tableMinWidth,\n height: expandRows ? props.clientHeight : '',\n } },\n props.colGroupNode,\n createElement(\"tbody\", { role: \"presentation\" }, props.cells.map(function (cells, row) { return (createElement(TableRow, { ref: _this.rowRefs.createRef(row), key: cells.length\n ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */\n : row // in case there are no cells (like when resource view is loading)\n , showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row].filter(isSegAllDay) /* hack */, fgEventSegs: fgEventSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: dayMaxEvents, dayMaxEventRows: dayMaxEventRows, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint })); }))))); })));\n };\n // Hit System\n // ----------------------------------------------------------------------------------------------------\n Table.prototype.prepareHits = function () {\n this.rowPositions = new PositionCache(this.rootEl, this.rowRefs.collect().map(function (rowObj) { return rowObj.getCellEls()[0]; }), // first cell el in each row. TODO: not optimal\n false, true);\n this.colPositions = new PositionCache(this.rootEl, this.rowRefs.currentMap[0].getCellEls(), // cell els in first row\n true, // horizontal\n false);\n };\n Table.prototype.queryHit = function (positionLeft, positionTop) {\n var _a = this, colPositions = _a.colPositions, rowPositions = _a.rowPositions;\n var col = colPositions.leftToIndex(positionLeft);\n var row = rowPositions.topToIndex(positionTop);\n if (row != null && col != null) {\n var cell = this.props.cells[row][col];\n return {\n dateProfile: this.props.dateProfile,\n dateSpan: __assign({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan),\n dayEl: this.getCellEl(row, col),\n rect: {\n left: colPositions.lefts[col],\n right: colPositions.rights[col],\n top: rowPositions.tops[row],\n bottom: rowPositions.bottoms[row],\n },\n layer: 0,\n };\n }\n return null;\n };\n Table.prototype.getCellEl = function (row, col) {\n return this.rowRefs.currentMap[row].getCellEls()[col]; // TODO: not optimal\n };\n Table.prototype.getCellRange = function (row, col) {\n var start = this.props.cells[row][col].date;\n var end = addDays(start, 1);\n return { start: start, end: end };\n };\n return Table;\n}(DateComponent));\nfunction isSegAllDay(seg) {\n return seg.eventRange.def.allDay;\n}\n\nvar DayTableSlicer = /** @class */ (function (_super) {\n __extends(DayTableSlicer, _super);\n function DayTableSlicer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.forceDayIfListItem = true;\n return _this;\n }\n DayTableSlicer.prototype.sliceRange = function (dateRange, dayTableModel) {\n return dayTableModel.sliceRange(dateRange);\n };\n return DayTableSlicer;\n}(Slicer));\n\nvar DayTable = /** @class */ (function (_super) {\n __extends(DayTable, _super);\n function DayTable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.slicer = new DayTableSlicer();\n _this.tableRef = createRef();\n return _this;\n }\n DayTable.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n return (createElement(Table, __assign({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint })));\n };\n return DayTable;\n}(DateComponent));\n\nvar DayTableView = /** @class */ (function (_super) {\n __extends(DayTableView, _super);\n function DayTableView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buildDayTableModel = memoize(buildDayTableModel);\n _this.headerRef = createRef();\n _this.tableRef = createRef();\n return _this;\n }\n DayTableView.prototype.render = function () {\n var _this = this;\n var _a = this.context, options = _a.options, dateProfileGenerator = _a.dateProfileGenerator;\n var props = this.props;\n var dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator);\n var headerContent = options.dayHeaders && (createElement(DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 }));\n var bodyContent = function (contentArg) { return (createElement(DayTable, { ref: _this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: _this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint })); };\n return options.dayMinWidth\n ? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth)\n : this.renderSimpleLayout(headerContent, bodyContent);\n };\n return DayTableView;\n}(TableView));\nfunction buildDayTableModel(dateProfile, dateProfileGenerator) {\n var daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);\n return new DayTableModel(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit));\n}\n\nvar TableDateProfileGenerator = /** @class */ (function (_super) {\n __extends(TableDateProfileGenerator, _super);\n function TableDateProfileGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // Computes the date range that will be rendered.\n TableDateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) {\n var dateEnv = this.props.dateEnv;\n var renderRange = _super.prototype.buildRenderRange.call(this, currentRange, currentRangeUnit, isRangeAllDay);\n var start = renderRange.start;\n var end = renderRange.end;\n var endOfWeek;\n // year and month views should be aligned with weeks. this is already done for week\n if (/^(year|month)$/.test(currentRangeUnit)) {\n start = dateEnv.startOfWeek(start);\n // make end-of-week if not already\n endOfWeek = dateEnv.startOfWeek(end);\n if (endOfWeek.valueOf() !== end.valueOf()) {\n end = addWeeks(endOfWeek, 1);\n }\n }\n // ensure 6 weeks\n if (this.props.monthMode &&\n this.props.fixedWeekCount) {\n var rowCnt = Math.ceil(// could be partial weeks due to hiddenDays\n diffWeeks(start, end));\n end = addWeeks(end, 6 - rowCnt);\n }\n return { start: start, end: end };\n };\n return TableDateProfileGenerator;\n}(DateProfileGenerator));\n\nvar main = createPlugin({\n initialView: 'dayGridMonth',\n views: {\n dayGrid: {\n component: DayTableView,\n dateProfileGeneratorClass: TableDateProfileGenerator,\n },\n dayGridDay: {\n type: 'dayGrid',\n duration: { days: 1 },\n },\n dayGridWeek: {\n type: 'dayGrid',\n duration: { weeks: 1 },\n },\n dayGridMonth: {\n type: 'dayGrid',\n duration: { months: 1 },\n monthMode: true,\n fixedWeekCount: true,\n },\n },\n});\n\nexport default main;\nexport { DayTableView as DayGridView, DayTable, DayTableSlicer, Table, TableView, buildDayTableModel };\n//# sourceMappingURL=main.js.map\n","import { on } from 'delegated-events'\nimport { Calendar } from '@fullcalendar/core'\nimport dayGridPlugin from '@fullcalendar/daygrid'\n\nconst state = {\n calendar: null,\n}\n\nconst fn = {\n init: () => {\n const calendarEl = document.getElementById('events-calendar')\n\n if (calendarEl) {\n fn.setupCalendar(calendarEl)\n }\n\n on('click', '.events-view-controls button', fn.handleView)\n },\n\n handleView: (e) => {\n const button = e.target.closest('button')\n\n document.querySelectorAll('.events-view-controls .is-active').forEach((x) => x.classList.remove('is-active'))\n\n button.classList.add('is-active')\n\n const listView = document.querySelector('.events-view-list')\n const calendarView = document.querySelector('.events-view-calendar')\n\n if (button.dataset.view === 'list') {\n listView.classList.remove('hidden')\n calendarView.classList.add('hidden')\n } else {\n listView.classList.add('hidden')\n calendarView.classList.remove('hidden')\n\n if (state.calendar) {\n state.calendar.render()\n }\n }\n },\n\n setupCalendar: (el) => {\n const endpoint = el.dataset.endpoint\n\n const calendar = new Calendar(el, {\n plugins: [dayGridPlugin],\n initialView: 'dayGridMonth',\n headerToolbar: {\n left: '',\n center: 'prev,title,next',\n right: '',\n },\n events: (info, success) => {\n const query = { start: info.startStr, end: info.endStr }\n const urlParams = new URLSearchParams(window.location.search)\n const searchCategory = urlParams.get('category')\n const searchTerm = urlParams.get('search')\n\n if (searchCategory) {\n query.category = searchCategory\n }\n\n if (searchTerm) {\n query.search = searchTerm\n }\n\n ajax\n .url(endpoint)\n .query(query)\n .get()\n .json((resp) => {\n success(resp)\n })\n },\n eventDidMount: (info) => {\n info.el.setAttribute('data-modal', 'content')\n },\n })\n\n calendar.render()\n\n state.calendar = calendar\n },\n}\n\nexport default {\n can: () => document.body.classList.contains('pagetype-eventspage'),\n run: fn.init,\n}\n","const fn = {\n init: () => {\n if (window.location.hash) {\n fn.handleUrl()\n }\n },\n\n handleUrl: () => {\n const hashTarget = document.querySelector(window.location.hash)\n\n if (hashTarget) {\n const el = hashTarget.querySelector('[data-slide-toggle]')\n\n if (el) {\n const trigger = el.closest('[data-slide-toggle]')\n const target = document.getElementById(trigger.getAttribute('aria-controls'))\n\n if (trigger && target) {\n trigger.setAttribute('aria-expanded', 'true')\n trigger.parentNode.classList.add('is-active')\n target.classList.remove('hidden')\n target.style.display = null\n\n const otherTriggers = Array.from(\n document.querySelectorAll('[data-slide-toggle][aria-expanded=\"true\"]')\n ).filter((x) => x !== trigger)\n\n if (otherTriggers.length) {\n otherTriggers.forEach((el) => {\n const otherTrigger = el\n const otherTarget = document.getElementById(otherTrigger.getAttribute('aria-controls'))\n\n otherTrigger.setAttribute('aria-expanded', 'false')\n otherTrigger.parentNode.classList.remove('is-active')\n otherTarget.classList.add('hidden')\n otherTarget.style.display = null\n })\n }\n }\n }\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import React from 'react'\n\nconst AppStateContext = React.createContext()\nconst AppDispatchContext = React.createContext()\n\nfunction appReducer(state, action) {\n switch (action.type) {\n case 'setLocations': {\n return {\n ...state,\n locations: action.payload,\n }\n }\n case 'setEndpoint': {\n return {\n ...state,\n endpoint: action.payload,\n }\n }\n case 'setSelectedLocation': {\n return {\n ...state,\n selectedLocation: action.payload,\n }\n }\n case 'setMap': {\n return {\n ...state,\n map: action.payload,\n }\n }\n case 'setMapBounds': {\n return {\n ...state,\n mapBounds: action.payload,\n }\n }\n case 'setMaps': {\n return {\n ...state,\n maps: action.payload,\n }\n }\n case 'setUserCoords': {\n return {\n ...state,\n userCoords: action.payload,\n }\n }\n case 'setSidebarOpen': {\n return {\n ...state,\n sidebarOpen: action.payload,\n }\n }\n case 'setMapVisible': {\n return {\n ...state,\n mapVisible: action.payload,\n }\n }\n case 'setIsLoadingLocations': {\n return {\n ...state,\n isLoadingLocations: action.payload,\n }\n }\n default: {\n throw new Error(`Unhandled action type: ${action.type}`)\n }\n }\n}\n\n/* eslint-disable-next-line react/prop-types */\nfunction AppProvider({ children }) {\n const [state, dispatch] = React.useReducer(appReducer, {\n locations: [],\n endpoint: null,\n selectedLocation: null,\n map: null,\n maps: null,\n mapBounds: null,\n userCoords: null,\n sidebarOpen: true,\n mapVisible: window.matchMedia('(min-width: 768px)').matches,\n isLoadingLocations: false,\n })\n\n return (\n \n {children}\n \n )\n}\n\nfunction useAppState() {\n const context = React.useContext(AppStateContext)\n\n if (context === undefined) {\n throw new Error('useAppState must be used within a AppProvider')\n }\n\n return context\n}\n\nfunction useAppDispatch() {\n const context = React.useContext(AppDispatchContext)\n\n if (context === undefined) {\n throw new Error('useAppDispatch must be used within a AppProvider')\n }\n\n return context\n}\n\nexport { AppProvider, useAppState, useAppDispatch }\n","import { useAppState, useAppDispatch } from './Context'\n\nfunction LocationZip() {\n const dispatch = useAppDispatch()\n const { endpoint, map, maps } = useAppState()\n\n const handleSubmit = (e) => {\n e.preventDefault()\n\n const zip = new FormData(e.target).get('zip')\n\n ajax\n .url(`${endpoint}searchzip`)\n .query({ zip })\n .get()\n .json((res) => {\n if (res.success) {\n dispatch({ type: 'setSelectedLocation', payload: null })\n dispatch({ type: 'setLocations', payload: res.locations })\n dispatch({ type: 'setUserCoords', payload: res.userCoords })\n map.panTo(new maps.LatLng(res.userCoords.lat, res.userCoords.lng))\n map.setZoom(8)\n }\n })\n }\n\n return (\n
\n \n \n \n )\n}\n\nexport default LocationZip\n","import easydropdown from 'easydropdown-a11y'\nimport { useEffect, useRef } from 'react'\nimport { useAppState, useAppDispatch } from './Context'\n\nfunction LocationSelect() {\n const dispatch = useAppDispatch()\n const { locations, selectedLocation } = useAppState()\n const ref = useRef()\n const eddRef = useRef()\n\n useEffect(() => {\n if (ref.current) {\n const edd = easydropdown(ref.current, {\n behavior: {\n liveUpdates: true,\n },\n })\n\n eddRef.current = edd\n }\n\n return () => {\n eddRef.current.destroy()\n }\n }, [ref])\n\n const handleChange = (e) => {\n const selectedLocation = locations.find((x) => x.id === parseInt(e.target.value, 10))\n\n if (selectedLocation) {\n dispatch({ type: 'setSelectedLocation', payload: selectedLocation })\n }\n }\n\n return (\n
\n \n
\n )\n}\n\nexport default LocationSelect\n","export function IconPhone({ className }) {\n return (\n \n \n \n )\n}\n\nexport function IconEnvelope({ className }) {\n return (\n \n \n \n )\n}\n\nexport function IconMapPin({ className }) {\n return (\n \n \n \n \n )\n}\n\nexport function IconMapMarker({ className }) {\n return (\n \n \n \n \n \n )\n}\n\nexport function IconUserMarker({ className }) {\n return (\n \n \n \n )\n}\n","import PropTypes from 'prop-types'\nimport { useState, useEffect } from 'react'\nimport { useAppState } from './Context'\nimport { IconPhone, IconEnvelope, IconMapPin } from './icons'\n\nfunction LocationCard({ className, location, onClick }) {\n const [isSelected, setIsSelected] = useState(false)\n const { selectedLocation } = useAppState()\n\n useEffect(() => {\n setIsSelected(selectedLocation === location)\n }, [selectedLocation])\n\n return (\n \n
\n \n {location.title}\n \n
\n {location.address}\n
\n {location.city}, {location.state} {location.zip}\n
\n \n View Details\n \n \n \n \n
\n
\n\n
    \n {location.phone && (\n
  • \n \n \n {location.phone}\n \n
  • \n )}\n {location.phone2 && (\n
  • \n \n \n {location.phone2}\n \n
  • \n )}\n {location.emailUrl && (\n
  • \n \n \n Email Office\n \n
  • \n )}\n {location.directionsUrl && (\n
  • \n \n \n Get Directions\n \n
  • \n )}\n
\n \n )\n}\n\nLocationCard.propTypes = {\n location: PropTypes.oneOfType([PropTypes.object]).isRequired,\n className: PropTypes.string,\n onClick: PropTypes.func,\n}\n\nLocationCard.defaultProps = {\n onClick: () => {},\n}\n\nexport default LocationCard\n","import { useEffect, useRef } from 'react'\nimport { useAppState, useAppDispatch } from './Context'\nimport LocationCard from './LocationCard'\n\nfunction LocationList() {\n const dispatch = useAppDispatch()\n const { locations, selectedLocation } = useAppState()\n const ref = useRef()\n\n const handleClick = (location) => {\n dispatch({ type: 'setSelectedLocation', payload: location })\n }\n\n useEffect(() => {\n if (ref.current && selectedLocation) {\n const el = ref.current.querySelector(`[data-id=\"${selectedLocation.id}\"]`)\n\n if (el) {\n ref.current.scrollTop = el.offsetTop - ref.current.offsetTop\n }\n }\n }, [ref, selectedLocation])\n\n return (\n
\n {locations.map((location) => (\n handleClick(location)}\n />\n ))}\n
\n )\n}\n\nexport default LocationList\n","import PropTypes from 'prop-types'\nimport LocationZip from './LocationZip'\nimport LocationSelect from './LocationSelect'\nimport LocationList from './LocationList'\nimport { useAppState, useAppDispatch } from './Context'\n\nfunction Sidebar({ siteTitle, headline }) {\n const dispatch = useAppDispatch()\n const { sidebarOpen, mapVisible } = useAppState()\n\n const handleSidebarToggle = () => {\n dispatch({ type: 'setSidebarOpen', payload: !sidebarOpen })\n }\n\n const handleMapToggle = () => {\n dispatch({ type: 'setMapVisible', payload: !mapVisible })\n }\n\n return (\n \n )\n}\n\nSidebar.propTypes = {\n siteTitle: PropTypes.string,\n headline: PropTypes.string,\n}\n\nexport default Sidebar\n","// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual = function equal(a, b) {\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\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\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst DEFAULT_ID = \"__googleMapsScriptId\";\n/**\n * The status of the [[Loader]].\n */\nvar LoaderStatus;\n(function (LoaderStatus) {\n LoaderStatus[LoaderStatus[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n LoaderStatus[LoaderStatus[\"LOADING\"] = 1] = \"LOADING\";\n LoaderStatus[LoaderStatus[\"SUCCESS\"] = 2] = \"SUCCESS\";\n LoaderStatus[LoaderStatus[\"FAILURE\"] = 3] = \"FAILURE\";\n})(LoaderStatus || (LoaderStatus = {}));\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n * apiKey: \"\",\n * version: \"weekly\",\n * libraries: [\"places\"]\n * });\n *\n * loader.load().then((google) => {\n * const map = new google.maps.Map(...)\n * })\n * ```\n */\nclass Loader {\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({ apiKey, authReferrerPolicy, channel, client, id = DEFAULT_ID, language, libraries = [], mapIds, nonce, region, retries = 3, url = \"https://maps.googleapis.com/maps/api/js\", version, }) {\n this.CALLBACK = \"__googleMapsCallback\";\n this.callbacks = [];\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.apiKey = apiKey;\n this.authReferrerPolicy = authReferrerPolicy;\n this.channel = channel;\n this.client = client;\n this.id = id || DEFAULT_ID; // Do not allow empty string\n this.language = language;\n this.libraries = libraries;\n this.mapIds = mapIds;\n this.nonce = nonce;\n this.region = region;\n this.retries = retries;\n this.url = url;\n this.version = version;\n if (Loader.instance) {\n if (!fastDeepEqual(this.options, Loader.instance.options)) {\n throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(Loader.instance.options)}`);\n }\n return Loader.instance;\n }\n Loader.instance = this;\n }\n get options() {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n }\n get status() {\n if (this.errors.length) {\n return LoaderStatus.FAILURE;\n }\n if (this.done) {\n return LoaderStatus.SUCCESS;\n }\n if (this.loading) {\n return LoaderStatus.LOADING;\n }\n return LoaderStatus.INITIALIZED;\n }\n get failed() {\n return this.done && !this.loading && this.errors.length >= this.retries + 1;\n }\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n */\n createUrl() {\n let url = this.url;\n url += `?callback=${this.CALLBACK}`;\n if (this.apiKey) {\n url += `&key=${this.apiKey}`;\n }\n if (this.channel) {\n url += `&channel=${this.channel}`;\n }\n if (this.client) {\n url += `&client=${this.client}`;\n }\n if (this.libraries.length > 0) {\n url += `&libraries=${this.libraries.join(\",\")}`;\n }\n if (this.language) {\n url += `&language=${this.language}`;\n }\n if (this.region) {\n url += `®ion=${this.region}`;\n }\n if (this.version) {\n url += `&v=${this.version}`;\n }\n if (this.mapIds) {\n url += `&map_ids=${this.mapIds.join(\",\")}`;\n }\n if (this.authReferrerPolicy) {\n url += `&auth_referrer_policy=${this.authReferrerPolicy}`;\n }\n return url;\n }\n deleteScript() {\n const script = document.getElementById(this.id);\n if (script) {\n script.remove();\n }\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n */\n load() {\n return this.loadPromise();\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n */\n loadPromise() {\n return new Promise((resolve, reject) => {\n this.loadCallback((err) => {\n if (!err) {\n resolve(window.google);\n }\n else {\n reject(err.error);\n }\n });\n });\n }\n /**\n * Load the Google Maps JavaScript API script with a callback.\n */\n loadCallback(fn) {\n this.callbacks.push(fn);\n this.execute();\n }\n /**\n * Set the script on document.\n */\n setScript() {\n if (document.getElementById(this.id)) {\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\n this.callback();\n return;\n }\n const url = this.createUrl();\n const script = document.createElement(\"script\");\n script.id = this.id;\n script.type = \"text/javascript\";\n script.src = url;\n script.onerror = this.loadErrorCallback.bind(this);\n script.defer = true;\n script.async = true;\n if (this.nonce) {\n script.nonce = this.nonce;\n }\n document.head.appendChild(script);\n }\n /**\n * Reset the loader state.\n */\n reset() {\n this.deleteScript();\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.onerrorEvent = null;\n }\n resetIfRetryingFailed() {\n if (this.failed) {\n this.reset();\n }\n }\n loadErrorCallback(e) {\n this.errors.push(e);\n if (this.errors.length <= this.retries) {\n const delay = this.errors.length * Math.pow(2, this.errors.length);\n console.log(`Failed to load Google Maps script, retrying in ${delay} ms.`);\n setTimeout(() => {\n this.deleteScript();\n this.setScript();\n }, delay);\n }\n else {\n this.onerrorEvent = e;\n this.callback();\n }\n }\n setCallback() {\n window.__googleMapsCallback = this.callback.bind(this);\n }\n callback() {\n this.done = true;\n this.loading = false;\n this.callbacks.forEach((cb) => {\n cb(this.onerrorEvent);\n });\n this.callbacks = [];\n }\n execute() {\n this.resetIfRetryingFailed();\n if (this.done) {\n this.callback();\n }\n else {\n // short circuit and warn if google.maps is already loaded\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\"Google Maps already loaded outside @googlemaps/js-api-loader.\" +\n \"This may result in undesirable behavior as options and script parameters may not match.\");\n this.callback();\n return;\n }\n if (this.loading) ;\n else {\n this.loading = true;\n this.setCallback();\n this.setScript();\n }\n }\n }\n}\n\nexport { DEFAULT_ID, Loader, LoaderStatus };\n//# sourceMappingURL=index.esm.js.map\n","import e,{Component as t}from\"react\";import o from\"prop-types\";import n from\"react-dom\";import r from\"eventemitter3\";import{Loader as i}from\"@googlemaps/js-api-loader\";import s from\"@mapbox/point-geometry\";function a(){return(a=Object.assign||function(e){for(var t=1;t-1){var n='\"callback\" key in bootstrapURLKeys is not allowed,\\n use onGoogleApiLoaded property instead';throw console.error(n),new Error(n)}if(\"undefined\"==typeof window)throw new Error(\"google map cannot be loaded outside browser env\");var r=e.key,s=function(e,t){if(null==e)return{};var o,n,r={},i=Object.keys(e);for(n=0;n=0||(r[o]=e[o]);return r}(e,[\"key\"]);return w||(w=new i(a({apiKey:r||\"\"},s,{libraries:o}))),L=w.load().then(function(){return b(window.google.maps),window.google.maps}),b(L),L};function k(e,t,o){var n=o-t;return e===o?e:((e-t)%n+n)%n+t}var O=function(){function e(e,t){if(isNaN(e)||isNaN(t))throw new Error(\"Invalid LatLng object: (\"+e+\", \"+t+\")\");this.lat=+e,this.lng=+t}return e.prototype.wrap=function(){return new e(this.lat,k(this.lng,-180,180))},e}();O.convert=function(e){return e instanceof O?e:Array.isArray(e)?new O(e[0],e[1]):\"lng\"in e&&\"lat\"in e?new O(e.lat,e.lng):e};var x=function(){function e(e,t,o){this.tileSize=e||512,this._minZoom=t||0,this._maxZoom=o||52,this.latRange=[-85.05113,85.05113],this.width=0,this.height=0,this.zoom=0,this.center=new O(0,0),this.angle=0}var t,o=e.prototype;return o.zoomScale=function(e){return Math.pow(2,e)},o.scaleZoom=function(e){return Math.log(e)/Math.LN2},o.project=function(e,t){return new s(this.lngX(e.lng,t),this.latY(e.lat,t))},o.unproject=function(e,t){return new O(this.yLat(e.y,t),this.xLng(e.x,t))},o.lngX=function(e,t){return(180+e)*(t||this.worldSize)/360},o.latY=function(e,t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+e*Math.PI/360)))*(t||this.worldSize)/360},o.xLng=function(e,t){return 360*e/(t||this.worldSize)-180},o.yLat=function(e,t){return 360/Math.PI*Math.atan(Math.exp((180-360*e/(t||this.worldSize))*Math.PI/180))-90},o.locationPoint=function(e){var t=this.project(e);return this.centerPoint._sub(this.point._sub(t)._rotate(this.angle))},o.pointLocation=function(e){var t=this.centerPoint._sub(e)._rotate(-this.angle);return this.unproject(this.point.sub(t))},(t=[{key:\"minZoom\",get:function(){return this._minZoom},set:function(e){this._minZoom=e,this.zoom=Math.max(this.zoom,e)}},{key:\"maxZoom\",get:function(){return this._maxZoom},set:function(e){this._maxZoom=e,this.zoom=Math.min(this.zoom,e)}},{key:\"worldSize\",get:function(){return this.tileSize*this.scale}},{key:\"centerPoint\",get:function(){return new s(0,0)}},{key:\"size\",get:function(){return new s(this.width,this.height)}},{key:\"bearing\",get:function(){return-this.angle/Math.PI*180},set:function(e){this.angle=-k(e,-180,180)*Math.PI/180}},{key:\"zoom\",get:function(){return this._zoom},set:function(e){var t=Math.min(Math.max(e,this.minZoom),this.maxZoom);this._zoom=t,this.scale=this.zoomScale(t),this.tileZoom=Math.floor(t),this.zoomFraction=t-this.tileZoom}},{key:\"x\",get:function(){return this.lngX(this.center.lng)}},{key:\"y\",get:function(){return this.latY(this.center.lat)}},{key:\"point\",get:function(){return new s(this.x,this.y)}}])&&function(e,t){for(var o=0;o0&&this.getHeight()-o-r>0){var a=this.transform_.pointLocation(s.convert({x:i-this.getWidth()/2,y:o-this.getHeight()/2})),p=this.transform_.pointLocation(s.convert({x:this.getWidth()/2-n,y:this.getHeight()/2-r})),l=[a.lat,a.lng,p.lat,p.lng,p.lat,a.lng,a.lat,p.lng];return t&&(l=l.map(function(e){return Math.round(e*t)/t})),l}return[0,0,0,0]},e}();function S(e){if(window.requestAnimationFrame)return window.requestAnimationFrame(e);var t=window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame;return t?t(e):window.setTimeout(e,1e3/60)}var E=Math.log2?Math.log2:function(e){return Math.log(e)/Math.LN2};function P(e,t){return Object.keys(e).reduce(function(o,n){return t(e[n])&&(o[n]=e[n]),o},{})}var A=function(e){if(null!==e&&\"object\"==typeof e){if(0===Object.keys(e).length)return!0}else if(null==e||\"\"===e)return!0;return!1},I=Object.prototype.toString;function N(e){return\"number\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&\"[object Number]\"===I.call(e)}var Z=null;function j(){if(Z)return Z;if(\"undefined\"!=typeof navigator){var e=navigator.userAgent.indexOf(\"MSIE\")>-1,t=navigator.userAgent.indexOf(\"Firefox\")>-1,o=navigator.userAgent.toLowerCase().indexOf(\"op\")>-1,n=navigator.userAgent.indexOf(\"Chrome\")>-1,r=navigator.userAgent.indexOf(\"Safari\")>-1;return n&&r&&(r=!1),n&&o&&(n=!1),Z={isExplorer:e,isFirefox:t,isOpera:o,isChrome:n,isSafari:r}}return Z={isChrome:!0,isExplorer:!1,isFirefox:!1,isOpera:!1,isSafari:!1}}var U=function(e){return Function.prototype.toString.call(e)};function H(e){if(!e||\"object\"!=typeof e)return!1;var t=\"function\"==typeof e.constructor?Object.getPrototypeOf(e):Object.prototype;if(null===t)return!0;var o=t.constructor;return\"function\"==typeof o&&o instanceof o&&U(o)===U(Object)}function K(e,t,o,n){e.addEventListener(t,o,function(){var e=!1;try{var t=Object.defineProperty({},\"passive\",{get:function(){e=!0}});window.addEventListener(\"test\",t,t),window.removeEventListener(\"test\",t,t)}catch(t){e=!1}return e}()?{capture:n,passive:!0}:n)}var R,G=!(\"undefined\"==typeof window||!window.document||!window.document.createElement);R=G?window:\"undefined\"!=typeof self?self:void 0;var B,W=\"undefined\"!=typeof document&&document.attachEvent,V=!1;if(G&&!W){var F=function(){var e=R.requestAnimationFrame||R.mozRequestAnimationFrame||R.webkitRequestAnimationFrame||function(e){return R.setTimeout(e,20)};return function(t){return e(t)}}(),$=(B=R.cancelAnimationFrame||R.mozCancelAnimationFrame||R.webkitCancelAnimationFrame||R.clearTimeout,function(e){return B(e)}),q=function(e){var t=e.__resizeTriggers__,o=t.firstElementChild,n=t.lastElementChild,r=o.firstElementChild;n.scrollLeft=n.scrollWidth,n.scrollTop=n.scrollHeight,r.style.width=o.offsetWidth+1+\"px\",r.style.height=o.offsetHeight+1+\"px\",o.scrollLeft=o.scrollWidth,o.scrollTop=o.scrollHeight},Y=function(e){var t=this;q(this),this.__resizeRAF__&&$(this.__resizeRAF__),this.__resizeRAF__=F(function(){(function(e){return e.offsetWidth!=e.__resizeLast__.width||e.offsetHeight!=e.__resizeLast__.height})(t)&&(t.__resizeLast__.width=t.offsetWidth,t.__resizeLast__.height=t.offsetHeight,t.__resizeListeners__.forEach(function(o){o.call(t,e)}))})},X=!1,J=\"\",Q=\"animationstart\",ee=\"Webkit Moz O ms\".split(\" \"),te=\"webkitAnimationStart animationstart oAnimationStart MSAnimationStart\".split(\" \");if(G){var oe=document.createElement(\"fakeelement\");if(void 0!==oe.style.animationName&&(X=!0),!1===X)for(var ne=0;ne0||r.geoService_.getHeight()>0){var e=Math.ceil(r.geoService_.getWidth()/256)+2,t=Math.ceil(r.geoService_.getHeight()/256)+2,o=Math.max(e,t);return Math.ceil(E(o))}return 3},r._computeMinZoom=function(e){return A(e)?r._getMinZoom():e},r._mapDomResizeCallback=function(){if(r.resetSizeOnIdle_=!0,r.maps_){var e=r.props.center||r.props.defaultCenter,t=r.map_.getCenter();r.maps_.event.trigger(r.map_,\"resize\"),r.map_.setCenter(r.props.resetBoundsOnResize?e:t)}},r._setLayers=function(e){e.forEach(function(e){r.layers_[e]=new r.maps_[e],r.layers_[e].setMap(r.map_)})},r._renderPortal=function(){return e.createElement(M,{experimental:r.props.experimental,onChildClick:r._onChildClick,onChildMouseDown:r._onChildMouseDown,onChildMouseEnter:r._onChildMouseEnter,onChildMouseLeave:r._onChildMouseLeave,geoService:r.geoService_,insideMapPanes:!0,distanceToMouse:r.props.distanceToMouse,getHoverDistance:r._getHoverDistance,dispatcher:r.markersDispatcher_})},r._initMap=function(){if(!r.initialized_){r.initialized_=!0;var e=le(r.props.center||r.props.defaultCenter);r.geoService_.setView(e,r.props.zoom||r.props.defaultZoom,0),r._onBoundsChanged();var t=a({},r.props.apiKey&&{key:r.props.apiKey},r.props.bootstrapURLKeys);r.props.googleMapLoader(t,r.props.heatmapLibrary).then(function(e){if(r.mounted_){var t,o,i=r.geoService_.getCenter(),s={zoom:r.props.zoom||r.props.defaultZoom,center:new e.LatLng(i.lat,i.lng)};r.props.heatmap.positions&&(Object.assign(l(r),{heatmap:(t=e,o=r.props.heatmap,new t.visualization.HeatmapLayer({data:o.positions.reduce(function(e,o){var n=o.weight,r=void 0===n?1:n;return e.push({location:new t.LatLng(o.lat,o.lng),weight:r}),e},[])}))}),function(e,t){var o=t.options,n=void 0===o?{}:o;Object.keys(n).map(function(t){return e.set(t,n[t])})}(r.heatmap,r.props.heatmap));var p=P(e,H),u=\"function\"==typeof r.props.options?r.props.options(p):r.props.options,h=!A(r.props.draggable)&&{draggable:r.props.draggable},c=r._computeMinZoom(u.minZoom);r.minZoom_=c;var d=a({},{overviewMapControl:!1,streetViewControl:!1,rotateControl:!0,mapTypeControl:!1,styles:[{featureType:\"poi\",elementType:\"labels\",stylers:[{visibility:\"off\"}]}],minZoom:3},{minZoom:c},u,s);r.defaultDraggableOption_=A(d.draggable)?r.defaultDraggableOption_:d.draggable;var m=a({},d,h);m.minZoom=ue(m.minZoom,c);var g=new e.Map(n.findDOMNode(r.googleMapDom_),m);r.map_=g,r.maps_=e,r._setLayers(r.props.layerTypes);var _=e.version.match(/^3\\.(\\d+)\\./),f=_&&Number(_[1]),v=l(r),M=Object.assign(new e.OverlayView,{onAdd:function(){var t=\"undefined\"!=typeof screen?screen.width+\"px\":\"2000px\",o=\"undefined\"!=typeof screen?screen.height+\"px\":\"2000px\",n=document.createElement(\"div\");if(n.style.backgroundColor=\"transparent\",n.style.position=\"absolute\",n.style.left=\"0px\",n.style.top=\"0px\",n.style.width=t,n.style.height=o,v.props.overlayViewDivStyle){var r=v.props.overlayViewDivStyle;\"object\"==typeof r&&Object.keys(r).forEach(function(e){n.style[e]=r[e]})}this.getPanes().overlayMouseTarget.appendChild(n),v.geoService_.setMapCanvasProjection(e,M.getProjection()),ae?v.setState({overlay:n}):pe(v,v._renderPortal(),n,function(){return v.setState({overlay:n})})},onRemove:function(){var e=v.state.overlay;e&&!ae&&n.unmountComponentAtNode(e),v.setState({overlay:null})},draw:function(){if(v.updateCounter_++,v._onBoundsChanged(g,e,!v.props.debounced),v.googleApiLoadedCalled_||(v._onGoogleApiLoaded({map:g,maps:e,ref:v.googleMapDom_}),v.googleApiLoadedCalled_=!0),v.mouse_){var t=v.geoService_.fromContainerPixelToLatLng(v.mouse_);v.mouse_.lat=t.lat,v.mouse_.lng=t.lng}v._onChildMouseMove(),v.markersDispatcher_&&(v.markersDispatcher_.emit(\"kON_CHANGE\"),v.fireMouseEventOnIdle_&&v.markersDispatcher_.emit(\"kON_MOUSE_POSITION_CHANGE\"))}});r.overlay_=M,M.setMap(g),r.props.heatmap.positions&&r.heatmap.setMap(g),r.props.onTilesLoaded&&e.event.addListener(g,\"tilesloaded\",function(){v._onTilesLoaded()}),e.event.addListener(g,\"zoom_changed\",function(){v.geoService_.getZoom()!==g.getZoom()&&(v.zoomAnimationInProgress_||(v.zoomAnimationInProgress_=!0,v._onZoomAnimationStart(g.zoom)),f<32)&&((new Date).getTime()-r.zoomControlClickTime_<300?S(function(){return S(function(){v.updateCounter_++,v._onBoundsChanged(g,e)})}):(v.updateCounter_++,v._onBoundsChanged(g,e)))}),e.event.addListener(g,\"idle\",function(){if(r.resetSizeOnIdle_){r._setViewSize();var t=r._computeMinZoom(u.minZoom);t!==r.minZoom_&&(r.minZoom_=t,g.setOptions({minZoom:t})),r.resetSizeOnIdle_=!1}v.zoomAnimationInProgress_&&(v.zoomAnimationInProgress_=!1,v._onZoomAnimationEnd(g.zoom)),v.updateCounter_++,v._onBoundsChanged(g,e),v.dragTime_=0,v.markersDispatcher_&&v.markersDispatcher_.emit(\"kON_CHANGE\")}),e.event.addListener(g,\"mouseover\",function(){v.mouseInMap_=!0}),e.event.addListener(g,\"click\",function(){v.mouseInMap_=!0}),e.event.addListener(g,\"mouseout\",function(){v.mouseInMap_=!1,v.mouse_=null,v.markersDispatcher_.emit(\"kON_MOUSE_POSITION_CHANGE\")}),e.event.addListener(g,\"drag\",function(){v.dragTime_=(new Date).getTime(),v._onDrag(g)}),e.event.addListener(g,\"dragend\",function(){var t=e.event.addListener(g,\"idle\",function(){e.event.removeListener(t),v._onDragEnd(g)})}),e.event.addListener(g,\"maptypeid_changed\",function(){v._onMapTypeIdChange(g.getMapTypeId())})}}).catch(function(e){throw r._onGoogleApiLoaded({map:null,maps:null,ref:r.googleMapDom_}),console.error(e),e})}},r._onGoogleApiLoaded=function(){var e;r.props.onGoogleApiLoaded&&(\"production\"!==process.env.NODE_ENV&&!0!==r.props.yesIWantToUseGoogleMapApiInternals&&console.warn(\"GoogleMap: Usage of internal api objects is dangerous and can cause a lot of issues.\\nTo hide this warning add yesIWantToUseGoogleMapApiInternals={true} to 50&&(r.boundingRect_=e.currentTarget.getBoundingClientRect()),r.mouseMoveTime_=t;var o=e.clientX-r.boundingRect_.left,n=e.clientY-r.boundingRect_.top;r.mouse_||(r.mouse_={x:0,y:0,lat:0,lng:0}),r.mouse_.x=o,r.mouse_.y=n;var i=r.geoService_.fromContainerPixelToLatLng(r.mouse_);r.mouse_.lat=i.lat,r.mouse_.lng=i.lng,r._onChildMouseMove(),t-r.dragTime_<100?r.fireMouseEventOnIdle_=!0:(r.markersDispatcher_.emit(\"kON_MOUSE_POSITION_CHANGE\"),r.fireMouseEventOnIdle_=!1)}},r._onClick=function(){var e;return r.props.onClick&&!r.childMouseDownArgs_&&(new Date).getTime()-r.childMouseUpTime_>300&&0===r.dragTime_&&(e=r.props).onClick.apply(e,arguments)},r._onMapClick=function(e){r.markersDispatcher_&&(r._onMapMouseMove(e),(new Date).getTime()-r.dragTime_>100&&(r.mouse_&&r._onClick(a({},r.mouse_,{event:e})),r.markersDispatcher_.emit(\"kON_CLICK\",e)))},r._onMapMouseDownNative=function(e){r.mouseInMap_&&r._onMapMouseDown(e)},r._onMapMouseDown=function(e){r.markersDispatcher_&&(new Date).getTime()-r.dragTime_>100&&(r._onMapMouseMove(e),r.markersDispatcher_.emit(\"kON_MDOWN\",e))},r._onMapMouseDownCapture=function(){j().isChrome&&(r.zoomControlClickTime_=(new Date).getTime())},r._onKeyDownCapture=function(){j().isChrome&&(r.zoomControlClickTime_=(new Date).getTime())},r._isCenterDefined=function(e){return e&&(H(e)&&N(e.lat)&&N(e.lng)||2===e.length&&N(e[0])&&N(e[1]))},r._onBoundsChanged=function(e,t,o){if(e){var n=e.getCenter();r.geoService_.setView([n.lat(),n.lng()],e.getZoom(),0)}if((r.props.onChange||r.props.onBoundsChange)&&r.geoService_.canProject()){var i=r.geoService_.getZoom(),s=r.geoService_.getBounds(),p=r.geoService_.getCenter();if(!function(e,t,o){if(e&&t){for(var n=0;n!==e.length;++n)if(Math.abs(e[n]-t[n])>1e-5)return!1;return!0}return!1}(s,r.prevBounds_)&&!1!==o){var l=r.geoService_.getBounds(r.props.margin);r.props.onBoundsChange&&r.props.onBoundsChange(r.centerIsObject_?a({},p):[p.lat,p.lng],i,s,l),r.props.onChange&&r.props.onChange({center:a({},p),zoom:i,bounds:{nw:{lat:s[0],lng:s[1]},se:{lat:s[2],lng:s[3]},sw:{lat:s[4],lng:s[5]},ne:{lat:s[6],lng:s[7]}},marginBounds:{nw:{lat:l[0],lng:l[1]},se:{lat:l[2],lng:l[3]},sw:{lat:l[4],lng:l[5]},ne:{lat:l[6],lng:l[7]}},size:r.geoService_.hasSize()?{width:r.geoService_.getWidth(),height:r.geoService_.getHeight()}:{width:0,height:0}}),r.prevBounds_=s}}},r._registerChild=function(e){r.googleMapDom_=e},r.mounted_=!1,r.initialized_=!1,r.googleApiLoadedCalled_=!1,r.map_=null,r.maps_=null,r.prevBounds_=null,r.heatmap=null,r.layers_={},r.mouse_=null,r.mouseMoveTime_=0,r.boundingRect_=null,r.mouseInMap_=!0,r.dragTime_=0,r.fireMouseEventOnIdle_=!1,r.updateCounter_=0,r.markersDispatcher_=new c(l(r)),r.geoService_=new T(256),r.centerIsObject_=H(r.props.center),r.minZoom_=3,r.defaultDraggableOption_=!0,r.zoomControlClickTime_=0,r.childMouseDownArgs_=null,r.childMouseUpTime_=0,r.googleMapDom_=null,\"production\"!==process.env.NODE_ENV&&(r.props.apiKey&&console.warn(\"GoogleMap: apiKey is deprecated, use bootstrapURLKeys={{key: YOUR_API_KEY}} instead.\"),r.props.onBoundsChange&&console.warn(\"GoogleMap: onBoundsChange is deprecated, use onChange({center, zoom, bounds, ...other}) instead.\"),A(r.props.center)&&A(r.props.defaultCenter)&&console.warn(\"GoogleMap: center or defaultCenter property must be defined\"),A(r.props.zoom)&&A(r.props.defaultZoom)&&console.warn(\"GoogleMap: zoom or defaultZoom property must be defined\")),r._isCenterDefined(r.props.center||r.props.defaultCenter)){var i=le(r.props.center||r.props.defaultCenter);r.geoService_.setView(i,r.props.zoom||r.props.defaultZoom,0)}return r.zoomAnimationInProgress_=!1,r.state={overlay:null},r}p(o,t);var r=o.prototype;return r.componentDidMount=function(){var e=this;this.mounted_=!0,K(window,\"resize\",this._onWindowResize,!1),K(window,\"keydown\",this._onKeyDownCapture,!0);var t=n.findDOMNode(this.googleMapDom_);t&&K(t,\"mousedown\",this._onMapMouseDownNative,!0),K(window,\"mouseup\",this._onChildMouseUp,!1);var o=a({},this.props.apiKey&&{key:this.props.apiKey},this.props.bootstrapURLKeys);this.props.googleMapLoader(o,this.props.heatmapLibrary),setTimeout(function(){e._setViewSize(),e._isCenterDefined(e.props.center||e.props.defaultCenter)&&e._initMap()},0,this),this.props.resetBoundsOnResize&&function(e,t){if(void 0===e.parentNode){var o=document.createElement(\"div\");e.parentNode=o}e=e.parentNode,W?e.attachEvent(\"onresize\",t):(e.__resizeTriggers__||(\"static\"==getComputedStyle(e).position&&(e.style.position=\"relative\"),function(){if(!V){var e=(ie||\"\")+\".resize-triggers { \"+(se||\"\")+'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',t=document.head||document.getElementsByTagName(\"head\")[0],o=document.createElement(\"style\");o.type=\"text/css\",o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e)),t.appendChild(o),V=!0}}(),e.__resizeLast__={},e.__resizeListeners__=[],(e.__resizeTriggers__=document.createElement(\"div\")).className=\"resize-triggers\",e.__resizeTriggers__.innerHTML='
',e.appendChild(e.__resizeTriggers__),q(e),K(e,\"scroll\",Y,!0),Q&&e.__resizeTriggers__.addEventListener(Q,function(t){t.animationName==re&&q(e)})),e.__resizeListeners__.push(t))}(t,this._mapDomResizeCallback)},r.shouldComponentUpdate=function(e,t){return!_(d(this.props,[\"draggable\"]),d(e,[\"draggable\"]))||!_(this.state,t)},r.componentDidUpdate=function(e){var t=this;if(\"production\"!==process.env.NODE_ENV&&(_(e.defaultCenter,this.props.defaultCenter)||console.warn(\"GoogleMap: defaultCenter prop changed. You can't change default props.\"),_(e.defaultZoom,this.props.defaultZoom)||console.warn(\"GoogleMap: defaultZoom prop changed. You can't change default props.\")),!this._isCenterDefined(e.center)&&this._isCenterDefined(this.props.center)&&setTimeout(function(){return t._initMap()},0),this.map_){var o=this.geoService_.getCenter();if(this._isCenterDefined(this.props.center)){var n=le(this.props.center),r=this._isCenterDefined(e.center)?le(e.center):null;(!r||Math.abs(n.lat-r.lat)+Math.abs(n.lng-r.lng)>1e-5)&&Math.abs(n.lat-o.lat)+Math.abs(n.lng-o.lng)>1e-5&&this.map_.panTo({lat:n.lat,lng:n.lng})}if(A(this.props.zoom)||Math.abs(this.props.zoom-e.zoom)>0&&this.map_.setZoom(this.props.zoom),!A(e.draggable)&&A(this.props.draggable)?this.map_.setOptions({draggable:this.defaultDraggableOption_}):_(e.draggable,this.props.draggable)||this.map_.setOptions({draggable:this.props.draggable}),!A(this.props.options)&&!_(e.options,this.props.options)){var i=P(this.maps_,H),s=\"function\"==typeof this.props.options?this.props.options(i):this.props.options;if(\"minZoom\"in(s=d(s,[\"zoom\",\"center\",\"draggable\"]))){var a=this._computeMinZoom(s.minZoom);s.minZoom=ue(s.minZoom,a)}this.map_.setOptions(s)}_(this.props.layerTypes,e.layerTypes)||(Object.keys(this.layers_).forEach(function(e){t.layers_[e].setMap(null),delete t.layers_[e]}),this._setLayers(this.props.layerTypes)),this.heatmap&&!_(this.props.heatmap.positions,e.heatmap.positions)&&this.heatmap.setData(this.props.heatmap.positions.map(function(e){return{location:new t.maps_.LatLng(e.lat,e.lng),weight:e.weight}})),this.heatmap&&!_(this.props.heatmap.options,e.heatmap.options)&&Object.keys(this.props.heatmap.options).forEach(function(e){t.heatmap.set(e,t.props.heatmap.options[e])})}this.markersDispatcher_.emit(\"kON_CHANGE\"),_(this.props.hoverDistance,e.hoverDistance)||this.markersDispatcher_.emit(\"kON_MOUSE_POSITION_CHANGE\")},r.componentWillUnmount=function(){this.mounted_=!1;var e,t,o=n.findDOMNode(this.googleMapDom_);o&&o.removeEventListener(\"mousedown\",this._onMapMouseDownNative,!0),window.removeEventListener(\"resize\",this._onWindowResize),window.removeEventListener(\"keydown\",this._onKeyDownCapture),window.removeEventListener(\"mouseup\",this._onChildMouseUp,!1),this.props.resetBoundsOnResize&&(t=this._mapDomResizeCallback,e=(e=o).parentNode,W?e.detachEvent(\"onresize\",t):(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||(e.removeEventListener(\"scroll\",Y),e.__resizeTriggers__=!e.removeChild(e.__resizeTriggers__)))),this.overlay_&&this.overlay_.setMap(null),this.maps_&&this.map_&&this.props.shouldUnregisterMapOnUnmount&&(this.map_.setOptions({scrollwheel:!1}),this.maps_.event.clearInstanceListeners(this.map_)),this.props.shouldUnregisterMapOnUnmount&&(this.map_=null,this.maps_=null),this.markersDispatcher_.dispose(),this.resetSizeOnIdle_=!1,this.props.shouldUnregisterMapOnUnmount&&(delete this.map_,delete this.markersDispatcher_)},r.render=function(){var t=this.state.overlay,o=t?null:e.createElement(C,{experimental:this.props.experimental,onChildClick:this._onChildClick,onChildMouseDown:this._onChildMouseDown,onChildMouseEnter:this._onChildMouseEnter,onChildMouseLeave:this._onChildMouseLeave,geoService:this.geoService_,insideMapPanes:!1,distanceToMouse:this.props.distanceToMouse,getHoverDistance:this._getHoverDistance,dispatcher:this.markersDispatcher_});return e.createElement(\"div\",{style:this.props.style,onMouseMove:this._onMapMouseMove,onMouseDownCapture:this._onMapMouseDownCapture,onClick:this._onMapClick},e.createElement(h,{registerChild:this._registerChild}),ae&&t&&pe(this._renderPortal(),t),o)},o}(t);function ce(e){var t=e.lng,o=Math.sin(e.lat*Math.PI/180),n=t/360+.5,r=.5-.25*Math.log((1+o)/(1-o))/Math.PI;return{x:n,y:r=r<0?0:r>1?1:r}}function de(e){var t=e.x,o=Math.PI-2*Math.PI*e.y;return{lat:180/Math.PI*Math.atan(.5*(Math.exp(o)-Math.exp(-o))),lng:360*t-180}}function me(e,t,o,n){var r=ce(e),i=ce(t),s=r.x0?.5*(r.x+i.x-1):.5*(1+r.x+i.x),y:.5*(r.y+i.y)},c=Math.pow(2,u),d=o/c/256/2,m=n/c/256/2,g=de({x:h.x-d,y:h.y-m}),_=de({x:h.x+d,y:h.y+m});return{center:de(h),zoom:u,newBounds:{nw:g,se:_}}}function ge(e){var t=e.ne,o=e.sw;return{nw:{lat:t.lat,lng:o.lng},se:{lat:o.lat,lng:t.lng}}}function _e(e){var t=e.nw,o=e.se;return{ne:{lat:t.lat,lng:o.lng},sw:{lat:o.lat,lng:t.lng}}}function fe(e,t){var o,n=e.nw,r=e.se,i=e.ne,s=e.sw,p=t.width,l=t.height;if(n&&r)o=me(n,r,p,l);else{var u=ge({ne:i,sw:s});o=me(u.nw,u.se,p,l)}return a({},o,{newBounds:a({},o.newBounds,_e(o.newBounds))})}function ve(e,t,o){var n=function(e,t){var o=function(e,t){var o,n=t.lat,r=t.lng,i=(o=n*Math.PI/180,{metersPerLatDegree:111132.92-559.82*Math.cos(2*o)+1.175*Math.cos(4*o)-.0023*Math.cos(6*o),metersPerLngDegree:111412.84*Math.cos(o)-93.5*Math.cos(3*o)+.118*Math.cos(5*o)}),s=.5*e/i.metersPerLatDegree,a=.5*e/i.metersPerLngDegree;return{nw:{lat:n-s,lng:r-a},se:{lat:n+s,lng:r+a}}}(e,{lat:t.lat,lng:t.lng}),n=o.se,r=ce(o.nw),i=ce(n);return{w:Math.abs(i.x-r.x),h:Math.abs(i.y-r.y)}}(e,{lat:t.lat,lng:t.lng}),r=n.w,i=n.h,s=Math.pow(2,o);return{w:r*s*256,h:i*s*256}}function Me(e,t){var o=e.x,n=Math.PI-2*Math.PI*e.y/Math.pow(2,t);return{lat:180/Math.PI*Math.atan(.5*(Math.exp(n)-Math.exp(-n))),lng:o/Math.pow(2,t)*360-180}}function ye(e,t){var o=ce({lat:e.lat,lng:e.lng}),n=Math.pow(2,t);return{x:Math.floor(o.x*n),y:Math.floor(o.y*n)}}function Ce(e,t){for(var o=e.from,n=e.to,r=Math.pow(2,t),i=[],s=o.x;s!==(n.x+1)%r;s=(s+1)%r)for(var a=o.y;a!==(n.y+1)%r;a=(a+1)%r)i.push([t,s,a]);return i}he.propTypes={apiKey:o.string,bootstrapURLKeys:o.any,defaultCenter:o.oneOfType([o.array,o.shape({lat:o.number,lng:o.number})]),center:o.oneOfType([o.array,o.shape({lat:o.number,lng:o.number})]),defaultZoom:o.number,zoom:o.number,onBoundsChange:o.func,onChange:o.func,onClick:o.func,onChildClick:o.func,onChildMouseDown:o.func,onChildMouseUp:o.func,onChildMouseMove:o.func,onChildMouseEnter:o.func,onChildMouseLeave:o.func,onZoomAnimationStart:o.func,onZoomAnimationEnd:o.func,onDrag:o.func,onDragEnd:o.func,onMapTypeIdChange:o.func,onTilesLoaded:o.func,options:o.any,distanceToMouse:o.func,hoverDistance:o.number,debounced:o.bool,margin:o.array,googleMapLoader:o.any,onGoogleApiLoaded:o.func,yesIWantToUseGoogleMapApiInternals:o.bool,draggable:o.bool,style:o.any,resetBoundsOnResize:o.bool,layerTypes:o.arrayOf(o.string),shouldUnregisterMapOnUnmount:o.bool},he.defaultProps={distanceToMouse:function(e,t){return Math.sqrt((e.x-t.x)*(e.x-t.x)+(e.y-t.y)*(e.y-t.y))},hoverDistance:30,debounced:!0,options:function(){return{overviewMapControl:!1,streetViewControl:!1,rotateControl:!0,mapTypeControl:!1,styles:[{featureType:\"poi\",elementType:\"labels\",stylers:[{visibility:\"off\"}]}],minZoom:3}},googleMapLoader:z,yesIWantToUseGoogleMapApiInternals:!1,style:{width:\"100%\",height:\"100%\",margin:0,padding:0,position:\"relative\"},layerTypes:[],heatmap:{},heatmapLibrary:!1,shouldUnregisterMapOnUnmount:!0},he.googleMapLoader=z;export default he;export{ge as convertNeSwToNwSe,_e as convertNwSeToNeSw,fe as fitBounds,Ce as getTilesIds,ye as latLng2Tile,ve as meters2ScreenPixels,Me as tile2LatLng};\n//# sourceMappingURL=index.modern.js.map\n","import PropTypes from 'prop-types'\n\nimport LocationCard from './LocationCard'\n\nfunction MapInfoWindow({ location }) {\n return (\n
\n \n
\n )\n}\nMapInfoWindow.propTypes = {\n location: PropTypes.oneOfType([PropTypes.object]).isRequired,\n}\n\nexport default MapInfoWindow\n","import PropTypes from 'prop-types'\nimport { useState, useEffect } from 'react'\nimport { useAppState, useAppDispatch } from './Context'\nimport MapInfoWindow from './MapInfoWindow'\nimport { IconMapMarker } from './icons'\n\nfunction MapMarker({ location }) {\n const [isSelected, setIsSelected] = useState(false)\n const { selectedLocation, map, maps } = useAppState()\n const dispatch = useAppDispatch()\n\n useEffect(() => {\n if (selectedLocation === location) {\n setIsSelected(true)\n map.panTo(new maps.LatLng(location.lat, location.lng))\n } else {\n setIsSelected(false)\n }\n }, [selectedLocation])\n\n const handleClick = (location) => {\n if (selectedLocation === location) {\n dispatch({ type: 'setSelectedLocation', payload: null })\n } else {\n dispatch({ type: 'setSelectedLocation', payload: location })\n }\n }\n\n return (\n
\n {isSelected && }\n
handleClick(location)}>\n \n
\n
\n )\n}\n\nMapMarker.propTypes = {\n location: PropTypes.oneOfType([PropTypes.object]).isRequired,\n}\n\nexport default MapMarker\n","import { IconUserMarker } from './icons'\n\nfunction UserMarker() {\n return \n}\n\nexport default UserMarker\n","import PropTypes from 'prop-types'\nimport GoogleMapReact from 'google-map-react'\nimport debounce from 'lodash/debounce'\nimport { useAppState, useAppDispatch } from './Context'\nimport MapMarker from './MapMarker'\nimport UserMarker from './UserMarker'\n\nconst defaultMapCenter = {\n lat: 43.074585,\n lng: -75.284402,\n}\n\nconst mapOptions = {\n maxZoom: 18,\n fullscreenControl: false,\n zoomControlOptions: {\n position: 8, // RIGHT_CENTER\n },\n}\n\nfunction Map({ apiKey }) {\n const dispatch = useAppDispatch()\n const { locations, mapVisible, userCoords } = useAppState()\n\n const apiIsLoaded = (map, maps) => {\n map.addListener(\n 'bounds_changed',\n debounce(() => dispatch({ type: 'setMapBounds', payload: map.getBounds() }), 250)\n )\n\n maps.event.addDomListener(document.querySelector('.locations-map-container'), 'click', (e) => {\n if (!e.target.closest('.map-location')) {\n dispatch({ type: 'setSelectedLocation', payload: null })\n }\n })\n\n dispatch({ type: 'setMap', payload: map })\n dispatch({ type: 'setMaps', payload: maps })\n }\n\n return (\n
\n
\n apiIsLoaded(map, maps)}\n >\n {locations.map((location) => (\n \n ))}\n\n {userCoords && }\n \n
\n
\n )\n}\n\nMap.propTypes = {\n apiKey: PropTypes.string,\n}\n\nexport default Map\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 _extends() {\n _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\n return _extends.apply(this, arguments);\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 _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","function t(t){return\"object\"==typeof t&&null!=t&&1===t.nodeType}function e(t,e){return(!e||\"hidden\"!==t)&&\"visible\"!==t&&\"clip\"!==t}function n(t,n){if(t.clientHeighte||o>t&&l=e&&d>=n?o-t-r:l>e&&dn?l-e+i:0}export default function(e,i){var o=window,l=i.scrollMode,d=i.block,u=i.inline,h=i.boundary,a=i.skipOverflowHiddenElements,c=\"function\"==typeof h?h:function(t){return t!==h};if(!t(e))throw new TypeError(\"Invalid target\");for(var f=document.scrollingElement||document.documentElement,s=[],p=e;t(p)&&c(p);){if((p=p.parentElement)===f){s.push(p);break}null!=p&&p===document.body&&n(p)&&!n(document.documentElement)||null!=p&&n(p,a)&&s.push(p)}for(var m=o.visualViewport?o.visualViewport.width:innerWidth,g=o.visualViewport?o.visualViewport.height:innerHeight,w=window.scrollX||pageXOffset,v=window.scrollY||pageYOffset,W=e.getBoundingClientRect(),b=W.height,H=W.width,y=W.top,E=W.right,M=W.bottom,V=W.left,x=\"start\"===d||\"nearest\"===d?y:\"end\"===d?M:y+b/2,I=\"center\"===u?V+H/2:\"end\"===u?E:V,C=[],T=0;T=0&&V>=0&&M<=g&&E<=m&&y>=R&&M<=Y&&V>=L&&E<=X)return C;var S=getComputedStyle(k),j=parseInt(S.borderLeftWidth,10),q=parseInt(S.borderTopWidth,10),z=parseInt(S.borderRightWidth,10),A=parseInt(S.borderBottomWidth,10),F=0,G=0,J=\"offsetWidth\"in k?k.offsetWidth-k.clientWidth-j-z:0,K=\"offsetHeight\"in k?k.offsetHeight-k.clientHeight-q-A:0;if(f===k)F=\"start\"===d?x:\"end\"===d?x-g:\"nearest\"===d?r(v,v+g,g,q,A,v+x,v+x+b,b):x-g/2,G=\"start\"===u?I:\"center\"===u?I-m/2:\"end\"===u?I-m:r(w,w+m,m,j,z,w+I,w+I+H,H),F=Math.max(0,F+v),G=Math.max(0,G+w);else{F=\"start\"===d?x-R-q:\"end\"===d?x-Y+A+K:\"nearest\"===d?r(R,Y,D,q,A+K,x,x+b,b):x-(R+D/2)+K/2,G=\"start\"===u?I-L-j:\"center\"===u?I-(L+O/2)+J/2:\"end\"===u?I-X+z+J:r(L,X,O,j,z+J,I,I+H,H);var N=k.scrollLeft,P=k.scrollTop;x+=P-(F=Math.max(0,Math.min(P+F,k.scrollHeight-D+K))),I+=N-(G=Math.max(0,Math.min(N+G,k.scrollWidth-O+J)))}C.push({el:k,top:F,left:G})}return C}\n//# sourceMappingURL=index.module.js.map\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 { cloneElement, Component, useRef, useEffect, useCallback, useLayoutEffect, useReducer, useMemo } from 'react';\nimport { isForwardRef } from 'react-is';\nimport computeScrollIntoView from 'compute-scroll-into-view';\nimport { __assign } from 'tslib';\n\nvar idCounter = 0;\n/**\n * Accepts a parameter and returns it if it's a function\n * or a noop function if it's not. This allows us to\n * accept a callback, but not worry about it if it's not\n * passed.\n * @param {Function} cb the callback\n * @return {Function} a function\n */\n\nfunction cbToCb(cb) {\n return typeof cb === 'function' ? cb : noop;\n}\n\nfunction noop() {}\n/**\n * Scroll node into view if necessary\n * @param {HTMLElement} node the element that should scroll into view\n * @param {HTMLElement} menuNode the menu element of the component\n */\n\n\nfunction scrollIntoView(node, menuNode) {\n if (!node) {\n return;\n }\n\n var actions = computeScrollIntoView(node, {\n boundary: menuNode,\n block: 'nearest',\n scrollMode: 'if-needed'\n });\n actions.forEach(function (_ref) {\n var el = _ref.el,\n top = _ref.top,\n left = _ref.left;\n el.scrollTop = top;\n el.scrollLeft = left;\n });\n}\n/**\n * @param {HTMLElement} parent the parent node\n * @param {HTMLElement} child the child node\n * @param {Window} environment The window context where downshift renders.\n * @return {Boolean} whether the parent is the child or the child is in the parent\n */\n\n\nfunction isOrContainsNode(parent, child, environment) {\n var result = parent === child || child instanceof environment.Node && parent.contains && parent.contains(child);\n return result;\n}\n/**\n * Simple debounce implementation. Will call the given\n * function once after the time given has passed since\n * it was last called.\n * @param {Function} fn the function to call after the time\n * @param {Number} time the time to wait\n * @return {Function} the debounced function\n */\n\n\nfunction debounce(fn, time) {\n var timeoutId;\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n\n function wrapper() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n cancel();\n timeoutId = setTimeout(function () {\n timeoutId = null;\n fn.apply(void 0, args);\n }, time);\n }\n\n wrapper.cancel = cancel;\n return wrapper;\n}\n/**\n * This is intended to be used to compose event handlers.\n * They are executed in order until one of them sets\n * `event.preventDownshiftDefault = true`.\n * @param {...Function} fns the event handler functions\n * @return {Function} the event handler to add to an element\n */\n\n\nfunction callAllEventHandlers() {\n for (var _len2 = arguments.length, fns = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n return function (event) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return fns.some(function (fn) {\n if (fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return event.preventDownshiftDefault || event.hasOwnProperty('nativeEvent') && event.nativeEvent.preventDownshiftDefault;\n });\n };\n}\n\nfunction handleRefs() {\n for (var _len4 = arguments.length, refs = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n refs[_key4] = arguments[_key4];\n }\n\n return function (node) {\n refs.forEach(function (ref) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n });\n };\n}\n/**\n * This generates a unique ID for an instance of Downshift\n * @return {String} the unique ID\n */\n\n\nfunction generateId() {\n return String(idCounter++);\n}\n/**\n * Resets idCounter to 0. Used for SSR.\n */\n\n\nfunction resetIdCounter() {\n idCounter = 0;\n}\n/**\n * Default implementation for status message. Only added when menu is open.\n * Will specify if there are results in the list, and if so, how many,\n * and what keys are relevant.\n *\n * @param {Object} param the downshift state and other relevant properties\n * @return {String} the a11y status message\n */\n\n\nfunction getA11yStatusMessage$1(_ref2) {\n var isOpen = _ref2.isOpen,\n resultCount = _ref2.resultCount,\n previousResultCount = _ref2.previousResultCount;\n\n if (!isOpen) {\n return '';\n }\n\n if (!resultCount) {\n return 'No results are available.';\n }\n\n if (resultCount !== previousResultCount) {\n return resultCount + \" result\" + (resultCount === 1 ? ' is' : 's are') + \" available, use up and down arrow keys to navigate. Press Enter key to select.\";\n }\n\n return '';\n}\n/**\n * Takes an argument and if it's an array, returns the first item in the array\n * otherwise returns the argument\n * @param {*} arg the maybe-array\n * @param {*} defaultValue the value if arg is falsey not defined\n * @return {*} the arg or it's first item\n */\n\n\nfunction unwrapArray(arg, defaultValue) {\n arg = Array.isArray(arg) ?\n /* istanbul ignore next (preact) */\n arg[0] : arg;\n\n if (!arg && defaultValue) {\n return defaultValue;\n } else {\n return arg;\n }\n}\n/**\n * @param {Object} element (P)react element\n * @return {Boolean} whether it's a DOM element\n */\n\n\nfunction isDOMElement(element) {\n\n\n return typeof element.type === 'string';\n}\n/**\n * @param {Object} element (P)react element\n * @return {Object} the props\n */\n\n\nfunction getElementProps(element) {\n\n return element.props;\n}\n/**\n * Throws a helpful error message for required properties. Useful\n * to be used as a default in destructuring or object params.\n * @param {String} fnName the function name\n * @param {String} propName the prop name\n */\n\n\nfunction requiredProp(fnName, propName) {\n // eslint-disable-next-line no-console\n console.error(\"The property \\\"\" + propName + \"\\\" is required in \\\"\" + fnName + \"\\\"\");\n}\n\nvar stateKeys = ['highlightedIndex', 'inputValue', 'isOpen', 'selectedItem', 'type'];\n/**\n * @param {Object} state the state object\n * @return {Object} state that is relevant to downshift\n */\n\nfunction pickState(state) {\n if (state === void 0) {\n state = {};\n }\n\n var result = {};\n stateKeys.forEach(function (k) {\n if (state.hasOwnProperty(k)) {\n result[k] = state[k];\n }\n });\n return result;\n}\n/**\n * This will perform a shallow merge of the given state object\n * with the state coming from props\n * (for the controlled component scenario)\n * This is used in state updater functions so they're referencing\n * the right state regardless of where it comes from.\n *\n * @param {Object} state The state of the component/hook.\n * @param {Object} props The props that may contain controlled values.\n * @returns {Object} The merged controlled state.\n */\n\n\nfunction getState(state, props) {\n return Object.keys(state).reduce(function (prevState, key) {\n prevState[key] = isControlledProp(props, key) ? props[key] : state[key];\n return prevState;\n }, {});\n}\n/**\n * This determines whether a prop is a \"controlled prop\" meaning it is\n * state which is controlled by the outside of this component rather\n * than within this component.\n *\n * @param {Object} props The props that may contain controlled values.\n * @param {String} key the key to check\n * @return {Boolean} whether it is a controlled controlled prop\n */\n\n\nfunction isControlledProp(props, key) {\n return props[key] !== undefined;\n}\n/**\n * Normalizes the 'key' property of a KeyboardEvent in IE/Edge\n * @param {Object} event a keyboardEvent object\n * @return {String} keyboard key\n */\n\n\nfunction normalizeArrowKey(event) {\n var key = event.key,\n keyCode = event.keyCode;\n /* istanbul ignore next (ie) */\n\n if (keyCode >= 37 && keyCode <= 40 && key.indexOf('Arrow') !== 0) {\n return \"Arrow\" + key;\n }\n\n return key;\n}\n/**\n * Simple check if the value passed is object literal\n * @param {*} obj any things\n * @return {Boolean} whether it's object literal\n */\n\n\nfunction isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\n/**\n * Returns the new index in the list, in a circular way. If next value is out of bonds from the total,\n * it will wrap to either 0 or itemCount - 1.\n *\n * @param {number} moveAmount Number of positions to move. Negative to move backwards, positive forwards.\n * @param {number} baseIndex The initial position to move from.\n * @param {number} itemCount The total number of items.\n * @param {Function} getItemNodeFromIndex Used to check if item is disabled.\n * @param {boolean} circular Specify if navigation is circular. Default is true.\n * @returns {number} The new index after the move.\n */\n\n\nfunction getNextWrappingIndex(moveAmount, baseIndex, itemCount, getItemNodeFromIndex, circular) {\n if (circular === void 0) {\n circular = true;\n }\n\n if (itemCount === 0) {\n return -1;\n }\n\n var itemsLastIndex = itemCount - 1;\n\n if (typeof baseIndex !== 'number' || baseIndex < 0 || baseIndex >= itemCount) {\n baseIndex = moveAmount > 0 ? -1 : itemsLastIndex + 1;\n }\n\n var newIndex = baseIndex + moveAmount;\n\n if (newIndex < 0) {\n newIndex = circular ? itemsLastIndex : 0;\n } else if (newIndex > itemsLastIndex) {\n newIndex = circular ? 0 : itemsLastIndex;\n }\n\n var nonDisabledNewIndex = getNextNonDisabledIndex(moveAmount, newIndex, itemCount, getItemNodeFromIndex, circular);\n\n if (nonDisabledNewIndex === -1) {\n return baseIndex >= itemCount ? -1 : baseIndex;\n }\n\n return nonDisabledNewIndex;\n}\n/**\n * Returns the next index in the list of an item that is not disabled.\n *\n * @param {number} moveAmount Number of positions to move. Negative to move backwards, positive forwards.\n * @param {number} baseIndex The initial position to move from.\n * @param {number} itemCount The total number of items.\n * @param {Function} getItemNodeFromIndex Used to check if item is disabled.\n * @param {boolean} circular Specify if navigation is circular. Default is true.\n * @returns {number} The new index. Returns baseIndex if item is not disabled. Returns next non-disabled item otherwise. If no non-disabled found it will return -1.\n */\n\n\nfunction getNextNonDisabledIndex(moveAmount, baseIndex, itemCount, getItemNodeFromIndex, circular) {\n var currentElementNode = getItemNodeFromIndex(baseIndex);\n\n if (!currentElementNode || !currentElementNode.hasAttribute('disabled')) {\n return baseIndex;\n }\n\n if (moveAmount > 0) {\n for (var index = baseIndex + 1; index < itemCount; index++) {\n if (!getItemNodeFromIndex(index).hasAttribute('disabled')) {\n return index;\n }\n }\n } else {\n for (var _index = baseIndex - 1; _index >= 0; _index--) {\n if (!getItemNodeFromIndex(_index).hasAttribute('disabled')) {\n return _index;\n }\n }\n }\n\n if (circular) {\n return moveAmount > 0 ? getNextNonDisabledIndex(1, 0, itemCount, getItemNodeFromIndex, false) : getNextNonDisabledIndex(-1, itemCount - 1, itemCount, getItemNodeFromIndex, false);\n }\n\n return -1;\n}\n/**\n * Checks if event target is within the downshift elements.\n *\n * @param {EventTarget} target Target to check.\n * @param {HTMLElement[]} downshiftElements The elements that form downshift (list, toggle button etc).\n * @param {Window} environment The window context where downshift renders.\n * @param {boolean} checkActiveElement Whether to also check activeElement.\n *\n * @returns {boolean} Whether or not the target is within downshift elements.\n */\n\n\nfunction targetWithinDownshift(target, downshiftElements, environment, checkActiveElement) {\n if (checkActiveElement === void 0) {\n checkActiveElement = true;\n }\n\n return downshiftElements.some(function (contextNode) {\n return contextNode && (isOrContainsNode(contextNode, target, environment) || checkActiveElement && isOrContainsNode(contextNode, environment.document.activeElement, environment));\n });\n} // eslint-disable-next-line import/no-mutable-exports\n\n\nvar validateControlledUnchanged = noop;\n/* istanbul ignore next */\n\nif (process.env.NODE_ENV !== 'production') {\n validateControlledUnchanged = function validateControlledUnchanged(state, prevProps, nextProps) {\n var warningDescription = \"This prop should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled Downshift element for the lifetime of the component. More info: https://github.com/downshift-js/downshift#control-props\";\n Object.keys(state).forEach(function (propKey) {\n if (prevProps[propKey] !== undefined && nextProps[propKey] === undefined) {\n // eslint-disable-next-line no-console\n console.error(\"downshift: A component has changed the controlled prop \\\"\" + propKey + \"\\\" to be uncontrolled. \" + warningDescription);\n } else if (prevProps[propKey] === undefined && nextProps[propKey] !== undefined) {\n // eslint-disable-next-line no-console\n console.error(\"downshift: A component has changed the uncontrolled prop \\\"\" + propKey + \"\\\" to be controlled. \" + warningDescription);\n }\n });\n };\n}\n\nvar cleanupStatus = debounce(function (documentProp) {\n getStatusDiv(documentProp).textContent = '';\n}, 500);\n/**\n * @param {String} status the status message\n * @param {Object} documentProp document passed by the user.\n */\n\nfunction setStatus(status, documentProp) {\n var div = getStatusDiv(documentProp);\n\n if (!status) {\n return;\n }\n\n div.textContent = status;\n cleanupStatus(documentProp);\n}\n/**\n * Get the status node or create it if it does not already exist.\n * @param {Object} documentProp document passed by the user.\n * @return {HTMLElement} the status node.\n */\n\n\nfunction getStatusDiv(documentProp) {\n if (documentProp === void 0) {\n documentProp = document;\n }\n\n var statusDiv = documentProp.getElementById('a11y-status-message');\n\n if (statusDiv) {\n return statusDiv;\n }\n\n statusDiv = documentProp.createElement('div');\n statusDiv.setAttribute('id', 'a11y-status-message');\n statusDiv.setAttribute('role', 'status');\n statusDiv.setAttribute('aria-live', 'polite');\n statusDiv.setAttribute('aria-relevant', 'additions text');\n Object.assign(statusDiv.style, {\n border: '0',\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: '0',\n position: 'absolute',\n width: '1px'\n });\n documentProp.body.appendChild(statusDiv);\n return statusDiv;\n}\n\nvar unknown = process.env.NODE_ENV !== \"production\" ? '__autocomplete_unknown__' : 0;\nvar mouseUp = process.env.NODE_ENV !== \"production\" ? '__autocomplete_mouseup__' : 1;\nvar itemMouseEnter = process.env.NODE_ENV !== \"production\" ? '__autocomplete_item_mouseenter__' : 2;\nvar keyDownArrowUp = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_arrow_up__' : 3;\nvar keyDownArrowDown = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_arrow_down__' : 4;\nvar keyDownEscape = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_escape__' : 5;\nvar keyDownEnter = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_enter__' : 6;\nvar keyDownHome = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_home__' : 7;\nvar keyDownEnd = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_end__' : 8;\nvar clickItem = process.env.NODE_ENV !== \"production\" ? '__autocomplete_click_item__' : 9;\nvar blurInput = process.env.NODE_ENV !== \"production\" ? '__autocomplete_blur_input__' : 10;\nvar changeInput = process.env.NODE_ENV !== \"production\" ? '__autocomplete_change_input__' : 11;\nvar keyDownSpaceButton = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_space_button__' : 12;\nvar clickButton = process.env.NODE_ENV !== \"production\" ? '__autocomplete_click_button__' : 13;\nvar blurButton = process.env.NODE_ENV !== \"production\" ? '__autocomplete_blur_button__' : 14;\nvar controlledPropUpdatedSelectedItem = process.env.NODE_ENV !== \"production\" ? '__autocomplete_controlled_prop_updated_selected_item__' : 15;\nvar touchEnd = process.env.NODE_ENV !== \"production\" ? '__autocomplete_touchend__' : 16;\n\nvar stateChangeTypes$3 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n unknown: unknown,\n mouseUp: mouseUp,\n itemMouseEnter: itemMouseEnter,\n keyDownArrowUp: keyDownArrowUp,\n keyDownArrowDown: keyDownArrowDown,\n keyDownEscape: keyDownEscape,\n keyDownEnter: keyDownEnter,\n keyDownHome: keyDownHome,\n keyDownEnd: keyDownEnd,\n clickItem: clickItem,\n blurInput: blurInput,\n changeInput: changeInput,\n keyDownSpaceButton: keyDownSpaceButton,\n clickButton: clickButton,\n blurButton: blurButton,\n controlledPropUpdatedSelectedItem: controlledPropUpdatedSelectedItem,\n touchEnd: touchEnd\n});\n\nvar _excluded$4 = [\"refKey\", \"ref\"],\n _excluded2$3 = [\"onClick\", \"onPress\", \"onKeyDown\", \"onKeyUp\", \"onBlur\"],\n _excluded3$2 = [\"onKeyDown\", \"onBlur\", \"onChange\", \"onInput\", \"onChangeText\"],\n _excluded4$1 = [\"refKey\", \"ref\"],\n _excluded5$1 = [\"onMouseMove\", \"onMouseDown\", \"onClick\", \"onPress\", \"index\", \"item\"];\n\nvar Downshift = /*#__PURE__*/function () {\n var Downshift = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Downshift, _Component);\n\n function Downshift(_props) {\n var _this;\n\n _this = _Component.call(this, _props) || this; // fancy destructuring + defaults + aliases\n // this basically says each value of state should either be set to\n // the initial value or the default value if the initial value is not provided\n\n _this.id = _this.props.id || \"downshift-\" + generateId();\n _this.menuId = _this.props.menuId || _this.id + \"-menu\";\n _this.labelId = _this.props.labelId || _this.id + \"-label\";\n _this.inputId = _this.props.inputId || _this.id + \"-input\";\n\n _this.getItemId = _this.props.getItemId || function (index) {\n return _this.id + \"-item-\" + index;\n };\n\n _this.input = null;\n _this.items = [];\n _this.itemCount = null;\n _this.previousResultCount = 0;\n _this.timeoutIds = [];\n\n _this.internalSetTimeout = function (fn, time) {\n var id = setTimeout(function () {\n _this.timeoutIds = _this.timeoutIds.filter(function (i) {\n return i !== id;\n });\n fn();\n }, time);\n\n _this.timeoutIds.push(id);\n };\n\n _this.setItemCount = function (count) {\n _this.itemCount = count;\n };\n\n _this.unsetItemCount = function () {\n _this.itemCount = null;\n };\n\n _this.setHighlightedIndex = function (highlightedIndex, otherStateToSet) {\n if (highlightedIndex === void 0) {\n highlightedIndex = _this.props.defaultHighlightedIndex;\n }\n\n if (otherStateToSet === void 0) {\n otherStateToSet = {};\n }\n\n otherStateToSet = pickState(otherStateToSet);\n\n _this.internalSetState(_extends({\n highlightedIndex: highlightedIndex\n }, otherStateToSet));\n };\n\n _this.clearSelection = function (cb) {\n _this.internalSetState({\n selectedItem: null,\n inputValue: '',\n highlightedIndex: _this.props.defaultHighlightedIndex,\n isOpen: _this.props.defaultIsOpen\n }, cb);\n };\n\n _this.selectItem = function (item, otherStateToSet, cb) {\n otherStateToSet = pickState(otherStateToSet);\n\n _this.internalSetState(_extends({\n isOpen: _this.props.defaultIsOpen,\n highlightedIndex: _this.props.defaultHighlightedIndex,\n selectedItem: item,\n inputValue: _this.props.itemToString(item)\n }, otherStateToSet), cb);\n };\n\n _this.selectItemAtIndex = function (itemIndex, otherStateToSet, cb) {\n var item = _this.items[itemIndex];\n\n if (item == null) {\n return;\n }\n\n _this.selectItem(item, otherStateToSet, cb);\n };\n\n _this.selectHighlightedItem = function (otherStateToSet, cb) {\n return _this.selectItemAtIndex(_this.getState().highlightedIndex, otherStateToSet, cb);\n };\n\n _this.internalSetState = function (stateToSet, cb) {\n var isItemSelected, onChangeArg;\n var onStateChangeArg = {};\n var isStateToSetFunction = typeof stateToSet === 'function'; // we want to call `onInputValueChange` before the `setState` call\n // so someone controlling the `inputValue` state gets notified of\n // the input change as soon as possible. This avoids issues with\n // preserving the cursor position.\n // See https://github.com/downshift-js/downshift/issues/217 for more info.\n\n if (!isStateToSetFunction && stateToSet.hasOwnProperty('inputValue')) {\n _this.props.onInputValueChange(stateToSet.inputValue, _extends({}, _this.getStateAndHelpers(), stateToSet));\n }\n\n return _this.setState(function (state) {\n state = _this.getState(state);\n var newStateToSet = isStateToSetFunction ? stateToSet(state) : stateToSet; // Your own function that could modify the state that will be set.\n\n newStateToSet = _this.props.stateReducer(state, newStateToSet); // checks if an item is selected, regardless of if it's different from\n // what was selected before\n // used to determine if onSelect and onChange callbacks should be called\n\n isItemSelected = newStateToSet.hasOwnProperty('selectedItem'); // this keeps track of the object we want to call with setState\n\n var nextState = {}; // this is just used to tell whether the state changed\n\n var nextFullState = {}; // we need to call on change if the outside world is controlling any of our state\n // and we're trying to update that state. OR if the selection has changed and we're\n // trying to update the selection\n\n if (isItemSelected && newStateToSet.selectedItem !== state.selectedItem) {\n onChangeArg = newStateToSet.selectedItem;\n }\n\n newStateToSet.type = newStateToSet.type || unknown;\n Object.keys(newStateToSet).forEach(function (key) {\n // onStateChangeArg should only have the state that is\n // actually changing\n if (state[key] !== newStateToSet[key]) {\n onStateChangeArg[key] = newStateToSet[key];\n } // the type is useful for the onStateChangeArg\n // but we don't actually want to set it in internal state.\n // this is an undocumented feature for now... Not all internalSetState\n // calls support it and I'm not certain we want them to yet.\n // But it enables users controlling the isOpen state to know when\n // the isOpen state changes due to mouseup events which is quite handy.\n\n\n if (key === 'type') {\n return;\n }\n\n nextFullState[key] = newStateToSet[key]; // if it's coming from props, then we don't care to set it internally\n\n if (!isControlledProp(_this.props, key)) {\n nextState[key] = newStateToSet[key];\n }\n }); // if stateToSet is a function, then we weren't able to call onInputValueChange\n // earlier, so we'll call it now that we know what the inputValue state will be.\n\n if (isStateToSetFunction && newStateToSet.hasOwnProperty('inputValue')) {\n _this.props.onInputValueChange(newStateToSet.inputValue, _extends({}, _this.getStateAndHelpers(), newStateToSet));\n }\n\n return nextState;\n }, function () {\n // call the provided callback if it's a function\n cbToCb(cb)(); // only call the onStateChange and onChange callbacks if\n // we have relevant information to pass them.\n\n var hasMoreStateThanType = Object.keys(onStateChangeArg).length > 1;\n\n if (hasMoreStateThanType) {\n _this.props.onStateChange(onStateChangeArg, _this.getStateAndHelpers());\n }\n\n if (isItemSelected) {\n _this.props.onSelect(stateToSet.selectedItem, _this.getStateAndHelpers());\n }\n\n if (onChangeArg !== undefined) {\n _this.props.onChange(onChangeArg, _this.getStateAndHelpers());\n } // this is currently undocumented and therefore subject to change\n // We'll try to not break it, but just be warned.\n\n\n _this.props.onUserAction(onStateChangeArg, _this.getStateAndHelpers());\n });\n };\n\n _this.rootRef = function (node) {\n return _this._rootNode = node;\n };\n\n _this.getRootProps = function (_temp, _temp2) {\n var _extends2;\n\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$refKey = _ref.refKey,\n refKey = _ref$refKey === void 0 ? 'ref' : _ref$refKey,\n ref = _ref.ref,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);\n\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n _ref2$suppressRefErro = _ref2.suppressRefError,\n suppressRefError = _ref2$suppressRefErro === void 0 ? false : _ref2$suppressRefErro;\n\n // this is used in the render to know whether the user has called getRootProps.\n // It uses that to know whether to apply the props automatically\n _this.getRootProps.called = true;\n _this.getRootProps.refKey = refKey;\n _this.getRootProps.suppressRefError = suppressRefError;\n\n var _this$getState = _this.getState(),\n isOpen = _this$getState.isOpen;\n\n return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, _this.rootRef), _extends2.role = 'combobox', _extends2['aria-expanded'] = isOpen, _extends2['aria-haspopup'] = 'listbox', _extends2['aria-owns'] = isOpen ? _this.menuId : null, _extends2['aria-labelledby'] = _this.labelId, _extends2), rest);\n };\n\n _this.keyDownHandlers = {\n ArrowDown: function ArrowDown(event) {\n var _this2 = this;\n\n event.preventDefault();\n\n if (this.getState().isOpen) {\n var amount = event.shiftKey ? 5 : 1;\n this.moveHighlightedIndex(amount, {\n type: keyDownArrowDown\n });\n } else {\n this.internalSetState({\n isOpen: true,\n type: keyDownArrowDown\n }, function () {\n var itemCount = _this2.getItemCount();\n\n if (itemCount > 0) {\n var _this2$getState = _this2.getState(),\n highlightedIndex = _this2$getState.highlightedIndex;\n\n var nextHighlightedIndex = getNextWrappingIndex(1, highlightedIndex, itemCount, function (index) {\n return _this2.getItemNodeFromIndex(index);\n });\n\n _this2.setHighlightedIndex(nextHighlightedIndex, {\n type: keyDownArrowDown\n });\n }\n });\n }\n },\n ArrowUp: function ArrowUp(event) {\n var _this3 = this;\n\n event.preventDefault();\n\n if (this.getState().isOpen) {\n var amount = event.shiftKey ? -5 : -1;\n this.moveHighlightedIndex(amount, {\n type: keyDownArrowUp\n });\n } else {\n this.internalSetState({\n isOpen: true,\n type: keyDownArrowUp\n }, function () {\n var itemCount = _this3.getItemCount();\n\n if (itemCount > 0) {\n var _this3$getState = _this3.getState(),\n highlightedIndex = _this3$getState.highlightedIndex;\n\n var nextHighlightedIndex = getNextWrappingIndex(-1, highlightedIndex, itemCount, function (index) {\n return _this3.getItemNodeFromIndex(index);\n });\n\n _this3.setHighlightedIndex(nextHighlightedIndex, {\n type: keyDownArrowUp\n });\n }\n });\n }\n },\n Enter: function Enter(event) {\n if (event.which === 229) {\n return;\n }\n\n var _this$getState2 = this.getState(),\n isOpen = _this$getState2.isOpen,\n highlightedIndex = _this$getState2.highlightedIndex;\n\n if (isOpen && highlightedIndex != null) {\n event.preventDefault();\n var item = this.items[highlightedIndex];\n var itemNode = this.getItemNodeFromIndex(highlightedIndex);\n\n if (item == null || itemNode && itemNode.hasAttribute('disabled')) {\n return;\n }\n\n this.selectHighlightedItem({\n type: keyDownEnter\n });\n }\n },\n Escape: function Escape(event) {\n event.preventDefault();\n this.reset(_extends({\n type: keyDownEscape\n }, !this.state.isOpen && {\n selectedItem: null,\n inputValue: ''\n }));\n }\n };\n _this.buttonKeyDownHandlers = _extends({}, _this.keyDownHandlers, {\n ' ': function _(event) {\n event.preventDefault();\n this.toggleMenu({\n type: keyDownSpaceButton\n });\n }\n });\n _this.inputKeyDownHandlers = _extends({}, _this.keyDownHandlers, {\n Home: function Home(event) {\n var _this4 = this;\n\n var _this$getState3 = this.getState(),\n isOpen = _this$getState3.isOpen;\n\n if (!isOpen) {\n return;\n }\n\n event.preventDefault();\n var itemCount = this.getItemCount();\n\n if (itemCount <= 0 || !isOpen) {\n return;\n } // get next non-disabled starting downwards from 0 if that's disabled.\n\n\n var newHighlightedIndex = getNextNonDisabledIndex(1, 0, itemCount, function (index) {\n return _this4.getItemNodeFromIndex(index);\n }, false);\n this.setHighlightedIndex(newHighlightedIndex, {\n type: keyDownHome\n });\n },\n End: function End(event) {\n var _this5 = this;\n\n var _this$getState4 = this.getState(),\n isOpen = _this$getState4.isOpen;\n\n if (!isOpen) {\n return;\n }\n\n event.preventDefault();\n var itemCount = this.getItemCount();\n\n if (itemCount <= 0 || !isOpen) {\n return;\n } // get next non-disabled starting upwards from last index if that's disabled.\n\n\n var newHighlightedIndex = getNextNonDisabledIndex(-1, itemCount - 1, itemCount, function (index) {\n return _this5.getItemNodeFromIndex(index);\n }, false);\n this.setHighlightedIndex(newHighlightedIndex, {\n type: keyDownEnd\n });\n }\n });\n\n _this.getToggleButtonProps = function (_temp3) {\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n onClick = _ref3.onClick;\n _ref3.onPress;\n var onKeyDown = _ref3.onKeyDown,\n onKeyUp = _ref3.onKeyUp,\n onBlur = _ref3.onBlur,\n rest = _objectWithoutPropertiesLoose(_ref3, _excluded2$3);\n\n var _this$getState5 = _this.getState(),\n isOpen = _this$getState5.isOpen;\n\n var enabledEventHandlers = {\n onClick: callAllEventHandlers(onClick, _this.buttonHandleClick),\n onKeyDown: callAllEventHandlers(onKeyDown, _this.buttonHandleKeyDown),\n onKeyUp: callAllEventHandlers(onKeyUp, _this.buttonHandleKeyUp),\n onBlur: callAllEventHandlers(onBlur, _this.buttonHandleBlur)\n };\n var eventHandlers = rest.disabled ? {} : enabledEventHandlers;\n return _extends({\n type: 'button',\n role: 'button',\n 'aria-label': isOpen ? 'close menu' : 'open menu',\n 'aria-haspopup': true,\n 'data-toggle': true\n }, eventHandlers, rest);\n };\n\n _this.buttonHandleKeyUp = function (event) {\n // Prevent click event from emitting in Firefox\n event.preventDefault();\n };\n\n _this.buttonHandleKeyDown = function (event) {\n var key = normalizeArrowKey(event);\n\n if (_this.buttonKeyDownHandlers[key]) {\n _this.buttonKeyDownHandlers[key].call(_assertThisInitialized(_this), event);\n }\n };\n\n _this.buttonHandleClick = function (event) {\n event.preventDefault(); // handle odd case for Safari and Firefox which\n // don't give the button the focus properly.\n\n /* istanbul ignore if (can't reasonably test this) */\n\n if (_this.props.environment.document.activeElement === _this.props.environment.document.body) {\n event.target.focus();\n } // to simplify testing components that use downshift, we'll not wrap this in a setTimeout\n // if the NODE_ENV is test. With the proper build system, this should be dead code eliminated\n // when building for production and should therefore have no impact on production code.\n\n\n if (process.env.NODE_ENV === 'test') {\n _this.toggleMenu({\n type: clickButton\n });\n } else {\n // Ensure that toggle of menu occurs after the potential blur event in iOS\n _this.internalSetTimeout(function () {\n return _this.toggleMenu({\n type: clickButton\n });\n });\n }\n };\n\n _this.buttonHandleBlur = function (event) {\n var blurTarget = event.target; // Save blur target for comparison with activeElement later\n // Need setTimeout, so that when the user presses Tab, the activeElement is the next focused element, not body element\n\n _this.internalSetTimeout(function () {\n if (!_this.isMouseDown && (_this.props.environment.document.activeElement == null || _this.props.environment.document.activeElement.id !== _this.inputId) && _this.props.environment.document.activeElement !== blurTarget // Do nothing if we refocus the same element again (to solve issue in Safari on iOS)\n ) {\n _this.reset({\n type: blurButton\n });\n }\n });\n };\n\n _this.getLabelProps = function (props) {\n return _extends({\n htmlFor: _this.inputId,\n id: _this.labelId\n }, props);\n };\n\n _this.getInputProps = function (_temp4) {\n var _ref4 = _temp4 === void 0 ? {} : _temp4,\n onKeyDown = _ref4.onKeyDown,\n onBlur = _ref4.onBlur,\n onChange = _ref4.onChange,\n onInput = _ref4.onInput;\n _ref4.onChangeText;\n var rest = _objectWithoutPropertiesLoose(_ref4, _excluded3$2);\n\n var onChangeKey;\n var eventHandlers = {};\n /* istanbul ignore next (preact) */\n\n {\n onChangeKey = 'onChange';\n }\n\n var _this$getState6 = _this.getState(),\n inputValue = _this$getState6.inputValue,\n isOpen = _this$getState6.isOpen,\n highlightedIndex = _this$getState6.highlightedIndex;\n\n if (!rest.disabled) {\n var _eventHandlers;\n\n eventHandlers = (_eventHandlers = {}, _eventHandlers[onChangeKey] = callAllEventHandlers(onChange, onInput, _this.inputHandleChange), _eventHandlers.onKeyDown = callAllEventHandlers(onKeyDown, _this.inputHandleKeyDown), _eventHandlers.onBlur = callAllEventHandlers(onBlur, _this.inputHandleBlur), _eventHandlers);\n }\n\n return _extends({\n 'aria-autocomplete': 'list',\n 'aria-activedescendant': isOpen && typeof highlightedIndex === 'number' && highlightedIndex >= 0 ? _this.getItemId(highlightedIndex) : null,\n 'aria-controls': isOpen ? _this.menuId : null,\n 'aria-labelledby': _this.labelId,\n // https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion\n // revert back since autocomplete=\"nope\" is ignored on latest Chrome and Opera\n autoComplete: 'off',\n value: inputValue,\n id: _this.inputId\n }, eventHandlers, rest);\n };\n\n _this.inputHandleKeyDown = function (event) {\n var key = normalizeArrowKey(event);\n\n if (key && _this.inputKeyDownHandlers[key]) {\n _this.inputKeyDownHandlers[key].call(_assertThisInitialized(_this), event);\n }\n };\n\n _this.inputHandleChange = function (event) {\n _this.internalSetState({\n type: changeInput,\n isOpen: true,\n inputValue: event.target.value,\n highlightedIndex: _this.props.defaultHighlightedIndex\n });\n };\n\n _this.inputHandleBlur = function () {\n // Need setTimeout, so that when the user presses Tab, the activeElement is the next focused element, not the body element\n _this.internalSetTimeout(function () {\n var downshiftButtonIsActive = _this.props.environment.document && !!_this.props.environment.document.activeElement && !!_this.props.environment.document.activeElement.dataset && _this.props.environment.document.activeElement.dataset.toggle && _this._rootNode && _this._rootNode.contains(_this.props.environment.document.activeElement);\n\n if (!_this.isMouseDown && !downshiftButtonIsActive) {\n _this.reset({\n type: blurInput\n });\n }\n });\n };\n\n _this.menuRef = function (node) {\n _this._menuNode = node;\n };\n\n _this.getMenuProps = function (_temp5, _temp6) {\n var _extends3;\n\n var _ref5 = _temp5 === void 0 ? {} : _temp5,\n _ref5$refKey = _ref5.refKey,\n refKey = _ref5$refKey === void 0 ? 'ref' : _ref5$refKey,\n ref = _ref5.ref,\n props = _objectWithoutPropertiesLoose(_ref5, _excluded4$1);\n\n var _ref6 = _temp6 === void 0 ? {} : _temp6,\n _ref6$suppressRefErro = _ref6.suppressRefError,\n suppressRefError = _ref6$suppressRefErro === void 0 ? false : _ref6$suppressRefErro;\n\n _this.getMenuProps.called = true;\n _this.getMenuProps.refKey = refKey;\n _this.getMenuProps.suppressRefError = suppressRefError;\n return _extends((_extends3 = {}, _extends3[refKey] = handleRefs(ref, _this.menuRef), _extends3.role = 'listbox', _extends3['aria-labelledby'] = props && props['aria-label'] ? null : _this.labelId, _extends3.id = _this.menuId, _extends3), props);\n };\n\n _this.getItemProps = function (_temp7) {\n var _enabledEventHandlers;\n\n var _ref7 = _temp7 === void 0 ? {} : _temp7,\n onMouseMove = _ref7.onMouseMove,\n onMouseDown = _ref7.onMouseDown,\n onClick = _ref7.onClick;\n _ref7.onPress;\n var index = _ref7.index,\n _ref7$item = _ref7.item,\n item = _ref7$item === void 0 ? process.env.NODE_ENV === 'production' ?\n /* istanbul ignore next */\n undefined : requiredProp('getItemProps', 'item') : _ref7$item,\n rest = _objectWithoutPropertiesLoose(_ref7, _excluded5$1);\n\n if (index === undefined) {\n _this.items.push(item);\n\n index = _this.items.indexOf(item);\n } else {\n _this.items[index] = item;\n }\n\n var onSelectKey = 'onClick';\n var customClickHandler = onClick;\n var enabledEventHandlers = (_enabledEventHandlers = {\n // onMouseMove is used over onMouseEnter here. onMouseMove\n // is only triggered on actual mouse movement while onMouseEnter\n // can fire on DOM changes, interrupting keyboard navigation\n onMouseMove: callAllEventHandlers(onMouseMove, function () {\n if (index === _this.getState().highlightedIndex) {\n return;\n }\n\n _this.setHighlightedIndex(index, {\n type: itemMouseEnter\n }); // We never want to manually scroll when changing state based\n // on `onMouseMove` because we will be moving the element out\n // from under the user which is currently scrolling/moving the\n // cursor\n\n\n _this.avoidScrolling = true;\n\n _this.internalSetTimeout(function () {\n return _this.avoidScrolling = false;\n }, 250);\n }),\n onMouseDown: callAllEventHandlers(onMouseDown, function (event) {\n // This prevents the activeElement from being changed\n // to the item so it can remain with the current activeElement\n // which is a more common use case.\n event.preventDefault();\n })\n }, _enabledEventHandlers[onSelectKey] = callAllEventHandlers(customClickHandler, function () {\n _this.selectItemAtIndex(index, {\n type: clickItem\n });\n }), _enabledEventHandlers); // Passing down the onMouseDown handler to prevent redirect\n // of the activeElement if clicking on disabled items\n\n var eventHandlers = rest.disabled ? {\n onMouseDown: enabledEventHandlers.onMouseDown\n } : enabledEventHandlers;\n return _extends({\n id: _this.getItemId(index),\n role: 'option',\n 'aria-selected': _this.getState().highlightedIndex === index\n }, eventHandlers, rest);\n };\n\n _this.clearItems = function () {\n _this.items = [];\n };\n\n _this.reset = function (otherStateToSet, cb) {\n if (otherStateToSet === void 0) {\n otherStateToSet = {};\n }\n\n otherStateToSet = pickState(otherStateToSet);\n\n _this.internalSetState(function (_ref8) {\n var selectedItem = _ref8.selectedItem;\n return _extends({\n isOpen: _this.props.defaultIsOpen,\n highlightedIndex: _this.props.defaultHighlightedIndex,\n inputValue: _this.props.itemToString(selectedItem)\n }, otherStateToSet);\n }, cb);\n };\n\n _this.toggleMenu = function (otherStateToSet, cb) {\n if (otherStateToSet === void 0) {\n otherStateToSet = {};\n }\n\n otherStateToSet = pickState(otherStateToSet);\n\n _this.internalSetState(function (_ref9) {\n var isOpen = _ref9.isOpen;\n return _extends({\n isOpen: !isOpen\n }, isOpen && {\n highlightedIndex: _this.props.defaultHighlightedIndex\n }, otherStateToSet);\n }, function () {\n var _this$getState7 = _this.getState(),\n isOpen = _this$getState7.isOpen,\n highlightedIndex = _this$getState7.highlightedIndex;\n\n if (isOpen) {\n if (_this.getItemCount() > 0 && typeof highlightedIndex === 'number') {\n _this.setHighlightedIndex(highlightedIndex, otherStateToSet);\n }\n }\n\n cbToCb(cb)();\n });\n };\n\n _this.openMenu = function (cb) {\n _this.internalSetState({\n isOpen: true\n }, cb);\n };\n\n _this.closeMenu = function (cb) {\n _this.internalSetState({\n isOpen: false\n }, cb);\n };\n\n _this.updateStatus = debounce(function () {\n var state = _this.getState();\n\n var item = _this.items[state.highlightedIndex];\n\n var resultCount = _this.getItemCount();\n\n var status = _this.props.getA11yStatusMessage(_extends({\n itemToString: _this.props.itemToString,\n previousResultCount: _this.previousResultCount,\n resultCount: resultCount,\n highlightedItem: item\n }, state));\n\n _this.previousResultCount = resultCount;\n setStatus(status, _this.props.environment.document);\n }, 200);\n\n var _this$props = _this.props,\n defaultHighlightedIndex = _this$props.defaultHighlightedIndex,\n _this$props$initialHi = _this$props.initialHighlightedIndex,\n _highlightedIndex = _this$props$initialHi === void 0 ? defaultHighlightedIndex : _this$props$initialHi,\n defaultIsOpen = _this$props.defaultIsOpen,\n _this$props$initialIs = _this$props.initialIsOpen,\n _isOpen = _this$props$initialIs === void 0 ? defaultIsOpen : _this$props$initialIs,\n _this$props$initialIn = _this$props.initialInputValue,\n _inputValue = _this$props$initialIn === void 0 ? '' : _this$props$initialIn,\n _this$props$initialSe = _this$props.initialSelectedItem,\n _selectedItem = _this$props$initialSe === void 0 ? null : _this$props$initialSe;\n\n var _state = _this.getState({\n highlightedIndex: _highlightedIndex,\n isOpen: _isOpen,\n inputValue: _inputValue,\n selectedItem: _selectedItem\n });\n\n if (_state.selectedItem != null && _this.props.initialInputValue === undefined) {\n _state.inputValue = _this.props.itemToString(_state.selectedItem);\n }\n\n _this.state = _state;\n return _this;\n }\n\n var _proto = Downshift.prototype;\n\n /**\n * Clear all running timeouts\n */\n _proto.internalClearTimeouts = function internalClearTimeouts() {\n this.timeoutIds.forEach(function (id) {\n clearTimeout(id);\n });\n this.timeoutIds = [];\n }\n /**\n * Gets the state based on internal state or props\n * If a state value is passed via props, then that\n * is the value given, otherwise it's retrieved from\n * stateToMerge\n *\n * @param {Object} stateToMerge defaults to this.state\n * @return {Object} the state\n */\n ;\n\n _proto.getState = function getState$1(stateToMerge) {\n if (stateToMerge === void 0) {\n stateToMerge = this.state;\n }\n\n return getState(stateToMerge, this.props);\n };\n\n _proto.getItemCount = function getItemCount() {\n // things read better this way. They're in priority order:\n // 1. `this.itemCount`\n // 2. `this.props.itemCount`\n // 3. `this.items.length`\n var itemCount = this.items.length;\n\n if (this.itemCount != null) {\n itemCount = this.itemCount;\n } else if (this.props.itemCount !== undefined) {\n itemCount = this.props.itemCount;\n }\n\n return itemCount;\n };\n\n _proto.getItemNodeFromIndex = function getItemNodeFromIndex(index) {\n return this.props.environment.document.getElementById(this.getItemId(index));\n };\n\n _proto.scrollHighlightedItemIntoView = function scrollHighlightedItemIntoView() {\n /* istanbul ignore else (react-native) */\n {\n var node = this.getItemNodeFromIndex(this.getState().highlightedIndex);\n this.props.scrollIntoView(node, this._menuNode);\n }\n };\n\n _proto.moveHighlightedIndex = function moveHighlightedIndex(amount, otherStateToSet) {\n var _this6 = this;\n\n var itemCount = this.getItemCount();\n\n var _this$getState8 = this.getState(),\n highlightedIndex = _this$getState8.highlightedIndex;\n\n if (itemCount > 0) {\n var nextHighlightedIndex = getNextWrappingIndex(amount, highlightedIndex, itemCount, function (index) {\n return _this6.getItemNodeFromIndex(index);\n });\n this.setHighlightedIndex(nextHighlightedIndex, otherStateToSet);\n }\n };\n\n _proto.getStateAndHelpers = function getStateAndHelpers() {\n var _this$getState9 = this.getState(),\n highlightedIndex = _this$getState9.highlightedIndex,\n inputValue = _this$getState9.inputValue,\n selectedItem = _this$getState9.selectedItem,\n isOpen = _this$getState9.isOpen;\n\n var itemToString = this.props.itemToString;\n var id = this.id;\n var getRootProps = this.getRootProps,\n getToggleButtonProps = this.getToggleButtonProps,\n getLabelProps = this.getLabelProps,\n getMenuProps = this.getMenuProps,\n getInputProps = this.getInputProps,\n getItemProps = this.getItemProps,\n openMenu = this.openMenu,\n closeMenu = this.closeMenu,\n toggleMenu = this.toggleMenu,\n selectItem = this.selectItem,\n selectItemAtIndex = this.selectItemAtIndex,\n selectHighlightedItem = this.selectHighlightedItem,\n setHighlightedIndex = this.setHighlightedIndex,\n clearSelection = this.clearSelection,\n clearItems = this.clearItems,\n reset = this.reset,\n setItemCount = this.setItemCount,\n unsetItemCount = this.unsetItemCount,\n setState = this.internalSetState;\n return {\n // prop getters\n getRootProps: getRootProps,\n getToggleButtonProps: getToggleButtonProps,\n getLabelProps: getLabelProps,\n getMenuProps: getMenuProps,\n getInputProps: getInputProps,\n getItemProps: getItemProps,\n // actions\n reset: reset,\n openMenu: openMenu,\n closeMenu: closeMenu,\n toggleMenu: toggleMenu,\n selectItem: selectItem,\n selectItemAtIndex: selectItemAtIndex,\n selectHighlightedItem: selectHighlightedItem,\n setHighlightedIndex: setHighlightedIndex,\n clearSelection: clearSelection,\n clearItems: clearItems,\n setItemCount: setItemCount,\n unsetItemCount: unsetItemCount,\n setState: setState,\n // props\n itemToString: itemToString,\n // derived\n id: id,\n // state\n highlightedIndex: highlightedIndex,\n inputValue: inputValue,\n isOpen: isOpen,\n selectedItem: selectedItem\n };\n } //////////////////////////// ROOT\n ;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this7 = this;\n\n /* istanbul ignore if (react-native) */\n if (process.env.NODE_ENV !== 'production' && !false && this.getMenuProps.called && !this.getMenuProps.suppressRefError) {\n validateGetMenuPropsCalledCorrectly(this._menuNode, this.getMenuProps);\n }\n /* istanbul ignore if (react-native) */\n\n\n {\n // this.isMouseDown helps us track whether the mouse is currently held down.\n // This is useful when the user clicks on an item in the list, but holds the mouse\n // down long enough for the list to disappear (because the blur event fires on the input)\n // this.isMouseDown is used in the blur handler on the input to determine whether the blur event should\n // trigger hiding the menu.\n var onMouseDown = function onMouseDown() {\n _this7.isMouseDown = true;\n };\n\n var onMouseUp = function onMouseUp(event) {\n _this7.isMouseDown = false; // if the target element or the activeElement is within a downshift node\n // then we don't want to reset downshift\n\n var contextWithinDownshift = targetWithinDownshift(event.target, [_this7._rootNode, _this7._menuNode], _this7.props.environment);\n\n if (!contextWithinDownshift && _this7.getState().isOpen) {\n _this7.reset({\n type: mouseUp\n }, function () {\n return _this7.props.onOuterClick(_this7.getStateAndHelpers());\n });\n }\n }; // Touching an element in iOS gives focus and hover states, but touching out of\n // the element will remove hover, and persist the focus state, resulting in the\n // blur event not being triggered.\n // this.isTouchMove helps us track whether the user is tapping or swiping on a touch screen.\n // If the user taps outside of Downshift, the component should be reset,\n // but not if the user is swiping\n\n\n var onTouchStart = function onTouchStart() {\n _this7.isTouchMove = false;\n };\n\n var onTouchMove = function onTouchMove() {\n _this7.isTouchMove = true;\n };\n\n var onTouchEnd = function onTouchEnd(event) {\n var contextWithinDownshift = targetWithinDownshift(event.target, [_this7._rootNode, _this7._menuNode], _this7.props.environment, false);\n\n if (!_this7.isTouchMove && !contextWithinDownshift && _this7.getState().isOpen) {\n _this7.reset({\n type: touchEnd\n }, function () {\n return _this7.props.onOuterClick(_this7.getStateAndHelpers());\n });\n }\n };\n\n var environment = this.props.environment;\n environment.addEventListener('mousedown', onMouseDown);\n environment.addEventListener('mouseup', onMouseUp);\n environment.addEventListener('touchstart', onTouchStart);\n environment.addEventListener('touchmove', onTouchMove);\n environment.addEventListener('touchend', onTouchEnd);\n\n this.cleanup = function () {\n _this7.internalClearTimeouts();\n\n _this7.updateStatus.cancel();\n\n environment.removeEventListener('mousedown', onMouseDown);\n environment.removeEventListener('mouseup', onMouseUp);\n environment.removeEventListener('touchstart', onTouchStart);\n environment.removeEventListener('touchmove', onTouchMove);\n environment.removeEventListener('touchend', onTouchEnd);\n };\n }\n };\n\n _proto.shouldScroll = function shouldScroll(prevState, prevProps) {\n var _ref10 = this.props.highlightedIndex === undefined ? this.getState() : this.props,\n currentHighlightedIndex = _ref10.highlightedIndex;\n\n var _ref11 = prevProps.highlightedIndex === undefined ? prevState : prevProps,\n prevHighlightedIndex = _ref11.highlightedIndex;\n\n var scrollWhenOpen = currentHighlightedIndex && this.getState().isOpen && !prevState.isOpen;\n var scrollWhenNavigating = currentHighlightedIndex !== prevHighlightedIndex;\n return scrollWhenOpen || scrollWhenNavigating;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (process.env.NODE_ENV !== 'production') {\n validateControlledUnchanged(this.state, prevProps, this.props);\n /* istanbul ignore if (react-native) */\n\n if (this.getMenuProps.called && !this.getMenuProps.suppressRefError) {\n validateGetMenuPropsCalledCorrectly(this._menuNode, this.getMenuProps);\n }\n }\n\n if (isControlledProp(this.props, 'selectedItem') && this.props.selectedItemChanged(prevProps.selectedItem, this.props.selectedItem)) {\n this.internalSetState({\n type: controlledPropUpdatedSelectedItem,\n inputValue: this.props.itemToString(this.props.selectedItem)\n });\n }\n\n if (!this.avoidScrolling && this.shouldScroll(prevState, prevProps)) {\n this.scrollHighlightedItemIntoView();\n }\n /* istanbul ignore else (react-native) */\n\n\n {\n this.updateStatus();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cleanup(); // avoids memory leak\n };\n\n _proto.render = function render() {\n var children = unwrapArray(this.props.children, noop); // because the items are rerendered every time we call the children\n // we clear this out each render and it will be populated again as\n // getItemProps is called.\n\n this.clearItems(); // we reset this so we know whether the user calls getRootProps during\n // this render. If they do then we don't need to do anything,\n // if they don't then we need to clone the element they return and\n // apply the props for them.\n\n this.getRootProps.called = false;\n this.getRootProps.refKey = undefined;\n this.getRootProps.suppressRefError = undefined; // we do something similar for getMenuProps\n\n this.getMenuProps.called = false;\n this.getMenuProps.refKey = undefined;\n this.getMenuProps.suppressRefError = undefined; // we do something similar for getLabelProps\n\n this.getLabelProps.called = false; // and something similar for getInputProps\n\n this.getInputProps.called = false;\n var element = unwrapArray(children(this.getStateAndHelpers()));\n\n if (!element) {\n return null;\n }\n\n if (this.getRootProps.called || this.props.suppressRefError) {\n if (process.env.NODE_ENV !== 'production' && !this.getRootProps.suppressRefError && !this.props.suppressRefError) {\n validateGetRootPropsCalledCorrectly(element, this.getRootProps);\n }\n\n return element;\n } else if (isDOMElement(element)) {\n // they didn't apply the root props, but we can clone\n // this and apply the props ourselves\n return /*#__PURE__*/cloneElement(element, this.getRootProps(getElementProps(element)));\n }\n /* istanbul ignore else */\n\n\n if (process.env.NODE_ENV !== 'production') {\n // they didn't apply the root props, but they need to\n // otherwise we can't query around the autocomplete\n throw new Error('downshift: If you return a non-DOM element, you must apply the getRootProps function');\n }\n /* istanbul ignore next */\n\n\n return undefined;\n };\n\n return Downshift;\n }(Component);\n\n Downshift.defaultProps = {\n defaultHighlightedIndex: null,\n defaultIsOpen: false,\n getA11yStatusMessage: getA11yStatusMessage$1,\n itemToString: function itemToString(i) {\n if (i == null) {\n return '';\n }\n\n if (process.env.NODE_ENV !== 'production' && isPlainObject(i) && !i.hasOwnProperty('toString')) {\n // eslint-disable-next-line no-console\n console.warn('downshift: An object was passed to the default implementation of `itemToString`. You should probably provide your own `itemToString` implementation. Please refer to the `itemToString` API documentation.', 'The object that was passed:', i);\n }\n\n return String(i);\n },\n onStateChange: noop,\n onInputValueChange: noop,\n onUserAction: noop,\n onChange: noop,\n onSelect: noop,\n onOuterClick: noop,\n selectedItemChanged: function selectedItemChanged(prevItem, item) {\n return prevItem !== item;\n },\n environment:\n /* istanbul ignore next (ssr) */\n typeof window === 'undefined' ? {} : window,\n stateReducer: function stateReducer(state, stateToSet) {\n return stateToSet;\n },\n suppressRefError: false,\n scrollIntoView: scrollIntoView\n };\n Downshift.stateChangeTypes = stateChangeTypes$3;\n return Downshift;\n}();\n\nprocess.env.NODE_ENV !== \"production\" ? Downshift.propTypes = {\n children: PropTypes.func,\n defaultHighlightedIndex: PropTypes.number,\n defaultIsOpen: PropTypes.bool,\n initialHighlightedIndex: PropTypes.number,\n initialSelectedItem: PropTypes.any,\n initialInputValue: PropTypes.string,\n initialIsOpen: PropTypes.bool,\n getA11yStatusMessage: PropTypes.func,\n itemToString: PropTypes.func,\n onChange: PropTypes.func,\n onSelect: PropTypes.func,\n onStateChange: PropTypes.func,\n onInputValueChange: PropTypes.func,\n onUserAction: PropTypes.func,\n onOuterClick: PropTypes.func,\n selectedItemChanged: PropTypes.func,\n stateReducer: PropTypes.func,\n itemCount: PropTypes.number,\n id: PropTypes.string,\n environment: PropTypes.shape({\n addEventListener: PropTypes.func,\n removeEventListener: PropTypes.func,\n document: PropTypes.shape({\n getElementById: PropTypes.func,\n activeElement: PropTypes.any,\n body: PropTypes.any\n })\n }),\n suppressRefError: PropTypes.bool,\n scrollIntoView: PropTypes.func,\n // things we keep in state for uncontrolled components\n // but can accept as props for controlled components\n\n /* eslint-disable react/no-unused-prop-types */\n selectedItem: PropTypes.any,\n isOpen: PropTypes.bool,\n inputValue: PropTypes.string,\n highlightedIndex: PropTypes.number,\n labelId: PropTypes.string,\n inputId: PropTypes.string,\n menuId: PropTypes.string,\n getItemId: PropTypes.func\n /* eslint-enable react/no-unused-prop-types */\n\n} : void 0;\nvar Downshift$1 = Downshift;\n\nfunction validateGetMenuPropsCalledCorrectly(node, _ref12) {\n var refKey = _ref12.refKey;\n\n if (!node) {\n // eslint-disable-next-line no-console\n console.error(\"downshift: The ref prop \\\"\" + refKey + \"\\\" from getMenuProps was not applied correctly on your menu element.\");\n }\n}\n\nfunction validateGetRootPropsCalledCorrectly(element, _ref13) {\n var refKey = _ref13.refKey;\n var refKeySpecified = refKey !== 'ref';\n var isComposite = !isDOMElement(element);\n\n if (isComposite && !refKeySpecified && !isForwardRef(element)) {\n // eslint-disable-next-line no-console\n console.error('downshift: You returned a non-DOM element. You must specify a refKey in getRootProps');\n } else if (!isComposite && refKeySpecified) {\n // eslint-disable-next-line no-console\n console.error(\"downshift: You returned a DOM element. You should not specify a refKey in getRootProps. You specified \\\"\" + refKey + \"\\\"\");\n }\n\n if (!isForwardRef(element) && !getElementProps(element)[refKey]) {\n // eslint-disable-next-line no-console\n console.error(\"downshift: You must apply the ref prop \\\"\" + refKey + \"\\\" from getRootProps onto your root element.\");\n }\n}\n\nvar _excluded$3 = [\"isInitialMount\", \"highlightedIndex\", \"items\", \"environment\"];\nvar dropdownDefaultStateValues = {\n highlightedIndex: -1,\n isOpen: false,\n selectedItem: null,\n inputValue: ''\n};\n\nfunction callOnChangeProps(action, state, newState) {\n var props = action.props,\n type = action.type;\n var changes = {};\n Object.keys(state).forEach(function (key) {\n invokeOnChangeHandler(key, action, state, newState);\n\n if (newState[key] !== state[key]) {\n changes[key] = newState[key];\n }\n });\n\n if (props.onStateChange && Object.keys(changes).length) {\n props.onStateChange(_extends({\n type: type\n }, changes));\n }\n}\n\nfunction invokeOnChangeHandler(key, action, state, newState) {\n var props = action.props,\n type = action.type;\n var handler = \"on\" + capitalizeString(key) + \"Change\";\n\n if (props[handler] && newState[key] !== undefined && newState[key] !== state[key]) {\n props[handler](_extends({\n type: type\n }, newState));\n }\n}\n/**\n * Default state reducer that returns the changes.\n *\n * @param {Object} s state.\n * @param {Object} a action with changes.\n * @returns {Object} changes.\n */\n\n\nfunction stateReducer(s, a) {\n return a.changes;\n}\n/**\n * Returns a message to be added to aria-live region when item is selected.\n *\n * @param {Object} selectionParameters Parameters required to build the message.\n * @returns {string} The a11y message.\n */\n\n\nfunction getA11ySelectionMessage(selectionParameters) {\n var selectedItem = selectionParameters.selectedItem,\n itemToStringLocal = selectionParameters.itemToString;\n return selectedItem ? itemToStringLocal(selectedItem) + \" has been selected.\" : '';\n}\n/**\n * Debounced call for updating the a11y message.\n */\n\n\nvar updateA11yStatus = debounce(function (getA11yMessage, document) {\n setStatus(getA11yMessage(), document);\n}, 200); // istanbul ignore next\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\n\nfunction useElementIds(_ref) {\n var _ref$id = _ref.id,\n id = _ref$id === void 0 ? \"downshift-\" + generateId() : _ref$id,\n labelId = _ref.labelId,\n menuId = _ref.menuId,\n getItemId = _ref.getItemId,\n toggleButtonId = _ref.toggleButtonId,\n inputId = _ref.inputId;\n var elementIdsRef = useRef({\n labelId: labelId || id + \"-label\",\n menuId: menuId || id + \"-menu\",\n getItemId: getItemId || function (index) {\n return id + \"-item-\" + index;\n },\n toggleButtonId: toggleButtonId || id + \"-toggle-button\",\n inputId: inputId || id + \"-input\"\n });\n return elementIdsRef.current;\n}\n\nfunction getItemIndex(index, item, items) {\n if (index !== undefined) {\n return index;\n }\n\n if (items.length === 0) {\n return -1;\n }\n\n return items.indexOf(item);\n}\n\nfunction itemToString(item) {\n return item ? String(item) : '';\n}\n\nfunction isAcceptedCharacterKey(key) {\n return /^\\S{1}$/.test(key);\n}\n\nfunction capitalizeString(string) {\n return \"\" + string.slice(0, 1).toUpperCase() + string.slice(1);\n}\n\nfunction useLatestRef(val) {\n var ref = useRef(val); // technically this is not \"concurrent mode safe\" because we're manipulating\n // the value during render (so it's not idempotent). However, the places this\n // hook is used is to support memoizing callbacks which will be called\n // *during* render, so we need the latest values *during* render.\n // If not for this, then we'd probably want to use useLayoutEffect instead.\n\n ref.current = val;\n return ref;\n}\n/**\n * Computes the controlled state using a the previous state, props,\n * two reducers, one from downshift and an optional one from the user.\n * Also calls the onChange handlers for state values that have changed.\n *\n * @param {Function} reducer Reducer function from downshift.\n * @param {Object} initialState Initial state of the hook.\n * @param {Object} props The hook props.\n * @returns {Array} An array with the state and an action dispatcher.\n */\n\n\nfunction useEnhancedReducer(reducer, initialState, props) {\n var prevStateRef = useRef();\n var actionRef = useRef();\n var enhancedReducer = useCallback(function (state, action) {\n actionRef.current = action;\n state = getState(state, action.props);\n var changes = reducer(state, action);\n var newState = action.props.stateReducer(state, _extends({}, action, {\n changes: changes\n }));\n return newState;\n }, [reducer]);\n\n var _useReducer = useReducer(enhancedReducer, initialState),\n state = _useReducer[0],\n dispatch = _useReducer[1];\n\n var propsRef = useLatestRef(props);\n var dispatchWithProps = useCallback(function (action) {\n return dispatch(_extends({\n props: propsRef.current\n }, action));\n }, [propsRef]);\n var action = actionRef.current;\n useEffect(function () {\n if (action && prevStateRef.current && prevStateRef.current !== state) {\n callOnChangeProps(action, getState(prevStateRef.current, action.props), state);\n }\n\n prevStateRef.current = state;\n }, [state, props, action]);\n return [state, dispatchWithProps];\n}\n/**\n * Wraps the useEnhancedReducer and applies the controlled prop values before\n * returning the new state.\n *\n * @param {Function} reducer Reducer function from downshift.\n * @param {Object} initialState Initial state of the hook.\n * @param {Object} props The hook props.\n * @returns {Array} An array with the state and an action dispatcher.\n */\n\n\nfunction useControlledReducer$1(reducer, initialState, props) {\n var _useEnhancedReducer = useEnhancedReducer(reducer, initialState, props),\n state = _useEnhancedReducer[0],\n dispatch = _useEnhancedReducer[1];\n\n return [getState(state, props), dispatch];\n}\n\nvar defaultProps$3 = {\n itemToString: itemToString,\n stateReducer: stateReducer,\n getA11ySelectionMessage: getA11ySelectionMessage,\n scrollIntoView: scrollIntoView,\n circularNavigation: false,\n environment:\n /* istanbul ignore next (ssr) */\n typeof window === 'undefined' ? {} : window\n};\n\nfunction getDefaultValue$1(props, propKey, defaultStateValues) {\n if (defaultStateValues === void 0) {\n defaultStateValues = dropdownDefaultStateValues;\n }\n\n var defaultPropKey = \"default\" + capitalizeString(propKey);\n\n if (defaultPropKey in props) {\n return props[defaultPropKey];\n }\n\n return defaultStateValues[propKey];\n}\n\nfunction getInitialValue$1(props, propKey, defaultStateValues) {\n if (defaultStateValues === void 0) {\n defaultStateValues = dropdownDefaultStateValues;\n }\n\n if (propKey in props) {\n return props[propKey];\n }\n\n var initialPropKey = \"initial\" + capitalizeString(propKey);\n\n if (initialPropKey in props) {\n return props[initialPropKey];\n }\n\n return getDefaultValue$1(props, propKey, defaultStateValues);\n}\n\nfunction getInitialState$2(props) {\n var selectedItem = getInitialValue$1(props, 'selectedItem');\n var isOpen = getInitialValue$1(props, 'isOpen');\n var highlightedIndex = getInitialValue$1(props, 'highlightedIndex');\n var inputValue = getInitialValue$1(props, 'inputValue');\n return {\n highlightedIndex: highlightedIndex < 0 && selectedItem && isOpen ? props.items.indexOf(selectedItem) : highlightedIndex,\n isOpen: isOpen,\n selectedItem: selectedItem,\n inputValue: inputValue\n };\n}\n\nfunction getHighlightedIndexOnOpen(props, state, offset, getItemNodeFromIndex) {\n var items = props.items,\n initialHighlightedIndex = props.initialHighlightedIndex,\n defaultHighlightedIndex = props.defaultHighlightedIndex;\n var selectedItem = state.selectedItem,\n highlightedIndex = state.highlightedIndex;\n\n if (items.length === 0) {\n return -1;\n } // initialHighlightedIndex will give value to highlightedIndex on initial state only.\n\n\n if (initialHighlightedIndex !== undefined && highlightedIndex === initialHighlightedIndex) {\n return initialHighlightedIndex;\n }\n\n if (defaultHighlightedIndex !== undefined) {\n return defaultHighlightedIndex;\n }\n\n if (selectedItem) {\n if (offset === 0) {\n return items.indexOf(selectedItem);\n }\n\n return getNextWrappingIndex(offset, items.indexOf(selectedItem), items.length, getItemNodeFromIndex, false);\n }\n\n if (offset === 0) {\n return -1;\n }\n\n return offset < 0 ? items.length - 1 : 0;\n}\n/**\n * Reuse the movement tracking of mouse and touch events.\n *\n * @param {boolean} isOpen Whether the dropdown is open or not.\n * @param {Array} downshiftElementRefs Downshift element refs to track movement (toggleButton, menu etc.)\n * @param {Object} environment Environment where component/hook exists.\n * @param {Function} handleBlur Handler on blur from mouse or touch.\n * @returns {Object} Ref containing whether mouseDown or touchMove event is happening\n */\n\n\nfunction useMouseAndTouchTracker(isOpen, downshiftElementRefs, environment, handleBlur) {\n var mouseAndTouchTrackersRef = useRef({\n isMouseDown: false,\n isTouchMove: false\n });\n useEffect(function () {\n // The same strategy for checking if a click occurred inside or outside downsift\n // as in downshift.js.\n var onMouseDown = function onMouseDown() {\n mouseAndTouchTrackersRef.current.isMouseDown = true;\n };\n\n var onMouseUp = function onMouseUp(event) {\n mouseAndTouchTrackersRef.current.isMouseDown = false;\n\n if (isOpen && !targetWithinDownshift(event.target, downshiftElementRefs.map(function (ref) {\n return ref.current;\n }), environment)) {\n handleBlur();\n }\n };\n\n var onTouchStart = function onTouchStart() {\n mouseAndTouchTrackersRef.current.isTouchMove = false;\n };\n\n var onTouchMove = function onTouchMove() {\n mouseAndTouchTrackersRef.current.isTouchMove = true;\n };\n\n var onTouchEnd = function onTouchEnd(event) {\n if (isOpen && !mouseAndTouchTrackersRef.current.isTouchMove && !targetWithinDownshift(event.target, downshiftElementRefs.map(function (ref) {\n return ref.current;\n }), environment, false)) {\n handleBlur();\n }\n };\n\n environment.addEventListener('mousedown', onMouseDown);\n environment.addEventListener('mouseup', onMouseUp);\n environment.addEventListener('touchstart', onTouchStart);\n environment.addEventListener('touchmove', onTouchMove);\n environment.addEventListener('touchend', onTouchEnd);\n return function cleanup() {\n environment.removeEventListener('mousedown', onMouseDown);\n environment.removeEventListener('mouseup', onMouseUp);\n environment.removeEventListener('touchstart', onTouchStart);\n environment.removeEventListener('touchmove', onTouchMove);\n environment.removeEventListener('touchend', onTouchEnd);\n }; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen, environment]);\n return mouseAndTouchTrackersRef;\n}\n/* istanbul ignore next */\n// eslint-disable-next-line import/no-mutable-exports\n\n\nvar useGetterPropsCalledChecker = function useGetterPropsCalledChecker() {\n return noop;\n};\n/**\n * Custom hook that checks if getter props are called correctly.\n *\n * @param {...any} propKeys Getter prop names to be handled.\n * @returns {Function} Setter function called inside getter props to set call information.\n */\n\n/* istanbul ignore next */\n\n\nif (process.env.NODE_ENV !== 'production') {\n useGetterPropsCalledChecker = function useGetterPropsCalledChecker() {\n var isInitialMountRef = useRef(true);\n\n for (var _len = arguments.length, propKeys = new Array(_len), _key = 0; _key < _len; _key++) {\n propKeys[_key] = arguments[_key];\n }\n\n var getterPropsCalledRef = useRef(propKeys.reduce(function (acc, propKey) {\n acc[propKey] = {};\n return acc;\n }, {}));\n useEffect(function () {\n Object.keys(getterPropsCalledRef.current).forEach(function (propKey) {\n var propCallInfo = getterPropsCalledRef.current[propKey];\n\n if (isInitialMountRef.current) {\n if (!Object.keys(propCallInfo).length) {\n // eslint-disable-next-line no-console\n console.error(\"downshift: You forgot to call the \" + propKey + \" getter function on your component / element.\");\n return;\n }\n }\n\n var suppressRefError = propCallInfo.suppressRefError,\n refKey = propCallInfo.refKey,\n elementRef = propCallInfo.elementRef;\n\n if ((!elementRef || !elementRef.current) && !suppressRefError) {\n // eslint-disable-next-line no-console\n console.error(\"downshift: The ref prop \\\"\" + refKey + \"\\\" from \" + propKey + \" was not applied correctly on your element.\");\n }\n });\n isInitialMountRef.current = false;\n });\n var setGetterPropCallInfo = useCallback(function (propKey, suppressRefError, refKey, elementRef) {\n getterPropsCalledRef.current[propKey] = {\n suppressRefError: suppressRefError,\n refKey: refKey,\n elementRef: elementRef\n };\n }, []);\n return setGetterPropCallInfo;\n };\n}\n\nfunction useA11yMessageSetter(getA11yMessage, dependencyArray, _ref2) {\n var isInitialMount = _ref2.isInitialMount,\n highlightedIndex = _ref2.highlightedIndex,\n items = _ref2.items,\n environment = _ref2.environment,\n rest = _objectWithoutPropertiesLoose(_ref2, _excluded$3);\n\n // Sets a11y status message on changes in state.\n useEffect(function () {\n if (isInitialMount || false) {\n return;\n }\n\n updateA11yStatus(function () {\n return getA11yMessage(_extends({\n highlightedIndex: highlightedIndex,\n highlightedItem: items[highlightedIndex],\n resultCount: items.length\n }, rest));\n }, environment.document); // eslint-disable-next-line react-hooks/exhaustive-deps\n }, dependencyArray);\n}\n\nfunction useScrollIntoView(_ref3) {\n var highlightedIndex = _ref3.highlightedIndex,\n isOpen = _ref3.isOpen,\n itemRefs = _ref3.itemRefs,\n getItemNodeFromIndex = _ref3.getItemNodeFromIndex,\n menuElement = _ref3.menuElement,\n scrollIntoViewProp = _ref3.scrollIntoView;\n // used not to scroll on highlight by mouse.\n var shouldScrollRef = useRef(true); // Scroll on highlighted item if change comes from keyboard.\n\n useIsomorphicLayoutEffect(function () {\n if (highlightedIndex < 0 || !isOpen || !Object.keys(itemRefs.current).length) {\n return;\n }\n\n if (shouldScrollRef.current === false) {\n shouldScrollRef.current = true;\n } else {\n scrollIntoViewProp(getItemNodeFromIndex(highlightedIndex), menuElement);\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, [highlightedIndex]);\n return shouldScrollRef;\n} // eslint-disable-next-line import/no-mutable-exports\n\n\nvar useControlPropsValidator = noop;\n/* istanbul ignore next */\n\nif (process.env.NODE_ENV !== 'production') {\n useControlPropsValidator = function useControlPropsValidator(_ref4) {\n var isInitialMount = _ref4.isInitialMount,\n props = _ref4.props,\n state = _ref4.state;\n // used for checking when props are moving from controlled to uncontrolled.\n var prevPropsRef = useRef(props);\n useEffect(function () {\n if (isInitialMount) {\n return;\n }\n\n validateControlledUnchanged(state, prevPropsRef.current, props);\n prevPropsRef.current = props;\n }, [state, props, isInitialMount]);\n };\n}\n\n/* eslint-disable complexity */\n\nfunction downshiftCommonReducer(state, action, stateChangeTypes) {\n var type = action.type,\n props = action.props;\n var changes;\n\n switch (type) {\n case stateChangeTypes.ItemMouseMove:\n changes = {\n highlightedIndex: action.index\n };\n break;\n\n case stateChangeTypes.MenuMouseLeave:\n changes = {\n highlightedIndex: -1\n };\n break;\n\n case stateChangeTypes.ToggleButtonClick:\n case stateChangeTypes.FunctionToggleMenu:\n changes = {\n isOpen: !state.isOpen,\n highlightedIndex: state.isOpen ? -1 : getHighlightedIndexOnOpen(props, state, 0)\n };\n break;\n\n case stateChangeTypes.FunctionOpenMenu:\n changes = {\n isOpen: true,\n highlightedIndex: getHighlightedIndexOnOpen(props, state, 0)\n };\n break;\n\n case stateChangeTypes.FunctionCloseMenu:\n changes = {\n isOpen: false\n };\n break;\n\n case stateChangeTypes.FunctionSetHighlightedIndex:\n changes = {\n highlightedIndex: action.highlightedIndex\n };\n break;\n\n case stateChangeTypes.FunctionSetInputValue:\n changes = {\n inputValue: action.inputValue\n };\n break;\n\n case stateChangeTypes.FunctionReset:\n changes = {\n highlightedIndex: getDefaultValue$1(props, 'highlightedIndex'),\n isOpen: getDefaultValue$1(props, 'isOpen'),\n selectedItem: getDefaultValue$1(props, 'selectedItem'),\n inputValue: getDefaultValue$1(props, 'inputValue')\n };\n break;\n\n default:\n throw new Error('Reducer called without proper action type.');\n }\n\n return _extends({}, state, changes);\n}\n/* eslint-enable complexity */\n\nfunction getItemIndexByCharacterKey(_a) {\n var keysSoFar = _a.keysSoFar, highlightedIndex = _a.highlightedIndex, items = _a.items, itemToString = _a.itemToString, getItemNodeFromIndex = _a.getItemNodeFromIndex;\n var lowerCasedKeysSoFar = keysSoFar.toLowerCase();\n for (var index = 0; index < items.length; index++) {\n var offsetIndex = (index + highlightedIndex + 1) % items.length;\n var item = items[offsetIndex];\n if (item !== undefined &&\n itemToString(item)\n .toLowerCase()\n .startsWith(lowerCasedKeysSoFar)) {\n var element = getItemNodeFromIndex(offsetIndex);\n if (!(element === null || element === void 0 ? void 0 : element.hasAttribute('disabled'))) {\n return offsetIndex;\n }\n }\n }\n return highlightedIndex;\n}\nvar propTypes$2 = {\n items: PropTypes.array.isRequired,\n itemToString: PropTypes.func,\n getA11yStatusMessage: PropTypes.func,\n getA11ySelectionMessage: PropTypes.func,\n circularNavigation: PropTypes.bool,\n highlightedIndex: PropTypes.number,\n defaultHighlightedIndex: PropTypes.number,\n initialHighlightedIndex: PropTypes.number,\n isOpen: PropTypes.bool,\n defaultIsOpen: PropTypes.bool,\n initialIsOpen: PropTypes.bool,\n selectedItem: PropTypes.any,\n initialSelectedItem: PropTypes.any,\n defaultSelectedItem: PropTypes.any,\n id: PropTypes.string,\n labelId: PropTypes.string,\n menuId: PropTypes.string,\n getItemId: PropTypes.func,\n toggleButtonId: PropTypes.string,\n stateReducer: PropTypes.func,\n onSelectedItemChange: PropTypes.func,\n onHighlightedIndexChange: PropTypes.func,\n onStateChange: PropTypes.func,\n onIsOpenChange: PropTypes.func,\n environment: PropTypes.shape({\n addEventListener: PropTypes.func,\n removeEventListener: PropTypes.func,\n document: PropTypes.shape({\n getElementById: PropTypes.func,\n activeElement: PropTypes.any,\n body: PropTypes.any\n })\n })\n};\n/**\n * Default implementation for status message. Only added when menu is open.\n * Will specift if there are results in the list, and if so, how many,\n * and what keys are relevant.\n *\n * @param {Object} param the downshift state and other relevant properties\n * @return {String} the a11y status message\n */\nfunction getA11yStatusMessage(_a) {\n var isOpen = _a.isOpen, resultCount = _a.resultCount, previousResultCount = _a.previousResultCount;\n if (!isOpen) {\n return '';\n }\n if (!resultCount) {\n return 'No results are available.';\n }\n if (resultCount !== previousResultCount) {\n return resultCount + \" result\" + (resultCount === 1 ? ' is' : 's are') + \" available, use up and down arrow keys to navigate. Press Enter or Space Bar keys to select.\";\n }\n return '';\n}\nvar defaultProps$2 = __assign(__assign({}, defaultProps$3), { getA11yStatusMessage: getA11yStatusMessage });\n// eslint-disable-next-line import/no-mutable-exports\nvar validatePropTypes$2 = noop;\n/* istanbul ignore next */\nif (process.env.NODE_ENV !== 'production') {\n validatePropTypes$2 = function (options, caller) {\n PropTypes.checkPropTypes(propTypes$2, options, 'prop', caller.name);\n };\n}\n\nvar MenuKeyDownArrowDown = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_arrow_down__' : 0;\nvar MenuKeyDownArrowUp = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_arrow_up__' : 1;\nvar MenuKeyDownEscape = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_escape__' : 2;\nvar MenuKeyDownHome = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_home__' : 3;\nvar MenuKeyDownEnd = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_end__' : 4;\nvar MenuKeyDownEnter = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_enter__' : 5;\nvar MenuKeyDownSpaceButton = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_space_button__' : 6;\nvar MenuKeyDownCharacter = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_character__' : 7;\nvar MenuBlur = process.env.NODE_ENV !== \"production\" ? '__menu_blur__' : 8;\nvar MenuMouseLeave$1 = process.env.NODE_ENV !== \"production\" ? '__menu_mouse_leave__' : 9;\nvar ItemMouseMove$1 = process.env.NODE_ENV !== \"production\" ? '__item_mouse_move__' : 10;\nvar ItemClick$1 = process.env.NODE_ENV !== \"production\" ? '__item_click__' : 11;\nvar ToggleButtonClick$1 = process.env.NODE_ENV !== \"production\" ? '__togglebutton_click__' : 12;\nvar ToggleButtonKeyDownArrowDown = process.env.NODE_ENV !== \"production\" ? '__togglebutton_keydown_arrow_down__' : 13;\nvar ToggleButtonKeyDownArrowUp = process.env.NODE_ENV !== \"production\" ? '__togglebutton_keydown_arrow_up__' : 14;\nvar ToggleButtonKeyDownCharacter = process.env.NODE_ENV !== \"production\" ? '__togglebutton_keydown_character__' : 15;\nvar FunctionToggleMenu$1 = process.env.NODE_ENV !== \"production\" ? '__function_toggle_menu__' : 16;\nvar FunctionOpenMenu$1 = process.env.NODE_ENV !== \"production\" ? '__function_open_menu__' : 17;\nvar FunctionCloseMenu$1 = process.env.NODE_ENV !== \"production\" ? '__function_close_menu__' : 18;\nvar FunctionSetHighlightedIndex$1 = process.env.NODE_ENV !== \"production\" ? '__function_set_highlighted_index__' : 19;\nvar FunctionSelectItem$1 = process.env.NODE_ENV !== \"production\" ? '__function_select_item__' : 20;\nvar FunctionSetInputValue$1 = process.env.NODE_ENV !== \"production\" ? '__function_set_input_value__' : 21;\nvar FunctionReset$2 = process.env.NODE_ENV !== \"production\" ? '__function_reset__' : 22;\n\nvar stateChangeTypes$2 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MenuKeyDownArrowDown: MenuKeyDownArrowDown,\n MenuKeyDownArrowUp: MenuKeyDownArrowUp,\n MenuKeyDownEscape: MenuKeyDownEscape,\n MenuKeyDownHome: MenuKeyDownHome,\n MenuKeyDownEnd: MenuKeyDownEnd,\n MenuKeyDownEnter: MenuKeyDownEnter,\n MenuKeyDownSpaceButton: MenuKeyDownSpaceButton,\n MenuKeyDownCharacter: MenuKeyDownCharacter,\n MenuBlur: MenuBlur,\n MenuMouseLeave: MenuMouseLeave$1,\n ItemMouseMove: ItemMouseMove$1,\n ItemClick: ItemClick$1,\n ToggleButtonClick: ToggleButtonClick$1,\n ToggleButtonKeyDownArrowDown: ToggleButtonKeyDownArrowDown,\n ToggleButtonKeyDownArrowUp: ToggleButtonKeyDownArrowUp,\n ToggleButtonKeyDownCharacter: ToggleButtonKeyDownCharacter,\n FunctionToggleMenu: FunctionToggleMenu$1,\n FunctionOpenMenu: FunctionOpenMenu$1,\n FunctionCloseMenu: FunctionCloseMenu$1,\n FunctionSetHighlightedIndex: FunctionSetHighlightedIndex$1,\n FunctionSelectItem: FunctionSelectItem$1,\n FunctionSetInputValue: FunctionSetInputValue$1,\n FunctionReset: FunctionReset$2\n});\n\n/* eslint-disable complexity */\n\nfunction downshiftSelectReducer(state, action) {\n var type = action.type,\n props = action.props,\n shiftKey = action.shiftKey;\n var changes;\n\n switch (type) {\n case ItemClick$1:\n changes = {\n isOpen: getDefaultValue$1(props, 'isOpen'),\n highlightedIndex: getDefaultValue$1(props, 'highlightedIndex'),\n selectedItem: props.items[action.index]\n };\n break;\n\n case ToggleButtonKeyDownCharacter:\n {\n var lowercasedKey = action.key;\n var inputValue = \"\" + state.inputValue + lowercasedKey;\n var itemIndex = getItemIndexByCharacterKey({\n keysSoFar: inputValue,\n highlightedIndex: state.selectedItem ? props.items.indexOf(state.selectedItem) : -1,\n items: props.items,\n itemToString: props.itemToString,\n getItemNodeFromIndex: action.getItemNodeFromIndex\n });\n changes = _extends({\n inputValue: inputValue\n }, itemIndex >= 0 && {\n selectedItem: props.items[itemIndex]\n });\n }\n break;\n\n case ToggleButtonKeyDownArrowDown:\n changes = {\n highlightedIndex: getHighlightedIndexOnOpen(props, state, 1, action.getItemNodeFromIndex),\n isOpen: true\n };\n break;\n\n case ToggleButtonKeyDownArrowUp:\n changes = {\n highlightedIndex: getHighlightedIndexOnOpen(props, state, -1, action.getItemNodeFromIndex),\n isOpen: true\n };\n break;\n\n case MenuKeyDownEnter:\n case MenuKeyDownSpaceButton:\n changes = _extends({\n isOpen: getDefaultValue$1(props, 'isOpen'),\n highlightedIndex: getDefaultValue$1(props, 'highlightedIndex')\n }, state.highlightedIndex >= 0 && {\n selectedItem: props.items[state.highlightedIndex]\n });\n break;\n\n case MenuKeyDownHome:\n changes = {\n highlightedIndex: getNextNonDisabledIndex(1, 0, props.items.length, action.getItemNodeFromIndex, false)\n };\n break;\n\n case MenuKeyDownEnd:\n changes = {\n highlightedIndex: getNextNonDisabledIndex(-1, props.items.length - 1, props.items.length, action.getItemNodeFromIndex, false)\n };\n break;\n\n case MenuKeyDownEscape:\n changes = {\n isOpen: false,\n highlightedIndex: -1\n };\n break;\n\n case MenuBlur:\n changes = {\n isOpen: false,\n highlightedIndex: -1\n };\n break;\n\n case MenuKeyDownCharacter:\n {\n var _lowercasedKey = action.key;\n\n var _inputValue = \"\" + state.inputValue + _lowercasedKey;\n\n var highlightedIndex = getItemIndexByCharacterKey({\n keysSoFar: _inputValue,\n highlightedIndex: state.highlightedIndex,\n items: props.items,\n itemToString: props.itemToString,\n getItemNodeFromIndex: action.getItemNodeFromIndex\n });\n changes = _extends({\n inputValue: _inputValue\n }, highlightedIndex >= 0 && {\n highlightedIndex: highlightedIndex\n });\n }\n break;\n\n case MenuKeyDownArrowDown:\n changes = {\n highlightedIndex: getNextWrappingIndex(shiftKey ? 5 : 1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n };\n break;\n\n case MenuKeyDownArrowUp:\n changes = {\n highlightedIndex: getNextWrappingIndex(shiftKey ? -5 : -1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n };\n break;\n\n case FunctionSelectItem$1:\n changes = {\n selectedItem: action.selectedItem\n };\n break;\n\n default:\n return downshiftCommonReducer(state, action, stateChangeTypes$2);\n }\n\n return _extends({}, state, changes);\n}\n/* eslint-enable complexity */\n\nvar _excluded$2 = [\"onMouseLeave\", \"refKey\", \"onKeyDown\", \"onBlur\", \"ref\"],\n _excluded2$2 = [\"onClick\", \"onKeyDown\", \"refKey\", \"ref\"],\n _excluded3$1 = [\"item\", \"index\", \"onMouseMove\", \"onClick\", \"refKey\", \"ref\"];\nuseSelect.stateChangeTypes = stateChangeTypes$2;\n\nfunction useSelect(userProps) {\n if (userProps === void 0) {\n userProps = {};\n }\n\n validatePropTypes$2(userProps, useSelect); // Props defaults and destructuring.\n\n var props = _extends({}, defaultProps$2, userProps);\n\n var items = props.items,\n scrollIntoView = props.scrollIntoView,\n environment = props.environment,\n initialIsOpen = props.initialIsOpen,\n defaultIsOpen = props.defaultIsOpen,\n itemToString = props.itemToString,\n getA11ySelectionMessage = props.getA11ySelectionMessage,\n getA11yStatusMessage = props.getA11yStatusMessage; // Initial state depending on controlled props.\n\n var initialState = getInitialState$2(props);\n\n var _useControlledReducer = useControlledReducer$1(downshiftSelectReducer, initialState, props),\n state = _useControlledReducer[0],\n dispatch = _useControlledReducer[1];\n\n var isOpen = state.isOpen,\n highlightedIndex = state.highlightedIndex,\n selectedItem = state.selectedItem,\n inputValue = state.inputValue; // Element efs.\n\n var toggleButtonRef = useRef(null);\n var menuRef = useRef(null);\n var itemRefs = useRef({}); // used not to trigger menu blur action in some scenarios.\n\n var shouldBlurRef = useRef(true); // used to keep the inputValue clearTimeout object between renders.\n\n var clearTimeoutRef = useRef(null); // prevent id re-generation between renders.\n\n var elementIds = useElementIds(props); // used to keep track of how many items we had on previous cycle.\n\n var previousResultCountRef = useRef();\n var isInitialMountRef = useRef(true); // utility callback to get item element.\n\n var latest = useLatestRef({\n state: state,\n props: props\n }); // Some utils.\n\n var getItemNodeFromIndex = useCallback(function (index) {\n return itemRefs.current[elementIds.getItemId(index)];\n }, [elementIds]); // Effects.\n // Sets a11y status message on changes in state.\n\n useA11yMessageSetter(getA11yStatusMessage, [isOpen, highlightedIndex, inputValue, items], _extends({\n isInitialMount: isInitialMountRef.current,\n previousResultCount: previousResultCountRef.current,\n items: items,\n environment: environment,\n itemToString: itemToString\n }, state)); // Sets a11y status message on changes in selectedItem.\n\n useA11yMessageSetter(getA11ySelectionMessage, [selectedItem], _extends({\n isInitialMount: isInitialMountRef.current,\n previousResultCount: previousResultCountRef.current,\n items: items,\n environment: environment,\n itemToString: itemToString\n }, state)); // Scroll on highlighted item if change comes from keyboard.\n\n var shouldScrollRef = useScrollIntoView({\n menuElement: menuRef.current,\n highlightedIndex: highlightedIndex,\n isOpen: isOpen,\n itemRefs: itemRefs,\n scrollIntoView: scrollIntoView,\n getItemNodeFromIndex: getItemNodeFromIndex\n }); // Sets cleanup for the keysSoFar callback, debounded after 500ms.\n\n useEffect(function () {\n // init the clean function here as we need access to dispatch.\n clearTimeoutRef.current = debounce(function (outerDispatch) {\n outerDispatch({\n type: FunctionSetInputValue$1,\n inputValue: ''\n });\n }, 500); // Cancel any pending debounced calls on mount\n\n return function () {\n clearTimeoutRef.current.cancel();\n };\n }, []); // Invokes the keysSoFar callback set up above.\n\n useEffect(function () {\n if (!inputValue) {\n return;\n }\n\n clearTimeoutRef.current(dispatch);\n }, [dispatch, inputValue]);\n useControlPropsValidator({\n isInitialMount: isInitialMountRef.current,\n props: props,\n state: state\n });\n /* Controls the focus on the menu or the toggle button. */\n\n useEffect(function () {\n // Don't focus menu on first render.\n if (isInitialMountRef.current) {\n // Unless it was initialised as open.\n if ((initialIsOpen || defaultIsOpen || isOpen) && menuRef.current) {\n menuRef.current.focus();\n }\n\n return;\n } // Focus menu on open.\n\n\n if (isOpen) {\n // istanbul ignore else\n if (menuRef.current) {\n menuRef.current.focus();\n }\n\n return;\n } // Focus toggleButton on close, but not if it was closed with (Shift+)Tab.\n\n\n if (environment.document.activeElement === menuRef.current) {\n // istanbul ignore else\n if (toggleButtonRef.current) {\n shouldBlurRef.current = false;\n toggleButtonRef.current.focus();\n }\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, [isOpen]);\n useEffect(function () {\n if (isInitialMountRef.current) {\n return;\n }\n\n previousResultCountRef.current = items.length;\n }); // Add mouse/touch events to document.\n\n var mouseAndTouchTrackersRef = useMouseAndTouchTracker(isOpen, [menuRef, toggleButtonRef], environment, function () {\n dispatch({\n type: MenuBlur\n });\n });\n var setGetterPropCallInfo = useGetterPropsCalledChecker('getMenuProps', 'getToggleButtonProps'); // Make initial ref false.\n\n useEffect(function () {\n isInitialMountRef.current = false;\n }, []); // Reset itemRefs on close.\n\n useEffect(function () {\n if (!isOpen) {\n itemRefs.current = {};\n }\n }, [isOpen]); // Event handler functions.\n\n var toggleButtonKeyDownHandlers = useMemo(function () {\n return {\n ArrowDown: function ArrowDown(event) {\n event.preventDefault();\n dispatch({\n type: ToggleButtonKeyDownArrowDown,\n getItemNodeFromIndex: getItemNodeFromIndex,\n shiftKey: event.shiftKey\n });\n },\n ArrowUp: function ArrowUp(event) {\n event.preventDefault();\n dispatch({\n type: ToggleButtonKeyDownArrowUp,\n getItemNodeFromIndex: getItemNodeFromIndex,\n shiftKey: event.shiftKey\n });\n }\n };\n }, [dispatch, getItemNodeFromIndex]);\n var menuKeyDownHandlers = useMemo(function () {\n return {\n ArrowDown: function ArrowDown(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownArrowDown,\n getItemNodeFromIndex: getItemNodeFromIndex,\n shiftKey: event.shiftKey\n });\n },\n ArrowUp: function ArrowUp(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownArrowUp,\n getItemNodeFromIndex: getItemNodeFromIndex,\n shiftKey: event.shiftKey\n });\n },\n Home: function Home(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownHome,\n getItemNodeFromIndex: getItemNodeFromIndex\n });\n },\n End: function End(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownEnd,\n getItemNodeFromIndex: getItemNodeFromIndex\n });\n },\n Escape: function Escape() {\n dispatch({\n type: MenuKeyDownEscape\n });\n },\n Enter: function Enter(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownEnter\n });\n },\n ' ': function _(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownSpaceButton\n });\n }\n };\n }, [dispatch, getItemNodeFromIndex]); // Action functions.\n\n var toggleMenu = useCallback(function () {\n dispatch({\n type: FunctionToggleMenu$1\n });\n }, [dispatch]);\n var closeMenu = useCallback(function () {\n dispatch({\n type: FunctionCloseMenu$1\n });\n }, [dispatch]);\n var openMenu = useCallback(function () {\n dispatch({\n type: FunctionOpenMenu$1\n });\n }, [dispatch]);\n var setHighlightedIndex = useCallback(function (newHighlightedIndex) {\n dispatch({\n type: FunctionSetHighlightedIndex$1,\n highlightedIndex: newHighlightedIndex\n });\n }, [dispatch]);\n var selectItem = useCallback(function (newSelectedItem) {\n dispatch({\n type: FunctionSelectItem$1,\n selectedItem: newSelectedItem\n });\n }, [dispatch]);\n var reset = useCallback(function () {\n dispatch({\n type: FunctionReset$2\n });\n }, [dispatch]);\n var setInputValue = useCallback(function (newInputValue) {\n dispatch({\n type: FunctionSetInputValue$1,\n inputValue: newInputValue\n });\n }, [dispatch]); // Getter functions.\n\n var getLabelProps = useCallback(function (labelProps) {\n return _extends({\n id: elementIds.labelId,\n htmlFor: elementIds.toggleButtonId\n }, labelProps);\n }, [elementIds]);\n var getMenuProps = useCallback(function (_temp, _temp2) {\n var _extends2;\n\n var _ref = _temp === void 0 ? {} : _temp,\n onMouseLeave = _ref.onMouseLeave,\n _ref$refKey = _ref.refKey,\n refKey = _ref$refKey === void 0 ? 'ref' : _ref$refKey,\n onKeyDown = _ref.onKeyDown,\n onBlur = _ref.onBlur,\n ref = _ref.ref,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n _ref2$suppressRefErro = _ref2.suppressRefError,\n suppressRefError = _ref2$suppressRefErro === void 0 ? false : _ref2$suppressRefErro;\n\n var latestState = latest.current.state;\n\n var menuHandleKeyDown = function menuHandleKeyDown(event) {\n var key = normalizeArrowKey(event);\n\n if (key && menuKeyDownHandlers[key]) {\n menuKeyDownHandlers[key](event);\n } else if (isAcceptedCharacterKey(key)) {\n dispatch({\n type: MenuKeyDownCharacter,\n key: key,\n getItemNodeFromIndex: getItemNodeFromIndex\n });\n }\n };\n\n var menuHandleBlur = function menuHandleBlur() {\n // if the blur was a result of selection, we don't trigger this action.\n if (shouldBlurRef.current === false) {\n shouldBlurRef.current = true;\n return;\n }\n\n var shouldBlur = !mouseAndTouchTrackersRef.current.isMouseDown;\n /* istanbul ignore else */\n\n if (shouldBlur) {\n dispatch({\n type: MenuBlur\n });\n }\n };\n\n var menuHandleMouseLeave = function menuHandleMouseLeave() {\n dispatch({\n type: MenuMouseLeave$1\n });\n };\n\n setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);\n return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {\n menuRef.current = menuNode;\n }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.tabIndex = -1, _extends2), latestState.isOpen && latestState.highlightedIndex > -1 && {\n 'aria-activedescendant': elementIds.getItemId(latestState.highlightedIndex)\n }, {\n onMouseLeave: callAllEventHandlers(onMouseLeave, menuHandleMouseLeave),\n onKeyDown: callAllEventHandlers(onKeyDown, menuHandleKeyDown),\n onBlur: callAllEventHandlers(onBlur, menuHandleBlur)\n }, rest);\n }, [dispatch, latest, menuKeyDownHandlers, mouseAndTouchTrackersRef, setGetterPropCallInfo, elementIds, getItemNodeFromIndex]);\n var getToggleButtonProps = useCallback(function (_temp3, _temp4) {\n var _extends3;\n\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n onClick = _ref3.onClick,\n onKeyDown = _ref3.onKeyDown,\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? 'ref' : _ref3$refKey,\n ref = _ref3.ref,\n rest = _objectWithoutPropertiesLoose(_ref3, _excluded2$2);\n\n var _ref4 = _temp4 === void 0 ? {} : _temp4,\n _ref4$suppressRefErro = _ref4.suppressRefError,\n suppressRefError = _ref4$suppressRefErro === void 0 ? false : _ref4$suppressRefErro;\n\n var toggleButtonHandleClick = function toggleButtonHandleClick() {\n dispatch({\n type: ToggleButtonClick$1\n });\n };\n\n var toggleButtonHandleKeyDown = function toggleButtonHandleKeyDown(event) {\n var key = normalizeArrowKey(event);\n\n if (key && toggleButtonKeyDownHandlers[key]) {\n toggleButtonKeyDownHandlers[key](event);\n } else if (isAcceptedCharacterKey(key)) {\n dispatch({\n type: ToggleButtonKeyDownCharacter,\n key: key,\n getItemNodeFromIndex: getItemNodeFromIndex\n });\n }\n };\n\n var toggleProps = _extends((_extends3 = {}, _extends3[refKey] = handleRefs(ref, function (toggleButtonNode) {\n toggleButtonRef.current = toggleButtonNode;\n }), _extends3.id = elementIds.toggleButtonId, _extends3['aria-haspopup'] = 'listbox', _extends3['aria-expanded'] = latest.current.state.isOpen, _extends3['aria-labelledby'] = elementIds.labelId + \" \" + elementIds.toggleButtonId, _extends3), rest);\n\n if (!rest.disabled) {\n toggleProps.onClick = callAllEventHandlers(onClick, toggleButtonHandleClick);\n toggleProps.onKeyDown = callAllEventHandlers(onKeyDown, toggleButtonHandleKeyDown);\n }\n\n setGetterPropCallInfo('getToggleButtonProps', suppressRefError, refKey, toggleButtonRef);\n return toggleProps;\n }, [dispatch, latest, toggleButtonKeyDownHandlers, setGetterPropCallInfo, elementIds, getItemNodeFromIndex]);\n var getItemProps = useCallback(function (_temp5) {\n var _extends4;\n\n var _ref5 = _temp5 === void 0 ? {} : _temp5,\n item = _ref5.item,\n index = _ref5.index,\n onMouseMove = _ref5.onMouseMove,\n onClick = _ref5.onClick,\n _ref5$refKey = _ref5.refKey,\n refKey = _ref5$refKey === void 0 ? 'ref' : _ref5$refKey,\n ref = _ref5.ref,\n rest = _objectWithoutPropertiesLoose(_ref5, _excluded3$1);\n\n var _latest$current = latest.current,\n latestState = _latest$current.state,\n latestProps = _latest$current.props;\n\n var itemHandleMouseMove = function itemHandleMouseMove() {\n if (index === latestState.highlightedIndex) {\n return;\n }\n\n shouldScrollRef.current = false;\n dispatch({\n type: ItemMouseMove$1,\n index: index\n });\n };\n\n var itemHandleClick = function itemHandleClick() {\n dispatch({\n type: ItemClick$1,\n index: index\n });\n };\n\n var itemIndex = getItemIndex(index, item, latestProps.items);\n\n if (itemIndex < 0) {\n throw new Error('Pass either item or item index in getItemProps!');\n }\n\n var itemProps = _extends((_extends4 = {\n role: 'option',\n 'aria-selected': \"\" + (itemIndex === latestState.highlightedIndex),\n id: elementIds.getItemId(itemIndex)\n }, _extends4[refKey] = handleRefs(ref, function (itemNode) {\n if (itemNode) {\n itemRefs.current[elementIds.getItemId(itemIndex)] = itemNode;\n }\n }), _extends4), rest);\n\n if (!rest.disabled) {\n itemProps.onMouseMove = callAllEventHandlers(onMouseMove, itemHandleMouseMove);\n itemProps.onClick = callAllEventHandlers(onClick, itemHandleClick);\n }\n\n return itemProps;\n }, [dispatch, latest, shouldScrollRef, elementIds]);\n return {\n // prop getters.\n getToggleButtonProps: getToggleButtonProps,\n getLabelProps: getLabelProps,\n getMenuProps: getMenuProps,\n getItemProps: getItemProps,\n // actions.\n toggleMenu: toggleMenu,\n openMenu: openMenu,\n closeMenu: closeMenu,\n setHighlightedIndex: setHighlightedIndex,\n selectItem: selectItem,\n reset: reset,\n setInputValue: setInputValue,\n // state.\n highlightedIndex: highlightedIndex,\n isOpen: isOpen,\n selectedItem: selectedItem,\n inputValue: inputValue\n };\n}\n\nvar InputKeyDownArrowDown = process.env.NODE_ENV !== \"production\" ? '__input_keydown_arrow_down__' : 0;\nvar InputKeyDownArrowUp = process.env.NODE_ENV !== \"production\" ? '__input_keydown_arrow_up__' : 1;\nvar InputKeyDownEscape = process.env.NODE_ENV !== \"production\" ? '__input_keydown_escape__' : 2;\nvar InputKeyDownHome = process.env.NODE_ENV !== \"production\" ? '__input_keydown_home__' : 3;\nvar InputKeyDownEnd = process.env.NODE_ENV !== \"production\" ? '__input_keydown_end__' : 4;\nvar InputKeyDownEnter = process.env.NODE_ENV !== \"production\" ? '__input_keydown_enter__' : 5;\nvar InputChange = process.env.NODE_ENV !== \"production\" ? '__input_change__' : 6;\nvar InputBlur = process.env.NODE_ENV !== \"production\" ? '__input_blur__' : 7;\nvar MenuMouseLeave = process.env.NODE_ENV !== \"production\" ? '__menu_mouse_leave__' : 8;\nvar ItemMouseMove = process.env.NODE_ENV !== \"production\" ? '__item_mouse_move__' : 9;\nvar ItemClick = process.env.NODE_ENV !== \"production\" ? '__item_click__' : 10;\nvar ToggleButtonClick = process.env.NODE_ENV !== \"production\" ? '__togglebutton_click__' : 11;\nvar FunctionToggleMenu = process.env.NODE_ENV !== \"production\" ? '__function_toggle_menu__' : 12;\nvar FunctionOpenMenu = process.env.NODE_ENV !== \"production\" ? '__function_open_menu__' : 13;\nvar FunctionCloseMenu = process.env.NODE_ENV !== \"production\" ? '__function_close_menu__' : 14;\nvar FunctionSetHighlightedIndex = process.env.NODE_ENV !== \"production\" ? '__function_set_highlighted_index__' : 15;\nvar FunctionSelectItem = process.env.NODE_ENV !== \"production\" ? '__function_select_item__' : 16;\nvar FunctionSetInputValue = process.env.NODE_ENV !== \"production\" ? '__function_set_input_value__' : 17;\nvar FunctionReset$1 = process.env.NODE_ENV !== \"production\" ? '__function_reset__' : 18;\nvar ControlledPropUpdatedSelectedItem = process.env.NODE_ENV !== \"production\" ? '__controlled_prop_updated_selected_item__' : 19;\n\nvar stateChangeTypes$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n InputKeyDownArrowDown: InputKeyDownArrowDown,\n InputKeyDownArrowUp: InputKeyDownArrowUp,\n InputKeyDownEscape: InputKeyDownEscape,\n InputKeyDownHome: InputKeyDownHome,\n InputKeyDownEnd: InputKeyDownEnd,\n InputKeyDownEnter: InputKeyDownEnter,\n InputChange: InputChange,\n InputBlur: InputBlur,\n MenuMouseLeave: MenuMouseLeave,\n ItemMouseMove: ItemMouseMove,\n ItemClick: ItemClick,\n ToggleButtonClick: ToggleButtonClick,\n FunctionToggleMenu: FunctionToggleMenu,\n FunctionOpenMenu: FunctionOpenMenu,\n FunctionCloseMenu: FunctionCloseMenu,\n FunctionSetHighlightedIndex: FunctionSetHighlightedIndex,\n FunctionSelectItem: FunctionSelectItem,\n FunctionSetInputValue: FunctionSetInputValue,\n FunctionReset: FunctionReset$1,\n ControlledPropUpdatedSelectedItem: ControlledPropUpdatedSelectedItem\n});\n\nfunction getInitialState$1(props) {\n var initialState = getInitialState$2(props);\n var selectedItem = initialState.selectedItem;\n var inputValue = initialState.inputValue;\n\n if (inputValue === '' && selectedItem && props.defaultInputValue === undefined && props.initialInputValue === undefined && props.inputValue === undefined) {\n inputValue = props.itemToString(selectedItem);\n }\n\n return _extends({}, initialState, {\n inputValue: inputValue\n });\n}\n\nvar propTypes$1 = {\n items: PropTypes.array.isRequired,\n itemToString: PropTypes.func,\n getA11yStatusMessage: PropTypes.func,\n getA11ySelectionMessage: PropTypes.func,\n circularNavigation: PropTypes.bool,\n highlightedIndex: PropTypes.number,\n defaultHighlightedIndex: PropTypes.number,\n initialHighlightedIndex: PropTypes.number,\n isOpen: PropTypes.bool,\n defaultIsOpen: PropTypes.bool,\n initialIsOpen: PropTypes.bool,\n selectedItem: PropTypes.any,\n initialSelectedItem: PropTypes.any,\n defaultSelectedItem: PropTypes.any,\n inputValue: PropTypes.string,\n defaultInputValue: PropTypes.string,\n initialInputValue: PropTypes.string,\n id: PropTypes.string,\n labelId: PropTypes.string,\n menuId: PropTypes.string,\n getItemId: PropTypes.func,\n inputId: PropTypes.string,\n toggleButtonId: PropTypes.string,\n stateReducer: PropTypes.func,\n onSelectedItemChange: PropTypes.func,\n onHighlightedIndexChange: PropTypes.func,\n onStateChange: PropTypes.func,\n onIsOpenChange: PropTypes.func,\n onInputValueChange: PropTypes.func,\n environment: PropTypes.shape({\n addEventListener: PropTypes.func,\n removeEventListener: PropTypes.func,\n document: PropTypes.shape({\n getElementById: PropTypes.func,\n activeElement: PropTypes.any,\n body: PropTypes.any\n })\n })\n};\n/**\n * The useCombobox version of useControlledReducer, which also\n * checks if the controlled prop selectedItem changed between\n * renders. If so, it will also update inputValue with its\n * string equivalent. It uses the common useEnhancedReducer to\n * compute the rest of the state.\n *\n * @param {Function} reducer Reducer function from downshift.\n * @param {Object} initialState Initial state of the hook.\n * @param {Object} props The hook props.\n * @returns {Array} An array with the state and an action dispatcher.\n */\n\nfunction useControlledReducer(reducer, initialState, props) {\n var previousSelectedItemRef = useRef();\n\n var _useEnhancedReducer = useEnhancedReducer(reducer, initialState, props),\n state = _useEnhancedReducer[0],\n dispatch = _useEnhancedReducer[1]; // ToDo: if needed, make same approach as selectedItemChanged from Downshift.\n\n\n useEffect(function () {\n if (isControlledProp(props, 'selectedItem')) {\n if (previousSelectedItemRef.current !== props.selectedItem) {\n dispatch({\n type: ControlledPropUpdatedSelectedItem,\n inputValue: props.itemToString(props.selectedItem)\n });\n }\n\n previousSelectedItemRef.current = state.selectedItem === previousSelectedItemRef.current ? props.selectedItem : state.selectedItem;\n }\n });\n return [getState(state, props), dispatch];\n} // eslint-disable-next-line import/no-mutable-exports\n\n\nvar validatePropTypes$1 = noop;\n/* istanbul ignore next */\n\nif (process.env.NODE_ENV !== 'production') {\n validatePropTypes$1 = function validatePropTypes(options, caller) {\n PropTypes.checkPropTypes(propTypes$1, options, 'prop', caller.name);\n };\n}\n\nvar defaultProps$1 = _extends({}, defaultProps$3, {\n getA11yStatusMessage: getA11yStatusMessage$1,\n circularNavigation: true\n});\n\n/* eslint-disable complexity */\n\nfunction downshiftUseComboboxReducer(state, action) {\n var type = action.type,\n props = action.props,\n shiftKey = action.shiftKey;\n var changes;\n\n switch (type) {\n case ItemClick:\n changes = {\n isOpen: getDefaultValue$1(props, 'isOpen'),\n highlightedIndex: getDefaultValue$1(props, 'highlightedIndex'),\n selectedItem: props.items[action.index],\n inputValue: props.itemToString(props.items[action.index])\n };\n break;\n\n case InputKeyDownArrowDown:\n if (state.isOpen) {\n changes = {\n highlightedIndex: getNextWrappingIndex(shiftKey ? 5 : 1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n };\n } else {\n changes = {\n highlightedIndex: getHighlightedIndexOnOpen(props, state, 1, action.getItemNodeFromIndex),\n isOpen: props.items.length >= 0\n };\n }\n\n break;\n\n case InputKeyDownArrowUp:\n if (state.isOpen) {\n changes = {\n highlightedIndex: getNextWrappingIndex(shiftKey ? -5 : -1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n };\n } else {\n changes = {\n highlightedIndex: getHighlightedIndexOnOpen(props, state, -1, action.getItemNodeFromIndex),\n isOpen: props.items.length >= 0\n };\n }\n\n break;\n\n case InputKeyDownEnter:\n changes = _extends({}, state.isOpen && state.highlightedIndex >= 0 && {\n selectedItem: props.items[state.highlightedIndex],\n isOpen: getDefaultValue$1(props, 'isOpen'),\n highlightedIndex: getDefaultValue$1(props, 'highlightedIndex'),\n inputValue: props.itemToString(props.items[state.highlightedIndex])\n });\n break;\n\n case InputKeyDownEscape:\n changes = _extends({\n isOpen: false,\n highlightedIndex: -1\n }, !state.isOpen && {\n selectedItem: null,\n inputValue: ''\n });\n break;\n\n case InputKeyDownHome:\n changes = {\n highlightedIndex: getNextNonDisabledIndex(1, 0, props.items.length, action.getItemNodeFromIndex, false)\n };\n break;\n\n case InputKeyDownEnd:\n changes = {\n highlightedIndex: getNextNonDisabledIndex(-1, props.items.length - 1, props.items.length, action.getItemNodeFromIndex, false)\n };\n break;\n\n case InputBlur:\n changes = _extends({\n isOpen: false,\n highlightedIndex: -1\n }, state.highlightedIndex >= 0 && action.selectItem && {\n selectedItem: props.items[state.highlightedIndex],\n inputValue: props.itemToString(props.items[state.highlightedIndex])\n });\n break;\n\n case InputChange:\n changes = {\n isOpen: true,\n highlightedIndex: getDefaultValue$1(props, 'highlightedIndex'),\n inputValue: action.inputValue\n };\n break;\n\n case FunctionSelectItem:\n changes = {\n selectedItem: action.selectedItem,\n inputValue: props.itemToString(action.selectedItem)\n };\n break;\n\n case ControlledPropUpdatedSelectedItem:\n changes = {\n inputValue: action.inputValue\n };\n break;\n\n default:\n return downshiftCommonReducer(state, action, stateChangeTypes$1);\n }\n\n return _extends({}, state, changes);\n}\n/* eslint-enable complexity */\n\nvar _excluded$1 = [\"onMouseLeave\", \"refKey\", \"ref\"],\n _excluded2$1 = [\"item\", \"index\", \"refKey\", \"ref\", \"onMouseMove\", \"onClick\", \"onPress\"],\n _excluded3 = [\"onClick\", \"onPress\", \"refKey\", \"ref\"],\n _excluded4 = [\"onKeyDown\", \"onChange\", \"onInput\", \"onBlur\", \"onChangeText\", \"refKey\", \"ref\"],\n _excluded5 = [\"refKey\", \"ref\"];\nuseCombobox.stateChangeTypes = stateChangeTypes$1;\n\nfunction useCombobox(userProps) {\n if (userProps === void 0) {\n userProps = {};\n }\n\n validatePropTypes$1(userProps, useCombobox); // Props defaults and destructuring.\n\n var props = _extends({}, defaultProps$1, userProps);\n\n var initialIsOpen = props.initialIsOpen,\n defaultIsOpen = props.defaultIsOpen,\n items = props.items,\n scrollIntoView = props.scrollIntoView,\n environment = props.environment,\n getA11yStatusMessage = props.getA11yStatusMessage,\n getA11ySelectionMessage = props.getA11ySelectionMessage,\n itemToString = props.itemToString; // Initial state depending on controlled props.\n\n var initialState = getInitialState$1(props);\n\n var _useControlledReducer = useControlledReducer(downshiftUseComboboxReducer, initialState, props),\n state = _useControlledReducer[0],\n dispatch = _useControlledReducer[1];\n\n var isOpen = state.isOpen,\n highlightedIndex = state.highlightedIndex,\n selectedItem = state.selectedItem,\n inputValue = state.inputValue; // Element refs.\n\n var menuRef = useRef(null);\n var itemRefs = useRef({});\n var inputRef = useRef(null);\n var toggleButtonRef = useRef(null);\n var comboboxRef = useRef(null);\n var isInitialMountRef = useRef(true); // prevent id re-generation between renders.\n\n var elementIds = useElementIds(props); // used to keep track of how many items we had on previous cycle.\n\n var previousResultCountRef = useRef(); // utility callback to get item element.\n\n var latest = useLatestRef({\n state: state,\n props: props\n });\n var getItemNodeFromIndex = useCallback(function (index) {\n return itemRefs.current[elementIds.getItemId(index)];\n }, [elementIds]); // Effects.\n // Sets a11y status message on changes in state.\n\n useA11yMessageSetter(getA11yStatusMessage, [isOpen, highlightedIndex, inputValue, items], _extends({\n isInitialMount: isInitialMountRef.current,\n previousResultCount: previousResultCountRef.current,\n items: items,\n environment: environment,\n itemToString: itemToString\n }, state)); // Sets a11y status message on changes in selectedItem.\n\n useA11yMessageSetter(getA11ySelectionMessage, [selectedItem], _extends({\n isInitialMount: isInitialMountRef.current,\n previousResultCount: previousResultCountRef.current,\n items: items,\n environment: environment,\n itemToString: itemToString\n }, state)); // Scroll on highlighted item if change comes from keyboard.\n\n var shouldScrollRef = useScrollIntoView({\n menuElement: menuRef.current,\n highlightedIndex: highlightedIndex,\n isOpen: isOpen,\n itemRefs: itemRefs,\n scrollIntoView: scrollIntoView,\n getItemNodeFromIndex: getItemNodeFromIndex\n });\n useControlPropsValidator({\n isInitialMount: isInitialMountRef.current,\n props: props,\n state: state\n }); // Focus the input on first render if required.\n\n useEffect(function () {\n var focusOnOpen = initialIsOpen || defaultIsOpen || isOpen;\n\n if (focusOnOpen && inputRef.current) {\n inputRef.current.focus();\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, []);\n useEffect(function () {\n if (isInitialMountRef.current) {\n return;\n }\n\n previousResultCountRef.current = items.length;\n }); // Add mouse/touch events to document.\n\n var mouseAndTouchTrackersRef = useMouseAndTouchTracker(isOpen, [comboboxRef, menuRef, toggleButtonRef], environment, function () {\n dispatch({\n type: InputBlur,\n selectItem: false\n });\n });\n var setGetterPropCallInfo = useGetterPropsCalledChecker('getInputProps', 'getComboboxProps', 'getMenuProps'); // Make initial ref false.\n\n useEffect(function () {\n isInitialMountRef.current = false;\n }, []); // Reset itemRefs on close.\n\n useEffect(function () {\n if (!isOpen) {\n itemRefs.current = {};\n }\n }, [isOpen]);\n /* Event handler functions */\n\n var inputKeyDownHandlers = useMemo(function () {\n return {\n ArrowDown: function ArrowDown(event) {\n event.preventDefault();\n dispatch({\n type: InputKeyDownArrowDown,\n shiftKey: event.shiftKey,\n getItemNodeFromIndex: getItemNodeFromIndex\n });\n },\n ArrowUp: function ArrowUp(event) {\n event.preventDefault();\n dispatch({\n type: InputKeyDownArrowUp,\n shiftKey: event.shiftKey,\n getItemNodeFromIndex: getItemNodeFromIndex\n });\n },\n Home: function Home(event) {\n if (!latest.current.state.isOpen) {\n return;\n }\n\n event.preventDefault();\n dispatch({\n type: InputKeyDownHome,\n getItemNodeFromIndex: getItemNodeFromIndex\n });\n },\n End: function End(event) {\n if (!latest.current.state.isOpen) {\n return;\n }\n\n event.preventDefault();\n dispatch({\n type: InputKeyDownEnd,\n getItemNodeFromIndex: getItemNodeFromIndex\n });\n },\n Escape: function Escape() {\n var latestState = latest.current.state;\n\n if (latestState.isOpen || latestState.inputValue || latestState.selectedItem || latestState.highlightedIndex > -1) {\n dispatch({\n type: InputKeyDownEscape\n });\n }\n },\n Enter: function Enter(event) {\n var latestState = latest.current.state; // if closed or no highlighted index, do nothing.\n\n if (!latestState.isOpen || latestState.highlightedIndex < 0 || event.which === 229 // if IME composing, wait for next Enter keydown event.\n ) {\n return;\n }\n\n event.preventDefault();\n dispatch({\n type: InputKeyDownEnter,\n getItemNodeFromIndex: getItemNodeFromIndex\n });\n }\n };\n }, [dispatch, latest, getItemNodeFromIndex]); // Getter props.\n\n var getLabelProps = useCallback(function (labelProps) {\n return _extends({\n id: elementIds.labelId,\n htmlFor: elementIds.inputId\n }, labelProps);\n }, [elementIds]);\n var getMenuProps = useCallback(function (_temp, _temp2) {\n var _extends2;\n\n var _ref = _temp === void 0 ? {} : _temp,\n onMouseLeave = _ref.onMouseLeave,\n _ref$refKey = _ref.refKey,\n refKey = _ref$refKey === void 0 ? 'ref' : _ref$refKey,\n ref = _ref.ref,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n _ref2$suppressRefErro = _ref2.suppressRefError,\n suppressRefError = _ref2$suppressRefErro === void 0 ? false : _ref2$suppressRefErro;\n\n setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);\n return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {\n menuRef.current = menuNode;\n }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, function () {\n dispatch({\n type: MenuMouseLeave\n });\n }), _extends2), rest);\n }, [dispatch, setGetterPropCallInfo, elementIds]);\n var getItemProps = useCallback(function (_temp3) {\n var _extends3, _ref4;\n\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n item = _ref3.item,\n index = _ref3.index,\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? 'ref' : _ref3$refKey,\n ref = _ref3.ref,\n onMouseMove = _ref3.onMouseMove,\n onClick = _ref3.onClick;\n _ref3.onPress;\n var rest = _objectWithoutPropertiesLoose(_ref3, _excluded2$1);\n\n var _latest$current = latest.current,\n latestProps = _latest$current.props,\n latestState = _latest$current.state;\n var itemIndex = getItemIndex(index, item, latestProps.items);\n\n if (itemIndex < 0) {\n throw new Error('Pass either item or item index in getItemProps!');\n }\n\n var onSelectKey = 'onClick';\n var customClickHandler = onClick;\n\n var itemHandleMouseMove = function itemHandleMouseMove() {\n if (index === latestState.highlightedIndex) {\n return;\n }\n\n shouldScrollRef.current = false;\n dispatch({\n type: ItemMouseMove,\n index: index\n });\n };\n\n var itemHandleClick = function itemHandleClick() {\n dispatch({\n type: ItemClick,\n index: index\n });\n\n if (inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n return _extends((_extends3 = {}, _extends3[refKey] = handleRefs(ref, function (itemNode) {\n if (itemNode) {\n itemRefs.current[elementIds.getItemId(itemIndex)] = itemNode;\n }\n }), _extends3.role = 'option', _extends3['aria-selected'] = \"\" + (itemIndex === latestState.highlightedIndex), _extends3.id = elementIds.getItemId(itemIndex), _extends3), !rest.disabled && (_ref4 = {\n onMouseMove: callAllEventHandlers(onMouseMove, itemHandleMouseMove)\n }, _ref4[onSelectKey] = callAllEventHandlers(customClickHandler, itemHandleClick), _ref4), rest);\n }, [dispatch, latest, shouldScrollRef, elementIds]);\n var getToggleButtonProps = useCallback(function (_temp4) {\n var _extends4;\n\n var _ref5 = _temp4 === void 0 ? {} : _temp4,\n onClick = _ref5.onClick;\n _ref5.onPress;\n var _ref5$refKey = _ref5.refKey,\n refKey = _ref5$refKey === void 0 ? 'ref' : _ref5$refKey,\n ref = _ref5.ref,\n rest = _objectWithoutPropertiesLoose(_ref5, _excluded3);\n\n var toggleButtonHandleClick = function toggleButtonHandleClick() {\n dispatch({\n type: ToggleButtonClick\n });\n\n if (!latest.current.state.isOpen && inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n return _extends((_extends4 = {}, _extends4[refKey] = handleRefs(ref, function (toggleButtonNode) {\n toggleButtonRef.current = toggleButtonNode;\n }), _extends4.id = elementIds.toggleButtonId, _extends4.tabIndex = -1, _extends4), !rest.disabled && _extends({}, {\n onClick: callAllEventHandlers(onClick, toggleButtonHandleClick)\n }), rest);\n }, [dispatch, latest, elementIds]);\n var getInputProps = useCallback(function (_temp5, _temp6) {\n var _extends5;\n\n var _ref6 = _temp5 === void 0 ? {} : _temp5,\n onKeyDown = _ref6.onKeyDown,\n onChange = _ref6.onChange,\n onInput = _ref6.onInput,\n onBlur = _ref6.onBlur;\n _ref6.onChangeText;\n var _ref6$refKey = _ref6.refKey,\n refKey = _ref6$refKey === void 0 ? 'ref' : _ref6$refKey,\n ref = _ref6.ref,\n rest = _objectWithoutPropertiesLoose(_ref6, _excluded4);\n\n var _ref7 = _temp6 === void 0 ? {} : _temp6,\n _ref7$suppressRefErro = _ref7.suppressRefError,\n suppressRefError = _ref7$suppressRefErro === void 0 ? false : _ref7$suppressRefErro;\n\n setGetterPropCallInfo('getInputProps', suppressRefError, refKey, inputRef);\n var latestState = latest.current.state;\n\n var inputHandleKeyDown = function inputHandleKeyDown(event) {\n var key = normalizeArrowKey(event);\n\n if (key && inputKeyDownHandlers[key]) {\n inputKeyDownHandlers[key](event);\n }\n };\n\n var inputHandleChange = function inputHandleChange(event) {\n dispatch({\n type: InputChange,\n inputValue: event.target.value\n });\n };\n\n var inputHandleBlur = function inputHandleBlur() {\n /* istanbul ignore else */\n if (latestState.isOpen && !mouseAndTouchTrackersRef.current.isMouseDown) {\n dispatch({\n type: InputBlur,\n selectItem: true\n });\n }\n };\n /* istanbul ignore next (preact) */\n\n\n var onChangeKey = 'onChange';\n var eventHandlers = {};\n\n if (!rest.disabled) {\n var _eventHandlers;\n\n eventHandlers = (_eventHandlers = {}, _eventHandlers[onChangeKey] = callAllEventHandlers(onChange, onInput, inputHandleChange), _eventHandlers.onKeyDown = callAllEventHandlers(onKeyDown, inputHandleKeyDown), _eventHandlers.onBlur = callAllEventHandlers(onBlur, inputHandleBlur), _eventHandlers);\n }\n\n return _extends((_extends5 = {}, _extends5[refKey] = handleRefs(ref, function (inputNode) {\n inputRef.current = inputNode;\n }), _extends5.id = elementIds.inputId, _extends5['aria-autocomplete'] = 'list', _extends5['aria-controls'] = elementIds.menuId, _extends5), latestState.isOpen && latestState.highlightedIndex > -1 && {\n 'aria-activedescendant': elementIds.getItemId(latestState.highlightedIndex)\n }, {\n 'aria-labelledby': elementIds.labelId,\n // https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion\n // revert back since autocomplete=\"nope\" is ignored on latest Chrome and Opera\n autoComplete: 'off',\n value: latestState.inputValue\n }, eventHandlers, rest);\n }, [dispatch, inputKeyDownHandlers, latest, mouseAndTouchTrackersRef, setGetterPropCallInfo, elementIds]);\n var getComboboxProps = useCallback(function (_temp7, _temp8) {\n var _extends6;\n\n var _ref8 = _temp7 === void 0 ? {} : _temp7,\n _ref8$refKey = _ref8.refKey,\n refKey = _ref8$refKey === void 0 ? 'ref' : _ref8$refKey,\n ref = _ref8.ref,\n rest = _objectWithoutPropertiesLoose(_ref8, _excluded5);\n\n var _ref9 = _temp8 === void 0 ? {} : _temp8,\n _ref9$suppressRefErro = _ref9.suppressRefError,\n suppressRefError = _ref9$suppressRefErro === void 0 ? false : _ref9$suppressRefErro;\n\n setGetterPropCallInfo('getComboboxProps', suppressRefError, refKey, comboboxRef);\n return _extends((_extends6 = {}, _extends6[refKey] = handleRefs(ref, function (comboboxNode) {\n comboboxRef.current = comboboxNode;\n }), _extends6.role = 'combobox', _extends6['aria-haspopup'] = 'listbox', _extends6['aria-owns'] = elementIds.menuId, _extends6['aria-expanded'] = latest.current.state.isOpen, _extends6), rest);\n }, [latest, setGetterPropCallInfo, elementIds]); // returns\n\n var toggleMenu = useCallback(function () {\n dispatch({\n type: FunctionToggleMenu\n });\n }, [dispatch]);\n var closeMenu = useCallback(function () {\n dispatch({\n type: FunctionCloseMenu\n });\n }, [dispatch]);\n var openMenu = useCallback(function () {\n dispatch({\n type: FunctionOpenMenu\n });\n }, [dispatch]);\n var setHighlightedIndex = useCallback(function (newHighlightedIndex) {\n dispatch({\n type: FunctionSetHighlightedIndex,\n highlightedIndex: newHighlightedIndex\n });\n }, [dispatch]);\n var selectItem = useCallback(function (newSelectedItem) {\n dispatch({\n type: FunctionSelectItem,\n selectedItem: newSelectedItem\n });\n }, [dispatch]);\n var setInputValue = useCallback(function (newInputValue) {\n dispatch({\n type: FunctionSetInputValue,\n inputValue: newInputValue\n });\n }, [dispatch]);\n var reset = useCallback(function () {\n dispatch({\n type: FunctionReset$1\n });\n }, [dispatch]);\n return {\n // prop getters.\n getItemProps: getItemProps,\n getLabelProps: getLabelProps,\n getMenuProps: getMenuProps,\n getInputProps: getInputProps,\n getComboboxProps: getComboboxProps,\n getToggleButtonProps: getToggleButtonProps,\n // actions.\n toggleMenu: toggleMenu,\n openMenu: openMenu,\n closeMenu: closeMenu,\n setHighlightedIndex: setHighlightedIndex,\n setInputValue: setInputValue,\n selectItem: selectItem,\n reset: reset,\n // state.\n highlightedIndex: highlightedIndex,\n isOpen: isOpen,\n selectedItem: selectedItem,\n inputValue: inputValue\n };\n}\n\nvar defaultStateValues = {\n activeIndex: -1,\n selectedItems: []\n};\n/**\n * Returns the initial value for a state key in the following order:\n * 1. controlled prop, 2. initial prop, 3. default prop, 4. default\n * value from Downshift.\n *\n * @param {Object} props Props passed to the hook.\n * @param {string} propKey Props key to generate the value for.\n * @returns {any} The initial value for that prop.\n */\n\nfunction getInitialValue(props, propKey) {\n return getInitialValue$1(props, propKey, defaultStateValues);\n}\n/**\n * Returns the default value for a state key in the following order:\n * 1. controlled prop, 2. default prop, 3. default value from Downshift.\n *\n * @param {Object} props Props passed to the hook.\n * @param {string} propKey Props key to generate the value for.\n * @returns {any} The initial value for that prop.\n */\n\n\nfunction getDefaultValue(props, propKey) {\n return getDefaultValue$1(props, propKey, defaultStateValues);\n}\n/**\n * Gets the initial state based on the provided props. It uses initial, default\n * and controlled props related to state in order to compute the initial value.\n *\n * @param {Object} props Props passed to the hook.\n * @returns {Object} The initial state.\n */\n\n\nfunction getInitialState(props) {\n var activeIndex = getInitialValue(props, 'activeIndex');\n var selectedItems = getInitialValue(props, 'selectedItems');\n return {\n activeIndex: activeIndex,\n selectedItems: selectedItems\n };\n}\n/**\n * Returns true if dropdown keydown operation is permitted. Should not be\n * allowed on keydown with modifier keys (ctrl, alt, shift, meta), on\n * input element with text content that is either highlighted or selection\n * cursor is not at the starting position.\n *\n * @param {KeyboardEvent} event The event from keydown.\n * @returns {boolean} Whether the operation is allowed.\n */\n\n\nfunction isKeyDownOperationPermitted(event) {\n if (event.shiftKey || event.metaKey || event.ctrlKey || event.altKey) {\n return false;\n }\n\n var element = event.target;\n\n if (element instanceof HTMLInputElement && // if element is a text input\n element.value !== '' && (element.selectionStart !== 0 || element.selectionEnd !== 0)) {\n return false;\n }\n\n return true;\n}\n/**\n * Returns a message to be added to aria-live region when item is removed.\n *\n * @param {Object} selectionParameters Parameters required to build the message.\n * @returns {string} The a11y message.\n */\n\n\nfunction getA11yRemovalMessage(selectionParameters) {\n var removedSelectedItem = selectionParameters.removedSelectedItem,\n itemToStringLocal = selectionParameters.itemToString;\n return itemToStringLocal(removedSelectedItem) + \" has been removed.\";\n}\n\nvar propTypes = {\n selectedItems: PropTypes.array,\n initialSelectedItems: PropTypes.array,\n defaultSelectedItems: PropTypes.array,\n itemToString: PropTypes.func,\n getA11yRemovalMessage: PropTypes.func,\n stateReducer: PropTypes.func,\n activeIndex: PropTypes.number,\n initialActiveIndex: PropTypes.number,\n defaultActiveIndex: PropTypes.number,\n onActiveIndexChange: PropTypes.func,\n onSelectedItemsChange: PropTypes.func,\n keyNavigationNext: PropTypes.string,\n keyNavigationPrevious: PropTypes.string,\n environment: PropTypes.shape({\n addEventListener: PropTypes.func,\n removeEventListener: PropTypes.func,\n document: PropTypes.shape({\n getElementById: PropTypes.func,\n activeElement: PropTypes.any,\n body: PropTypes.any\n })\n })\n};\nvar defaultProps = {\n itemToString: defaultProps$3.itemToString,\n stateReducer: defaultProps$3.stateReducer,\n environment: defaultProps$3.environment,\n getA11yRemovalMessage: getA11yRemovalMessage,\n keyNavigationNext: 'ArrowRight',\n keyNavigationPrevious: 'ArrowLeft'\n}; // eslint-disable-next-line import/no-mutable-exports\n\nvar validatePropTypes = noop;\n/* istanbul ignore next */\n\nif (process.env.NODE_ENV !== 'production') {\n validatePropTypes = function validatePropTypes(options, caller) {\n PropTypes.checkPropTypes(propTypes, options, 'prop', caller.name);\n };\n}\n\nvar SelectedItemClick = process.env.NODE_ENV !== \"production\" ? '__selected_item_click__' : 0;\nvar SelectedItemKeyDownDelete = process.env.NODE_ENV !== \"production\" ? '__selected_item_keydown_delete__' : 1;\nvar SelectedItemKeyDownBackspace = process.env.NODE_ENV !== \"production\" ? '__selected_item_keydown_backspace__' : 2;\nvar SelectedItemKeyDownNavigationNext = process.env.NODE_ENV !== \"production\" ? '__selected_item_keydown_navigation_next__' : 3;\nvar SelectedItemKeyDownNavigationPrevious = process.env.NODE_ENV !== \"production\" ? '__selected_item_keydown_navigation_previous__' : 4;\nvar DropdownKeyDownNavigationPrevious = process.env.NODE_ENV !== \"production\" ? '__dropdown_keydown_navigation_previous__' : 5;\nvar DropdownKeyDownBackspace = process.env.NODE_ENV !== \"production\" ? '__dropdown_keydown_backspace__' : 6;\nvar DropdownClick = process.env.NODE_ENV !== \"production\" ? '__dropdown_click__' : 7;\nvar FunctionAddSelectedItem = process.env.NODE_ENV !== \"production\" ? '__function_add_selected_item__' : 8;\nvar FunctionRemoveSelectedItem = process.env.NODE_ENV !== \"production\" ? '__function_remove_selected_item__' : 9;\nvar FunctionSetSelectedItems = process.env.NODE_ENV !== \"production\" ? '__function_set_selected_items__' : 10;\nvar FunctionSetActiveIndex = process.env.NODE_ENV !== \"production\" ? '__function_set_active_index__' : 11;\nvar FunctionReset = process.env.NODE_ENV !== \"production\" ? '__function_reset__' : 12;\n\nvar stateChangeTypes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n SelectedItemClick: SelectedItemClick,\n SelectedItemKeyDownDelete: SelectedItemKeyDownDelete,\n SelectedItemKeyDownBackspace: SelectedItemKeyDownBackspace,\n SelectedItemKeyDownNavigationNext: SelectedItemKeyDownNavigationNext,\n SelectedItemKeyDownNavigationPrevious: SelectedItemKeyDownNavigationPrevious,\n DropdownKeyDownNavigationPrevious: DropdownKeyDownNavigationPrevious,\n DropdownKeyDownBackspace: DropdownKeyDownBackspace,\n DropdownClick: DropdownClick,\n FunctionAddSelectedItem: FunctionAddSelectedItem,\n FunctionRemoveSelectedItem: FunctionRemoveSelectedItem,\n FunctionSetSelectedItems: FunctionSetSelectedItems,\n FunctionSetActiveIndex: FunctionSetActiveIndex,\n FunctionReset: FunctionReset\n});\n\n/* eslint-disable complexity */\n\nfunction downshiftMultipleSelectionReducer(state, action) {\n var type = action.type,\n index = action.index,\n props = action.props,\n selectedItem = action.selectedItem;\n var activeIndex = state.activeIndex,\n selectedItems = state.selectedItems;\n var changes;\n\n switch (type) {\n case SelectedItemClick:\n changes = {\n activeIndex: index\n };\n break;\n\n case SelectedItemKeyDownNavigationPrevious:\n changes = {\n activeIndex: activeIndex - 1 < 0 ? 0 : activeIndex - 1\n };\n break;\n\n case SelectedItemKeyDownNavigationNext:\n changes = {\n activeIndex: activeIndex + 1 >= selectedItems.length ? -1 : activeIndex + 1\n };\n break;\n\n case SelectedItemKeyDownBackspace:\n case SelectedItemKeyDownDelete:\n {\n var newActiveIndex = activeIndex;\n\n if (selectedItems.length === 1) {\n newActiveIndex = -1;\n } else if (activeIndex === selectedItems.length - 1) {\n newActiveIndex = selectedItems.length - 2;\n }\n\n changes = _extends({\n selectedItems: [].concat(selectedItems.slice(0, activeIndex), selectedItems.slice(activeIndex + 1))\n }, {\n activeIndex: newActiveIndex\n });\n break;\n }\n\n case DropdownKeyDownNavigationPrevious:\n changes = {\n activeIndex: selectedItems.length - 1\n };\n break;\n\n case DropdownKeyDownBackspace:\n changes = {\n selectedItems: selectedItems.slice(0, selectedItems.length - 1)\n };\n break;\n\n case FunctionAddSelectedItem:\n changes = {\n selectedItems: [].concat(selectedItems, [selectedItem])\n };\n break;\n\n case DropdownClick:\n changes = {\n activeIndex: -1\n };\n break;\n\n case FunctionRemoveSelectedItem:\n {\n var _newActiveIndex = activeIndex;\n var selectedItemIndex = selectedItems.indexOf(selectedItem);\n\n if (selectedItems.length === 1) {\n _newActiveIndex = -1;\n } else if (selectedItemIndex === selectedItems.length - 1) {\n _newActiveIndex = selectedItems.length - 2;\n }\n\n changes = _extends({\n selectedItems: [].concat(selectedItems.slice(0, selectedItemIndex), selectedItems.slice(selectedItemIndex + 1))\n }, {\n activeIndex: _newActiveIndex\n });\n break;\n }\n\n case FunctionSetSelectedItems:\n {\n var newSelectedItems = action.selectedItems;\n changes = {\n selectedItems: newSelectedItems\n };\n break;\n }\n\n case FunctionSetActiveIndex:\n {\n var _newActiveIndex2 = action.activeIndex;\n changes = {\n activeIndex: _newActiveIndex2\n };\n break;\n }\n\n case FunctionReset:\n changes = {\n activeIndex: getDefaultValue(props, 'activeIndex'),\n selectedItems: getDefaultValue(props, 'selectedItems')\n };\n break;\n\n default:\n throw new Error('Reducer called without proper action type.');\n }\n\n return _extends({}, state, changes);\n}\n\nvar _excluded = [\"refKey\", \"ref\", \"onClick\", \"onKeyDown\", \"selectedItem\", \"index\"],\n _excluded2 = [\"refKey\", \"ref\", \"onKeyDown\", \"onClick\", \"preventKeyAction\"];\nuseMultipleSelection.stateChangeTypes = stateChangeTypes;\n\nfunction useMultipleSelection(userProps) {\n if (userProps === void 0) {\n userProps = {};\n }\n\n validatePropTypes(userProps, useMultipleSelection); // Props defaults and destructuring.\n\n var props = _extends({}, defaultProps, userProps);\n\n var getA11yRemovalMessage = props.getA11yRemovalMessage,\n itemToString = props.itemToString,\n environment = props.environment,\n keyNavigationNext = props.keyNavigationNext,\n keyNavigationPrevious = props.keyNavigationPrevious; // Reducer init.\n\n var _useControlledReducer = useControlledReducer$1(downshiftMultipleSelectionReducer, getInitialState(props), props),\n state = _useControlledReducer[0],\n dispatch = _useControlledReducer[1];\n\n var activeIndex = state.activeIndex,\n selectedItems = state.selectedItems; // Refs.\n\n var isInitialMountRef = useRef(true);\n var dropdownRef = useRef(null);\n var previousSelectedItemsRef = useRef(selectedItems);\n var selectedItemRefs = useRef();\n selectedItemRefs.current = [];\n var latest = useLatestRef({\n state: state,\n props: props\n }); // Effects.\n\n /* Sets a11y status message on changes in selectedItem. */\n\n useEffect(function () {\n if (isInitialMountRef.current) {\n return;\n }\n\n if (selectedItems.length < previousSelectedItemsRef.current.length) {\n var removedSelectedItem = previousSelectedItemsRef.current.find(function (item) {\n return selectedItems.indexOf(item) < 0;\n });\n setStatus(getA11yRemovalMessage({\n itemToString: itemToString,\n resultCount: selectedItems.length,\n removedSelectedItem: removedSelectedItem,\n activeIndex: activeIndex,\n activeSelectedItem: selectedItems[activeIndex]\n }), environment.document);\n }\n\n previousSelectedItemsRef.current = selectedItems; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedItems.length]); // Sets focus on active item.\n\n useEffect(function () {\n if (isInitialMountRef.current) {\n return;\n }\n\n if (activeIndex === -1 && dropdownRef.current) {\n dropdownRef.current.focus();\n } else if (selectedItemRefs.current[activeIndex]) {\n selectedItemRefs.current[activeIndex].focus();\n }\n }, [activeIndex]);\n useControlPropsValidator({\n isInitialMount: isInitialMountRef.current,\n props: props,\n state: state\n });\n var setGetterPropCallInfo = useGetterPropsCalledChecker('getDropdownProps'); // Make initial ref false.\n\n useEffect(function () {\n isInitialMountRef.current = false;\n }, []); // Event handler functions.\n\n var selectedItemKeyDownHandlers = useMemo(function () {\n var _ref;\n\n return _ref = {}, _ref[keyNavigationPrevious] = function () {\n dispatch({\n type: SelectedItemKeyDownNavigationPrevious\n });\n }, _ref[keyNavigationNext] = function () {\n dispatch({\n type: SelectedItemKeyDownNavigationNext\n });\n }, _ref.Delete = function Delete() {\n dispatch({\n type: SelectedItemKeyDownDelete\n });\n }, _ref.Backspace = function Backspace() {\n dispatch({\n type: SelectedItemKeyDownBackspace\n });\n }, _ref;\n }, [dispatch, keyNavigationNext, keyNavigationPrevious]);\n var dropdownKeyDownHandlers = useMemo(function () {\n var _ref2;\n\n return _ref2 = {}, _ref2[keyNavigationPrevious] = function (event) {\n if (isKeyDownOperationPermitted(event)) {\n dispatch({\n type: DropdownKeyDownNavigationPrevious\n });\n }\n }, _ref2.Backspace = function Backspace(event) {\n if (isKeyDownOperationPermitted(event)) {\n dispatch({\n type: DropdownKeyDownBackspace\n });\n }\n }, _ref2;\n }, [dispatch, keyNavigationPrevious]); // Getter props.\n\n var getSelectedItemProps = useCallback(function (_temp) {\n var _extends2;\n\n var _ref3 = _temp === void 0 ? {} : _temp,\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? 'ref' : _ref3$refKey,\n ref = _ref3.ref,\n onClick = _ref3.onClick,\n onKeyDown = _ref3.onKeyDown,\n selectedItem = _ref3.selectedItem,\n index = _ref3.index,\n rest = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n var latestState = latest.current.state;\n var itemIndex = getItemIndex(index, selectedItem, latestState.selectedItems);\n\n if (itemIndex < 0) {\n throw new Error('Pass either selectedItem or index in getSelectedItemProps!');\n }\n\n var selectedItemHandleClick = function selectedItemHandleClick() {\n dispatch({\n type: SelectedItemClick,\n index: index\n });\n };\n\n var selectedItemHandleKeyDown = function selectedItemHandleKeyDown(event) {\n var key = normalizeArrowKey(event);\n\n if (key && selectedItemKeyDownHandlers[key]) {\n selectedItemKeyDownHandlers[key](event);\n }\n };\n\n return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (selectedItemNode) {\n if (selectedItemNode) {\n selectedItemRefs.current.push(selectedItemNode);\n }\n }), _extends2.tabIndex = index === latestState.activeIndex ? 0 : -1, _extends2.onClick = callAllEventHandlers(onClick, selectedItemHandleClick), _extends2.onKeyDown = callAllEventHandlers(onKeyDown, selectedItemHandleKeyDown), _extends2), rest);\n }, [dispatch, latest, selectedItemKeyDownHandlers]);\n var getDropdownProps = useCallback(function (_temp2, _temp3) {\n var _extends3;\n\n var _ref4 = _temp2 === void 0 ? {} : _temp2,\n _ref4$refKey = _ref4.refKey,\n refKey = _ref4$refKey === void 0 ? 'ref' : _ref4$refKey,\n ref = _ref4.ref,\n onKeyDown = _ref4.onKeyDown,\n onClick = _ref4.onClick,\n _ref4$preventKeyActio = _ref4.preventKeyAction,\n preventKeyAction = _ref4$preventKeyActio === void 0 ? false : _ref4$preventKeyActio,\n rest = _objectWithoutPropertiesLoose(_ref4, _excluded2);\n\n var _ref5 = _temp3 === void 0 ? {} : _temp3,\n _ref5$suppressRefErro = _ref5.suppressRefError,\n suppressRefError = _ref5$suppressRefErro === void 0 ? false : _ref5$suppressRefErro;\n\n setGetterPropCallInfo('getDropdownProps', suppressRefError, refKey, dropdownRef);\n\n var dropdownHandleKeyDown = function dropdownHandleKeyDown(event) {\n var key = normalizeArrowKey(event);\n\n if (key && dropdownKeyDownHandlers[key]) {\n dropdownKeyDownHandlers[key](event);\n }\n };\n\n var dropdownHandleClick = function dropdownHandleClick() {\n dispatch({\n type: DropdownClick\n });\n };\n\n return _extends((_extends3 = {}, _extends3[refKey] = handleRefs(ref, function (dropdownNode) {\n if (dropdownNode) {\n dropdownRef.current = dropdownNode;\n }\n }), _extends3), !preventKeyAction && {\n onKeyDown: callAllEventHandlers(onKeyDown, dropdownHandleKeyDown),\n onClick: callAllEventHandlers(onClick, dropdownHandleClick)\n }, rest);\n }, [dispatch, dropdownKeyDownHandlers, setGetterPropCallInfo]); // returns\n\n var addSelectedItem = useCallback(function (selectedItem) {\n dispatch({\n type: FunctionAddSelectedItem,\n selectedItem: selectedItem\n });\n }, [dispatch]);\n var removeSelectedItem = useCallback(function (selectedItem) {\n dispatch({\n type: FunctionRemoveSelectedItem,\n selectedItem: selectedItem\n });\n }, [dispatch]);\n var setSelectedItems = useCallback(function (newSelectedItems) {\n dispatch({\n type: FunctionSetSelectedItems,\n selectedItems: newSelectedItems\n });\n }, [dispatch]);\n var setActiveIndex = useCallback(function (newActiveIndex) {\n dispatch({\n type: FunctionSetActiveIndex,\n activeIndex: newActiveIndex\n });\n }, [dispatch]);\n var reset = useCallback(function () {\n dispatch({\n type: FunctionReset\n });\n }, [dispatch]);\n return {\n getSelectedItemProps: getSelectedItemProps,\n getDropdownProps: getDropdownProps,\n addSelectedItem: addSelectedItem,\n removeSelectedItem: removeSelectedItem,\n setSelectedItems: setSelectedItems,\n setActiveIndex: setActiveIndex,\n reset: reset,\n selectedItems: selectedItems,\n activeIndex: activeIndex\n };\n}\n\nexport { Downshift$1 as default, resetIdCounter, useCombobox, useMultipleSelection, useSelect };\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}","import { useAppState, useAppDispatch } from './Context'\nimport Downshift from 'downshift'\n\nfunction LocationSearch() {\n const dispatch = useAppDispatch()\n const { locations } = useAppState()\n\n const handleChange = (selection, downshift) => {\n if (selection) {\n downshift.clearSelection(() => {\n dispatch({ type: 'setSelectedLocation', payload: selection })\n })\n }\n }\n\n return (\n (item ? item.title : '')}>\n {({\n getInputProps,\n getItemProps,\n getLabelProps,\n getMenuProps,\n getToggleButtonProps,\n isOpen,\n inputValue,\n highlightedIndex,\n getRootProps,\n }) => (\n
\n \n
\n \n \n \n \n \n \n
\n
    \n {isOpen\n ? locations\n .filter((item) => !inputValue || item.title.toLowerCase().includes(inputValue.toLowerCase()))\n .map((item, index) => (\n \n {item.title}\n \n ))\n : null}\n
\n
\n )}\n
\n )\n}\n\nexport default LocationSearch\n","import PropTypes from 'prop-types'\nimport { useEffect } from 'react'\nimport { useAppDispatch } from './Context'\n\nimport Sidebar from './Sidebar'\nimport Map from './Map'\nimport LocationSearch from './LocationSearch'\n\nfunction App({ data }) {\n const dispatch = useAppDispatch()\n\n useEffect(() => {\n dispatch({ type: 'setLocations', payload: data.locations })\n dispatch({ type: 'setEndpoint', payload: data.endpoint })\n\n document.getElementById('locations-app').classList.add('is-init')\n }, [])\n\n return (\n
\n \n \n \n
\n )\n}\n\nApp.propTypes = {\n data: PropTypes.object,\n endpoint: PropTypes.string,\n}\n\nexport default App\n","import ReactDOM from 'react-dom'\nimport App from '@components/locations'\nimport { AppProvider } from '@components/locations/Context'\n\nconst rootNode = document.getElementById('locations-app')\n\nconst fn = {\n init: () => {\n const data = JSON.parse(rootNode.dataset.json)\n const endpoint = rootNode.dataset.endpoint\n\n ReactDOM.render(\n \n \n ,\n rootNode\n )\n },\n}\n\nexport default {\n can: () => rootNode,\n run: fn.init,\n}\n","import { isTouchDevice } from '../common/util'\nimport throttle from 'lodash/throttle'\nimport { on } from 'delegated-events'\nimport Swiper, { EffectFade, Mousewheel, Scrollbar, Thumbs } from 'swiper'\n\nSwiper.use([EffectFade, Mousewheel, Scrollbar, Thumbs])\n\nconst fn = {\n init: () => {\n const thumbContainer = document.querySelector('.album-thumb-slider .swiper')\n const albumContainer = document.querySelector('.album-slider .swiper')\n\n const numSlides = albumContainer.querySelectorAll('.swiper-slide').length\n\n const albumOpts = {\n speed: 300,\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n on: {\n afterInit: fn.setThumbsHeight,\n },\n }\n\n if (numSlides > 1) {\n const thumbOpts = {\n allowTouchMove: isTouchDevice,\n touchRatio: isTouchDevice ? 1 : 0,\n spaceBetween: 16,\n slidesPerView: 3,\n watchSlidesProgress: true,\n mousewheel: true,\n scrollbar: {\n el: thumbContainer.querySelector('.swiper-scrollbar'),\n hide: false,\n },\n breakpoints: {\n 768: {\n direction: 'vertical',\n slidesPerView: 'auto',\n },\n },\n }\n\n const thumbSlider = new Swiper(thumbContainer, thumbOpts)\n\n albumOpts.thumbs = {\n swiper: thumbSlider,\n }\n }\n\n if (numSlides > 1) {\n new Swiper(albumContainer, albumOpts)\n\n window.addEventListener('resize', throttle(fn.setThumbsHeight, 250))\n }\n\n on('click', '.photo-caption-toggle', (e) => {\n const caption = e.target.closest('div').querySelector('.photo-caption')\n\n caption.classList.toggle('is-active')\n })\n },\n\n setThumbsHeight: () => {\n const thumbContainer = document.querySelector('.album-thumb-slider')\n const albumContainer = document.querySelector('.album-slider')\n\n if (thumbContainer) {\n thumbContainer.style.setProperty('--sidebar-height', `${albumContainer.offsetHeight}px`)\n }\n },\n}\n\nexport default {\n can: () => document.body.classList.contains('pagetype-photogallerypage-view'),\n run: fn.init,\n}\n","import { on } from 'delegated-events'\nimport Swiper, { Autoplay, EffectFade } from 'swiper'\nimport scrollTo from '../common/scrollTo'\n\nSwiper.use([Autoplay, EffectFade])\n\nconst fn = {\n init: () => {\n on('scrolldropdownchange', 'html', fn.handleAccordion)\n document.querySelectorAll('.usergroup-testimonials-slider').forEach((el) => fn.setupSlider(el))\n fn.handleAccordion()\n },\n\n handleAccordion: (e) => {\n let section = null\n\n if (e && e.detail.value) {\n section = document.querySelector(e.detail.value)\n } else if (window.location.hash) {\n const hashTarget = document.querySelector(window.location.hash)\n\n if (hashTarget) {\n section = hashTarget\n }\n }\n\n if (section) {\n const el = section.querySelector('[data-slide-toggle]')\n\n if (el) {\n const trigger = el.closest('[data-slide-toggle]')\n const target = document.getElementById(trigger.getAttribute('aria-controls'))\n\n if (trigger && target) {\n trigger.setAttribute('aria-expanded', 'true')\n trigger.parentNode.classList.add('is-active')\n target.classList.remove('hidden')\n target.style.display = null\n\n const otherTriggers = Array.from(\n document.querySelectorAll('[data-slide-toggle][aria-expanded=\"true\"]')\n ).filter((x) => x !== trigger)\n\n if (otherTriggers.length) {\n otherTriggers.forEach((el) => {\n const otherTrigger = el\n const otherTarget = document.getElementById(otherTrigger.getAttribute('aria-controls'))\n\n otherTrigger.setAttribute('aria-expanded', 'false')\n otherTrigger.parentNode.classList.remove('is-active')\n otherTarget.classList.add('hidden')\n otherTarget.style.display = null\n })\n }\n }\n }\n\n scrollTo(section)\n }\n },\n\n setupSlider: (el) => {\n const container = el.querySelector('.swiper')\n\n if (!container) {\n return\n }\n\n const numSlides = container.querySelectorAll('.swiper-slide').length\n\n if (numSlides > 1) {\n new Swiper(container, {\n autoplay: {\n delay: 6000,\n },\n slidesPerView: 1,\n speed: 750,\n loop: true,\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n })\n }\n },\n}\n\nexport default {\n can: () => document.body.classList.contains('pagetype-usergrouppage'),\n run: fn.init,\n}\n","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n var passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true;\n return undefined;\n }\n };\n window.addEventListener('testPassive', null, passiveTestOptions);\n window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPosition = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n var computedBodyPaddingRight = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'), 10);\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = computedBodyPaddingRight + scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n};\n\nvar setPositionFixed = function setPositionFixed() {\n return window.requestAnimationFrame(function () {\n // If previousBodyPosition is already set, don't set it again.\n if (previousBodyPosition === undefined) {\n previousBodyPosition = {\n position: document.body.style.position,\n top: document.body.style.top,\n left: document.body.style.left\n };\n\n // Update the dom inside an animation frame \n var _window = window,\n scrollY = _window.scrollY,\n scrollX = _window.scrollX,\n innerHeight = _window.innerHeight;\n\n document.body.style.position = 'fixed';\n document.body.style.top = -scrollY;\n document.body.style.left = -scrollX;\n\n setTimeout(function () {\n return window.requestAnimationFrame(function () {\n // Attempt to check if the bottom bar appeared due to the position change\n var bottomBarHeight = innerHeight - window.innerHeight;\n if (bottomBarHeight && scrollY >= innerHeight) {\n // Move the content further up so that the bottom bar doesn't hide it\n document.body.style.top = -(scrollY + bottomBarHeight);\n }\n });\n }, 300);\n }\n });\n};\n\nvar restorePositionSetting = function restorePositionSetting() {\n if (previousBodyPosition !== undefined) {\n // Convert the position from \"px\" to Int\n var y = -parseInt(document.body.style.top, 10);\n var x = -parseInt(document.body.style.left, 10);\n\n // Restore styles\n document.body.style.position = previousBodyPosition.position;\n document.body.style.top = previousBodyPosition.top;\n document.body.style.left = previousBodyPosition.left;\n\n // Restore scroll\n window.scrollTo(x, y);\n\n previousBodyPosition = undefined;\n }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nexport var disableBodyScroll = function disableBodyScroll(targetElement, options) {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n return;\n }\n\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n if (isIosDevice) {\n setPositionFixed();\n } else {\n setOverflowHidden(options);\n }\n\n if (isIosDevice) {\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n }\n};\n\nexport var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n // Reset initial clientY.\n initialClientY = -1;\n }\n\n if (isIosDevice) {\n restorePositionSetting();\n } else {\n restoreOverflowSetting();\n }\n\n locks = [];\n};\n\nexport var enableBodyScroll = function enableBodyScroll(targetElement) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (isIosDevice) {\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n }\n\n if (isIosDevice) {\n restorePositionSetting();\n } else {\n restoreOverflowSetting();\n }\n};\n\n","/*!\n * Chart.js v3.7.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst emptyString = '';\nconst dot = '.';\nfunction indexOfDotOrLength(key, start) {\n const idx = key.indexOf(dot, start);\n return idx === -1 ? key.length : idx;\n}\nfunction resolveObjectKey(obj, key) {\n if (key === emptyString) {\n return obj;\n }\n let pos = 0;\n let idx = indexOfDotOrLength(key, pos);\n while (obj && idx > pos) {\n obj = obj[key.substr(pos, idx - pos)];\n pos = idx + 1;\n idx = indexOfDotOrLength(key, pos);\n }\n return obj;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.1.9\n * https://github.com/kurkle/color#readme\n * (c) 2020 Jukka Kurkela\n * Released under the MIT License\n */\nconst map = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = '0123456789ABCDEF';\nconst h1 = (b) => hex[b & 0xF];\nconst h2 = (b) => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = (b) => (((b & 0xF0) >> 4) === (b & 0xF));\nfunction isShort(v) {\n\treturn eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n}\nfunction hexParse(str) {\n\tvar len = str.length;\n\tvar ret;\n\tif (str[0] === '#') {\n\t\tif (len === 4 || len === 5) {\n\t\t\tret = {\n\t\t\t\tr: 255 & map[str[1]] * 17,\n\t\t\t\tg: 255 & map[str[2]] * 17,\n\t\t\t\tb: 255 & map[str[3]] * 17,\n\t\t\t\ta: len === 5 ? map[str[4]] * 17 : 255\n\t\t\t};\n\t\t} else if (len === 7 || len === 9) {\n\t\t\tret = {\n\t\t\t\tr: map[str[1]] << 4 | map[str[2]],\n\t\t\t\tg: map[str[3]] << 4 | map[str[4]],\n\t\t\t\tb: map[str[5]] << 4 | map[str[6]],\n\t\t\t\ta: len === 9 ? (map[str[7]] << 4 | map[str[8]]) : 255\n\t\t\t};\n\t\t}\n\t}\n\treturn ret;\n}\nfunction hexString(v) {\n\tvar f = isShort(v) ? h1 : h2;\n\treturn v\n\t\t? '#' + f(v.r) + f(v.g) + f(v.b) + (v.a < 255 ? f(v.a) : '')\n\t\t: v;\n}\nfunction round(v) {\n\treturn v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n\treturn lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n\treturn lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n\treturn lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n\treturn lim(round(v * 100), 0, 100);\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n\tconst m = RGB_RE.exec(str);\n\tlet a = 255;\n\tlet r, g, b;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[7] !== r) {\n\t\tconst v = +m[7];\n\t\ta = 255 & (m[8] ? p2b(v) : v * 255);\n\t}\n\tr = +m[1];\n\tg = +m[3];\n\tb = +m[5];\n\tr = 255 & (m[2] ? p2b(r) : r);\n\tg = 255 & (m[4] ? p2b(g) : g);\n\tb = 255 & (m[6] ? p2b(b) : b);\n\treturn {\n\t\tr: r,\n\t\tg: g,\n\t\tb: b,\n\t\ta: a\n\t};\n}\nfunction rgbString(v) {\n\treturn v && (\n\t\tv.a < 255\n\t\t\t? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n\t\t\t: `rgb(${v.r}, ${v.g}, ${v.b})`\n\t);\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n\tconst a = s * Math.min(l, 1 - l);\n\tconst f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n\treturn [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n\tconst f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n\treturn [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n\tconst rgb = hsl2rgbn(h, 1, 0.5);\n\tlet i;\n\tif (w + b > 1) {\n\t\ti = 1 / (w + b);\n\t\tw *= i;\n\t\tb *= i;\n\t}\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] *= 1 - w - b;\n\t\trgb[i] += w;\n\t}\n\treturn rgb;\n}\nfunction rgb2hsl(v) {\n\tconst range = 255;\n\tconst r = v.r / range;\n\tconst g = v.g / range;\n\tconst b = v.b / range;\n\tconst max = Math.max(r, g, b);\n\tconst min = Math.min(r, g, b);\n\tconst l = (max + min) / 2;\n\tlet h, s, d;\n\tif (max !== min) {\n\t\td = max - min;\n\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\t\th = max === r\n\t\t\t? ((g - b) / d) + (g < b ? 6 : 0)\n\t\t\t: max === g\n\t\t\t\t? (b - r) / d + 2\n\t\t\t\t: (r - g) / d + 4;\n\t\th = h * 60 + 0.5;\n\t}\n\treturn [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n\treturn (\n\t\tArray.isArray(a)\n\t\t\t? f(a[0], a[1], a[2])\n\t\t\t: f(a, b, c)\n\t).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n\treturn calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n\treturn calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n\treturn calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n\treturn (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n\tconst m = HUE_RE.exec(str);\n\tlet a = 255;\n\tlet v;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[5] !== v) {\n\t\ta = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n\t}\n\tconst h = hue(+m[2]);\n\tconst p1 = +m[3] / 100;\n\tconst p2 = +m[4] / 100;\n\tif (m[1] === 'hwb') {\n\t\tv = hwb2rgb(h, p1, p2);\n\t} else if (m[1] === 'hsv') {\n\t\tv = hsv2rgb(h, p1, p2);\n\t} else {\n\t\tv = hsl2rgb(h, p1, p2);\n\t}\n\treturn {\n\t\tr: v[0],\n\t\tg: v[1],\n\t\tb: v[2],\n\t\ta: a\n\t};\n}\nfunction rotate(v, deg) {\n\tvar h = rgb2hsl(v);\n\th[0] = hue(h[0] + deg);\n\th = hsl2rgb(h);\n\tv.r = h[0];\n\tv.g = h[1];\n\tv.b = h[2];\n}\nfunction hslString(v) {\n\tif (!v) {\n\t\treturn;\n\t}\n\tconst a = rgb2hsl(v);\n\tconst h = a[0];\n\tconst s = n2p(a[1]);\n\tconst l = n2p(a[2]);\n\treturn v.a < 255\n\t\t? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n\t\t: `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map$1 = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n\tconst unpacked = {};\n\tconst keys = Object.keys(names);\n\tconst tkeys = Object.keys(map$1);\n\tlet i, j, k, ok, nk;\n\tfor (i = 0; i < keys.length; i++) {\n\t\tok = nk = keys[i];\n\t\tfor (j = 0; j < tkeys.length; j++) {\n\t\t\tk = tkeys[j];\n\t\t\tnk = nk.replace(k, map$1[k]);\n\t\t}\n\t\tk = parseInt(names[ok], 16);\n\t\tunpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n\t}\n\treturn unpacked;\n}\nlet names$1;\nfunction nameParse(str) {\n\tif (!names$1) {\n\t\tnames$1 = unpack();\n\t\tnames$1.transparent = [0, 0, 0, 0];\n\t}\n\tconst a = names$1[str.toLowerCase()];\n\treturn a && {\n\t\tr: a[0],\n\t\tg: a[1],\n\t\tb: a[2],\n\t\ta: a.length === 4 ? a[3] : 255\n\t};\n}\nfunction modHSL(v, i, ratio) {\n\tif (v) {\n\t\tlet tmp = rgb2hsl(v);\n\t\ttmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n\t\ttmp = hsl2rgb(tmp);\n\t\tv.r = tmp[0];\n\t\tv.g = tmp[1];\n\t\tv.b = tmp[2];\n\t}\n}\nfunction clone(v, proto) {\n\treturn v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n\tvar v = {r: 0, g: 0, b: 0, a: 255};\n\tif (Array.isArray(input)) {\n\t\tif (input.length >= 3) {\n\t\t\tv = {r: input[0], g: input[1], b: input[2], a: 255};\n\t\t\tif (input.length > 3) {\n\t\t\t\tv.a = n2b(input[3]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tv = clone(input, {r: 0, g: 0, b: 0, a: 1});\n\t\tv.a = n2b(v.a);\n\t}\n\treturn v;\n}\nfunction functionParse(str) {\n\tif (str.charAt(0) === 'r') {\n\t\treturn rgbParse(str);\n\t}\n\treturn hueParse(str);\n}\nclass Color {\n\tconstructor(input) {\n\t\tif (input instanceof Color) {\n\t\t\treturn input;\n\t\t}\n\t\tconst type = typeof input;\n\t\tlet v;\n\t\tif (type === 'object') {\n\t\t\tv = fromObject(input);\n\t\t} else if (type === 'string') {\n\t\t\tv = hexParse(input) || nameParse(input) || functionParse(input);\n\t\t}\n\t\tthis._rgb = v;\n\t\tthis._valid = !!v;\n\t}\n\tget valid() {\n\t\treturn this._valid;\n\t}\n\tget rgb() {\n\t\tvar v = clone(this._rgb);\n\t\tif (v) {\n\t\t\tv.a = b2n(v.a);\n\t\t}\n\t\treturn v;\n\t}\n\tset rgb(obj) {\n\t\tthis._rgb = fromObject(obj);\n\t}\n\trgbString() {\n\t\treturn this._valid ? rgbString(this._rgb) : this._rgb;\n\t}\n\thexString() {\n\t\treturn this._valid ? hexString(this._rgb) : this._rgb;\n\t}\n\thslString() {\n\t\treturn this._valid ? hslString(this._rgb) : this._rgb;\n\t}\n\tmix(color, weight) {\n\t\tconst me = this;\n\t\tif (color) {\n\t\t\tconst c1 = me.rgb;\n\t\t\tconst c2 = color.rgb;\n\t\t\tlet w2;\n\t\t\tconst p = weight === w2 ? 0.5 : weight;\n\t\t\tconst w = 2 * p - 1;\n\t\t\tconst a = c1.a - c2.a;\n\t\t\tconst w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\t\tw2 = 1 - w1;\n\t\t\tc1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n\t\t\tc1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n\t\t\tc1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n\t\t\tc1.a = p * c1.a + (1 - p) * c2.a;\n\t\t\tme.rgb = c1;\n\t\t}\n\t\treturn me;\n\t}\n\tclone() {\n\t\treturn new Color(this.rgb);\n\t}\n\talpha(a) {\n\t\tthis._rgb.a = n2b(a);\n\t\treturn this;\n\t}\n\tclearer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 - ratio;\n\t\treturn this;\n\t}\n\tgreyscale() {\n\t\tconst rgb = this._rgb;\n\t\tconst val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n\t\trgb.r = rgb.g = rgb.b = val;\n\t\treturn this;\n\t}\n\topaquer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 + ratio;\n\t\treturn this;\n\t}\n\tnegate() {\n\t\tconst v = this._rgb;\n\t\tv.r = 255 - v.r;\n\t\tv.g = 255 - v.g;\n\t\tv.b = 255 - v.b;\n\t\treturn this;\n\t}\n\tlighten(ratio) {\n\t\tmodHSL(this._rgb, 2, ratio);\n\t\treturn this;\n\t}\n\tdarken(ratio) {\n\t\tmodHSL(this._rgb, 2, -ratio);\n\t\treturn this;\n\t}\n\tsaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, ratio);\n\t\treturn this;\n\t}\n\tdesaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, -ratio);\n\t\treturn this;\n\t}\n\trotate(deg) {\n\t\trotate(this._rgb, deg);\n\t\treturn this;\n\t}\n}\nfunction index_esm(input) {\n\treturn new Color(input);\n}\n\nconst isPatternOrGradient = (value) => value instanceof CanvasGradient || value instanceof CanvasPattern;\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n let type, xOffset, yOffset, size, cornerRadius;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n ctx.arc(x, y, radius, 0, TAU);\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(evt, canvas) {\n const e = evt.native || evt;\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _toLeftRightCenter as $, _rlookupByKey as A, getAngleFromPoint as B, toPadding as C, each as D, getMaximumSize as E, _getParentNode as F, readUsedSize as G, HALF_PI as H, throttled as I, supportsEventListenerOptions as J, _isDomSupported as K, log10 as L, _factorize as M, finiteOrDefault as N, callback as O, PI as P, _addGrace as Q, toDegrees as R, _measureText as S, TAU as T, _int16Range as U, _alignPixel as V, clipArea as W, renderText as X, unclipArea as Y, toFont as Z, _arrayUnique as _, resolve as a, _angleDiff as a$, _alignStartEnd as a0, overrides as a1, merge as a2, _capitalize as a3, descriptors as a4, isFunction as a5, _attachContext as a6, _createResolver as a7, _descriptors as a8, mergeIf as a9, restoreTextDirection as aA, noop as aB, distanceBetweenPoints as aC, _setMinAndMaxByKey as aD, niceNum as aE, almostWhole as aF, almostEquals as aG, _decimalPlaces as aH, _longestText as aI, _filterBetween as aJ, _lookup as aK, getHoverColor as aL, clone$1 as aM, _merger as aN, _mergerIf as aO, _deprecated as aP, toFontString as aQ, splineCurve as aR, splineCurveMonotone as aS, getStyle as aT, fontString as aU, toLineHeight as aV, PITAU as aW, INFINITY as aX, RAD_PER_DEG as aY, QUARTER_PI as aZ, TWO_THIRDS_PI as a_, uid as aa, debounce as ab, retinaScale as ac, clearCanvas as ad, setsEqual as ae, _elementsEqual as af, _isClickEvent as ag, _isBetween as ah, _readValueToProps as ai, _updateBezierControlPoints as aj, _computeSegments as ak, _boundSegments as al, _steppedInterpolation as am, _bezierInterpolation as an, _pointInLine as ao, _steppedLineTo as ap, _bezierCurveTo as aq, drawPoint as ar, addRoundedRectPath as as, toTRBL as at, toTRBLCorners as au, _boundSegment as av, _normalizeAngle as aw, getRtlAdapter as ax, overrideTextDirection as ay, _textX as az, isArray as b, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, isNumber as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _limitValue as w, _lookupByKey as x, getRelativePosition as y, _isPointInArea as z };\n","/*!\n * Chart.js v3.7.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as isNumber, w as _limitValue, x as _lookupByKey, y as getRelativePosition$1, z as _isPointInArea, A as _rlookupByKey, B as getAngleFromPoint, C as toPadding, D as each, E as getMaximumSize, F as _getParentNode, G as readUsedSize, I as throttled, J as supportsEventListenerOptions, K as _isDomSupported, L as log10, M as _factorize, N as finiteOrDefault, O as callback, Q as _addGrace, R as toDegrees, S as _measureText, U as _int16Range, V as _alignPixel, W as clipArea, X as renderText, Y as unclipArea, Z as toFont, $ as _toLeftRightCenter, a0 as _alignStartEnd, a1 as overrides, a2 as merge, a3 as _capitalize, a4 as descriptors, a5 as isFunction, a6 as _attachContext, a7 as _createResolver, a8 as _descriptors, a9 as mergeIf, aa as uid, ab as debounce, ac as retinaScale, ad as clearCanvas, ae as setsEqual, af as _elementsEqual, ag as _isClickEvent, ah as _isBetween, ai as _readValueToProps, aj as _updateBezierControlPoints, ak as _computeSegments, al as _boundSegments, am as _steppedInterpolation, an as _bezierInterpolation, ao as _pointInLine, ap as _steppedLineTo, aq as _bezierCurveTo, ar as drawPoint, as as addRoundedRectPath, at as toTRBL, au as toTRBLCorners, av as _boundSegment, aw as _normalizeAngle, ax as getRtlAdapter, ay as overrideTextDirection, az as _textX, aA as restoreTextDirection, aB as noop, aC as distanceBetweenPoints, aD as _setMinAndMaxByKey, aE as niceNum, aF as almostWhole, aG as almostEquals, aH as _decimalPlaces, aI as _longestText, aJ as _filterBetween, aK as _lookup } from './chunks/helpers.segment.js';\nexport { d as defaults } from './chunks/helpers.segment.js';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const metasets = iScale.getMatchingVisibleMetas(this._type);\n const stacked = iScale.options.stacked;\n const ilen = metasets.length;\n const stacks = [];\n let i, item;\n for (i = 0; i < ilen; ++i) {\n item = metasets[i];\n if (!item.controller.options.grouped) {\n continue;\n }\n if (typeof dataIndex !== 'undefined') {\n const val = item.controller.getParsed(dataIndex)[\n item.controller._cachedMeta.vScale.axis\n ];\n if (isNullOrUndef(val) || isNaN(val)) {\n continue;\n }\n }\n if (stacked === false || stacks.indexOf(item.stack) === -1 ||\n\t\t\t\t(stacked === undefined && item.stack === undefined)) {\n stacks.push(item.stack);\n }\n if (item.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\nfunction getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max)).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const dataset = this.getDataset();\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(dataset.data[i]) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const dataset = this.getDataset();\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(dataset.data[index]) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const dataset = this.getDataset();\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, dataset.data[i]);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass ScatterController extends LineController {\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction getRelativePosition(e, chart) {\n if ('native' in e) {\n return {\n x: e.x,\n y: e.y\n };\n }\n return getRelativePosition$1(e, chart);\n}\nfunction evaluateAllVisibleItems(chart, handler) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n let index, data, element;\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n ({index, data} = metasets[i]);\n for (let j = 0, jlen = data.length; j < jlen; ++j) {\n element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction optimizedEvaluateItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition) {\n const items = [];\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n optimizedEvaluateItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = _isPointInArea(center, chart.chartArea, chart._minPadding);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition) {\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition);\n}\nfunction getAxisItems(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const items = [];\n const axis = options.axis;\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateAllVisibleItems(chart, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n intersectsItem = true;\n }\n });\n if (options.intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition)\n : getNearestItems(chart, position, axis, false, useFinalPosition);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition) :\n getNearestItems(chart, position, axis, false, useFinalPosition);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getIntersectItems(chart, position, axis, useFinalPosition);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition);\n },\n x(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'x', intersect: options.intersect}, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'y', intersect: options.intersect}, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition$1(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = grid.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n if (isHorizontal) {\n x = pixel;\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n }\n }\n return plugins;\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, plugins, options, all) {\n const result = [];\n const context = chart.getContext();\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, plugin, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, plugin, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n return config.createResolver(scopes, context, [''], {scriptable: false, indexable: false, allKeys: true});\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.7.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: _isPointInArea(e, this.chartArea, this._minPadding)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (meta.type !== 'line') {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\nfunction decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n if (fill[0] === '-' || fill[0] === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n let target = null;\n let horizontal;\n if (fill === 'start') {\n target = scale.bottom;\n } else if (fill === 'end') {\n target = scale.top;\n } else if (isObject(fill)) {\n target = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n target = scale.getBasePixel();\n }\n if (isNumberFinite(target)) {\n horizontal = scale.isHorizontal();\n return {\n x: horizontal ? target : null,\n y: horizontal ? null : target\n };\n }\n return null;\n}\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const target = [];\n const start = options.reverse ? scale.max : scale.min;\n const end = options.reverse ? scale.min : scale.max;\n let i, center, value;\n if (fill === 'start') {\n value = start;\n } else if (fill === 'end') {\n value = end;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n if (options.grid.circular) {\n center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\nfunction getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return createBoundaryLine(boundary, line);\n}\nfunction createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _clip(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = findSegmentEnd(start, end, points);\n const bounds = getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\nfunction _fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n _clip(ctx, target, area.top);\n _fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n _clip(ctx, target, area.bottom);\n }\n _fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction drawfill(ctx, source, area) {\n const target = getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nvar plugin_filler = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw) {\n drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (source) {\n drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!source || source.fill === false || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxWidth * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if (type === 'mousemove' && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n if (tooltip) {\n tooltip.draw(chart.ctx);\n }\n chart.notifyPlugins('afterTooltipDraw', args);\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: plugin_filler,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n ctx.fillRect(left - padding.left, top - padding.top, right - left + padding.width, bottom - top + padding.height);\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, plugin_filler as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var global = require('../internals/global');\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw TypeError('Incorrect invocation');\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw TypeError(tryToString(argument) + ' is not iterable');\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es-x/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es-x/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n redefine(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es-x/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es-x/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof Object ? ObjectPrototype : null;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar TypeError = global.TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.22.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar RangeError = global.RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = charCodeAt(string, counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = charCodeAt(string, counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n push(output, value);\n counter--;\n }\n } else {\n push(output, value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n while (delta > baseMinusTMin * tMax >> 1) {\n delta = floor(delta / baseMinusTMin);\n k += base;\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n push(output, fromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n push(output, delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n var k = base;\n while (true) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n k += base;\n }\n\n push(output, fromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n handledCPCount++;\n }\n }\n\n delta++;\n n++;\n }\n return join(output, '');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n }\n return join(encoded, '.');\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n return passed;\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n redefine(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arraySort = require('../internals/array-sort');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nvar safeGetBuiltIn = function (name) {\n if (!DESCRIPTORS) return global[name];\n var descriptor = getOwnPropertyDescriptor(global, name);\n return descriptor && descriptor.value;\n};\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = replace(it, plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = replace(result, percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replacements[match];\n};\n\nvar serialize = function (it) {\n return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n}, true);\n\nvar URLSearchParamsState = function (init) {\n this.entries = [];\n this.url = null;\n\n if (init !== undefined) {\n if (isObject(init)) this.parseObject(init);\n else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n }\n};\n\nURLSearchParamsState.prototype = {\n type: URL_SEARCH_PARAMS,\n bindURL: function (url) {\n this.url = url;\n this.update();\n },\n parseObject: function (object) {\n var iteratorMethod = getIteratorMethod(object);\n var iterator, next, step, entryIterator, entryNext, first, second;\n\n if (iteratorMethod) {\n iterator = getIterator(object, iteratorMethod);\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = call(entryNext, entryIterator)).done ||\n (second = call(entryNext, entryIterator)).done ||\n !call(entryNext, entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n }\n } else for (var key in object) if (hasOwn(object, key)) {\n push(this.entries, { key: key, value: $toString(object[key]) });\n }\n },\n parseQuery: function (query) {\n if (query) {\n var attributes = split(query, '&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = split(attribute, '=');\n push(this.entries, {\n key: deserialize(shift(entry)),\n value: deserialize(join(entry, '='))\n });\n }\n }\n }\n },\n serialize: function () {\n var entries = this.entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n push(result, serialize(entry.key) + '=' + serialize(entry.value));\n } return join(result, '&');\n },\n update: function () {\n this.entries.length = 0;\n this.parseQuery(this.url.query);\n },\n updateURL: function () {\n if (this.url) this.url.update();\n }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsPrototype);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n setInternalState(this, new URLSearchParamsState(init));\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n push(state.entries, { key: $toString(name), value: $toString(value) });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) splice(entries, index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) push(result, entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = $toString(name);\n var val = $toString(value);\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) splice(entries, index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) push(entries, { key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n arraySort(state.entries, function (a, b) {\n return a.key > b.key ? 1 : -1;\n });\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n var headersHas = uncurryThis(HeadersPrototype.has);\n var headersSet = uncurryThis(HeadersPrototype.set);\n\n var wrapRequestOptions = function (init) {\n if (isObject(init)) {\n var body = init.body;\n var headers;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headersHas(headers, 'content-type')) {\n headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n return create(init, {\n body: createPropertyDescriptor(0, $toString(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n } return init;\n };\n\n if (isCallable(nativeFetch)) {\n $({ global: true, enumerable: true, noTargetGet: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n }\n });\n }\n\n if (isCallable(NativeRequest)) {\n var RequestConstructor = function Request(input /* , init */) {\n anInstance(this, RequestPrototype);\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n };\n\n RequestPrototype.constructor = RequestConstructor;\n RequestConstructor.prototype = RequestPrototype;\n\n $({ global: true, forced: true, noTargetGet: true }, {\n Request: RequestConstructor\n });\n }\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url-search-params.constructor');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineProperties = require('../internals/object-define-properties').f;\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar arraySlice = require('../internals/array-slice-simple');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar URLSearchParamsModule = require('../modules/web.url-search-params.constructor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+|[\\u0000-\\u0020]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n var parts = split(input, '.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.length--;\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && charAt(part, 0) == '0') {\n radix = exec(HEX_START, part) ? 16 : 8;\n part = stringSlice(part, radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;\n number = parseInt(part, radix);\n }\n push(numbers, number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = pop(numbers);\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var chr = function () {\n return charAt(input, pointer);\n };\n\n if (chr() == ':') {\n if (charAt(input, 1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (chr()) {\n if (pieceIndex == 8) return;\n if (chr() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && exec(HEX, chr())) {\n value = value * 16 + parseInt(chr(), 16);\n pointer++;\n length++;\n }\n if (chr() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (chr()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (chr() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!exec(DIGIT, chr())) return;\n while (exec(DIGIT, chr())) {\n number = parseInt(chr(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (chr() == ':') {\n pointer++;\n if (!chr()) return;\n } else if (chr()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n unshift(result, host % 256);\n host = floor(host / 256);\n } return join(result, '.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += numberToString(host[index], 16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && exec(ALPHA, charAt(string, 0))\n && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n string.length == 2 ||\n ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n segment = toLowerCase(segment);\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n var urlString = $toString(url);\n var baseState, failure, searchParams;\n if (isBase) {\n failure = this.parse(urlString);\n if (failure) throw TypeError(failure);\n this.searchParams = null;\n } else {\n if (base !== undefined) baseState = new URLState(base, true);\n failure = this.parse(urlString, null, baseState);\n if (failure) throw TypeError(failure);\n searchParams = getInternalSearchParamsState(new URLSearchParams());\n searchParams.bindURL(this);\n this.searchParams = searchParams;\n }\n};\n\nURLState.prototype = {\n type: 'URL',\n // https://url.spec.whatwg.org/#url-parsing\n // eslint-disable-next-line max-statements -- TODO\n parse: function (input, stateOverride, base) {\n var url = this;\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, chr, bufferCodePoints, failure;\n\n input = $toString(input);\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = replace(input, LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = replace(input, TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n chr = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (chr && exec(ALPHA, chr)) {\n buffer += toLowerCase(chr);\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {\n buffer += toLowerCase(chr);\n } else if (chr == ':') {\n if (stateOverride && (\n (url.isSpecial() != hasOwn(specialSchemes, buffer)) ||\n (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (url.isSpecial() && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (url.isSpecial()) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n push(url.path, '');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && chr == '#') {\n url.scheme = base.scheme;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (chr == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (chr == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (chr == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '/' || (chr == '\\\\' && url.isSpecial())) {\n state = RELATIVE_SLASH;\n } else if (chr == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.path.length--;\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (url.isSpecial() && (chr == '/' || chr == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (chr == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (chr != '/' && chr != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (chr == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += chr;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (chr == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (url.isSpecial() && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (chr == '[') seenBracket = true;\n else if (chr == ']') seenBracket = false;\n buffer += chr;\n } break;\n\n case PORT:\n if (exec(DIGIT, chr)) {\n buffer += chr;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial()) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (chr == '/' || chr == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (chr == EOF) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '?') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.shortenPath();\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (chr == '/' || chr == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (chr == EOF || chr == '/' || chr == '\\\\' || chr == '?' || chr == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = url.parseHost(buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += chr;\n break;\n\n case PATH_START:\n if (url.isSpecial()) {\n state = PATH;\n if (chr != '/' && chr != '\\\\') continue;\n } else if (!stateOverride && chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n state = PATH;\n if (chr != '/') continue;\n } break;\n\n case PATH:\n if (\n chr == EOF || chr == '/' ||\n (chr == '\\\\' && url.isSpecial()) ||\n (!stateOverride && (chr == '?' || chr == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n url.shortenPath();\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else if (isSingleDot(buffer)) {\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n }\n push(url.path, buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n shift(url.path);\n }\n }\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(chr, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n if (chr == \"'\" && url.isSpecial()) url.query += '%27';\n else if (chr == '#') url.query += '%23';\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n },\n // https://url.spec.whatwg.org/#host-parsing\n parseHost: function (input) {\n var result, codePoints, index;\n if (charAt(input, 0) == '[') {\n if (charAt(input, input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(stringSlice(input, 1, -1));\n if (!result) return INVALID_HOST;\n this.host = result;\n // opaque host\n } else if (!this.isSpecial()) {\n if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n this.host = result;\n } else {\n input = toASCII(input);\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n this.host = result;\n }\n },\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n cannotHaveUsernamePasswordPort: function () {\n return !this.host || this.cannotBeABaseURL || this.scheme == 'file';\n },\n // https://url.spec.whatwg.org/#include-credentials\n includesCredentials: function () {\n return this.username != '' || this.password != '';\n },\n // https://url.spec.whatwg.org/#is-special\n isSpecial: function () {\n return hasOwn(specialSchemes, this.scheme);\n },\n // https://url.spec.whatwg.org/#shorten-a-urls-path\n shortenPath: function () {\n var path = this.path;\n var pathSize = path.length;\n if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.length--;\n }\n },\n // https://url.spec.whatwg.org/#concept-url-serializer\n serialize: function () {\n var url = this;\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (url.includesCredentials()) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n },\n // https://url.spec.whatwg.org/#dom-url-href\n setHref: function (href) {\n var failure = this.parse(href);\n if (failure) throw TypeError(failure);\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-origin\n getOrigin: function () {\n var scheme = this.scheme;\n var port = this.port;\n if (scheme == 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !this.isSpecial()) return 'null';\n return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n },\n // https://url.spec.whatwg.org/#dom-url-protocol\n getProtocol: function () {\n return this.scheme + ':';\n },\n setProtocol: function (protocol) {\n this.parse($toString(protocol) + ':', SCHEME_START);\n },\n // https://url.spec.whatwg.org/#dom-url-username\n getUsername: function () {\n return this.username;\n },\n setUsername: function (username) {\n var codePoints = arrayFrom($toString(username));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-password\n getPassword: function () {\n return this.password;\n },\n setPassword: function (password) {\n var codePoints = arrayFrom($toString(password));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-host\n getHost: function () {\n var host = this.host;\n var port = this.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n },\n setHost: function (host) {\n if (this.cannotBeABaseURL) return;\n this.parse(host, HOST);\n },\n // https://url.spec.whatwg.org/#dom-url-hostname\n getHostname: function () {\n var host = this.host;\n return host === null ? '' : serializeHost(host);\n },\n setHostname: function (hostname) {\n if (this.cannotBeABaseURL) return;\n this.parse(hostname, HOSTNAME);\n },\n // https://url.spec.whatwg.org/#dom-url-port\n getPort: function () {\n var port = this.port;\n return port === null ? '' : $toString(port);\n },\n setPort: function (port) {\n if (this.cannotHaveUsernamePasswordPort()) return;\n port = $toString(port);\n if (port == '') this.port = null;\n else this.parse(port, PORT);\n },\n // https://url.spec.whatwg.org/#dom-url-pathname\n getPathname: function () {\n var path = this.path;\n return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n },\n setPathname: function (pathname) {\n if (this.cannotBeABaseURL) return;\n this.path = [];\n this.parse(pathname, PATH_START);\n },\n // https://url.spec.whatwg.org/#dom-url-search\n getSearch: function () {\n var query = this.query;\n return query ? '?' + query : '';\n },\n setSearch: function (search) {\n search = $toString(search);\n if (search == '') {\n this.query = null;\n } else {\n if ('?' == charAt(search, 0)) search = stringSlice(search, 1);\n this.query = '';\n this.parse(search, QUERY);\n }\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-searchparams\n getSearchParams: function () {\n return this.searchParams.facade;\n },\n // https://url.spec.whatwg.org/#dom-url-hash\n getHash: function () {\n var fragment = this.fragment;\n return fragment ? '#' + fragment : '';\n },\n setHash: function (hash) {\n hash = $toString(hash);\n if (hash == '') {\n this.fragment = null;\n return;\n }\n if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1);\n this.fragment = '';\n this.parse(hash, FRAGMENT);\n },\n update: function () {\n this.query = this.searchParams.serialize() || null;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLPrototype);\n var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n var state = setInternalState(that, new URLState(url, false, base));\n if (!DESCRIPTORS) {\n that.href = state.serialize();\n that.origin = state.getOrigin();\n that.protocol = state.getProtocol();\n that.username = state.getUsername();\n that.password = state.getPassword();\n that.host = state.getHost();\n that.hostname = state.getHostname();\n that.port = state.getPort();\n that.pathname = state.getPathname();\n that.search = state.getSearch();\n that.searchParams = state.getSearchParams();\n that.hash = state.getHash();\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n return {\n get: function () {\n return getInternalURLState(this)[getter]();\n },\n set: setter && function (value) {\n return getInternalURLState(this)[setter](value);\n },\n configurable: true,\n enumerable: true\n };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor('serialize', 'setHref'),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor('getOrigin'),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor('getProtocol', 'setProtocol'),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor('getUsername', 'setUsername'),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor('getPassword', 'setPassword'),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor('getHost', 'setHost'),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor('getHostname', 'setHostname'),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor('getPort', 'setPort'),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor('getPathname', 'setPathname'),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor('getSearch', 'setSearch'),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor('getSearchParams'),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor('getHash', 'setHash')\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url.constructor');\n","var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(t){for(var i,a=1,n=arguments.length;an.endVal?n.endVal:n.frameVal,n.frameVal=Number(n.frameVal.toFixed(n.options.decimalPlaces)),n.printValue(n.frameVal),i1?n.options.decimal+o[1]:\"\",n.options.useGrouping){e=\"\";for(var l=0,h=a.length;lwindow.scrollY&&t.paused?(t.paused=!1,setTimeout(function(){return t.start()},t.options.scrollSpyDelay)):window.scrollY>a&&!t.paused&&t.reset()}},t.prototype.determineDirectionAndSmartEasing=function(){var t=this.finalEndVal?this.finalEndVal:this.endVal;this.countDown=this.startVal>t;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold){this.finalEndVal=t;var a=this.countDown?1:-1;this.endVal=t+a*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},t.prototype.start=function(t){this.error||(this.callback=t,this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},t.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},t.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},t.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,this.finalEndVal||this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},t.prototype.printValue=function(t){var i=this.formattingFn(t);\"INPUT\"===this.el.tagName?this.el.value=i:\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=i:this.el.innerHTML=i},t.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},t.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \"+t,null)},t.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},t}();export{CountUp};","/*\n currency.js - v2.0.4\n http://scurker.github.io/currency.js\n\n Copyright (c) 2021 Jason Wilson\n Released under MIT license\n*/\n(function(e,g){\"object\"===typeof exports&&\"undefined\"!==typeof module?module.exports=g():\"function\"===typeof define&&define.amd?define(g):(e=e||self,e.currency=g())})(this,function(){function e(b,a){if(!(this instanceof e))return new e(b,a);a=Object.assign({},m,a);var d=Math.pow(10,a.precision);this.intValue=b=g(b,a);this.value=b/d;a.increment=a.increment||1/d;a.groups=a.useVedic?n:p;this.s=a;this.p=d}function g(b,a){var d=2= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n }\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\n\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\n\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\n\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\n\n\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference); // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastDayNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function (token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nvar ordinalNumber = function (dirtyNumber, _options) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","// Public: Create a new SelectorSet.\nexport default function SelectorSet() {\n // Construct new SelectorSet if called as a function.\n if (!(this instanceof SelectorSet)) {\n return new SelectorSet();\n }\n\n // Public: Number of selectors added to the set\n this.size = 0;\n\n // Internal: Incrementing ID counter\n this.uid = 0;\n\n // Internal: Array of String selectors in the set\n this.selectors = [];\n\n // Internal: Map of selector ids to objects\n this.selectorObjects = {};\n\n // Internal: All Object index String names mapping to Index objects.\n this.indexes = Object.create(this.indexes);\n\n // Internal: Used Object index String names mapping to Index objects.\n this.activeIndexes = [];\n}\n\n// Detect prefixed Element#matches function.\nvar docElem = window.document.documentElement;\nvar matches =\n docElem.matches ||\n docElem.webkitMatchesSelector ||\n docElem.mozMatchesSelector ||\n docElem.oMatchesSelector ||\n docElem.msMatchesSelector;\n\n// Public: Check if element matches selector.\n//\n// Maybe overridden with custom Element.matches function.\n//\n// el - An Element\n// selector - String CSS selector\n//\n// Returns true or false.\nSelectorSet.prototype.matchesSelector = function(el, selector) {\n return matches.call(el, selector);\n};\n\n// Public: Find all elements in the context that match the selector.\n//\n// Maybe overridden with custom querySelectorAll function.\n//\n// selectors - String CSS selectors.\n// context - Element context\n//\n// Returns non-live list of Elements.\nSelectorSet.prototype.querySelectorAll = function(selectors, context) {\n return context.querySelectorAll(selectors);\n};\n\n// Public: Array of indexes.\n//\n// name - Unique String name\n// selector - Function that takes a String selector and returns a String key\n// or undefined if it can't be used by the index.\n// element - Function that takes an Element and returns an Array of String\n// keys that point to indexed values.\n//\nSelectorSet.prototype.indexes = [];\n\n// Index by element id\nvar idRe = /^#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'ID',\n selector: function matchIdSelector(sel) {\n var m;\n if ((m = sel.match(idRe))) {\n return m[0].slice(1);\n }\n },\n element: function getElementId(el) {\n if (el.id) {\n return [el.id];\n }\n }\n});\n\n// Index by all of its class names\nvar classRe = /^\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'CLASS',\n selector: function matchClassSelector(sel) {\n var m;\n if ((m = sel.match(classRe))) {\n return m[0].slice(1);\n }\n },\n element: function getElementClassNames(el) {\n var className = el.className;\n if (className) {\n if (typeof className === 'string') {\n return className.split(/\\s/);\n } else if (typeof className === 'object' && 'baseVal' in className) {\n // className is a SVGAnimatedString\n // global SVGAnimatedString is not an exposed global in Opera 12\n return className.baseVal.split(/\\s/);\n }\n }\n }\n});\n\n// Index by tag/node name: `DIV`, `FORM`, `A`\nvar tagRe = /^((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'TAG',\n selector: function matchTagSelector(sel) {\n var m;\n if ((m = sel.match(tagRe))) {\n return m[0].toUpperCase();\n }\n },\n element: function getElementTagName(el) {\n return [el.nodeName.toUpperCase()];\n }\n});\n\n// Default index just contains a single array of elements.\nSelectorSet.prototype.indexes['default'] = {\n name: 'UNIVERSAL',\n selector: function() {\n return true;\n },\n element: function() {\n return [true];\n }\n};\n\n// Use ES Maps when supported\nvar Map;\nif (typeof window.Map === 'function') {\n Map = window.Map;\n} else {\n Map = (function() {\n function Map() {\n this.map = {};\n }\n Map.prototype.get = function(key) {\n return this.map[key + ' '];\n };\n Map.prototype.set = function(key, value) {\n this.map[key + ' '] = value;\n };\n return Map;\n })();\n}\n\n// Regexps adopted from Sizzle\n// https://github.com/jquery/sizzle/blob/1.7/sizzle.js\n//\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g;\n\n// Internal: Get indexes for selector.\n//\n// selector - String CSS selector\n//\n// Returns Array of {index, key}.\nfunction parseSelectorIndexes(allIndexes, selector) {\n allIndexes = allIndexes.slice(0).concat(allIndexes['default']);\n\n var allIndexesLen = allIndexes.length,\n i,\n j,\n m,\n dup,\n rest = selector,\n key,\n index,\n indexes = [];\n\n do {\n chunker.exec('');\n if ((m = chunker.exec(rest))) {\n rest = m[3];\n if (m[2] || !rest) {\n for (i = 0; i < allIndexesLen; i++) {\n index = allIndexes[i];\n if ((key = index.selector(m[1]))) {\n j = indexes.length;\n dup = false;\n while (j--) {\n if (indexes[j].index === index && indexes[j].key === key) {\n dup = true;\n break;\n }\n }\n if (!dup) {\n indexes.push({ index: index, key: key });\n }\n break;\n }\n }\n }\n }\n } while (m);\n\n return indexes;\n}\n\n// Internal: Find first item in Array that is a prototype of `proto`.\n//\n// ary - Array of objects\n// proto - Prototype of expected item in `ary`\n//\n// Returns object from `ary` if found. Otherwise returns undefined.\nfunction findByPrototype(ary, proto) {\n var i, len, item;\n for (i = 0, len = ary.length; i < len; i++) {\n item = ary[i];\n if (proto.isPrototypeOf(item)) {\n return item;\n }\n }\n}\n\n// Public: Log when added selector falls under the default index.\n//\n// This API should not be considered stable. May change between\n// minor versions.\n//\n// obj - {selector, data} Object\n//\n// SelectorSet.prototype.logDefaultIndexUsed = function(obj) {\n// console.warn(obj.selector, \"could not be indexed\");\n// };\n//\n// Returns nothing.\nSelectorSet.prototype.logDefaultIndexUsed = function() {};\n\n// Public: Add selector to set.\n//\n// selector - String CSS selector\n// data - Optional data Object (default: undefined)\n//\n// Returns nothing.\nSelectorSet.prototype.add = function(selector, data) {\n var obj,\n i,\n indexProto,\n key,\n index,\n objs,\n selectorIndexes,\n selectorIndex,\n indexes = this.activeIndexes,\n selectors = this.selectors,\n selectorObjects = this.selectorObjects;\n\n if (typeof selector !== 'string') {\n return;\n }\n\n obj = {\n id: this.uid++,\n selector: selector,\n data: data\n };\n selectorObjects[obj.id] = obj;\n\n selectorIndexes = parseSelectorIndexes(this.indexes, selector);\n for (i = 0; i < selectorIndexes.length; i++) {\n selectorIndex = selectorIndexes[i];\n key = selectorIndex.key;\n indexProto = selectorIndex.index;\n\n index = findByPrototype(indexes, indexProto);\n if (!index) {\n index = Object.create(indexProto);\n index.map = new Map();\n indexes.push(index);\n }\n\n if (indexProto === this.indexes['default']) {\n this.logDefaultIndexUsed(obj);\n }\n objs = index.map.get(key);\n if (!objs) {\n objs = [];\n index.map.set(key, objs);\n }\n objs.push(obj);\n }\n\n this.size++;\n selectors.push(selector);\n};\n\n// Public: Remove selector from set.\n//\n// selector - String CSS selector\n// data - Optional data Object (default: undefined)\n//\n// Returns nothing.\nSelectorSet.prototype.remove = function(selector, data) {\n if (typeof selector !== 'string') {\n return;\n }\n\n var selectorIndexes,\n selectorIndex,\n i,\n j,\n k,\n selIndex,\n objs,\n obj,\n indexes = this.activeIndexes,\n selectors = (this.selectors = []),\n selectorObjects = this.selectorObjects,\n removedIds = {},\n removeAll = arguments.length === 1;\n\n selectorIndexes = parseSelectorIndexes(this.indexes, selector);\n for (i = 0; i < selectorIndexes.length; i++) {\n selectorIndex = selectorIndexes[i];\n\n j = indexes.length;\n while (j--) {\n selIndex = indexes[j];\n if (selectorIndex.index.isPrototypeOf(selIndex)) {\n objs = selIndex.map.get(selectorIndex.key);\n if (objs) {\n k = objs.length;\n while (k--) {\n obj = objs[k];\n if (obj.selector === selector && (removeAll || obj.data === data)) {\n objs.splice(k, 1);\n removedIds[obj.id] = true;\n }\n }\n }\n break;\n }\n }\n }\n\n for (i in removedIds) {\n delete selectorObjects[i];\n this.size--;\n }\n\n for (i in selectorObjects) {\n selectors.push(selectorObjects[i].selector);\n }\n};\n\n// Sort by id property handler.\n//\n// a - Selector obj.\n// b - Selector obj.\n//\n// Returns Number.\nfunction sortById(a, b) {\n return a.id - b.id;\n}\n\n// Public: Find all matching decendants of the context element.\n//\n// context - An Element\n//\n// Returns Array of {selector, data, elements} matches.\nSelectorSet.prototype.queryAll = function(context) {\n if (!this.selectors.length) {\n return [];\n }\n\n var matches = {},\n results = [];\n var els = this.querySelectorAll(this.selectors.join(', '), context);\n\n var i, j, len, len2, el, m, match, obj;\n for (i = 0, len = els.length; i < len; i++) {\n el = els[i];\n m = this.matches(el);\n for (j = 0, len2 = m.length; j < len2; j++) {\n obj = m[j];\n if (!matches[obj.id]) {\n match = {\n id: obj.id,\n selector: obj.selector,\n data: obj.data,\n elements: []\n };\n matches[obj.id] = match;\n results.push(match);\n } else {\n match = matches[obj.id];\n }\n match.elements.push(el);\n }\n }\n\n return results.sort(sortById);\n};\n\n// Public: Match element against all selectors in set.\n//\n// el - An Element\n//\n// Returns Array of {selector, data} matches.\nSelectorSet.prototype.matches = function(el) {\n if (!el) {\n return [];\n }\n\n var i, j, k, len, len2, len3, index, keys, objs, obj, id;\n var indexes = this.activeIndexes,\n matchedIds = {},\n matches = [];\n\n for (i = 0, len = indexes.length; i < len; i++) {\n index = indexes[i];\n keys = index.element(el);\n if (keys) {\n for (j = 0, len2 = keys.length; j < len2; j++) {\n if ((objs = index.map.get(keys[j]))) {\n for (k = 0, len3 = objs.length; k < len3; k++) {\n obj = objs[k];\n id = obj.id;\n if (!matchedIds[id] && this.matchesSelector(el, obj.selector)) {\n matchedIds[id] = true;\n matches.push(obj);\n }\n }\n }\n }\n }\n }\n\n return matches.sort(sortById);\n};\n","import SelectorSet from 'selector-set';\n\nvar bubbleEvents = {};\nvar captureEvents = {};\nvar propagationStopped = new WeakMap();\nvar immediatePropagationStopped = new WeakMap();\nvar currentTargets = new WeakMap();\nvar currentTargetDesc = Object.getOwnPropertyDescriptor(Event.prototype, 'currentTarget');\n\nfunction before(subject, verb, fn) {\n var source = subject[verb];\n\n subject[verb] = function () {\n fn.apply(subject, arguments);\n return source.apply(subject, arguments);\n };\n\n return subject;\n}\n\nfunction matches(selectors, target, reverse) {\n var queue = [];\n var node = target;\n\n do {\n if (node.nodeType !== 1) break;\n\n var _matches = selectors.matches(node);\n\n if (_matches.length) {\n var matched = {\n node: node,\n observers: _matches\n };\n\n if (reverse) {\n queue.unshift(matched);\n } else {\n queue.push(matched);\n }\n }\n } while (node = node.parentElement);\n\n return queue;\n}\n\nfunction trackPropagation() {\n propagationStopped.set(this, true);\n}\n\nfunction trackImmediate() {\n propagationStopped.set(this, true);\n immediatePropagationStopped.set(this, true);\n}\n\nfunction getCurrentTarget() {\n return currentTargets.get(this) || null;\n}\n\nfunction defineCurrentTarget(event, getter) {\n if (!currentTargetDesc) return;\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n enumerable: true,\n get: getter || currentTargetDesc.get\n });\n}\n\nfunction canDispatch(event) {\n try {\n event.eventPhase;\n return true;\n } catch (_) {\n return false;\n }\n}\n\nfunction dispatch(event) {\n if (!canDispatch(event)) return;\n var events = event.eventPhase === 1 ? captureEvents : bubbleEvents;\n var selectors = events[event.type];\n if (!selectors) return;\n var queue = matches(selectors, event.target, event.eventPhase === 1);\n if (!queue.length) return;\n before(event, 'stopPropagation', trackPropagation);\n before(event, 'stopImmediatePropagation', trackImmediate);\n defineCurrentTarget(event, getCurrentTarget);\n\n for (var i = 0, len1 = queue.length; i < len1; i++) {\n if (propagationStopped.get(event)) break;\n var matched = queue[i];\n currentTargets.set(event, matched.node);\n\n for (var j = 0, len2 = matched.observers.length; j < len2; j++) {\n if (immediatePropagationStopped.get(event)) break;\n matched.observers[j].data.call(matched.node, event);\n }\n }\n\n currentTargets[\"delete\"](event);\n defineCurrentTarget(event);\n}\n\nfunction on(name, selector, fn) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var capture = options.capture ? true : false;\n var events = capture ? captureEvents : bubbleEvents;\n var selectors = events[name];\n\n if (!selectors) {\n selectors = new SelectorSet();\n events[name] = selectors;\n document.addEventListener(name, dispatch, capture);\n }\n\n selectors.add(selector, fn);\n}\nfunction off(name, selector, fn) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var capture = options.capture ? true : false;\n var events = capture ? captureEvents : bubbleEvents;\n var selectors = events[name];\n if (!selectors) return;\n selectors.remove(selector, fn);\n if (selectors.size) return;\n delete events[name];\n document.removeEventListener(name, dispatch, capture);\n}\nfunction fire(target, name, detail) {\n return target.dispatchEvent(new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: detail\n }));\n}\n\nexport { fire, off, on };\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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar arrow = function (_, classNames) { return \"
\"; };\nexports.default = arrow;\n//# sourceMappingURL=arrow.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nvar group_1 = require(\"./group\");\nfunction body(state, classNames) {\n var className = composeClassName_1.default([\n classNames.body,\n [state.isAtTop, classNames.bodyAtTop],\n [state.isAtBottom, classNames.bodyAtBottom],\n [state.isScrollable, classNames.bodyScrollable]\n ]);\n var styleAttr = state.isOpen ?\n \"style=\\\"max-height: \" + state.maxBodyHeight + \"px;\\\"\" : '';\n return (\"\\n \\n
\\n \" + state.groups.map(function (groupState) { return group_1.default(groupState, state, classNames); }).join('') + \"\\n
\\n
\\n
\\n \\n \");\n}\nexports.default = body;\n//# sourceMappingURL=body.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nvar option_1 = require(\"./option\");\nvar group = function (groupState, state, classNames) {\n var className = composeClassName_1.default([\n classNames.group,\n [groupState.isDisabled, classNames.groupDisabled],\n [groupState.hasLabel, classNames.groupHasLabel]\n ]);\n return (\"\\n
\\n \" + (groupState.hasLabel ?\n \"
\" + groupState.label + \"
\" : '') + \"\\n \" + groupState.options.map(function (optionState) { return option_1.default(optionState, state, classNames); }).join('') + \"\\n
\\n \");\n};\nexports.default = group;\n//# sourceMappingURL=group.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar arrow_1 = require(\"./arrow\");\nvar value_1 = require(\"./value\");\nvar head = function (state, classNames) { return (\"\\n
\\n \" + value_1.default(state, classNames) + \"\\n \" + arrow_1.default(state, classNames) + \"\\n \\n
\\n\"); };\nexports.default = head;\n//# sourceMappingURL=head.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nfunction option(optionState, state, classNames) {\n var isSelected = state.selectedOption === optionState;\n var className = composeClassName_1.default([\n classNames.option,\n [isSelected, classNames.optionSelected],\n [optionState === state.focusedOption, classNames.optionFocused],\n [optionState.isDisabled, classNames.optionDisabled]\n ]);\n return (\"\\n \\n \" + optionState.label + \"\\n \\n \");\n}\nexports.default = option;\n//# sourceMappingURL=option.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nvar body_1 = require(\"./body\");\nvar head_1 = require(\"./head\");\nvar root = function (state, classNames) {\n var className = composeClassName_1.default([\n classNames.root,\n [state.isDisabled, classNames.rootDisabled],\n [state.isInvalid, classNames.rootInvalid],\n [state.isOpen, classNames.rootOpen],\n [state.isFocused, classNames.rootFocused],\n [state.hasValue, classNames.rootHasValue],\n [state.isOpenAbove, classNames.rootOpenAbove],\n [state.isOpenBelow, classNames.rootOpenBelow],\n [state.isUseNativeMode, classNames.rootNative],\n ]);\n return \"\\n \\n \" + head_1.default(state, classNames) + \"\\n \" + (state.isUseNativeMode ? \"\" : body_1.default(state, classNames)) + \"\\n \\n \";\n};\nexports.default = root;\n//# sourceMappingURL=root.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar value = function (state, classNames) {\n return (\"\\n \\n \" + state.humanReadableValue + \"\\n \\n \");\n};\nexports.default = value;\n//# sourceMappingURL=value.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Behavior = /** @class */ (function () {\n function Behavior() {\n this.showPlaceholderWhenOpen = false;\n this.openOnFocus = false;\n this.closeOnSelect = true;\n this.useNativeUiOnMobile = true;\n this.loop = false;\n this.clampMaxVisibleItems = true;\n this.liveUpdates = false;\n this.maxVisibleItems = 15;\n Object.seal(this);\n }\n return Behavior;\n}());\nexports.default = Behavior;\n//# sourceMappingURL=Behavior.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Callbacks = /** @class */ (function () {\n function Callbacks() {\n this.onOpen = null;\n this.onClose = null;\n this.onSelect = null;\n this.onOptionClick = null;\n Object.seal(this);\n }\n return Callbacks;\n}());\nexports.default = Callbacks;\n//# sourceMappingURL=Callbacks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ClassNames = /** @class */ (function () {\n function ClassNames() {\n this.root = 'edd-root';\n this.rootOpen = 'edd-root-open';\n this.rootOpenAbove = 'edd-root-open-above';\n this.rootOpenBelow = 'edd-root-open-below';\n this.rootDisabled = 'edd-root-disabled';\n this.rootInvalid = 'edd-root-invalid';\n this.rootFocused = 'edd-root-focused';\n this.rootHasValue = 'edd-root-has-value';\n this.rootNative = 'edd-root-native';\n this.gradientTop = 'edd-gradient-top';\n this.gradientBottom = 'edd-gradient-bottom';\n this.head = 'edd-head';\n this.value = 'edd-value';\n this.arrow = 'edd-arrow';\n this.select = 'edd-select';\n this.body = 'edd-body';\n this.bodyScrollable = 'edd-body-scrollable';\n this.bodyAtTop = 'edd-body-at-top';\n this.bodyAtBottom = 'edd-body-at-bottom';\n this.itemsList = 'edd-items-list';\n this.group = 'edd-group';\n this.groupDisabled = 'edd-group-disabled';\n this.groupHasLabel = 'edd-group-has-label';\n this.groupLabel = 'edd-group-label';\n this.option = 'edd-option';\n this.optionDisabled = 'edd-option-disabled';\n this.optionFocused = 'edd-option-focused';\n this.optionSelected = 'edd-option-selected';\n Object.seal(this);\n }\n return ClassNames;\n}());\nexports.default = ClassNames;\n//# sourceMappingURL=ClassNames.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Behavior_1 = require(\"./Behavior\");\nvar Callbacks_1 = require(\"./Callbacks\");\nvar ClassNames_1 = require(\"./ClassNames\");\nvar Config = /** @class */ (function () {\n function Config() {\n this.callbacks = new Callbacks_1.default();\n this.classNames = new ClassNames_1.default();\n this.behavior = new Behavior_1.default();\n Object.seal(this);\n }\n return Config;\n}());\nexports.default = Config;\n//# sourceMappingURL=Config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpful_merge_1 = require(\"helpful-merge\");\nvar Config_1 = require(\"../Config/Config\");\nvar bindEvents_1 = require(\"../Events/bindEvents\");\nvar Renderer_1 = require(\"../Renderer/Renderer\");\nvar dispatchOpen_1 = require(\"../Shared/Util/dispatchOpen\");\nvar pollForSelectChange_1 = require(\"../Shared/Util/pollForSelectChange\");\nvar pollForSelectMutation_1 = require(\"../Shared/Util/pollForSelectMutation\");\nvar closeOthers_1 = require(\"../State/InjectedActions/closeOthers\");\nvar scrollToView_1 = require(\"../State/InjectedActions/scrollToView\");\nvar StateManager_1 = require(\"../State/StateManager\");\nvar StateMapper_1 = require(\"../State/StateMapper\");\nvar cache_1 = require(\"./cache\");\nvar Timers_1 = require(\"./Timers\");\nvar Easydropdown = /** @class */ (function () {\n function Easydropdown(selectElement, options) {\n this.config = helpful_merge_1.default(new Config_1.default(), options, true);\n this.state = StateMapper_1.default.mapFromSelect(selectElement, this.config);\n this.renderer = new Renderer_1.default(this.config.classNames);\n this.dom = this.renderer.render(this.state, selectElement);\n this.timers = new Timers_1.default();\n this.actions = StateManager_1.default.proxyActions(this.state, {\n closeOthers: closeOthers_1.default.bind(null, this, cache_1.default),\n scrollToView: scrollToView_1.default.bind(null, this.dom, this.timers)\n }, this.handleStateUpdate.bind(this));\n this.eventBindings = bindEvents_1.default({\n actions: this.actions,\n config: this.config,\n dom: this.dom,\n state: this.state,\n timers: this.timers\n });\n this.timers.pollChangeIntervalId = pollForSelectChange_1.default(this.dom.select, this.state, this.actions, this.config);\n if (this.config.behavior.liveUpdates) {\n this.timers.pollMutationIntervalId = pollForSelectMutation_1.default(this.dom.select, this.state, this.refresh.bind(this));\n }\n }\n Object.defineProperty(Easydropdown.prototype, \"selectElement\", {\n get: function () {\n return this.dom.select;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Easydropdown.prototype, \"value\", {\n get: function () {\n return this.state.value;\n },\n set: function (nextValue) {\n if (typeof nextValue !== 'string') {\n throw new TypeError('[EasyDropDown] Provided value not a valid string');\n }\n this.dom.select.value = nextValue;\n },\n enumerable: true,\n configurable: true\n });\n Easydropdown.prototype.open = function () {\n dispatchOpen_1.default(this.actions, this.config, this.dom);\n };\n Easydropdown.prototype.close = function () {\n this.actions.close();\n };\n Easydropdown.prototype.refresh = function () {\n this.state = helpful_merge_1.default(this.state, StateMapper_1.default.mapFromSelect(this.dom.select, this.config));\n this.renderer.update(this.state);\n this.dom.group.length = this.dom.option.length = this.dom.item.length = 0;\n Renderer_1.default.queryDomRefs(this.dom, ['group', 'option', 'item']);\n };\n Easydropdown.prototype.validate = function () {\n if (!this.state.isRequired || this.state.hasValue) {\n return true;\n }\n this.actions.invalidate();\n return false;\n };\n Easydropdown.prototype.destroy = function () {\n this.timers.clear();\n this.eventBindings.forEach(function (binding) { return binding.unbind(); });\n this.renderer.destroy();\n var cacheIndex = cache_1.default.indexOf(this);\n cache_1.default.splice(cacheIndex, 1);\n };\n Easydropdown.prototype.handleStateUpdate = function (state, key) {\n var callbacks = this.config.callbacks;\n this.renderer.update(state, key);\n switch (key) {\n case 'bodyStatus': {\n var cb = void 0;\n if (state.isOpen) {\n cb = callbacks.onOpen;\n }\n else {\n cb = callbacks.onClose;\n }\n if (typeof cb === 'function')\n cb();\n break;\n }\n case 'selectedIndex': {\n var cb = callbacks.onSelect;\n if (typeof cb === 'function')\n cb(state.value);\n break;\n }\n case 'isClickSelecting': {\n var cb = callbacks.onOptionClick;\n if (state[key] === false) {\n var nextValue = state.getOptionFromIndex(state.focusedIndex).value;\n if (typeof cb === 'function')\n cb(nextValue);\n }\n }\n }\n };\n return Easydropdown;\n}());\nexports.default = Easydropdown;\n//# sourceMappingURL=Easydropdown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EasydropdownFacade = /** @class */ (function () {\n function EasydropdownFacade(implementation) {\n this.open = implementation.open.bind(implementation);\n this.close = implementation.close.bind(implementation);\n this.refresh = implementation.refresh.bind(implementation);\n this.destroy = implementation.destroy.bind(implementation);\n this.validate = implementation.validate.bind(implementation);\n Object.defineProperties(this, {\n value: {\n get: function () { return implementation.value; },\n set: function (nextValue) { return implementation.value = nextValue; }\n }\n });\n }\n return EasydropdownFacade;\n}());\nexports.default = EasydropdownFacade;\n//# sourceMappingURL=EasydropdownFacade.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Timers = /** @class */ (function () {\n function Timers() {\n }\n Timers.prototype.clear = function () {\n var _this = this;\n Object.keys(this).forEach(function (key) { return window.clearInterval(_this[key]); });\n };\n return Timers;\n}());\nexports.default = Timers;\n//# sourceMappingURL=Timers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cache = [];\nexports.default = cache;\n//# sourceMappingURL=cache.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cache_1 = require(\"./cache\");\nvar Easydropdown_1 = require(\"./Easydropdown\");\nvar EasydropdownFacade_1 = require(\"./EasydropdownFacade\");\nfunction factory(selectElementOrSelector, options) {\n if (options === void 0) { options = {}; }\n var selectElement = selectElementOrSelector;\n if (typeof selectElementOrSelector === 'string') {\n selectElement = document.querySelector(selectElementOrSelector);\n }\n if (!(selectElement instanceof HTMLSelectElement)) {\n throw new TypeError('[EasyDropDown] Invalid select element provided');\n }\n if (selectElement.multiple) {\n throw new Error('[EasyDropDown] EasyDropDown does not support the `multiple`' +\n ' attribute on select elements.');\n }\n for (var _i = 0, cache_2 = cache_1.default; _i < cache_2.length; _i++) {\n var cachedInstance = cache_2[_i];\n if (cachedInstance.selectElement === selectElement) {\n return new EasydropdownFacade_1.default(cachedInstance);\n }\n }\n var instance = new Easydropdown_1.default(selectElement, options);\n // @ts-ignore\n cache_1.default.push(instance);\n return new EasydropdownFacade_1.default(instance);\n}\nfunction decorateFactory(factoryFn) {\n factoryFn.all = function (options) {\n if (options === void 0) { options = {}; }\n var selects = document.querySelectorAll('select');\n Array.prototype.forEach.call(selects, function (select) {\n var instance = factory(select, options);\n return instance;\n });\n };\n factoryFn.destroy = function () {\n var cacheCopy = cache_1.default.slice();\n cacheCopy.forEach(function (instance) { return instance.destroy(); });\n };\n return factoryFn;\n}\nvar decoratedFactory = decorateFactory(factory);\nexports.default = decoratedFactory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UP = 38;\nexports.DOWN = 40;\nexports.SPACE = 32;\nexports.ENTER = 13;\nexports.ESC = 27;\n//# sourceMappingURL=KeyCodes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OPTION = '[data-ref~=\"option\"]';\n//# sourceMappingURL=Selectors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpful_merge_1 = require(\"helpful-merge\");\nvar EventBinding = /** @class */ (function () {\n function EventBinding(eventBindingRaw) {\n this.type = '';\n this.target = null;\n this.debounce = 0;\n this.throttle = 0;\n this.handler = null;\n this.boundHandler = null;\n this.passive = false;\n helpful_merge_1.default(this, eventBindingRaw);\n Object.seal(this);\n }\n EventBinding.prototype.unbind = function () {\n if (!this.target)\n return;\n this.target.removeEventListener(this.type, this.boundHandler);\n };\n return EventBinding;\n}());\nexports.default = EventBinding;\n//# sourceMappingURL=EventBinding.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar closestParent_1 = require(\"../../Shared/Util/closestParent\");\nvar Selectors = require(\"../Constants/Selectors\");\nfunction handleBodyClick(e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom, config = _a.config;\n e.stopPropagation();\n var option = closestParent_1.default(e.target, Selectors.OPTION, true);\n if (!option)\n return;\n var optionIndex = Array.prototype.indexOf.call(dom.option, option);\n actions.selectOption(optionIndex, config.behavior.closeOnSelect);\n}\nexports.default = handleBodyClick;\n//# sourceMappingURL=handleBodyClick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar closestParent_1 = require(\"../../Shared/Util/closestParent\");\nvar Selectors = require(\"../Constants/Selectors\");\nfunction handleBodyMousedown(e, _a) {\n var actions = _a.actions;\n e.stopPropagation();\n var option = closestParent_1.default(e.target, Selectors.OPTION, true);\n if (!option)\n return;\n actions.startClickSelecting();\n}\nexports.default = handleBodyMousedown;\n//# sourceMappingURL=handleBodyMousedown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar closestParent_1 = require(\"../../Shared/Util/closestParent\");\nvar Selectors = require(\"../Constants/Selectors\");\nfunction handleBodyMouseover(e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom;\n e.stopPropagation();\n var option = closestParent_1.default(e.target, Selectors.OPTION, true);\n if (!option || state.isKeying)\n return;\n var optionIndex = Array.prototype.indexOf.call(dom.option, option);\n actions.focusOption(optionIndex);\n}\nexports.default = handleBodyMouseover;\n//# sourceMappingURL=handleBodyMouseover.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar getIsMobilePlatform_1 = require(\"../../Shared/Util/getIsMobilePlatform\");\nfunction handleHeadClick(injectedGetIsMobilePlatform, e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom, config = _a.config;\n if (state.isUseNativeMode)\n return;\n var isMobilePlatform = injectedGetIsMobilePlatform(window.navigator.userAgent);\n e.stopPropagation();\n if (state.isClosed) {\n dispatchOpen_1.default(actions, config, dom);\n if (isMobilePlatform) {\n actions.focus();\n }\n else {\n dom.select.focus();\n }\n }\n else {\n actions.close();\n }\n}\nexports.handleHeadClick = handleHeadClick;\nvar boundHandleHeadClick = handleHeadClick.bind(null, getIsMobilePlatform_1.default);\nexports.default = boundHandleHeadClick;\n//# sourceMappingURL=handleHeadClick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleItemsListScroll(e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom;\n e.stopPropagation();\n var _b = dom.itemsList, offsetHeight = _b.offsetHeight, scrollHeight = _b.scrollHeight, scrollTop = _b.scrollTop;\n if (scrollTop === 0) {\n actions.topOut();\n }\n else if (scrollTop === scrollHeight - offsetHeight) {\n actions.bottomOut();\n }\n else {\n actions.scroll();\n }\n}\nexports.default = handleItemsListScroll;\n//# sourceMappingURL=handleItemsListScroll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleSelectBlur(e, _a) {\n var actions = _a.actions, state = _a.state, config = _a.config;\n if (state.isKeying)\n return;\n actions.blur();\n if (config.behavior.openOnFocus && !state.isClickSelecting)\n actions.close();\n}\nexports.default = handleSelectBlur;\n//# sourceMappingURL=handleSelectBlur.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nfunction handleSelectFocus(e, _a) {\n var actions = _a.actions, config = _a.config, dom = _a.dom, state = _a.state;\n actions.focus();\n if (config.behavior.openOnFocus && !state.isUseNativeMode) {\n dispatchOpen_1.default(actions, config, dom);\n }\n}\nexports.default = handleSelectFocus;\n//# sourceMappingURL=handleSelectFocus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleSelectInvalid(e, _a) {\n var actions = _a.actions, config = _a.config, dom = _a.dom;\n actions.invalidate();\n}\nexports.default = handleSelectInvalid;\n//# sourceMappingURL=handleSelectInvalid.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar killSelectReaction_1 = require(\"../../Shared/Util/killSelectReaction\");\nvar KeyCodes = require(\"../Constants/KeyCodes\");\nvar handleSelectKeydownDown_1 = require(\"./handleSelectKeydownDown\");\nvar handleSelectKeydownUp_1 = require(\"./handleSelectKeydownUp\");\nfunction handleSelectKeydown(e, handlerParams) {\n var keyCode = e.keyCode, target = e.target;\n var state = handlerParams.state, actions = handlerParams.actions, dom = handlerParams.dom, config = handlerParams.config;\n if (state.isUseNativeMode || state.isDisabled)\n return;\n switch (keyCode) {\n case KeyCodes.DOWN:\n handleSelectKeydownDown_1.default(e, handlerParams);\n break;\n case KeyCodes.UP:\n handleSelectKeydownUp_1.default(e, handlerParams);\n break;\n case KeyCodes.SPACE:\n if (state.isSearching) {\n e.stopPropagation();\n return;\n }\n case KeyCodes.ENTER:\n e.stopPropagation();\n e.preventDefault();\n killSelectReaction_1.default(target, handlerParams);\n if (state.isOpen) {\n actions.selectOption(state.focusedIndex, config.behavior.closeOnSelect);\n }\n else {\n dispatchOpen_1.default(actions, config, dom);\n }\n break;\n case KeyCodes.ESC:\n actions.close();\n break;\n }\n}\nexports.default = handleSelectKeydown;\n//# sourceMappingURL=handleSelectKeydown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar killSelectReaction_1 = require(\"../../Shared/Util/killSelectReaction\");\nfunction handleSelectKeydownDown(e, handlerParams) {\n var metaKey = e.metaKey, target = e.target;\n var state = handlerParams.state, dom = handlerParams.dom, actions = handlerParams.actions, config = handlerParams.config;\n var focusedIndex = state.focusedIndex > -1 ?\n state.focusedIndex : state.selectedIndex;\n var iterations = 0;\n var incrementAmount = 1;\n e.preventDefault();\n killSelectReaction_1.default(target, handlerParams);\n if (metaKey) {\n incrementAmount = Math.round(Math.max(state.totalOptions / 2, config.behavior.maxVisibleItems));\n }\n do {\n focusedIndex += incrementAmount;\n incrementAmount = 1;\n if (focusedIndex >= state.totalOptions) {\n focusedIndex = config.behavior.loop ? 0 : state.totalOptions - 1;\n }\n actions.focusOption(focusedIndex, true);\n iterations++;\n } while (state.focusedOption &&\n state.focusedOption.isDisabled &&\n iterations <= state.totalOptions);\n if (state.isClosed) {\n dispatchOpen_1.default(actions, config, dom);\n return;\n }\n}\nexports.default = handleSelectKeydownDown;\n//# sourceMappingURL=handleSelectKeydownDown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar killSelectReaction_1 = require(\"../../Shared/Util/killSelectReaction\");\nfunction handleSelectKeydownUp(e, handlerParams) {\n var metaKey = e.metaKey, target = e.target;\n var state = handlerParams.state, config = handlerParams.config, dom = handlerParams.dom, actions = handlerParams.actions;\n var focusedIndex = state.focusedIndex > -1 ?\n state.focusedIndex : state.selectedIndex;\n var iterations = 0;\n var incrementAmount = 1;\n e.preventDefault();\n killSelectReaction_1.default(target, handlerParams);\n if (metaKey) {\n incrementAmount = Math.round(Math.max(state.totalOptions / 2, config.behavior.maxVisibleItems));\n }\n do {\n focusedIndex -= incrementAmount;\n incrementAmount = 1;\n if (focusedIndex < 0) {\n focusedIndex = config.behavior.loop ? state.totalOptions - 1 : 0;\n }\n actions.focusOption(focusedIndex, true);\n iterations++;\n } while (state.focusedOption &&\n state.focusedOption.isDisabled &&\n iterations < state.totalOptions);\n if (state.isClosed) {\n dispatchOpen_1.default(actions, config, dom);\n }\n}\nexports.default = handleSelectKeydownUp;\n//# sourceMappingURL=handleSelectKeydownUp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar KeyCodes = require(\"../Constants/KeyCodes\");\nvar SEARCH_RESET_DURATION = 1200;\nfunction handleSelectKeypress(_a, _b, searchResetDuration) {\n var keyCode = _a.keyCode;\n var actions = _b.actions, timers = _b.timers, state = _b.state;\n if (searchResetDuration === void 0) { searchResetDuration = SEARCH_RESET_DURATION; }\n if (state.isUseNativeMode || [KeyCodes.UP, KeyCodes.DOWN].includes(keyCode))\n return;\n window.clearTimeout(timers.searchTimeoutId);\n actions.search();\n timers.searchTimeoutId = window.setTimeout(function () { return actions.resetSearch(); }, searchResetDuration);\n}\nexports.default = handleSelectKeypress;\n//# sourceMappingURL=handleSelectKeypress.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleWindowClick(_, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom;\n if (!state.isOpen)\n return;\n actions.close();\n dom.select.blur();\n}\nexports.default = handleWindowClick;\n//# sourceMappingURL=handleWindowClick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar throttle_1 = require(\"../Shared/Util/throttle\");\nvar EventBinding_1 = require(\"./EventBinding\");\nvar getEventsList_1 = require(\"./getEventsList\");\nfunction bindEvent(handlerParams, eventBindingRaw) {\n var eventBinding = new EventBinding_1.default(eventBindingRaw);\n if (!eventBinding.target)\n return eventBinding;\n var boundHandler = function (e) { return eventBinding.handler(e, handlerParams); };\n if (eventBinding.throttle > 0) {\n eventBinding.boundHandler = throttle_1.default(boundHandler, eventBinding.throttle);\n }\n else {\n eventBinding.boundHandler = boundHandler;\n }\n eventBinding.target.addEventListener(eventBinding.type, eventBinding.boundHandler);\n return eventBinding;\n}\nexports.bindEvent = bindEvent;\nfunction bindEvents(handlerParams) {\n return getEventsList_1.default(handlerParams.dom).map(bindEvent.bind(null, handlerParams));\n}\nexports.default = bindEvents;\n//# sourceMappingURL=bindEvents.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar handleBodyClick_1 = require(\"./Handlers/handleBodyClick\");\nvar handleBodyMousedown_1 = require(\"./Handlers/handleBodyMousedown\");\nvar handleBodyMouseover_1 = require(\"./Handlers/handleBodyMouseover\");\nvar handleHeadClick_1 = require(\"./Handlers/handleHeadClick\");\nvar handleItemsListScroll_1 = require(\"./Handlers/handleItemsListScroll\");\nvar handleSelectBlur_1 = require(\"./Handlers/handleSelectBlur\");\nvar handleSelectFocus_1 = require(\"./Handlers/handleSelectFocus\");\nvar handleSelectInvalid_1 = require(\"./Handlers/handleSelectInvalid\");\nvar handleSelectKeydown_1 = require(\"./Handlers/handleSelectKeydown\");\nvar handleSelectKeypress_1 = require(\"./Handlers/handleSelectKeypress\");\nvar handleWindowClick_1 = require(\"./Handlers/handleWindowClick\");\nvar handleWindowClick_2 = require(\"./Handlers/handleWindowClick\");\nvar getEventsList = function (dom) { return [\n {\n target: dom.head,\n type: 'click',\n handler: handleHeadClick_1.default\n },\n {\n target: dom.body,\n type: 'mousedown',\n handler: handleBodyMousedown_1.default\n },\n {\n target: dom.body,\n type: 'click',\n handler: handleBodyClick_1.default\n },\n {\n target: dom.body,\n type: 'mouseover',\n handler: handleBodyMouseover_1.default\n },\n {\n target: dom.itemsList,\n type: 'scroll',\n handler: handleItemsListScroll_1.default\n },\n {\n target: dom.select,\n type: 'keydown',\n handler: handleSelectKeydown_1.default\n },\n {\n target: dom.select,\n type: 'invalid',\n handler: handleSelectInvalid_1.default\n },\n {\n target: dom.select,\n type: 'keypress',\n handler: handleSelectKeypress_1.default\n },\n {\n target: dom.select,\n type: 'focus',\n handler: handleSelectFocus_1.default\n },\n {\n target: dom.select,\n type: 'blur',\n handler: handleSelectBlur_1.default\n },\n {\n target: document.documentElement,\n type: 'click',\n handler: handleWindowClick_1.default\n },\n {\n target: window,\n type: 'resize',\n handler: handleWindowClick_2.default,\n throttle: 100\n }\n]; };\nexports.default = getEventsList;\n//# sourceMappingURL=getEventsList.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AttributeChangeType;\n(function (AttributeChangeType) {\n AttributeChangeType[\"ADD\"] = \"ADD\";\n AttributeChangeType[\"EDIT\"] = \"EDIT\";\n AttributeChangeType[\"REMOVE\"] = \"REMOVE\";\n})(AttributeChangeType || (AttributeChangeType = {}));\nexports.default = AttributeChangeType;\n//# sourceMappingURL=AttributeChangeType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DomChangeType;\n(function (DomChangeType) {\n DomChangeType[\"NONE\"] = \"NONE\";\n DomChangeType[\"FULL\"] = \"FULL\";\n DomChangeType[\"REPLACE\"] = \"REPLACE\";\n DomChangeType[\"INNER\"] = \"INNER\";\n DomChangeType[\"OUTER\"] = \"OUTER\";\n})(DomChangeType = exports.DomChangeType || (exports.DomChangeType = {}));\nexports.default = DomChangeType;\n//# sourceMappingURL=DomChangeType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Dom = /** @class */ (function () {\n function Dom() {\n this.select = null;\n this.root = null;\n this.head = null;\n this.value = null;\n this.body = null;\n this.arrow = null;\n this.itemsList = null;\n this.item = [];\n this.group = [];\n this.option = [];\n }\n Dom.prototype.sumItemsHeight = function (max) {\n if (max === void 0) { max = Infinity; }\n var totalHeight = 0;\n for (var i = 0, item = void 0; (item = this.item[i]); i++) {\n if (i === max)\n break;\n totalHeight += item.offsetHeight;\n }\n return totalHeight;\n };\n return Dom;\n}());\nexports.default = Dom;\n//# sourceMappingURL=Dom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PatchCommand = /** @class */ (function () {\n function PatchCommand() {\n this.newNode = null;\n this.newInnerHtml = '';\n this.newTextContent = '';\n this.attributeChanges = [];\n this.childCommands = [];\n this.index = null;\n }\n return PatchCommand;\n}());\nexports.default = PatchCommand;\n//# sourceMappingURL=PatchCommand.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar root_1 = require(\"../Components/root\");\nvar createDomElementFromHtml_1 = require(\"../Shared/Util/createDomElementFromHtml\");\nvar Dom_1 = require(\"./Dom\");\nvar domDiff_1 = require(\"./domDiff\");\nvar domPatch_1 = require(\"./domPatch\");\nvar Renderer = /** @class */ (function () {\n function Renderer(classNames) {\n this.dom = new Dom_1.default();\n this.classNames = classNames;\n }\n Renderer.prototype.render = function (state, selectElement) {\n var html = root_1.default(state, this.classNames);\n var rootElement = createDomElementFromHtml_1.default(html);\n this.dom = new Dom_1.default();\n this.dom.root = rootElement;\n this.dom.option.length = this.dom.group.length = 0;\n Renderer.queryDomRefs(this.dom);\n this.injectSelect(selectElement);\n return this.dom;\n };\n Renderer.prototype.update = function (state, key) {\n var nextHtml = root_1.default(state, this.classNames);\n var nextRoot = createDomElementFromHtml_1.default(nextHtml);\n var diffCommand = domDiff_1.default(this.dom.root, nextRoot);\n domPatch_1.default(this.dom.root, diffCommand);\n if (key === \"selectedIndex\") {\n this.syncSelectWithValue(state.value);\n }\n };\n Renderer.prototype.destroy = function () {\n this.dom.select.classList.remove(this.classNames.select);\n try {\n this.dom.root.parentElement.replaceChild(this.dom.select, this.dom.root);\n }\n catch (err) {\n /**/\n }\n };\n Renderer.prototype.injectSelect = function (selectElement) {\n var parent = selectElement.parentElement;\n var tempSelect = this.dom.select;\n if (!parent)\n throw new Error(\"[EasyDropDown] The provided `` element\");\n }\n }\n return Object.seal(state);\n };\n StateMapper.mapGroup = function (group) {\n if (group === void 0) { group = null; }\n return helpful_merge_1.default(new Group_1.default(), {\n label: group ? group.label : '',\n isDisabled: group ? group.disabled : false\n });\n };\n StateMapper.mapOption = function (option, group) {\n if (group === void 0) { group = null; }\n if (!(option instanceof HTMLOptionElement))\n throw new TypeError('[EasyDropDown] Invalid markup structure');\n var isParentGroupDisabled = group !== null && group.disabled;\n return helpful_merge_1.default(new Option_1.default(), {\n label: option.textContent,\n value: option.value,\n isDisabled: option.disabled || isParentGroupDisabled\n });\n };\n return StateMapper;\n}());\nexports.default = StateMapper;\n//# sourceMappingURL=StateMapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CollisionType_1 = require(\"../Shared/Util/Constants/CollisionType\");\nvar BodyStatus_1 = require(\"./Constants/BodyStatus\");\nvar ScrollStatus_1 = require(\"./Constants/ScrollStatus\");\nvar resolveActions = function (state) { return ({\n focus: function () {\n state.isFocused = true;\n },\n blur: function () {\n state.isFocused = false;\n },\n invalidate: function () {\n state.isInvalid = true;\n },\n validate: function () {\n state.isInvalid = false;\n },\n topOut: function () {\n state.scrollStatus = ScrollStatus_1.default.AT_TOP;\n },\n bottomOut: function () {\n state.scrollStatus = ScrollStatus_1.default.AT_BOTTOM;\n },\n scroll: function () {\n state.scrollStatus = ScrollStatus_1.default.SCROLLED;\n },\n makeScrollable: function () {\n state.isScrollable = true;\n },\n makeUnscrollable: function () {\n state.isScrollable = false;\n },\n open: function (maxBodyHeight, collisionType, isScrollable) {\n if (state.isDisabled)\n return;\n this.closeOthers();\n switch (collisionType) {\n case CollisionType_1.default.NONE:\n case CollisionType_1.default.TOP:\n state.bodyStatus = BodyStatus_1.default.OPEN_BELOW;\n break;\n case CollisionType_1.default.BOTTOM:\n state.bodyStatus = BodyStatus_1.default.OPEN_ABOVE;\n break;\n }\n state.isScrollable = isScrollable;\n state.maxBodyHeight = maxBodyHeight;\n this.scrollToView(state, true);\n },\n close: function () {\n state.bodyStatus = BodyStatus_1.default.CLOSED;\n state.focusedIndex = -1;\n this.blur();\n },\n startClickSelecting: function () {\n state.isClickSelecting = true;\n },\n selectOption: function (index, close) {\n if (close === void 0) { close = true; }\n var optionAtIndex = state.getOptionFromIndex(index);\n state.isClickSelecting = false;\n if (index > -1 && (!optionAtIndex || optionAtIndex.isDisabled))\n return;\n state.selectedIndex = index;\n if (state.isInvalid && state.hasValue) {\n this.validate();\n }\n if (state.isSearching) {\n this.scrollToView(state);\n }\n else if (close) {\n this.close();\n }\n },\n focusOption: function (index, shouldScrollToView) {\n if (shouldScrollToView === void 0) { shouldScrollToView = false; }\n var scrollToMiddle = Math.abs(index - state.focusedIndex) > 1;\n state.focusedIndex = index;\n if (shouldScrollToView) {\n this.scrollToView(state, scrollToMiddle);\n }\n },\n search: function () {\n state.isSearching = true;\n },\n resetSearch: function () {\n state.isSearching = false;\n },\n keying: function () {\n state.isKeying = true;\n },\n resetKeying: function () {\n state.isKeying = false;\n },\n useNative: function () {\n state.isUseNativeMode = true;\n }\n}); };\nexports.default = resolveActions;\n//# sourceMappingURL=resolveActions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"custom-event-polyfill\");\nrequire(\"./Shared/Polyfills/Element.matches\");\nvar factory_1 = require(\"./Easydropdown/factory\");\nexports.default = factory_1.default;\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ArrayStrategy_1 = require(\"./Constants/ArrayStrategy\");\nvar Messages = require(\"./Messages\");\nvar Config = /** @class */ (function () {\n function Config() {\n this.deep = false;\n this.useReferenceIfTargetUnset = false;\n this.useReferenceIfArray = false;\n this.preserveTypeIfTargetUnset = false;\n this.includeReadOnly = false;\n this.includeNonEmurable = false;\n this.arrayStrategy = ArrayStrategy_1.default.REPLACE;\n this.errorMessage = Messages.MERGE_ERROR;\n Object.seal(this);\n }\n return Config;\n}());\nexports.default = Config;\n//# sourceMappingURL=Config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ArrayStrategy;\n(function (ArrayStrategy) {\n ArrayStrategy[\"PUSH\"] = \"PUSH\";\n ArrayStrategy[\"REPLACE\"] = \"REPLACE\";\n})(ArrayStrategy || (ArrayStrategy = {}));\nexports.default = ArrayStrategy;\n//# sourceMappingURL=ArrayStrategy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar merge_1 = require(\"./merge\");\nvar FluentMerge = /** @class */ (function () {\n function FluentMerge() {\n this.target = null;\n this.sources = [];\n this.config = {};\n }\n /**\n * Supplies a fluent merge instance with a target object to merge into and return.\n */\n FluentMerge.prototype.to = function (target) {\n this.target = target;\n return this;\n };\n /**\n * Supplies a fluent merge instance with one or more source objects to merge from, in right to left order.\n */\n FluentMerge.prototype.from = function () {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n this.sources = sources;\n return this;\n };\n /**\n * Supplies a fluent merge instance with a configuration object of one or more options.\n */\n FluentMerge.prototype.with = function (options) {\n this.config = options;\n return this;\n };\n /**\n * Executes a fluent merge instance, merging all provided sources into the\n * target, as per any provided configuration, and returning a reference to\n * the target.\n */\n FluentMerge.prototype.exec = function () {\n var _this = this;\n return this.sources.reduce(function (target, source) { return merge_1.default(target, source, _this.config); }, this.target || {});\n };\n return FluentMerge;\n}());\nexports.default = FluentMerge;\n//# sourceMappingURL=FluentMerge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MERGE_ERROR = function (offender, suggestion) {\n if (suggestion === void 0) { suggestion = ''; }\n return \"Unknown property \\\"\" + offender + \"\\\"\" + (suggestion ? \". Did you mean \\\"\" + suggestion + \"\\\"?\" : '');\n};\nexports.TYPE_ERROR_TARGET = function (target) {\n return \"[Helpful Merge] Target \\\"\" + target + \"\\\" must be a valid object\";\n};\nexports.TYPE_ERROR_SOURCE = function (source) {\n return \"[Helpful Merge] Source \\\"\" + source + \"\\\" must be a valid object\";\n};\nexports.INVALID_ARRAY_STRATEGY = function (strategy) {\n return \"[Helpful Merge] Invalid array strategy \\\"\" + strategy + \"\\\"\";\n};\n//# sourceMappingURL=Messages.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction deriveCustoTypeInstance(_a) {\n var constructor = _a.constructor;\n if (typeof constructor === 'function' && constructor !== Object) {\n return new constructor();\n }\n return {};\n}\nexports.default = deriveCustoTypeInstance;\n//# sourceMappingURL=deriveCustomTypeInstance.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleMergeError(err, target, offendingKey, message) {\n // Rethrow if any of the following:\n // - offending key already exists on target\n // - object not sealed\n // - is extensible\n // - error not a TypeError\n if (Object.hasOwnProperty.call(target, offendingKey) ||\n !Object.isSealed(target) ||\n Object.isExtensible(target) ||\n !(err instanceof TypeError))\n throw err;\n var reducer = reduceBestMatch.bind(null, offendingKey, offendingKey.toLowerCase());\n var primer = { key: '', delta: Infinity, totalMatching: 0 };\n // Iterate through keys in target, for each key, compare with\n // the offending key. Greatest number of matching characters wins.\n var bestMatch = Object.keys(target).reduce(reducer, primer);\n var suggestion = bestMatch && bestMatch.totalMatching > 1 ? bestMatch.key : '';\n throw new TypeError(message(offendingKey, suggestion));\n}\n/**\n * Compares current key with current best match.\n */\nfunction reduceBestMatch(offendingKeyLower, offendingKey, currBestMatch, currKey) {\n var totalMatching = getTotalMatching(currKey.toLowerCase(), offendingKeyLower);\n var delta = Math.abs(currKey.length - offendingKey.length);\n if (totalMatching > currBestMatch.totalMatching ||\n (totalMatching === currBestMatch.totalMatching && delta < currBestMatch.delta)) {\n // If a greater number of matching characters, or the same\n // number, but a lesser delta, usurp the best match\n return { key: currKey, delta: delta, totalMatching: totalMatching };\n }\n return currBestMatch;\n}\n/**\n * Returns the number of common, consecutive characters\n * between two strings.\n */\nfunction getTotalMatching(possibleKey, offendingKey) {\n var longer = possibleKey.length > offendingKey.length ? possibleKey : offendingKey;\n var shorter = longer === possibleKey ? offendingKey : possibleKey;\n var leftPointer = 0;\n var leftInnerPointer = 0;\n var leftTotalMatching = 0;\n var lastCommonIndex = -1;\n for (; leftPointer < longer.length; leftPointer++) {\n while (leftTotalMatching === 0 &&\n longer[leftPointer] !== shorter[leftInnerPointer] &&\n leftInnerPointer < shorter.length) {\n // No match at present, move innerPointer through all possible\n // indices until a match is found\n leftInnerPointer++;\n }\n if (longer[leftPointer] === shorter[leftInnerPointer]) {\n // Match found\n if (lastCommonIndex !== leftPointer - 1) {\n // If beginning of a new match, reset total common\n leftTotalMatching = 0;\n }\n lastCommonIndex = leftPointer;\n leftTotalMatching++;\n leftInnerPointer++;\n // Whole word matched, end\n if (leftTotalMatching === shorter.length)\n break;\n }\n else if (leftTotalMatching > 1) {\n // No match, but at least two common characters found, end\n break;\n }\n else {\n // No match at this index, reset\n leftTotalMatching = leftInnerPointer = 0;\n }\n }\n lastCommonIndex = -1;\n var rightPointer = 0;\n var rightInnerPointer = 0;\n var rightTotalMatching = 0;\n var longerLastIndex = longer.length - 1;\n var shorterLastIndex = shorter.length - 1;\n // As above, but from right to left\n for (; rightPointer < longer.length - leftPointer; rightPointer++) {\n while (rightTotalMatching === 0 &&\n longer[longerLastIndex - rightPointer] !== shorter[shorterLastIndex - rightInnerPointer] &&\n rightInnerPointer < shorter.length) {\n rightInnerPointer++;\n }\n if (longer[longerLastIndex - rightPointer] === shorter[shorterLastIndex - rightInnerPointer]) {\n if (lastCommonIndex !== rightPointer - 1)\n rightTotalMatching = 0;\n lastCommonIndex = rightPointer;\n rightTotalMatching++;\n rightInnerPointer++;\n }\n else if (rightTotalMatching > 1) {\n break;\n }\n else {\n rightTotalMatching = rightInnerPointer = 0;\n }\n }\n return Math.min(shorter.length, leftTotalMatching + rightTotalMatching);\n}\nexports.getTotalMatching = getTotalMatching;\nexports.default = handleMergeError;\n//# sourceMappingURL=handleMergeError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar merge_1 = require(\"./merge\");\nvar ArrayStrategy_1 = require(\"./Constants/ArrayStrategy\");\nexports.ArrayStrategy = ArrayStrategy_1.default;\nexports.default = merge_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Config_1 = require(\"./Config\");\nvar ArrayStrategy_1 = require(\"./Constants/ArrayStrategy\");\nvar deriveCustomTypeInstance_1 = require(\"./deriveCustomTypeInstance\");\nvar FluentMerge_1 = require(\"./FluentMerge\");\nvar handleMergeError_1 = require(\"./handleMergeError\");\nvar Messages = require(\"./Messages\");\nfunction merge(target, source, options) {\n if (options === void 0) { options = null; }\n var isClientSide = typeof window !== 'undefined';\n var sourceKeys = [];\n var config;\n if (options instanceof Config_1.default) {\n config = options;\n }\n else {\n config = new Config_1.default();\n }\n if (typeof options === 'boolean' && options === true) {\n config.deep = true;\n }\n else if (options && config !== options && typeof options === 'object') {\n merge(config, options);\n if ([ArrayStrategy_1.default.PUSH, ArrayStrategy_1.default.REPLACE].indexOf(config.arrayStrategy) < 0) {\n throw RangeError(Messages.INVALID_ARRAY_STRATEGY(config.arrayStrategy));\n }\n }\n if (!target || typeof target !== 'object') {\n throw new TypeError(Messages.TYPE_ERROR_TARGET(target));\n }\n if (!source || typeof source !== 'object') {\n throw new TypeError(Messages.TYPE_ERROR_SOURCE(source));\n }\n if (Array.isArray(source)) {\n if (config.arrayStrategy === ArrayStrategy_1.default.PUSH) {\n // Merge arrays via push()\n target.push.apply(target, source);\n return target;\n }\n for (var i = 0; i < source.length; i++) {\n sourceKeys.push(i.toString());\n }\n }\n else {\n sourceKeys = Object.getOwnPropertyNames(source);\n }\n for (var _i = 0, sourceKeys_1 = sourceKeys; _i < sourceKeys_1.length; _i++) {\n var key = sourceKeys_1[_i];\n var descriptor = Object.getOwnPropertyDescriptor(source, key);\n // Skip read-only properties\n if (typeof descriptor.get === 'function' && !descriptor.set && !config.includeReadOnly)\n continue;\n // Skip non-enumerable properties\n if (!descriptor.enumerable && !config.includeNonEmurable)\n continue;\n if (!config.deep ||\n typeof source[key] !== 'object' ||\n (isClientSide && source[key] instanceof window.Node) ||\n (isClientSide && source[key] === window.document.body) ||\n (isClientSide && source[key] === window.document.documentElement) ||\n source[key] === null ||\n (Array.isArray(source[key]) && config.useReferenceIfArray) ||\n (!target[key] && config.useReferenceIfTargetUnset)) {\n // If:\n // - Shallow merge\n // - All non-object primatives\n // - , , or DOM Nodes\n // - Null pointers\n // - Arrays, if `useReferenceIfArray` set\n // - Target prop null or undefined and `useRererenceIfTargetUnset` set\n try {\n target[key] = source[key];\n }\n catch (err) {\n handleMergeError_1.default(err, target, key, config.errorMessage);\n }\n }\n else {\n // Deep merge objects/arrays\n if (!Object.prototype.hasOwnProperty.call(target, key) || target[key] === null) {\n // If property does not exist on target, instantiate an empty\n // object, custom type or array to merge into\n try {\n target[key] = Array.isArray(source[key]) ?\n [] : config.preserveTypeIfTargetUnset ?\n deriveCustomTypeInstance_1.default(source[key]) : {};\n }\n catch (err) {\n handleMergeError_1.default(err, target, key, config.errorMessage);\n }\n }\n // Recursively deep copy objects or arrays\n merge(target[key], source[key], config);\n }\n }\n return target;\n}\nvar createFluent = function (method) { return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return (_a = new FluentMerge_1.default())[method].apply(_a, args);\n var _a;\n}; };\nObject\n .keys(FluentMerge_1.default.prototype)\n .forEach(function (method) { return merge[method] = createFluent(method); });\nexports.default = merge;\n//# sourceMappingURL=merge.js.map","/**!\n * lg-thumbnail.js | 1.2.0 | May 20th 2020\n * http://sachinchoolur.github.io/lg-thumbnail.js\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgThumbnail = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 1) {\n if (this.core.s.showThumbByDefault) {\n setTimeout(function () {\n utils.addClass(_this.core.outer, 'lg-thumb-open');\n }, 700);\n }\n\n if (this.core.s.pullCaptionUp) {\n utils.addClass(this.core.outer, 'lg-pull-caption-up');\n }\n\n this.build();\n if (this.core.s.animateThumb) {\n if (this.core.s.enableThumbDrag && !this.core.isTouch && this.core.doCss()) {\n this.enableThumbDrag();\n }\n\n if (this.core.s.enableThumbSwipe && this.core.isTouch && this.core.doCss()) {\n this.enableThumbSwipe();\n }\n\n this.thumbClickable = false;\n } else {\n this.thumbClickable = true;\n }\n\n this.toggle();\n this.thumbkeyPress();\n }\n };\n\n Thumbnail.prototype.build = function () {\n var _this = this;\n var thumbList = '';\n var vimeoErrorThumbSize = '';\n var $thumb;\n var html = '
' + '
' + '
' + '
';\n\n switch (this.core.s.vimeoThumbSize) {\n case 'thumbnail_large':\n vimeoErrorThumbSize = '640';\n break;\n case 'thumbnail_medium':\n vimeoErrorThumbSize = '200x150';\n break;\n case 'thumbnail_small':\n vimeoErrorThumbSize = '100x75';\n }\n\n utils.addClass(_this.core.outer, 'lg-has-thumb');\n\n _this.core.outer.querySelector('.lg').insertAdjacentHTML('beforeend', html);\n\n _this.thumbOuter = _this.core.outer.querySelector('.lg-thumb-outer');\n _this.thumbOuterWidth = _this.thumbOuter.offsetWidth;\n\n if (_this.core.s.animateThumb) {\n _this.core.outer.querySelector('.lg-thumb').style.width = _this.thumbTotalWidth + 'px';\n _this.core.outer.querySelector('.lg-thumb').style.position = 'relative';\n }\n\n if (this.core.s.animateThumb) {\n _this.thumbOuter.style.height = _this.core.s.thumbContHeight + 'px';\n }\n\n function getThumb(src, thumb, index) {\n var isVideo = _this.core.isVideo(src, index) || {};\n var thumbImg;\n var vimeoId = '';\n\n if (isVideo.youtube || isVideo.vimeo || isVideo.dailymotion) {\n if (isVideo.youtube) {\n if (_this.core.s.loadYoutubeThumbnail) {\n thumbImg = '//img.youtube.com/vi/' + isVideo.youtube[1] + '/' + _this.core.s.youtubeThumbSize + '.jpg';\n } else {\n thumbImg = thumb;\n }\n } else if (isVideo.vimeo) {\n if (_this.core.s.loadVimeoThumbnail) {\n thumbImg = '//i.vimeocdn.com/video/error_' + vimeoErrorThumbSize + '.jpg';\n vimeoId = isVideo.vimeo[1];\n } else {\n thumbImg = thumb;\n }\n } else if (isVideo.dailymotion) {\n if (_this.core.s.loadDailymotionThumbnail) {\n thumbImg = '//www.dailymotion.com/thumbnail/video/' + isVideo.dailymotion[1];\n } else {\n thumbImg = thumb;\n }\n }\n } else {\n thumbImg = thumb;\n }\n\n thumbList += '
';\n vimeoId = '';\n }\n\n if (_this.core.s.dynamic) {\n for (var j = 0; j < _this.core.s.dynamicEl.length; j++) {\n getThumb(_this.core.s.dynamicEl[j].src, _this.core.s.dynamicEl[j].thumb, j);\n }\n } else {\n for (var i = 0; i < _this.core.items.length; i++) {\n if (!_this.core.s.exThumbImage) {\n getThumb(_this.core.items[i].getAttribute('href') || _this.core.items[i].getAttribute('data-src'), _this.core.items[i].querySelector('img').getAttribute('src'), i);\n } else {\n getThumb(_this.core.items[i].getAttribute('href') || _this.core.items[i].getAttribute('data-src'), _this.core.items[i].getAttribute(_this.core.s.exThumbImage), i);\n }\n }\n }\n\n _this.core.outer.querySelector('.lg-thumb').innerHTML = thumbList;\n\n $thumb = _this.core.outer.querySelectorAll('.lg-thumb-item');\n\n for (var n = 0; n < $thumb.length; n++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n var $this = $thumb[index];\n var vimeoVideoId = $this.getAttribute('data-vimeo-id');\n if (vimeoVideoId) {\n\n window['lgJsonP' + _this.el.getAttribute('lg-uid') + '' + n] = function (content) {\n $this.querySelector('img').setAttribute('src', content[0][_this.core.s.vimeoThumbSize]);\n };\n\n var script = document.createElement('script');\n script.className = 'lg-script';\n script.src = '//www.vimeo.com/api/v2/video/' + vimeoVideoId + '.json?callback=lgJsonP' + _this.el.getAttribute('lg-uid') + '' + n;\n document.body.appendChild(script);\n }\n })(n);\n }\n\n // manage active class for thumbnail\n utils.addClass($thumb[_this.core.index], 'active');\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function () {\n\n for (var j = 0; j < $thumb.length; j++) {\n utils.removeClass($thumb[j], 'active');\n }\n\n utils.addClass($thumb[_this.core.index], 'active');\n });\n\n for (var k = 0; k < $thumb.length; k++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n\n utils.on($thumb[index], 'click.lg touchend.lg', function () {\n\n setTimeout(function () {\n\n // In IE9 and bellow touch does not support\n // Go to slide if browser does not support css transitions\n if (_this.thumbClickable && !_this.core.lgBusy || !_this.core.doCss()) {\n _this.core.index = index;\n _this.core.slide(_this.core.index, false, true);\n }\n }, 50);\n });\n })(k);\n }\n\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function () {\n _this.animateThumb(_this.core.index);\n });\n\n utils.on(window, 'resize.lgthumb orientationchange.lgthumb', function () {\n setTimeout(function () {\n _this.animateThumb(_this.core.index);\n _this.thumbOuterWidth = _this.thumbOuter.offsetWidth;\n }, 200);\n });\n };\n\n Thumbnail.prototype.setTranslate = function (value) {\n utils.setVendor(this.core.outer.querySelector('.lg-thumb'), 'Transform', 'translate3d(-' + value + 'px, 0px, 0px)');\n };\n\n Thumbnail.prototype.animateThumb = function (index) {\n var $thumb = this.core.outer.querySelector('.lg-thumb');\n if (this.core.s.animateThumb) {\n var position;\n switch (this.core.s.currentPagerPosition) {\n case 'left':\n position = 0;\n break;\n case 'middle':\n position = this.thumbOuterWidth / 2 - this.core.s.thumbWidth / 2;\n break;\n case 'right':\n position = this.thumbOuterWidth - this.core.s.thumbWidth;\n }\n this.left = (this.core.s.thumbWidth + this.core.s.thumbMargin) * index - 1 - position;\n if (this.left > this.thumbTotalWidth - this.thumbOuterWidth) {\n this.left = this.thumbTotalWidth - this.thumbOuterWidth;\n }\n\n if (this.left < 0) {\n this.left = 0;\n }\n\n if (this.core.lGalleryOn) {\n if (!utils.hasClass($thumb, 'on')) {\n utils.setVendor(this.core.outer.querySelector('.lg-thumb'), 'TransitionDuration', this.core.s.speed + 'ms');\n }\n\n if (!this.core.doCss()) {\n $thumb.style.left = -this.left + 'px';\n }\n } else {\n if (!this.core.doCss()) {\n $thumb.style.left = -this.left + 'px';\n }\n }\n\n this.setTranslate(this.left);\n }\n };\n\n // Enable thumbnail dragging and swiping\n Thumbnail.prototype.enableThumbDrag = function () {\n\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isDraging = false;\n var isMoved = false;\n var tempLeft = 0;\n\n utils.addClass(_this.thumbOuter, 'lg-grab');\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'mousedown.lgthumb', function (e) {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n // execute only on .lg-object\n e.preventDefault();\n startCoords = e.pageX;\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.core.outer.scrollLeft += 1;\n _this.core.outer.scrollLeft -= 1;\n\n // *\n _this.thumbClickable = false;\n utils.removeClass(_this.thumbOuter, 'lg-grab');\n utils.addClass(_this.thumbOuter, 'lg-grabbing');\n }\n });\n\n utils.on(window, 'mousemove.lgthumb', function (e) {\n if (isDraging) {\n tempLeft = _this.left;\n isMoved = true;\n endCoords = e.pageX;\n\n utils.addClass(_this.thumbOuter, 'lg-dragging');\n\n tempLeft = tempLeft - (endCoords - startCoords);\n\n if (tempLeft > _this.thumbTotalWidth - _this.thumbOuterWidth) {\n tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;\n }\n\n if (tempLeft < 0) {\n tempLeft = 0;\n }\n\n // move current slide\n _this.setTranslate(tempLeft);\n }\n });\n\n utils.on(window, 'mouseup.lgthumb', function () {\n if (isMoved) {\n isMoved = false;\n utils.removeClass(_this.thumbOuter, 'lg-dragging');\n\n _this.left = tempLeft;\n\n if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {\n _this.thumbClickable = true;\n }\n } else {\n _this.thumbClickable = true;\n }\n\n if (isDraging) {\n isDraging = false;\n utils.removeClass(_this.thumbOuter, 'lg-grabbing');\n utils.addClass(_this.thumbOuter, 'lg-grab');\n }\n });\n };\n\n Thumbnail.prototype.enableThumbSwipe = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isMoved = false;\n var tempLeft = 0;\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'touchstart.lg', function (e) {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n e.preventDefault();\n startCoords = e.targetTouches[0].pageX;\n _this.thumbClickable = false;\n }\n });\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'touchmove.lg', function (e) {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n e.preventDefault();\n endCoords = e.targetTouches[0].pageX;\n isMoved = true;\n\n utils.addClass(_this.thumbOuter, 'lg-dragging');\n\n tempLeft = _this.left;\n\n tempLeft = tempLeft - (endCoords - startCoords);\n\n if (tempLeft > _this.thumbTotalWidth - _this.thumbOuterWidth) {\n tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;\n }\n\n if (tempLeft < 0) {\n tempLeft = 0;\n }\n\n // move current slide\n _this.setTranslate(tempLeft);\n }\n });\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'touchend.lg', function () {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n\n if (isMoved) {\n isMoved = false;\n utils.removeClass(_this.thumbOuter, 'lg-dragging');\n if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {\n _this.thumbClickable = true;\n }\n\n _this.left = tempLeft;\n } else {\n _this.thumbClickable = true;\n }\n } else {\n _this.thumbClickable = true;\n }\n });\n };\n\n Thumbnail.prototype.toggle = function () {\n var _this = this;\n if (_this.core.s.toggleThumb) {\n utils.addClass(_this.core.outer, 'lg-can-toggle');\n _this.thumbOuter.insertAdjacentHTML('beforeend', '');\n utils.on(_this.core.outer.querySelector('.lg-toggle-thumb'), 'click.lg', function () {\n if (utils.hasClass(_this.core.outer, 'lg-thumb-open')) {\n utils.removeClass(_this.core.outer, 'lg-thumb-open');\n } else {\n utils.addClass(_this.core.outer, 'lg-thumb-open');\n }\n });\n }\n };\n\n Thumbnail.prototype.thumbkeyPress = function () {\n var _this = this;\n utils.on(window, 'keydown.lgthumb', function (e) {\n if (e.keyCode === 38) {\n e.preventDefault();\n utils.addClass(_this.core.outer, 'lg-thumb-open');\n } else if (e.keyCode === 40) {\n e.preventDefault();\n utils.removeClass(_this.core.outer, 'lg-thumb-open');\n }\n });\n };\n\n Thumbnail.prototype.destroy = function (d) {\n if (this.core.s.thumbnail && this.core.items.length > 1) {\n utils.off(window, '.lgthumb');\n if (!d) {\n this.thumbOuter.parentNode.removeChild(this.thumbOuter);\n }\n utils.removeClass(this.core.outer, 'lg-has-thumb');\n\n var lgScript = document.getElementsByClassName('lg-script');\n while (lgScript[0]) {\n lgScript[0].parentNode.removeChild(lgScript[0]);\n }\n }\n };\n\n window.lgModules.thumbnail = Thumbnail;\n});\n\n},{}]},{},[1])(1)\n});\n","/**!\n * lightgallery.js | 1.4.0 | October 13th 2020\n * http://sachinchoolur.github.io/lightgallery.js/\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Lightgallery = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!el) {\n return;\n }\n\n var customEvent = new CustomEvent(event, {\n detail: detail\n });\n el.dispatchEvent(customEvent);\n },\n\n Listener: {\n uid: 0\n },\n on: function on(el, events, fn) {\n var _this = this;\n\n if (!el) {\n return;\n }\n\n events.split(' ').forEach(function (event) {\n var _id = _this.getAttribute(el, 'lg-event-uid') || '';\n utils.Listener.uid++;\n _id += '&' + utils.Listener.uid;\n _this.setAttribute(el, 'lg-event-uid', _id);\n utils.Listener[event + utils.Listener.uid] = fn;\n el.addEventListener(event.split('.')[0], fn, false);\n });\n },\n\n off: function off(el, event) {\n if (!el) {\n return;\n }\n\n var _id = this.getAttribute(el, 'lg-event-uid');\n if (_id) {\n _id = _id.split('&');\n for (var i = 0; i < _id.length; i++) {\n if (_id[i]) {\n var _event = event + _id[i];\n if (_event.substring(0, 1) === '.') {\n for (var key in utils.Listener) {\n if (utils.Listener.hasOwnProperty(key)) {\n if (key.split('.').indexOf(_event.split('.')[1]) > -1) {\n el.removeEventListener(key.split('.')[0], utils.Listener[key]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[key];\n }\n }\n }\n } else {\n el.removeEventListener(_event.split('.')[0], utils.Listener[_event]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[_event];\n }\n }\n }\n }\n },\n\n param: function param(obj) {\n return Object.keys(obj).map(function (k) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]);\n }).join('&');\n }\n };\n\n exports.default = utils;\n});\n\n},{}],2:[function(require,module,exports){\n(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['./lg-utils'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(require('./lg-utils'));\n } else {\n var mod = {\n exports: {}\n };\n factory(global.lgUtils);\n global.lightgallery = mod.exports;\n }\n})(this, function (_lgUtils) {\n 'use strict';\n\n var _lgUtils2 = _interopRequireDefault(_lgUtils);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _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\n /** Polyfill the CustomEvent() constructor functionality in Internet Explorer 9 and higher */\n (function () {\n\n if (typeof window.CustomEvent === 'function') {\n return false;\n }\n\n function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n CustomEvent.prototype = window.Event.prototype;\n\n window.CustomEvent = CustomEvent;\n })();\n\n window.utils = _lgUtils2.default;\n window.lgData = {\n uid: 0\n };\n\n window.lgModules = {};\n var defaults = {\n\n mode: 'lg-slide',\n\n // Ex : 'ease'\n cssEasing: 'ease',\n\n //'for jquery animation'\n easing: 'linear',\n speed: 600,\n height: '100%',\n width: '100%',\n addClass: '',\n startClass: 'lg-start-zoom',\n backdropDuration: 150,\n\n // Set 0, if u don't want to hide the controls \n hideBarsDelay: 6000,\n\n useLeft: false,\n\n // aria-labelledby attribute fot gallery\n ariaLabelledby: '',\n\n //aria-describedby attribute for gallery\n ariaDescribedby: '',\n\n closable: true,\n loop: true,\n escKey: true,\n keyPress: true,\n controls: true,\n slideEndAnimatoin: true,\n hideControlOnEnd: false,\n mousewheel: false,\n\n getCaptionFromTitleOrAlt: true,\n\n // .lg-item || '.lg-sub-html'\n appendSubHtmlTo: '.lg-sub-html',\n\n subHtmlSelectorRelative: false,\n\n /**\n * @desc number of preload slides\n * will exicute only after the current slide is fully loaded.\n *\n * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th\n * slide will be loaded in the background after the 4th slide is fully loaded..\n * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...\n *\n */\n preload: 1,\n showAfterLoad: true,\n selector: '',\n selectWithin: '',\n nextHtml: '',\n prevHtml: '',\n\n // 0, 1\n index: false,\n\n iframeMaxWidth: '100%',\n\n download: true,\n counter: true,\n appendCounterTo: '.lg-toolbar',\n\n swipeThreshold: 50,\n enableSwipe: true,\n enableDrag: true,\n\n dynamic: false,\n dynamicEl: [],\n galleryId: 1,\n supportLegacyBrowser: true\n };\n\n function Plugin(element, options) {\n\n // Current lightGallery element\n this.el = element;\n\n // lightGallery settings\n this.s = _extends({}, defaults, options);\n\n // When using dynamic mode, ensure dynamicEl is an array\n if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) {\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\n }\n\n // lightGallery modules\n this.modules = {};\n\n // false when lightgallery complete first slide;\n this.lGalleryOn = false;\n\n this.lgBusy = false;\n\n // Timeout function for hiding controls;\n this.hideBartimeout = false;\n\n // To determine browser supports for touch events;\n this.isTouch = 'ontouchstart' in document.documentElement;\n\n // Disable hideControlOnEnd if sildeEndAnimation is true\n if (this.s.slideEndAnimatoin) {\n this.s.hideControlOnEnd = false;\n }\n\n this.items = [];\n\n // Gallery items\n if (this.s.dynamic) {\n this.items = this.s.dynamicEl;\n } else {\n if (this.s.selector === 'this') {\n this.items.push(this.el);\n } else if (this.s.selector !== '') {\n if (this.s.selectWithin) {\n this.items = document.querySelector(this.s.selectWithin).querySelectorAll(this.s.selector);\n } else {\n this.items = this.el.querySelectorAll(this.s.selector);\n }\n } else {\n this.items = this.el.children;\n }\n }\n\n // .lg-item\n\n this.___slide = '';\n\n // .lg-outer\n this.outer = '';\n\n this.init();\n\n return this;\n }\n\n Plugin.prototype.init = function () {\n\n var _this = this;\n\n // s.preload should not be more than $item.length\n if (_this.s.preload > _this.items.length) {\n _this.s.preload = _this.items.length;\n }\n\n // if dynamic option is enabled execute immediately\n var _hash = window.location.hash;\n if (_hash.indexOf('lg=' + this.s.galleryId) > 0) {\n\n _this.index = parseInt(_hash.split('&slide=')[1], 10);\n\n _lgUtils2.default.addClass(document.body, 'lg-from-hash');\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n }\n\n if (_this.s.dynamic) {\n\n _lgUtils2.default.trigger(this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || 0;\n\n // prevent accidental double execution\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n } else {\n\n for (var i = 0; i < _this.items.length; i++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n\n // Using different namespace for click because click event should not unbind if selector is same object('this')\n _lgUtils2.default.on(_this.items[index], 'click.lgcustom', function (e) {\n\n e.preventDefault();\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || index;\n\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _this.build(_this.index);\n _lgUtils2.default.addClass(document.body, 'lg-on');\n }\n });\n })(i);\n }\n }\n };\n\n Plugin.prototype.build = function (index) {\n\n var _this = this;\n\n _this.structure();\n\n for (var key in window.lgModules) {\n _this.modules[key] = new window.lgModules[key](_this.el);\n }\n\n // initiate slide function\n _this.slide(index, false, false);\n\n if (_this.s.keyPress) {\n _this.keyPress();\n }\n\n if (_this.items.length > 1) {\n\n _this.arrow();\n\n setTimeout(function () {\n _this.enableDrag();\n _this.enableSwipe();\n }, 50);\n\n if (_this.s.mousewheel) {\n _this.mousewheel();\n }\n }\n\n _this.counter();\n\n _this.closeGallery();\n\n _lgUtils2.default.trigger(_this.el, 'onAfterOpen');\n\n // Hide controllers if mouse doesn't move for some period\n if (_this.s.hideBarsDelay > 0) {\n\n // Hide controls if user doesn't use mouse or touch after opening gallery\n var initialHideBarTimeout = setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-items');\n }, _this.s.hideBarsDelay);\n _lgUtils2.default.on(_this.outer, 'mousemove.lg click.lg touchstart.lg', function () {\n\n // Cancel initalHideBarTimout if user uses mouse or touch events\n // Before it fires\n clearTimeout(initialHideBarTimeout);\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-items');\n\n clearTimeout(_this.hideBartimeout);\n\n // Timeout will be cleared on each slide movement also\n _this.hideBartimeout = setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-items');\n }, _this.s.hideBarsDelay);\n });\n }\n };\n\n Plugin.prototype.structure = function () {\n var list = '';\n var controls = '';\n var i = 0;\n var subHtmlCont = '';\n var template;\n var _this = this;\n\n document.body.insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.setVendor(document.querySelector('.lg-backdrop'), 'TransitionDuration', this.s.backdropDuration + 'ms');\n\n // Create gallery items\n for (i = 0; i < this.items.length; i++) {\n list += '
';\n }\n\n // Create controlls\n if (this.s.controls && this.items.length > 1) {\n controls = '
' + '' + '' + '
';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n subHtmlCont = '
';\n }\n\n var ariaLabelledby = this.s.ariaLabelledby ? 'aria-labelledby=\"' + this.s.ariaLabelledby + '\"' : '';\n var ariaDescribedby = this.s.ariaDescribedby ? 'aria-describedby=\"' + this.s.ariaDescribedby + '\"' : '';\n\n template = '
' + '
' + '
' + list + '
' + '
' + '' + '
' + controls + subHtmlCont + '
' + '
';\n\n document.body.insertAdjacentHTML('beforeend', template);\n this.outer = document.querySelector('.lg-outer');\n this.outer.focus();\n this.___slide = this.outer.querySelectorAll('.lg-item');\n\n if (this.s.useLeft) {\n _lgUtils2.default.addClass(this.outer, 'lg-use-left');\n\n // Set mode lg-slide if use left is true;\n this.s.mode = 'lg-slide';\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-use-css3');\n }\n\n // For fixed height gallery\n _this.setTop();\n _lgUtils2.default.on(window, 'resize.lg orientationchange.lg', function () {\n setTimeout(function () {\n _this.setTop();\n }, 100);\n });\n\n // add class lg-current to remove initial transition\n _lgUtils2.default.addClass(this.___slide[this.index], 'lg-current');\n\n // add Class for css support and transition mode\n if (this.doCss()) {\n _lgUtils2.default.addClass(this.outer, 'lg-css3');\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-css');\n\n // Set speed 0 because no animation will happen if browser doesn't support css3\n this.s.speed = 0;\n }\n\n _lgUtils2.default.addClass(this.outer, this.s.mode);\n\n if (this.s.enableDrag && this.items.length > 1) {\n _lgUtils2.default.addClass(this.outer, 'lg-grab');\n }\n\n if (this.s.showAfterLoad) {\n _lgUtils2.default.addClass(this.outer, 'lg-show-after-load');\n }\n\n if (this.doCss()) {\n var inner = this.outer.querySelector('.lg-inner');\n _lgUtils2.default.setVendor(inner, 'TransitionTimingFunction', this.s.cssEasing);\n _lgUtils2.default.setVendor(inner, 'TransitionDuration', this.s.speed + 'ms');\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(document.querySelector('.lg-backdrop'), 'in');\n });\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-visible');\n }, this.s.backdropDuration);\n\n if (this.s.download) {\n this.outer.querySelector('.lg-toolbar').insertAdjacentHTML('beforeend', '
');\n }\n\n // Store the current scroll top value to scroll back after closing the gallery..\n this.prevScrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n };\n\n // For fixed height gallery\n Plugin.prototype.setTop = function () {\n if (this.s.height !== '100%') {\n var wH = window.innerHeight;\n var top = (wH - parseInt(this.s.height, 10)) / 2;\n var lGallery = this.outer.querySelector('.lg');\n if (wH >= parseInt(this.s.height, 10)) {\n lGallery.style.top = top + 'px';\n } else {\n lGallery.style.top = '0px';\n }\n }\n };\n\n // Find css3 support\n Plugin.prototype.doCss = function () {\n // check for css animation support\n var support = function support() {\n var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];\n var root = document.documentElement;\n var i = 0;\n for (i = 0; i < transition.length; i++) {\n if (transition[i] in root.style) {\n return true;\n }\n }\n };\n\n if (support()) {\n return true;\n }\n\n return false;\n };\n\n /**\n * @desc Check the given src is video\n * @param {String} src\n * @return {Object} video type\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\n */\n Plugin.prototype.isVideo = function (src, index) {\n\n var html;\n if (this.s.dynamic) {\n html = this.s.dynamicEl[index].html;\n } else {\n html = this.items[index].getAttribute('data-html');\n }\n\n if (!src && html) {\n return {\n html5: true\n };\n }\n\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)/i);\n var vimeo = src.match(/\\/\\/(?:www\\.)?vimeo.com\\/([0-9a-z\\-_]+)/i);\n var dailymotion = src.match(/\\/\\/(?:www\\.)?dai.ly\\/([0-9a-z\\-_]+)/i);\n var vk = src.match(/\\/\\/(?:www\\.)?(?:vk\\.com|vkontakte\\.ru)\\/(?:video_ext\\.php\\?)(.*)/i);\n\n if (youtube) {\n return {\n youtube: youtube\n };\n } else if (vimeo) {\n return {\n vimeo: vimeo\n };\n } else if (dailymotion) {\n return {\n dailymotion: dailymotion\n };\n } else if (vk) {\n return {\n vk: vk\n };\n }\n };\n\n /**\n * @desc Create image counter\n * Ex: 1/10\n */\n Plugin.prototype.counter = function () {\n if (this.s.counter) {\n this.outer.querySelector(this.s.appendCounterTo).insertAdjacentHTML('beforeend', '
' + (parseInt(this.index, 10) + 1) + ' / ' + this.items.length + '
');\n }\n };\n\n /**\n * @desc add sub-html into the slide\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.addHtml = function (index) {\n var subHtml = null;\n var currentEle;\n if (this.s.dynamic) {\n subHtml = this.s.dynamicEl[index].subHtml;\n } else {\n currentEle = this.items[index];\n subHtml = currentEle.getAttribute('data-sub-html');\n if (this.s.getCaptionFromTitleOrAlt && !subHtml) {\n subHtml = currentEle.getAttribute('title');\n if (subHtml && currentEle.querySelector('img')) {\n subHtml = currentEle.querySelector('img').getAttribute('alt');\n }\n }\n }\n\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n\n // get first letter of subhtml\n // if first letter starts with . or # get the html form the jQuery object\n var fL = subHtml.substring(0, 1);\n if (fL === '.' || fL === '#') {\n if (this.s.subHtmlSelectorRelative && !this.s.dynamic) {\n subHtml = currentEle.querySelector(subHtml).innerHTML;\n } else {\n subHtml = document.querySelector(subHtml).innerHTML;\n }\n }\n } else {\n subHtml = '';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n this.outer.querySelector(this.s.appendSubHtmlTo).innerHTML = subHtml;\n } else {\n this.___slide[index].insertAdjacentHTML('beforeend', subHtml);\n }\n\n // Add lg-empty-html class if title doesn't exist\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n if (subHtml === '') {\n _lgUtils2.default.addClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n } else {\n _lgUtils2.default.removeClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n }\n }\n\n _lgUtils2.default.trigger(this.el, 'onAfterAppendSubHtml', {\n index: index\n });\n };\n\n /**\n * @desc Preload slides\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.preload = function (index) {\n var i = 1;\n var j = 1;\n for (i = 1; i <= this.s.preload; i++) {\n if (i >= this.items.length - index) {\n break;\n }\n\n this.loadContent(index + i, false, 0);\n }\n\n for (j = 1; j <= this.s.preload; j++) {\n if (index - j < 0) {\n break;\n }\n\n this.loadContent(index - j, false, 0);\n }\n };\n\n /**\n * @desc Load slide content into slide.\n * @param {Number} index - index of the slide.\n * @param {Boolean} rec - if true call loadcontent() function again.\n * @param {Boolean} delay - delay for adding complete class. it is 0 except first time.\n */\n Plugin.prototype.loadContent = function (index, rec, delay) {\n\n var _this = this;\n var _hasPoster = false;\n var _img;\n var _src;\n var _poster;\n var _srcset;\n var _sizes;\n var _html;\n var _alt;\n var getResponsiveSrc = function getResponsiveSrc(srcItms) {\n var rsWidth = [];\n var rsSrc = [];\n for (var i = 0; i < srcItms.length; i++) {\n var __src = srcItms[i].split(' ');\n\n // Manage empty space\n if (__src[0] === '') {\n __src.splice(0, 1);\n }\n\n rsSrc.push(__src[0]);\n rsWidth.push(__src[1]);\n }\n\n var wWidth = window.innerWidth;\n for (var j = 0; j < rsWidth.length; j++) {\n if (parseInt(rsWidth[j], 10) > wWidth) {\n _src = rsSrc[j];\n break;\n }\n }\n };\n\n if (_this.s.dynamic) {\n\n if (_this.s.dynamicEl[index].poster) {\n _hasPoster = true;\n _poster = _this.s.dynamicEl[index].poster;\n }\n\n _html = _this.s.dynamicEl[index].html;\n _src = _this.s.dynamicEl[index].src;\n _alt = _this.s.dynamicEl[index].alt;\n\n if (_this.s.dynamicEl[index].responsive) {\n var srcDyItms = _this.s.dynamicEl[index].responsive.split(',');\n getResponsiveSrc(srcDyItms);\n }\n\n _srcset = _this.s.dynamicEl[index].srcset;\n _sizes = _this.s.dynamicEl[index].sizes;\n } else {\n\n if (_this.items[index].getAttribute('data-poster')) {\n _hasPoster = true;\n _poster = _this.items[index].getAttribute('data-poster');\n }\n\n _html = _this.items[index].getAttribute('data-html');\n _src = _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src');\n _alt = _this.items[index].getAttribute('title');\n\n if (_this.items[index].querySelector('img')) {\n _alt = _alt || _this.items[index].querySelector('img').getAttribute('alt');\n }\n\n if (_this.items[index].getAttribute('data-responsive')) {\n var srcItms = _this.items[index].getAttribute('data-responsive').split(',');\n getResponsiveSrc(srcItms);\n }\n\n _srcset = _this.items[index].getAttribute('data-srcset');\n _sizes = _this.items[index].getAttribute('data-sizes');\n }\n\n //if (_src || _srcset || _sizes || _poster) {\n\n var iframe = false;\n if (_this.s.dynamic) {\n if (_this.s.dynamicEl[index].iframe) {\n iframe = true;\n }\n } else {\n if (_this.items[index].getAttribute('data-iframe') === 'true') {\n iframe = true;\n }\n }\n\n var _isVideo = _this.isVideo(_src, index);\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-loaded')) {\n if (iframe) {\n _this.___slide[index].insertAdjacentHTML('afterbegin', '
');\n } else if (_hasPoster) {\n var videoClass = '';\n if (_isVideo && _isVideo.youtube) {\n videoClass = 'lg-has-youtube';\n } else if (_isVideo && _isVideo.vimeo) {\n videoClass = 'lg-has-vimeo';\n } else {\n videoClass = 'lg-has-html5';\n }\n\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n } else if (_isVideo) {\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.trigger(_this.el, 'hasVideo', {\n index: index,\n src: _src,\n html: _html\n });\n } else {\n _alt = _alt ? 'alt=\"' + _alt + '\"' : '';\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n }\n\n _lgUtils2.default.trigger(_this.el, 'onAferAppendSlide', {\n index: index\n });\n\n _img = _this.___slide[index].querySelector('.lg-object');\n if (_sizes) {\n _img.setAttribute('sizes', _sizes);\n }\n\n if (_srcset) {\n _img.setAttribute('srcset', _srcset);\n\n if (this.s.supportLegacyBrowser) {\n try {\n picturefill({\n elements: [_img[0]]\n });\n } catch (e) {\n console.warn('If you want srcset to be supported for older browsers, ' + 'please include picturefil javascript library in your document.');\n }\n }\n }\n\n if (this.s.appendSubHtmlTo !== '.lg-sub-html') {\n _this.addHtml(index);\n }\n\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-loaded');\n }\n\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n\n // For first time add some delay for displaying the start animation.\n var _speed = 0;\n\n // Do not change the delay value because it is required for zoom plugin.\n // If gallery opened from direct url (hash) speed value should be 0\n if (delay && !_lgUtils2.default.hasClass(document.body, 'lg-from-hash')) {\n _speed = delay;\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n\n _lgUtils2.default.trigger(_this.el, 'onSlideItemLoad', {\n index: index,\n delay: delay || 0\n });\n }, _speed);\n });\n\n // @todo check load state for html5 videos\n if (_isVideo && _isVideo.html5 && !_hasPoster) {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n }\n\n if (rec === true) {\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-complete')) {\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n _this.preload(index);\n });\n } else {\n _this.preload(index);\n }\n }\n\n //}\n };\n\n /**\n * @desc slide function for lightgallery\n ** Slide() gets call on start\n ** ** Set lg.on true once slide() function gets called.\n ** Call loadContent() on slide() function inside setTimeout\n ** ** On first slide we do not want any animation like slide of fade\n ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately\n ** ** Else loadContent() should wait for the transition to complete.\n ** ** So set timeout s.speed + 50\n <=> ** loadContent() will load slide content in to the particular slide\n ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function.\n ** ** preload will execute only when the previous slide is fully loaded (images iframe)\n ** ** avoid simultaneous image load\n <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value\n ** loadContent() <====> Preload();\n \n * @param {Number} index - index of the slide\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\n */\n Plugin.prototype.slide = function (index, fromTouch, fromThumb) {\n\n var _prevIndex = 0;\n for (var i = 0; i < this.___slide.length; i++) {\n if (_lgUtils2.default.hasClass(this.___slide[i], 'lg-current')) {\n _prevIndex = i;\n break;\n }\n }\n\n var _this = this;\n\n // Prevent if multiple call\n // Required for hsh plugin\n if (_this.lGalleryOn && _prevIndex === index) {\n return;\n }\n\n var _length = this.___slide.length;\n var _time = _this.lGalleryOn ? this.s.speed : 0;\n var _next = false;\n var _prev = false;\n\n if (!_this.lgBusy) {\n\n if (this.s.download) {\n var _src;\n if (_this.s.dynamic) {\n _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src);\n } else {\n _src = _this.items[index].getAttribute('data-download-url') !== 'false' && (_this.items[index].getAttribute('data-download-url') || _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src'));\n }\n\n if (_src) {\n document.getElementById('lg-download').setAttribute('href', _src);\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-download');\n } else {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-download');\n }\n }\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n\n _this.lgBusy = true;\n\n clearTimeout(_this.hideBartimeout);\n\n // Add title if this.s.appendSubHtmlTo === lg-sub-html\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n\n // wait for slide animation to complete\n setTimeout(function () {\n _this.addHtml(index);\n }, _time);\n }\n\n this.arrowDisable(index);\n\n if (!fromTouch) {\n\n // remove all transitions\n _lgUtils2.default.addClass(_this.outer, 'lg-no-trans');\n\n for (var j = 0; j < this.___slide.length; j++) {\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-prev-slide');\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-next-slide');\n }\n\n if (index < _prevIndex) {\n _prev = true;\n if (index === 0 && _prevIndex === _length - 1 && !fromThumb) {\n _prev = false;\n _next = true;\n }\n } else if (index > _prevIndex) {\n _next = true;\n if (index === _length - 1 && _prevIndex === 0 && !fromThumb) {\n _prev = true;\n _next = false;\n }\n }\n\n if (_prev) {\n\n //prevslide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-prev-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-next-slide');\n } else if (_next) {\n\n // next slide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-next-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-prev-slide');\n }\n\n // give 50 ms for browser to add/remove class\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n\n //_this.$slide.eq(_prevIndex).removeClass('lg-current');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n\n // reset all transitions\n _lgUtils2.default.removeClass(_this.outer, 'lg-no-trans');\n }, 50);\n } else {\n\n var touchPrev = index - 1;\n var touchNext = index + 1;\n\n if (index === 0 && _prevIndex === _length - 1) {\n\n // next slide\n touchNext = 0;\n touchPrev = _length - 1;\n } else if (index === _length - 1 && _prevIndex === 0) {\n\n // prev slide\n touchNext = 0;\n touchPrev = _length - 1;\n }\n\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-prev-slide'), 'lg-prev-slide');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-next-slide'), 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[touchPrev], 'lg-prev-slide');\n _lgUtils2.default.addClass(_this.___slide[touchNext], 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n }\n\n if (_this.lGalleryOn) {\n setTimeout(function () {\n _this.loadContent(index, true, 0);\n }, this.s.speed + 50);\n\n setTimeout(function () {\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }, this.s.speed);\n } else {\n _this.loadContent(index, true, _this.s.backdropDuration);\n\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }\n\n _this.lGalleryOn = true;\n\n if (this.s.counter) {\n if (document.getElementById('lg-counter-current')) {\n document.getElementById('lg-counter-current').innerHTML = index + 1;\n }\n }\n }\n };\n\n /**\n * @desc Go to next slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToNextSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index + 1 < _this.___slide.length) {\n _this.index++;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = 0;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-right-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-right-end');\n }, 400);\n }\n }\n }\n };\n\n /**\n * @desc Go to previous slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToPrevSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index > 0) {\n _this.index--;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = _this.items.length - 1;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-left-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-left-end');\n }, 400);\n }\n }\n }\n };\n\n Plugin.prototype.keyPress = function () {\n var _this = this;\n if (this.items.length > 1) {\n _lgUtils2.default.on(window, 'keyup.lg', function (e) {\n if (_this.items.length > 1) {\n if (e.keyCode === 37) {\n e.preventDefault();\n _this.goToPrevSlide();\n }\n\n if (e.keyCode === 39) {\n e.preventDefault();\n _this.goToNextSlide();\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'keydown.lg', function (e) {\n if (_this.s.escKey === true && e.keyCode === 27) {\n e.preventDefault();\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-thumb-open')) {\n _this.destroy();\n } else {\n _lgUtils2.default.removeClass(_this.outer, 'lg-thumb-open');\n }\n }\n });\n };\n\n Plugin.prototype.arrow = function () {\n var _this = this;\n _lgUtils2.default.on(this.outer.querySelector('.lg-prev'), 'click.lg', function () {\n _this.goToPrevSlide();\n });\n\n _lgUtils2.default.on(this.outer.querySelector('.lg-next'), 'click.lg', function () {\n _this.goToNextSlide();\n });\n };\n\n Plugin.prototype.arrowDisable = function (index) {\n\n // Disable arrows if s.hideControlOnEnd is true\n if (!this.s.loop && this.s.hideControlOnEnd) {\n var next = this.outer.querySelector('.lg-next');\n var prev = this.outer.querySelector('.lg-prev');\n if (index + 1 < this.___slide.length) {\n next.removeAttribute('disabled');\n _lgUtils2.default.removeClass(next, 'disabled');\n } else {\n next.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(next, 'disabled');\n }\n\n if (index > 0) {\n prev.removeAttribute('disabled');\n _lgUtils2.default.removeClass(prev, 'disabled');\n } else {\n prev.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(prev, 'disabled');\n }\n }\n };\n\n Plugin.prototype.setTranslate = function (el, xValue, yValue) {\n // jQuery supports Automatic CSS prefixing since jQuery 1.8.0\n if (this.s.useLeft) {\n el.style.left = xValue;\n } else {\n _lgUtils2.default.setVendor(el, 'Transform', 'translate3d(' + xValue + 'px, ' + yValue + 'px, 0px)');\n }\n };\n\n Plugin.prototype.touchMove = function (startCoords, endCoords) {\n\n var distance = endCoords - startCoords;\n\n if (Math.abs(distance) > 15) {\n // reset opacity and transition duration\n _lgUtils2.default.addClass(this.outer, 'lg-dragging');\n\n // move current slide\n this.setTranslate(this.___slide[this.index], distance, 0);\n\n // move next and prev slide with current slide\n this.setTranslate(document.querySelector('.lg-prev-slide'), -this.___slide[this.index].clientWidth + distance, 0);\n this.setTranslate(document.querySelector('.lg-next-slide'), this.___slide[this.index].clientWidth + distance, 0);\n }\n };\n\n Plugin.prototype.touchEnd = function (distance) {\n var _this = this;\n\n // keep slide animation for any mode while dragg/swipe\n if (_this.s.mode !== 'lg-slide') {\n _lgUtils2.default.addClass(_this.outer, 'lg-slide');\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n if (!_lgUtils2.default.hasClass(this.___slide[i], 'lg-current') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-prev-slide') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-next-slide')) {\n this.___slide[i].style.opacity = '0';\n }\n }\n\n // set transition duration\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-dragging');\n if (distance < 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToNextSlide(true);\n } else if (distance > 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToPrevSlide(true);\n } else if (Math.abs(distance) < 5) {\n\n // Trigger click if distance is less than 5 pix\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n for (var i = 0; i < _this.___slide.length; i++) {\n _this.___slide[i].removeAttribute('style');\n }\n });\n\n // remove slide class once drag/swipe is completed if mode is not slide\n setTimeout(function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging') && _this.s.mode !== 'lg-slide') {\n _lgUtils2.default.removeClass(_this.outer, 'lg-slide');\n }\n }, _this.s.speed + 100);\n };\n\n Plugin.prototype.enableSwipe = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isMoved = false;\n\n if (_this.s.enableSwipe && _this.isTouch && _this.doCss()) {\n\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'touchstart.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed') && !_this.lgBusy) {\n e.preventDefault();\n _this.manageSwipeClass();\n startCoords = e.targetTouches[0].pageX;\n }\n });\n }\n\n for (var j = 0; j < _this.___slide.length; j++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[j], 'touchmove.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n e.preventDefault();\n endCoords = e.targetTouches[0].pageX;\n _this.touchMove(startCoords, endCoords);\n isMoved = true;\n }\n });\n }\n\n for (var k = 0; k < _this.___slide.length; k++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[k], 'touchend.lg', function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n } else {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n }\n });\n }\n }\n };\n\n Plugin.prototype.enableDrag = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isDraging = false;\n var isMoved = false;\n if (_this.s.enableDrag && !_this.isTouch && _this.doCss()) {\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'mousedown.lg', function (e) {\n // execute only on .lg-object\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n e.preventDefault();\n\n if (!_this.lgBusy) {\n _this.manageSwipeClass();\n startCoords = e.pageX;\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.outer.scrollLeft += 1;\n _this.outer.scrollLeft -= 1;\n\n // *\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-grab');\n _lgUtils2.default.addClass(_this.outer, 'lg-grabbing');\n\n _lgUtils2.default.trigger(_this.el, 'onDragstart');\n }\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'mousemove.lg', function (e) {\n if (isDraging) {\n isMoved = true;\n endCoords = e.pageX;\n _this.touchMove(startCoords, endCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragmove');\n }\n });\n\n _lgUtils2.default.on(window, 'mouseup.lg', function (e) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragend');\n } else if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n // Prevent execution on click\n if (isDraging) {\n isDraging = false;\n _lgUtils2.default.removeClass(_this.outer, 'lg-grabbing');\n _lgUtils2.default.addClass(_this.outer, 'lg-grab');\n }\n });\n }\n };\n\n Plugin.prototype.manageSwipeClass = function () {\n var touchNext = this.index + 1;\n var touchPrev = this.index - 1;\n var length = this.___slide.length;\n if (this.s.loop) {\n if (this.index === 0) {\n touchPrev = length - 1;\n } else if (this.index === length - 1) {\n touchNext = 0;\n }\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-next-slide');\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-prev-slide');\n }\n\n if (touchPrev > -1) {\n _lgUtils2.default.addClass(this.___slide[touchPrev], 'lg-prev-slide');\n }\n\n _lgUtils2.default.addClass(this.___slide[touchNext], 'lg-next-slide');\n };\n\n Plugin.prototype.mousewheel = function () {\n var _this = this;\n _lgUtils2.default.on(_this.outer, 'mousewheel.lg', function (e) {\n\n if (!e.deltaY) {\n return;\n }\n\n if (e.deltaY > 0) {\n _this.goToPrevSlide();\n } else {\n _this.goToNextSlide();\n }\n\n e.preventDefault();\n });\n };\n\n Plugin.prototype.closeGallery = function () {\n\n var _this = this;\n var mousedown = false;\n _lgUtils2.default.on(this.outer.querySelector('.lg-close'), 'click.lg', function () {\n _this.destroy();\n });\n\n if (_this.s.closable) {\n\n // If you drag the slide and release outside gallery gets close on chrome\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\n _lgUtils2.default.on(_this.outer, 'mousedown.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap')) {\n mousedown = true;\n } else {\n mousedown = false;\n }\n });\n\n _lgUtils2.default.on(_this.outer, 'mouseup.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap') && mousedown) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging')) {\n _this.destroy();\n }\n }\n });\n }\n };\n\n Plugin.prototype.destroy = function (d) {\n\n var _this = this;\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onBeforeClose');\n }\n\n document.body.scrollTop = _this.prevScrollTop;\n document.documentElement.scrollTop = _this.prevScrollTop;\n\n /**\n * if d is false or undefined destroy will only close the gallery\n * plugins instance remains with the element\n *\n * if d is true destroy will completely remove the plugin\n */\n\n if (d) {\n if (!_this.s.dynamic) {\n // only when not using dynamic mode is $items a jquery collection\n\n for (var i = 0; i < this.items.length; i++) {\n _lgUtils2.default.off(this.items[i], '.lg');\n _lgUtils2.default.off(this.items[i], '.lgcustom');\n }\n }\n\n var lguid = _this.el.getAttribute('lg-uid');\n delete window.lgData[lguid];\n _this.el.removeAttribute('lg-uid');\n }\n\n // Unbind all events added by lightGallery\n _lgUtils2.default.off(this.el, '.lgtm');\n\n // Distroy all lightGallery modules\n for (var key in window.lgModules) {\n if (_this.modules[key]) {\n _this.modules[key].destroy(d);\n }\n }\n\n this.lGalleryOn = false;\n\n clearTimeout(_this.hideBartimeout);\n this.hideBartimeout = false;\n _lgUtils2.default.off(window, '.lg');\n _lgUtils2.default.removeClass(document.body, 'lg-on');\n _lgUtils2.default.removeClass(document.body, 'lg-from-hash');\n\n if (_this.outer) {\n _lgUtils2.default.removeClass(_this.outer, 'lg-visible');\n }\n\n _lgUtils2.default.removeClass(document.querySelector('.lg-backdrop'), 'in');\n setTimeout(function () {\n try {\n if (_this.outer) {\n _this.outer.parentNode.removeChild(_this.outer);\n }\n\n if (document.querySelector('.lg-backdrop')) {\n document.querySelector('.lg-backdrop').parentNode.removeChild(document.querySelector('.lg-backdrop'));\n }\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onCloseAfter');\n }\n _this.el.focus();\n } catch (err) {}\n }, _this.s.backdropDuration + 50);\n };\n\n window.lightGallery = function (el, options) {\n if (!el) {\n return;\n }\n\n try {\n if (!el.getAttribute('lg-uid')) {\n var uid = 'lg' + window.lgData.uid++;\n window.lgData[uid] = new Plugin(el, options);\n el.setAttribute('lg-uid', uid);\n } else {\n window.lgData[el.getAttribute('lg-uid')].init();\n }\n } catch (err) {\n console.error('lightGallery has not initiated properly', err);\n }\n };\n});\n\n},{\"./lg-utils\":1}]},{},[2])(2)\n});\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 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","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\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","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\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 * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\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 defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\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 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","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 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 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 isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\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 `_.keysIn` 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 baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\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 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 Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\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 allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\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 assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\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 baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\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 getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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 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 overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\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","/**\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 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 baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\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","/**\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","/**\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","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","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\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 apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\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","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\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 safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\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","/** 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","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n}\n\nmodule.exports = chunk;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\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","/**\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 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 isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\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 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 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 baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\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 infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\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 baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\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 * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\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 debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\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 copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\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\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\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\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v17.0.2\n * react-dom.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 Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","!function(t,o){\"function\"==typeof define&&define.amd?define(o):\"object\"==typeof exports?module.exports=o():t.tingle=o()}(this,function(){var o=!1;function t(t){this.opts=function(){for(var t=1;t',this.modalCloseBtnLabel=document.createElement(\"span\"),this.modalCloseBtnLabel.classList.add(\"tingle-modal__closeLabel\"),this.modalCloseBtnLabel.innerHTML=this.opts.closeLabel,this.modalCloseBtn.appendChild(this.modalCloseBtnIcon),this.modalCloseBtn.appendChild(this.modalCloseBtnLabel));this.modalBox=document.createElement(\"div\"),this.modalBox.classList.add(\"tingle-modal-box\"),this.modalBoxContent=document.createElement(\"div\"),this.modalBoxContent.classList.add(\"tingle-modal-box__content\"),this.modalBox.appendChild(this.modalBoxContent),-1!==this.opts.closeMethods.indexOf(\"button\")&&this.modal.appendChild(this.modalCloseBtn);this.modal.appendChild(this.modalBox)}.call(this),function(){this._events={clickCloseBtn:this.close.bind(this),clickOverlay:function(t){var o=this.modal.offsetWidth-this.modal.clientWidth,e=t.clientX>=this.modal.offsetWidth-15,s=this.modal.scrollHeight!==this.modal.offsetHeight;if(\"MacIntel\"===navigator.platform&&0==o&&e&&s)return;-1!==this.opts.closeMethods.indexOf(\"overlay\")&&!function(t,o){for(;(t=t.parentElement)&&!t.classList.contains(o););return t}(t.target,\"tingle-modal\")&&t.clientX= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __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\nexport function __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 (_) 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\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\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);\r\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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\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\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\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\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/*!\n * validate.js 0.13.1\n *\n * (c) 2013-2019 Nicklas Ansman, 2013 Wrapp\n * Validate.js may be freely distributed under the MIT license.\n * For all details and documentation:\n * http://validatejs.org/\n */\n\n(function(exports, module, define) {\n \"use strict\";\n\n // The main function that calls the validators specified by the constraints.\n // The options are the following:\n // - format (string) - An option that controls how the returned value is formatted\n // * flat - Returns a flat array of just the error messages\n // * grouped - Returns the messages grouped by attribute (default)\n // * detailed - Returns an array of the raw validation data\n // - fullMessages (boolean) - If `true` (default) the attribute name is prepended to the error.\n //\n // Please note that the options are also passed to each validator.\n var validate = function(attributes, constraints, options) {\n options = v.extend({}, v.options, options);\n\n var results = v.runValidations(attributes, constraints, options)\n , attr\n , validator;\n\n if (results.some(function(r) { return v.isPromise(r.error); })) {\n throw new Error(\"Use validate.async if you want support for promises\");\n }\n return validate.processValidationResults(results, options);\n };\n\n var v = validate;\n\n // Copies over attributes from one or more sources to a single destination.\n // Very much similar to underscore's extend.\n // The first argument is the target object and the remaining arguments will be\n // used as sources.\n v.extend = function(obj) {\n [].slice.call(arguments, 1).forEach(function(source) {\n for (var attr in source) {\n obj[attr] = source[attr];\n }\n });\n return obj;\n };\n\n v.extend(validate, {\n // This is the version of the library as a semver.\n // The toString function will allow it to be coerced into a string\n version: {\n major: 0,\n minor: 13,\n patch: 1,\n metadata: null,\n toString: function() {\n var version = v.format(\"%{major}.%{minor}.%{patch}\", v.version);\n if (!v.isEmpty(v.version.metadata)) {\n version += \"+\" + v.version.metadata;\n }\n return version;\n }\n },\n\n // Below is the dependencies that are used in validate.js\n\n // The constructor of the Promise implementation.\n // If you are using Q.js, RSVP or any other A+ compatible implementation\n // override this attribute to be the constructor of that promise.\n // Since jQuery promises aren't A+ compatible they won't work.\n Promise: typeof Promise !== \"undefined\" ? Promise : /* istanbul ignore next */ null,\n\n EMPTY_STRING_REGEXP: /^\\s*$/,\n\n // Runs the validators specified by the constraints object.\n // Will return an array of the format:\n // [{attribute: \"\", error: \"\"}, ...]\n runValidations: function(attributes, constraints, options) {\n var results = []\n , attr\n , validatorName\n , value\n , validators\n , validator\n , validatorOptions\n , error;\n\n if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) {\n attributes = v.collectFormValues(attributes);\n }\n\n // Loops through each constraints, finds the correct validator and run it.\n for (attr in constraints) {\n value = v.getDeepObjectValue(attributes, attr);\n // This allows the constraints for an attribute to be a function.\n // The function will be called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validators = v.result(constraints[attr], value, attributes, attr, options, constraints);\n\n for (validatorName in validators) {\n validator = v.validators[validatorName];\n\n if (!validator) {\n error = v.format(\"Unknown validator %{name}\", {name: validatorName});\n throw new Error(error);\n }\n\n validatorOptions = validators[validatorName];\n // This allows the options to be a function. The function will be\n // called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints);\n if (!validatorOptions) {\n continue;\n }\n results.push({\n attribute: attr,\n value: value,\n validator: validatorName,\n globalOptions: options,\n attributes: attributes,\n options: validatorOptions,\n error: validator.call(validator,\n value,\n validatorOptions,\n attr,\n attributes,\n options)\n });\n }\n }\n\n return results;\n },\n\n // Takes the output from runValidations and converts it to the correct\n // output format.\n processValidationResults: function(errors, options) {\n errors = v.pruneEmptyErrors(errors, options);\n errors = v.expandMultipleErrors(errors, options);\n errors = v.convertErrorMessages(errors, options);\n\n var format = options.format || \"grouped\";\n\n if (typeof v.formatters[format] === 'function') {\n errors = v.formatters[format](errors);\n } else {\n throw new Error(v.format(\"Unknown format %{format}\", options));\n }\n\n return v.isEmpty(errors) ? undefined : errors;\n },\n\n // Runs the validations with support for promises.\n // This function will return a promise that is settled when all the\n // validation promises have been completed.\n // It can be called even if no validations returned a promise.\n async: function(attributes, constraints, options) {\n options = v.extend({}, v.async.options, options);\n\n var WrapErrors = options.wrapErrors || function(errors) {\n return errors;\n };\n\n // Removes unknown attributes\n if (options.cleanAttributes !== false) {\n attributes = v.cleanAttributes(attributes, constraints);\n }\n\n var results = v.runValidations(attributes, constraints, options);\n\n return new v.Promise(function(resolve, reject) {\n v.waitForResults(results).then(function() {\n var errors = v.processValidationResults(results, options);\n if (errors) {\n reject(new WrapErrors(errors, options, attributes, constraints));\n } else {\n resolve(attributes);\n }\n }, function(err) {\n reject(err);\n });\n });\n },\n\n single: function(value, constraints, options) {\n options = v.extend({}, v.single.options, options, {\n format: \"flat\",\n fullMessages: false\n });\n return v({single: value}, {single: constraints}, options);\n },\n\n // Returns a promise that is resolved when all promises in the results array\n // are settled. The promise returned from this function is always resolved,\n // never rejected.\n // This function modifies the input argument, it replaces the promises\n // with the value returned from the promise.\n waitForResults: function(results) {\n // Create a sequence of all the results starting with a resolved promise.\n return results.reduce(function(memo, result) {\n // If this result isn't a promise skip it in the sequence.\n if (!v.isPromise(result.error)) {\n return memo;\n }\n\n return memo.then(function() {\n return result.error.then(function(error) {\n result.error = error || null;\n });\n });\n }, new v.Promise(function(r) { r(); })); // A resolved promise\n },\n\n // If the given argument is a call: function the and: function return the value\n // otherwise just return the value. Additional arguments will be passed as\n // arguments to the function.\n // Example:\n // ```\n // result('foo') // 'foo'\n // result(Math.max, 1, 2) // 2\n // ```\n result: function(value) {\n var args = [].slice.call(arguments, 1);\n if (typeof value === 'function') {\n value = value.apply(null, args);\n }\n return value;\n },\n\n // Checks if the value is a number. This function does not consider NaN a\n // number like many other `isNumber` functions do.\n isNumber: function(value) {\n return typeof value === 'number' && !isNaN(value);\n },\n\n // Returns false if the object is not a function\n isFunction: function(value) {\n return typeof value === 'function';\n },\n\n // A simple check to verify that the value is an integer. Uses `isNumber`\n // and a simple modulo check.\n isInteger: function(value) {\n return v.isNumber(value) && value % 1 === 0;\n },\n\n // Checks if the value is a boolean\n isBoolean: function(value) {\n return typeof value === 'boolean';\n },\n\n // Uses the `Object` function to check if the given argument is an object.\n isObject: function(obj) {\n return obj === Object(obj);\n },\n\n // Simply checks if the object is an instance of a date\n isDate: function(obj) {\n return obj instanceof Date;\n },\n\n // Returns false if the object is `null` of `undefined`\n isDefined: function(obj) {\n return obj !== null && obj !== undefined;\n },\n\n // Checks if the given argument is a promise. Anything with a `then`\n // function is considered a promise.\n isPromise: function(p) {\n return !!p && v.isFunction(p.then);\n },\n\n isJqueryElement: function(o) {\n return o && v.isString(o.jquery);\n },\n\n isDomElement: function(o) {\n if (!o) {\n return false;\n }\n\n if (!o.querySelectorAll || !o.querySelector) {\n return false;\n }\n\n if (v.isObject(document) && o === document) {\n return true;\n }\n\n // http://stackoverflow.com/a/384380/699304\n /* istanbul ignore else */\n if (typeof HTMLElement === \"object\") {\n return o instanceof HTMLElement;\n } else {\n return o &&\n typeof o === \"object\" &&\n o !== null &&\n o.nodeType === 1 &&\n typeof o.nodeName === \"string\";\n }\n },\n\n isEmpty: function(value) {\n var attr;\n\n // Null and undefined are empty\n if (!v.isDefined(value)) {\n return true;\n }\n\n // functions are non empty\n if (v.isFunction(value)) {\n return false;\n }\n\n // Whitespace only strings are empty\n if (v.isString(value)) {\n return v.EMPTY_STRING_REGEXP.test(value);\n }\n\n // For arrays we use the length property\n if (v.isArray(value)) {\n return value.length === 0;\n }\n\n // Dates have no attributes but aren't empty\n if (v.isDate(value)) {\n return false;\n }\n\n // If we find at least one property we consider it non empty\n if (v.isObject(value)) {\n for (attr in value) {\n return false;\n }\n return true;\n }\n\n return false;\n },\n\n // Formats the specified strings with the given values like so:\n // ```\n // format(\"Foo: %{foo}\", {foo: \"bar\"}) // \"Foo bar\"\n // ```\n // If you want to write %{...} without having it replaced simply\n // prefix it with % like this `Foo: %%{foo}` and it will be returned\n // as `\"Foo: %{foo}\"`\n format: v.extend(function(str, vals) {\n if (!v.isString(str)) {\n return str;\n }\n return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) {\n if (m1 === '%') {\n return \"%{\" + m2 + \"}\";\n } else {\n return String(vals[m2]);\n }\n });\n }, {\n // Finds %{key} style patterns in the given string\n FORMAT_REGEXP: /(%?)%\\{([^\\}]+)\\}/g\n }),\n\n // \"Prettifies\" the given string.\n // Prettifying means replacing [.\\_-] with spaces as well as splitting\n // camel case words.\n prettify: function(str) {\n if (v.isNumber(str)) {\n // If there are more than 2 decimals round it to two\n if ((str * 100) % 1 === 0) {\n return \"\" + str;\n } else {\n return parseFloat(Math.round(str * 100) / 100).toFixed(2);\n }\n }\n\n if (v.isArray(str)) {\n return str.map(function(s) { return v.prettify(s); }).join(\", \");\n }\n\n if (v.isObject(str)) {\n if (!v.isDefined(str.toString)) {\n return JSON.stringify(str);\n }\n\n return str.toString();\n }\n\n // Ensure the string is actually a string\n str = \"\" + str;\n\n return str\n // Splits keys separated by periods\n .replace(/([^\\s])\\.([^\\s])/g, '$1 $2')\n // Removes backslashes\n .replace(/\\\\+/g, '')\n // Replaces - and - with space\n .replace(/[_-]/g, ' ')\n // Splits camel cased words\n .replace(/([a-z])([A-Z])/g, function(m0, m1, m2) {\n return \"\" + m1 + \" \" + m2.toLowerCase();\n })\n .toLowerCase();\n },\n\n stringifyValue: function(value, options) {\n var prettify = options && options.prettify || v.prettify;\n return prettify(value);\n },\n\n isString: function(value) {\n return typeof value === 'string';\n },\n\n isArray: function(value) {\n return {}.toString.call(value) === '[object Array]';\n },\n\n // Checks if the object is a hash, which is equivalent to an object that\n // is neither an array nor a function.\n isHash: function(value) {\n return v.isObject(value) && !v.isArray(value) && !v.isFunction(value);\n },\n\n contains: function(obj, value) {\n if (!v.isDefined(obj)) {\n return false;\n }\n if (v.isArray(obj)) {\n return obj.indexOf(value) !== -1;\n }\n return value in obj;\n },\n\n unique: function(array) {\n if (!v.isArray(array)) {\n return array;\n }\n return array.filter(function(el, index, array) {\n return array.indexOf(el) == index;\n });\n },\n\n forEachKeyInKeypath: function(object, keypath, callback) {\n if (!v.isString(keypath)) {\n return undefined;\n }\n\n var key = \"\"\n , i\n , escape = false;\n\n for (i = 0; i < keypath.length; ++i) {\n switch (keypath[i]) {\n case '.':\n if (escape) {\n escape = false;\n key += '.';\n } else {\n object = callback(object, key, false);\n key = \"\";\n }\n break;\n\n case '\\\\':\n if (escape) {\n escape = false;\n key += '\\\\';\n } else {\n escape = true;\n }\n break;\n\n default:\n escape = false;\n key += keypath[i];\n break;\n }\n }\n\n return callback(object, key, true);\n },\n\n getDeepObjectValue: function(obj, keypath) {\n if (!v.isObject(obj)) {\n return undefined;\n }\n\n return v.forEachKeyInKeypath(obj, keypath, function(obj, key) {\n if (v.isObject(obj)) {\n return obj[key];\n }\n });\n },\n\n // This returns an object with all the values of the form.\n // It uses the input name as key and the value as value\n // So for example this:\n // \n // would return:\n // {email: \"foo@bar.com\"}\n collectFormValues: function(form, options) {\n var values = {}\n , i\n , j\n , input\n , inputs\n , option\n , value;\n\n if (v.isJqueryElement(form)) {\n form = form[0];\n }\n\n if (!form) {\n return values;\n }\n\n options = options || {};\n\n inputs = form.querySelectorAll(\"input[name], textarea[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n var name = input.name.replace(/\\./g, \"\\\\\\\\.\");\n value = v.sanitizeFormValue(input.value, options);\n if (input.type === \"number\") {\n value = value ? +value : null;\n } else if (input.type === \"checkbox\") {\n if (input.attributes.value) {\n if (!input.checked) {\n value = values[name] || null;\n }\n } else {\n value = input.checked;\n }\n } else if (input.type === \"radio\") {\n if (!input.checked) {\n value = values[name] || null;\n }\n }\n values[name] = value;\n }\n\n inputs = form.querySelectorAll(\"select[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n if (input.multiple) {\n value = [];\n for (j in input.options) {\n option = input.options[j];\n if (option && option.selected) {\n value.push(v.sanitizeFormValue(option.value, options));\n }\n }\n } else {\n var _val = typeof input.options[input.selectedIndex] !== 'undefined' ? input.options[input.selectedIndex].value : /* istanbul ignore next */ '';\n value = v.sanitizeFormValue(_val, options);\n }\n values[input.name] = value;\n }\n\n return values;\n },\n\n sanitizeFormValue: function(value, options) {\n if (options.trim && v.isString(value)) {\n value = value.trim();\n }\n\n if (options.nullify !== false && value === \"\") {\n return null;\n }\n return value;\n },\n\n capitalize: function(str) {\n if (!v.isString(str)) {\n return str;\n }\n return str[0].toUpperCase() + str.slice(1);\n },\n\n // Remove all errors who's error attribute is empty (null or undefined)\n pruneEmptyErrors: function(errors) {\n return errors.filter(function(error) {\n return !v.isEmpty(error.error);\n });\n },\n\n // In\n // [{error: [\"err1\", \"err2\"], ...}]\n // Out\n // [{error: \"err1\", ...}, {error: \"err2\", ...}]\n //\n // All attributes in an error with multiple messages are duplicated\n // when expanding the errors.\n expandMultipleErrors: function(errors) {\n var ret = [];\n errors.forEach(function(error) {\n // Removes errors without a message\n if (v.isArray(error.error)) {\n error.error.forEach(function(msg) {\n ret.push(v.extend({}, error, {error: msg}));\n });\n } else {\n ret.push(error);\n }\n });\n return ret;\n },\n\n // Converts the error mesages by prepending the attribute name unless the\n // message is prefixed by ^\n convertErrorMessages: function(errors, options) {\n options = options || {};\n\n var ret = []\n , prettify = options.prettify || v.prettify;\n errors.forEach(function(errorInfo) {\n var error = v.result(errorInfo.error,\n errorInfo.value,\n errorInfo.attribute,\n errorInfo.options,\n errorInfo.attributes,\n errorInfo.globalOptions);\n\n if (!v.isString(error)) {\n ret.push(errorInfo);\n return;\n }\n\n if (error[0] === '^') {\n error = error.slice(1);\n } else if (options.fullMessages !== false) {\n error = v.capitalize(prettify(errorInfo.attribute)) + \" \" + error;\n }\n error = error.replace(/\\\\\\^/g, \"^\");\n error = v.format(error, {\n value: v.stringifyValue(errorInfo.value, options)\n });\n ret.push(v.extend({}, errorInfo, {error: error}));\n });\n return ret;\n },\n\n // In:\n // [{attribute: \"\", ...}]\n // Out:\n // {\"\": [{attribute: \"\", ...}]}\n groupErrorsByAttribute: function(errors) {\n var ret = {};\n errors.forEach(function(error) {\n var list = ret[error.attribute];\n if (list) {\n list.push(error);\n } else {\n ret[error.attribute] = [error];\n }\n });\n return ret;\n },\n\n // In:\n // [{error: \"\", ...}, {error: \"\", ...}]\n // Out:\n // [\"\", \"\"]\n flattenErrorsToArray: function(errors) {\n return errors\n .map(function(error) { return error.error; })\n .filter(function(value, index, self) {\n return self.indexOf(value) === index;\n });\n },\n\n cleanAttributes: function(attributes, whitelist) {\n function whitelistCreator(obj, key, last) {\n if (v.isObject(obj[key])) {\n return obj[key];\n }\n return (obj[key] = last ? true : {});\n }\n\n function buildObjectWhitelist(whitelist) {\n var ow = {}\n , lastObject\n , attr;\n for (attr in whitelist) {\n if (!whitelist[attr]) {\n continue;\n }\n v.forEachKeyInKeypath(ow, attr, whitelistCreator);\n }\n return ow;\n }\n\n function cleanRecursive(attributes, whitelist) {\n if (!v.isObject(attributes)) {\n return attributes;\n }\n\n var ret = v.extend({}, attributes)\n , w\n , attribute;\n\n for (attribute in attributes) {\n w = whitelist[attribute];\n\n if (v.isObject(w)) {\n ret[attribute] = cleanRecursive(ret[attribute], w);\n } else if (!w) {\n delete ret[attribute];\n }\n }\n return ret;\n }\n\n if (!v.isObject(whitelist) || !v.isObject(attributes)) {\n return {};\n }\n\n whitelist = buildObjectWhitelist(whitelist);\n return cleanRecursive(attributes, whitelist);\n },\n\n exposeModule: function(validate, root, exports, module, define) {\n if (exports) {\n if (module && module.exports) {\n exports = module.exports = validate;\n }\n exports.validate = validate;\n } else {\n root.validate = validate;\n if (validate.isFunction(define) && define.amd) {\n define([], function () { return validate; });\n }\n }\n },\n\n warn: function(msg) {\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(\"[validate.js] \" + msg);\n }\n },\n\n error: function(msg) {\n if (typeof console !== \"undefined\" && console.error) {\n console.error(\"[validate.js] \" + msg);\n }\n }\n });\n\n validate.validators = {\n // Presence validates that the value isn't empty\n presence: function(value, options) {\n options = v.extend({}, this.options, options);\n if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) {\n return options.message || this.message || \"can't be blank\";\n }\n },\n length: function(value, options, attribute) {\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var is = options.is\n , maximum = options.maximum\n , minimum = options.minimum\n , tokenizer = options.tokenizer || function(val) { return val; }\n , err\n , errors = [];\n\n value = tokenizer(value);\n var length = value.length;\n if(!v.isNumber(length)) {\n return options.message || this.notValid || \"has an incorrect length\";\n }\n\n // Is checks\n if (v.isNumber(is) && length !== is) {\n err = options.wrongLength ||\n this.wrongLength ||\n \"is the wrong length (should be %{count} characters)\";\n errors.push(v.format(err, {count: is}));\n }\n\n if (v.isNumber(minimum) && length < minimum) {\n err = options.tooShort ||\n this.tooShort ||\n \"is too short (minimum is %{count} characters)\";\n errors.push(v.format(err, {count: minimum}));\n }\n\n if (v.isNumber(maximum) && length > maximum) {\n err = options.tooLong ||\n this.tooLong ||\n \"is too long (maximum is %{count} characters)\";\n errors.push(v.format(err, {count: maximum}));\n }\n\n if (errors.length > 0) {\n return options.message || errors;\n }\n },\n numericality: function(value, options, attribute, attributes, globalOptions) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var errors = []\n , name\n , count\n , checks = {\n greaterThan: function(v, c) { return v > c; },\n greaterThanOrEqualTo: function(v, c) { return v >= c; },\n equalTo: function(v, c) { return v === c; },\n lessThan: function(v, c) { return v < c; },\n lessThanOrEqualTo: function(v, c) { return v <= c; },\n divisibleBy: function(v, c) { return v % c === 0; }\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n // Strict will check that it is a valid looking number\n if (v.isString(value) && options.strict) {\n var pattern = \"^-?(0|[1-9]\\\\d*)\";\n if (!options.onlyInteger) {\n pattern += \"(\\\\.\\\\d+)?\";\n }\n pattern += \"$\";\n\n if (!(new RegExp(pattern).test(value))) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"must be a valid number\";\n }\n }\n\n // Coerce the value to a number unless we're being strict.\n if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) {\n value = +value;\n }\n\n // If it's not a number we shouldn't continue since it will compare it.\n if (!v.isNumber(value)) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"is not a number\";\n }\n\n // Same logic as above, sort of. Don't bother with comparisons if this\n // doesn't pass.\n if (options.onlyInteger && !v.isInteger(value)) {\n return options.message ||\n options.notInteger ||\n this.notInteger ||\n this.message ||\n \"must be an integer\";\n }\n\n for (name in checks) {\n count = options[name];\n if (v.isNumber(count) && !checks[name](value, count)) {\n // This picks the default message if specified\n // For example the greaterThan check uses the message from\n // this.notGreaterThan so we capitalize the name and prepend \"not\"\n var key = \"not\" + v.capitalize(name);\n var msg = options[key] ||\n this[key] ||\n this.message ||\n \"must be %{type} %{count}\";\n\n errors.push(v.format(msg, {\n count: count,\n type: prettify(name)\n }));\n }\n }\n\n if (options.odd && value % 2 !== 1) {\n errors.push(options.notOdd ||\n this.notOdd ||\n this.message ||\n \"must be odd\");\n }\n if (options.even && value % 2 !== 0) {\n errors.push(options.notEven ||\n this.notEven ||\n this.message ||\n \"must be even\");\n }\n\n if (errors.length) {\n return options.message || errors;\n }\n },\n datetime: v.extend(function(value, options) {\n if (!v.isFunction(this.parse) || !v.isFunction(this.format)) {\n throw new Error(\"Both the parse and format functions needs to be set to use the datetime/date validator\");\n }\n\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var err\n , errors = []\n , earliest = options.earliest ? this.parse(options.earliest, options) : NaN\n , latest = options.latest ? this.parse(options.latest, options) : NaN;\n\n value = this.parse(value, options);\n\n // 86400000 is the number of milliseconds in a day, this is used to remove\n // the time from the date\n if (isNaN(value) || options.dateOnly && value % 86400000 !== 0) {\n err = options.notValid ||\n options.message ||\n this.notValid ||\n \"must be a valid date\";\n return v.format(err, {value: arguments[0]});\n }\n\n if (!isNaN(earliest) && value < earliest) {\n err = options.tooEarly ||\n options.message ||\n this.tooEarly ||\n \"must be no earlier than %{date}\";\n err = v.format(err, {\n value: this.format(value, options),\n date: this.format(earliest, options)\n });\n errors.push(err);\n }\n\n if (!isNaN(latest) && value > latest) {\n err = options.tooLate ||\n options.message ||\n this.tooLate ||\n \"must be no later than %{date}\";\n err = v.format(err, {\n date: this.format(latest, options),\n value: this.format(value, options)\n });\n errors.push(err);\n }\n\n if (errors.length) {\n return v.unique(errors);\n }\n }, {\n parse: null,\n format: null\n }),\n date: function(value, options) {\n options = v.extend({}, options, {dateOnly: true});\n return v.validators.datetime.call(v.validators.datetime, value, options);\n },\n format: function(value, options) {\n if (v.isString(options) || (options instanceof RegExp)) {\n options = {pattern: options};\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is invalid\"\n , pattern = options.pattern\n , match;\n\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n\n if (v.isString(pattern)) {\n pattern = new RegExp(options.pattern, options.flags);\n }\n match = pattern.exec(value);\n if (!match || match[0].length != value.length) {\n return message;\n }\n },\n inclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (v.contains(options.within, value)) {\n return;\n }\n var message = options.message ||\n this.message ||\n \"^%{value} is not included in the list\";\n return v.format(message, {value: value});\n },\n exclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (!v.contains(options.within, value)) {\n return;\n }\n var message = options.message || this.message || \"^%{value} is restricted\";\n if (v.isString(options.within[value])) {\n value = options.within[value];\n }\n return v.format(message, {value: value});\n },\n email: v.extend(function(value, options) {\n options = v.extend({}, this.options, options);\n var message = options.message || this.message || \"is not a valid email\";\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n if (!this.PATTERN.exec(value)) {\n return message;\n }\n }, {\n PATTERN: /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i\n }),\n equality: function(value, options, attribute, attributes, globalOptions) {\n if (!v.isDefined(value)) {\n return;\n }\n\n if (v.isString(options)) {\n options = {attribute: options};\n }\n options = v.extend({}, this.options, options);\n var message = options.message ||\n this.message ||\n \"is not equal to %{attribute}\";\n\n if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) {\n throw new Error(\"The attribute must be a non empty string\");\n }\n\n var otherValue = v.getDeepObjectValue(attributes, options.attribute)\n , comparator = options.comparator || function(v1, v2) {\n return v1 === v2;\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n if (!comparator(value, otherValue, options, attribute, attributes)) {\n return v.format(message, {attribute: prettify(options.attribute)});\n }\n },\n // A URL validator that is used to validate URLs with the ability to\n // restrict schemes and some domains.\n url: function(value, options) {\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is not a valid url\"\n , schemes = options.schemes || this.schemes || ['http', 'https']\n , allowLocal = options.allowLocal || this.allowLocal || false\n , allowDataUrl = options.allowDataUrl || this.allowDataUrl || false;\n if (!v.isString(value)) {\n return message;\n }\n\n // https://gist.github.com/dperini/729294\n var regex =\n \"^\" +\n // protocol identifier\n \"(?:(?:\" + schemes.join(\"|\") + \")://)\" +\n // user:pass authentication\n \"(?:\\\\S+(?::\\\\S*)?@)?\" +\n \"(?:\";\n\n var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n\n if (allowLocal) {\n tld += \"?\";\n } else {\n regex +=\n // IP address exclusion\n // private & local networks\n \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" +\n \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" +\n \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\";\n }\n\n regex +=\n // IP address dotted notation octets\n // excludes loopback network 0.0.0.0\n // excludes reserved space >= 224.0.0.0\n // excludes network & broacast addresses\n // (first & last IP address of each class)\n \"(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])\" +\n \"(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}\" +\n \"(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))\" +\n \"|\" +\n // host name\n \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\" +\n // domain name\n \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\" +\n tld +\n \")\" +\n // port number\n \"(?::\\\\d{2,5})?\" +\n // resource path\n \"(?:[/?#]\\\\S*)?\" +\n \"$\";\n\n if (allowDataUrl) {\n // RFC 2397\n var mediaType = \"\\\\w+\\\\/[-+.\\\\w]+(?:;[\\\\w=]+)*\";\n var urlchar = \"[A-Za-z0-9-_.!~\\\\*'();\\\\/?:@&=+$,%]*\";\n var dataurl = \"data:(?:\"+mediaType+\")?(?:;base64)?,\"+urlchar;\n regex = \"(?:\"+regex+\")|(?:^\"+dataurl+\"$)\";\n }\n\n var PATTERN = new RegExp(regex, 'i');\n if (!PATTERN.exec(value)) {\n return message;\n }\n },\n type: v.extend(function(value, originalOptions, attribute, attributes, globalOptions) {\n if (v.isString(originalOptions)) {\n originalOptions = {type: originalOptions};\n }\n\n if (!v.isDefined(value)) {\n return;\n }\n\n var options = v.extend({}, this.options, originalOptions);\n\n var type = options.type;\n if (!v.isDefined(type)) {\n throw new Error(\"No type was specified\");\n }\n\n var check;\n if (v.isFunction(type)) {\n check = type;\n } else {\n check = this.types[type];\n }\n\n if (!v.isFunction(check)) {\n throw new Error(\"validate.validators.type.types.\" + type + \" must be a function.\");\n }\n\n if (!check(value, options, attribute, attributes, globalOptions)) {\n var message = originalOptions.message ||\n this.messages[type] ||\n this.message ||\n options.message ||\n (v.isFunction(type) ? \"must be of the correct type\" : \"must be of type %{type}\");\n\n if (v.isFunction(message)) {\n message = message(value, originalOptions, attribute, attributes, globalOptions);\n }\n\n return v.format(message, {attribute: v.prettify(attribute), type: type});\n }\n }, {\n types: {\n object: function(value) {\n return v.isObject(value) && !v.isArray(value);\n },\n array: v.isArray,\n integer: v.isInteger,\n number: v.isNumber,\n string: v.isString,\n date: v.isDate,\n boolean: v.isBoolean\n },\n messages: {}\n })\n };\n\n validate.formatters = {\n detailed: function(errors) {return errors;},\n flat: v.flattenErrorsToArray,\n grouped: function(errors) {\n var attr;\n\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = v.flattenErrorsToArray(errors[attr]);\n }\n return errors;\n },\n constraint: function(errors) {\n var attr;\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = errors[attr].map(function(result) {\n return result.validator;\n }).sort();\n }\n return errors;\n }\n };\n\n validate.exposeModule(validate, this, exports, module, define);\n}).call(this,\n typeof exports !== 'undefined' ? /* istanbul ignore next */ exports : null,\n typeof module !== 'undefined' ? /* istanbul ignore next */ module : null,\n typeof define !== 'undefined' ? /* istanbul ignore next */ define : null);\n","/*!\r\n * verge 1.10.2+201705300050\r\n * http://npm.im/verge\r\n * MIT Ryan Van Etten\r\n */\r\n\r\n!function(root, name, make) {\n if (typeof module != 'undefined' && module['exports']) module['exports'] = make();\r\n else root[name] = make();\r\n}(this, 'verge', function() {\r\n\r\n var xports = {}\r\n , win = typeof window != 'undefined' && window\r\n , doc = typeof document != 'undefined' && document\r\n , docElem = doc && doc.documentElement\r\n , matchMedia = win['matchMedia'] || win['msMatchMedia']\r\n , mq = matchMedia ? function(q) {\r\n return !!matchMedia.call(win, q).matches;\r\n } : function() {\r\n return false;\r\n }\r\n , viewportW = xports['viewportW'] = function() {\r\n var a = docElem['clientWidth'], b = win['innerWidth'];\r\n return a < b ? b : a;\r\n }\r\n , viewportH = xports['viewportH'] = function() {\r\n var a = docElem['clientHeight'], b = win['innerHeight'];\r\n return a < b ? b : a;\r\n };\r\n\n /**\n * Test if a media query is active. Like Modernizr.mq\r\n * @since 1.6.0\r\n * @return {boolean}\r\n */\n xports['mq'] = mq;\r\n\r\n /**\n * Normalized matchMedia\r\n * @since 1.6.0\r\n * @return {MediaQueryList|Object}\r\n */\n xports['matchMedia'] = matchMedia ? function() {\r\n // matchMedia must be binded to window\r\n return matchMedia.apply(win, arguments);\r\n } : function() {\r\n // Gracefully degrade to plain object\r\n return {};\r\n };\r\n\r\n /**\r\n * @since 1.8.0\r\n * @return {{width:number, height:number}}\r\n */\r\n function viewport() {\r\n return {'width':viewportW(), 'height':viewportH()};\r\n }\r\n xports['viewport'] = viewport;\r\n\n /**\n * Cross-browser window.scrollX\r\n * @since 1.0.0\r\n * @return {number}\r\n */\r\n xports['scrollX'] = function() {\r\n return win.pageXOffset || docElem.scrollLeft;\n };\r\n\r\n /**\n * Cross-browser window.scrollY\r\n * @since 1.0.0\r\n * @return {number}\r\n */\r\n xports['scrollY'] = function() {\r\n return win.pageYOffset || docElem.scrollTop;\n };\r\n\r\n /**\r\n * @param {{top:number, right:number, bottom:number, left:number}} coords\r\n * @param {number=} cushion adjustment\r\n * @return {Object}\r\n */\r\n function calibrate(coords, cushion) {\r\n var o = {};\r\n cushion = +cushion || 0;\r\n o['width'] = (o['right'] = coords['right'] + cushion) - (o['left'] = coords['left'] - cushion);\r\n o['height'] = (o['bottom'] = coords['bottom'] + cushion) - (o['top'] = coords['top'] - cushion);\r\n return o;\r\n }\r\n\r\n /**\r\n * Cross-browser element.getBoundingClientRect plus optional cushion.\r\n * Coords are relative to the top-left corner of the viewport.\r\n * @since 1.0.0\r\n * @param {Element|Object} el element or stack (uses first item)\r\n * @param {number=} cushion +/- pixel adjustment amount\r\n * @return {Object|boolean}\r\n */\r\n function rectangle(el, cushion) {\r\n el = el && !el.nodeType ? el[0] : el;\r\n if (!el || 1 !== el.nodeType) return false;\r\n return calibrate(el.getBoundingClientRect(), cushion);\r\n }\r\n xports['rectangle'] = rectangle;\r\n\r\n /**\r\n * Get the viewport aspect ratio (or the aspect ratio of an object or element)\r\n * @since 1.7.0\r\n * @param {(Element|Object)=} o optional object with width/height props or methods\r\n * @return {number}\r\n * @link http://w3.org/TR/css3-mediaqueries/#orientation\r\n */\r\n function aspect(o) {\r\n o = null == o ? viewport() : 1 === o.nodeType ? rectangle(o) : o;\r\n var h = o['height'], w = o['width'];\r\n h = typeof h == 'function' ? h.call(o) : h;\r\n w = typeof w == 'function' ? w.call(o) : w;\r\n return w/h;\r\n }\r\n xports['aspect'] = aspect;\r\n\r\n /**\r\n * Test if an element is in the same x-axis section as the viewport.\r\n * @since 1.0.0\r\n * @param {Element|Object} el\r\n * @param {number=} cushion\r\n * @return {boolean}\r\n */\r\n xports['inX'] = function(el, cushion) {\r\n var r = rectangle(el, cushion);\r\n return !!r && r.right >= 0 && r.left <= viewportW();\r\n };\r\n\r\n /**\r\n * Test if an element is in the same y-axis section as the viewport.\r\n * @since 1.0.0\r\n * @param {Element|Object} el\r\n * @param {number=} cushion\r\n * @return {boolean}\r\n */\r\n xports['inY'] = function(el, cushion) {\r\n var r = rectangle(el, cushion);\r\n return !!r && r.bottom >= 0 && r.top <= viewportH();\r\n };\r\n\r\n /**\r\n * Test if an element is in the viewport.\r\n * @since 1.0.0\r\n * @param {Element|Object} el\r\n * @param {number=} cushion\r\n * @return {boolean}\r\n */\r\n xports['inViewport'] = function(el, cushion) {\r\n // Equiv to `inX(el, cushion) && inY(el, cushion)` but just manually do both\n // to avoid calling rectangle() twice. It gzips just as small like this.\r\n var r = rectangle(el, cushion);\r\n return !!r && r.bottom >= 0 && r.right >= 0 && r.top <= viewportH() && r.left <= viewportW();\r\n };\r\n\r\n return xports;\r\n});\n","/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.11\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function () {\n\t /*\n\t * bail out if there is no document or window\n\t * (i.e. in a node/non-DOM environment)\n\t *\n\t * Return a stubbed API instead\n\t */\n\t if (typeof document === 'undefined' || typeof window === 'undefined') {\n\t return {\n\t // always return \"initial\" because no interaction will ever be detected\n\t ask: function ask() {\n\t return 'initial';\n\t },\n\n\t // always return null\n\t element: function element() {\n\t return null;\n\t },\n\n\t // no-op\n\t ignoreKeys: function ignoreKeys() {},\n\n\t // no-op\n\t specificKeys: function specificKeys() {},\n\n\t // no-op\n\t registerOnChange: function registerOnChange() {},\n\n\t // no-op\n\t unRegisterOnChange: function unRegisterOnChange() {}\n\t };\n\t }\n\n\t /*\n\t * variables\n\t */\n\n\t // cache document.documentElement\n\t var docElem = document.documentElement;\n\n\t // currently focused dom element\n\t var currentElement = null;\n\n\t // last used input type\n\t var currentInput = 'initial';\n\n\t // last used input intent\n\t var currentIntent = currentInput;\n\n\t // UNIX timestamp of current event\n\t var currentTimestamp = Date.now();\n\n\t // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`\n\t var shouldPersist = 'false';\n\n\t // form input types\n\t var formInputs = ['button', 'input', 'select', 'textarea'];\n\n\t // empty array for holding callback functions\n\t var functionList = [];\n\n\t // list of modifier keys commonly used with the mouse and\n\t // can be safely ignored to prevent false keyboard detection\n\t var ignoreMap = [16, // shift\n\t 17, // control\n\t 18, // alt\n\t 91, // Windows key / left Apple cmd\n\t 93 // Windows menu / right Apple cmd\n\t ];\n\n\t var specificMap = [];\n\n\t // mapping of events to input types\n\t var inputMap = {\n\t keydown: 'keyboard',\n\t keyup: 'keyboard',\n\t mousedown: 'mouse',\n\t mousemove: 'mouse',\n\t MSPointerDown: 'pointer',\n\t MSPointerMove: 'pointer',\n\t pointerdown: 'pointer',\n\t pointermove: 'pointer',\n\t touchstart: 'touch',\n\t touchend: 'touch'\n\n\t // boolean: true if the page is being scrolled\n\t };var isScrolling = false;\n\n\t // store current mouse position\n\t var mousePos = {\n\t x: null,\n\t y: null\n\n\t // map of IE 10 pointer events\n\t };var pointerMap = {\n\t 2: 'touch',\n\t 3: 'touch', // treat pen like touch\n\t 4: 'mouse'\n\n\t // check support for passive event listeners\n\t };var supportsPassive = false;\n\n\t try {\n\t var opts = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supportsPassive = true;\n\t }\n\t });\n\n\t window.addEventListener('test', null, opts);\n\t } catch (e) {}\n\t // fail silently\n\n\n\t /*\n\t * set up\n\t */\n\n\t var setUp = function setUp() {\n\t // add correct mouse wheel event mapping to `inputMap`\n\t inputMap[detectWheel()] = 'mouse';\n\n\t addListeners();\n\t };\n\n\t /*\n\t * events\n\t */\n\n\t var addListeners = function addListeners() {\n\t // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n\t // can only demonstrate potential, but not actual, interaction\n\t // and are treated separately\n\t var options = supportsPassive ? { passive: true, capture: true } : true;\n\n\t document.addEventListener('DOMContentLoaded', setPersist, true);\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t window.addEventListener('pointerdown', setInput, true);\n\t window.addEventListener('pointermove', setIntent, true);\n\t } else if (window.MSPointerEvent) {\n\t window.addEventListener('MSPointerDown', setInput, true);\n\t window.addEventListener('MSPointerMove', setIntent, true);\n\t } else {\n\t // mouse events\n\t window.addEventListener('mousedown', setInput, true);\n\t window.addEventListener('mousemove', setIntent, true);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t window.addEventListener('touchstart', setInput, options);\n\t window.addEventListener('touchend', setInput, true);\n\t }\n\t }\n\n\t // mouse wheel\n\t window.addEventListener(detectWheel(), setIntent, options);\n\n\t // keyboard events\n\t window.addEventListener('keydown', setInput, true);\n\t window.addEventListener('keyup', setInput, true);\n\n\t // focus events\n\t window.addEventListener('focusin', setElement, true);\n\t window.addEventListener('focusout', clearElement, true);\n\t };\n\n\t // checks if input persistence should happen and\n\t // get saved state from session storage if true (defaults to `false`)\n\t var setPersist = function setPersist() {\n\t shouldPersist = !(docElem.getAttribute('data-whatpersist') || document.body.getAttribute('data-whatpersist') === 'false');\n\n\t if (shouldPersist) {\n\t // check for session variables and use if available\n\t try {\n\t if (window.sessionStorage.getItem('what-input')) {\n\t currentInput = window.sessionStorage.getItem('what-input');\n\t }\n\n\t if (window.sessionStorage.getItem('what-intent')) {\n\t currentIntent = window.sessionStorage.getItem('what-intent');\n\t }\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\n\t // always run these so at least `initial` state is set\n\t doUpdate('input');\n\t doUpdate('intent');\n\t };\n\n\t // checks conditions before updating new input\n\t var setInput = function setInput(event) {\n\t var eventKey = event.which;\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1;\n\n\t var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1;\n\n\t var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch';\n\n\t // prevent touch detection from being overridden by event execution order\n\t if (validateTouch(value)) {\n\t shouldUpdate = false;\n\t }\n\n\t if (shouldUpdate && currentInput !== value) {\n\t currentInput = value;\n\n\t persistInput('input', currentInput);\n\t doUpdate('input');\n\t }\n\n\t if (shouldUpdate && currentIntent !== value) {\n\t // preserve intent for keyboard interaction with form fields\n\t var activeElem = document.activeElement;\n\t var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form'));\n\n\t if (notFormInput) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t }\n\t };\n\n\t // updates the doc and `inputTypes` array with new input\n\t var doUpdate = function doUpdate(which) {\n\t docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);\n\n\t fireFunctions(which);\n\t };\n\n\t // updates input intent for `mousemove` and `pointermove`\n\t var setIntent = function setIntent(event) {\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove\n\t detectScrolling(event);\n\n\t // only execute if scrolling isn't happening\n\t if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t };\n\n\t var setElement = function setElement(event) {\n\t if (!event.target.nodeName) {\n\t // If nodeName is undefined, clear the element\n\t // This can happen if click inside an element.\n\t clearElement();\n\t return;\n\t }\n\n\t currentElement = event.target.nodeName.toLowerCase();\n\t docElem.setAttribute('data-whatelement', currentElement);\n\n\t if (event.target.classList && event.target.classList.length) {\n\t docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ','));\n\t }\n\t };\n\n\t var clearElement = function clearElement() {\n\t currentElement = null;\n\n\t docElem.removeAttribute('data-whatelement');\n\t docElem.removeAttribute('data-whatclasses');\n\t };\n\n\t var persistInput = function persistInput(which, value) {\n\t if (shouldPersist) {\n\t try {\n\t window.sessionStorage.setItem('what-' + which, value);\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\t };\n\n\t /*\n\t * utilities\n\t */\n\n\t var pointerType = function pointerType(event) {\n\t if (typeof event.pointerType === 'number') {\n\t return pointerMap[event.pointerType];\n\t } else {\n\t // treat pen like touch\n\t return event.pointerType === 'pen' ? 'touch' : event.pointerType;\n\t }\n\t };\n\n\t // prevent touch detection from being overridden by event execution order\n\t var validateTouch = function validateTouch(value) {\n\t var timestamp = Date.now();\n\n\t var touchIsValid = value === 'mouse' && currentInput === 'touch' && timestamp - currentTimestamp < 200;\n\n\t currentTimestamp = timestamp;\n\n\t return touchIsValid;\n\t };\n\n\t // detect version of mouse wheel event to use\n\t // via https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event\n\t var detectWheel = function detectWheel() {\n\t var wheelType = null;\n\n\t // Modern browsers support \"wheel\"\n\t if ('onwheel' in document.createElement('div')) {\n\t wheelType = 'wheel';\n\t } else {\n\t // Webkit and IE support at least \"mousewheel\"\n\t // or assume that remaining browsers are older Firefox\n\t wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\n\t }\n\n\t return wheelType;\n\t };\n\n\t // runs callback functions\n\t var fireFunctions = function fireFunctions(type) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].type === type) {\n\t functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent);\n\t }\n\t }\n\t };\n\n\t // finds matching element in an object\n\t var objPos = function objPos(match) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].fn === match) {\n\t return i;\n\t }\n\t }\n\t };\n\n\t var detectScrolling = function detectScrolling(event) {\n\t if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) {\n\t isScrolling = false;\n\n\t mousePos.x = event.screenX;\n\t mousePos.y = event.screenY;\n\t } else {\n\t isScrolling = true;\n\t }\n\t };\n\n\t // manual version of `closest()`\n\t var checkClosest = function checkClosest(elem, tag) {\n\t var ElementPrototype = window.Element.prototype;\n\n\t if (!ElementPrototype.matches) {\n\t ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.webkitMatchesSelector;\n\t }\n\n\t if (!ElementPrototype.closest) {\n\t do {\n\t if (elem.matches(tag)) {\n\t return elem;\n\t }\n\n\t elem = elem.parentElement || elem.parentNode;\n\t } while (elem !== null && elem.nodeType === 1);\n\n\t return null;\n\t } else {\n\t return elem.closest(tag);\n\t }\n\t };\n\n\t /*\n\t * init\n\t */\n\n\t // don't start script unless browser cuts the mustard\n\t // (also passes if polyfills are used)\n\t if ('addEventListener' in window && Array.prototype.indexOf) {\n\t setUp();\n\t }\n\n\t /*\n\t * api\n\t */\n\n\t return {\n\t // returns string: the current input type\n\t // opt: 'intent'|'input'\n\t // 'input' (default): returns the same value as the `data-whatinput` attribute\n\t // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`\n\t ask: function ask(opt) {\n\t return opt === 'intent' ? currentIntent : currentInput;\n\t },\n\n\t // returns string: the currently focused element or null\n\t element: function element() {\n\t return currentElement;\n\t },\n\n\t // overwrites ignored keys with provided array\n\t ignoreKeys: function ignoreKeys(arr) {\n\t ignoreMap = arr;\n\t },\n\n\t // overwrites specific char keys to update on\n\t specificKeys: function specificKeys(arr) {\n\t specificMap = arr;\n\t },\n\n\t // attach functions to input and intent \"events\"\n\t // funct: function to fire on change\n\t // eventType: 'input'|'intent'\n\t registerOnChange: function registerOnChange(fn, eventType) {\n\t functionList.push({\n\t fn: fn,\n\t type: eventType || 'input'\n\t });\n\t },\n\n\t unRegisterOnChange: function unRegisterOnChange(fn) {\n\t var position = objPos(fn);\n\n\t if (position || position === 0) {\n\t functionList.splice(position, 1);\n\t }\n\t },\n\n\t clearStorage: function clearStorage() {\n\t window.sessionStorage.clear();\n\t }\n\t };\n\t}();\n\n/***/ })\n/******/ ])\n});\n;\n","var map = {\n\t\"./FixedLoanScratchpad\": 5471,\n\t\"./FixedLoanScratchpad.js\": 5471,\n\t\"./FutureValueCalculator\": 4303,\n\t\"./FutureValueCalculator.js\": 4303,\n\t\"./HowLongMustISaveForAMajorPurchase\": 8688,\n\t\"./HowLongMustISaveForAMajorPurchase.js\": 8688,\n\t\"./HowLongWillItTakeToPayOffMyCreditCards\": 4475,\n\t\"./HowLongWillItTakeToPayOffMyCreditCards.js\": 4475,\n\t\"./HowLongWouldItTakeToPayOffALoan\": 6602,\n\t\"./HowLongWouldItTakeToPayOffALoan.js\": 6602,\n\t\"./HowMuchCanIBorrow\": 6741,\n\t\"./HowMuchCanIBorrow.js\": 6741,\n\t\"./HowMuchCarCanIAfford\": 4900,\n\t\"./HowMuchCarCanIAfford.js\": 4900,\n\t\"./HowMuchHouseCanIAfford\": 7473,\n\t\"./HowMuchHouseCanIAfford.js\": 7473,\n\t\"./HowMuchMoneyCouldISave\": 6894,\n\t\"./HowMuchMoneyCouldISave.js\": 6894,\n\t\"./HowMuchWouldINeedToSaveEachMonth\": 8114,\n\t\"./HowMuchWouldINeedToSaveEachMonth.js\": 8114,\n\t\"./InvestmentYieldCalculator\": 9020,\n\t\"./InvestmentYieldCalculator.js\": 9020,\n\t\"./IsRefinancingMyLoanAGoodIdea\": 6671,\n\t\"./IsRefinancingMyLoanAGoodIdea.js\": 6671,\n\t\"./ShouldIBuyOrRentMyHome\": 4509,\n\t\"./ShouldIBuyOrRentMyHome.js\": 4509,\n\t\"./SimpleLoanCalculator\": 6411,\n\t\"./SimpleLoanCalculator.js\": 6411,\n\t\"./SimpleSavingsGoalCalculator\": 8281,\n\t\"./SimpleSavingsGoalCalculator.js\": 8281,\n\t\"./WhatAreMyPaymentsForAFixedRateLoan\": 8886,\n\t\"./WhatAreMyPaymentsForAFixedRateLoan.js\": 8886,\n\t\"./WhatAreMyPaymentsForAnAdjustableRateLoan\": 3009,\n\t\"./WhatAreMyPaymentsForAnAdjustableRateLoan.js\": 3009,\n\t\"./WhatAreTheEffectsOfInflation\": 764,\n\t\"./WhatAreTheEffectsOfInflation.js\": 764,\n\t\"./WhatInterestRateWouldINeed\": 7803,\n\t\"./WhatInterestRateWouldINeed.js\": 7803,\n\t\"./WhatIsTheFutureValueOfADollar\": 8186,\n\t\"./WhatIsTheFutureValueOfADollar.js\": 8186,\n\t\"./WhatPaymentsWillItTakeToPayOffMyCreditCards\": 7669,\n\t\"./WhatPaymentsWillItTakeToPayOffMyCreditCards.js\": 7669,\n\t\"./WhatWouldISaveIfIMadeMonthlyPrepayments\": 2561,\n\t\"./WhatWouldISaveIfIMadeMonthlyPrepayments.js\": 2561,\n\t\"./WhatWouldMyPaymentsBe\": 1432,\n\t\"./WhatWouldMyPaymentsBe.js\": 1432,\n\t\"./WhichLoanIsBetterFixedOrAdjustable\": 9174,\n\t\"./WhichLoanIsBetterFixedOrAdjustable.js\": 9174\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 7621;","var map = {\n\t\"./components/add-to-calendar.js\": 4502,\n\t\"./components/animation.js\": 6202,\n\t\"./components/constantContact.js\": 221,\n\t\"./components/countUp.js\": 7160,\n\t\"./components/dialog.js\": 9896,\n\t\"./components/dropdown.js\": 2064,\n\t\"./components/form.js\": 1146,\n\t\"./components/modal.js\": 3568,\n\t\"./components/modalSizing.js\": 7971,\n\t\"./components/pageHeaderSearchForm.js\": 1828,\n\t\"./components/paginatedList.js\": 1303,\n\t\"./components/photoGrid.js\": 2226,\n\t\"./components/scrollTo.js\": 9644,\n\t\"./components/signIn.js\": 7073,\n\t\"./components/siteAnnouncement.js\": 7754,\n\t\"./components/siteNavigation.js\": 1547,\n\t\"./components/siteWidget.js\": 1596,\n\t\"./components/slideToggle.js\": 4728,\n\t\"./components/speedBump.js\": 719,\n\t\"./components/tourVideo.js\": 7913,\n\t\"./elements/benefits.js\": 6074,\n\t\"./elements/blogPosts.js\": 5846,\n\t\"./elements/chart.js\": 629,\n\t\"./elements/iconCallToActions.js\": 687,\n\t\"./elements/leadInSlider.js\": 6606,\n\t\"./elements/overlaySlider.js\": 2426,\n\t\"./elements/panelSlider.js\": 2100,\n\t\"./elements/testimonials.js\": 5238,\n\t\"./sections/calculators.js\": 7051,\n\t\"./sections/comparison.js\": 7052,\n\t\"./sections/disclosure.js\": 8316,\n\t\"./sections/events.js\": 5,\n\t\"./sections/faqs.js\": 7805,\n\t\"./sections/locations.js\": 643,\n\t\"./sections/photoAlbum.js\": 8271,\n\t\"./sections/usergroup.js\": 1572\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 9558;","/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n }); // eslint-disable-next-line no-constructor-return\n\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n // eslint-disable-next-line no-constructor-return\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n } // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n\n\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n } // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n\n lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n return false;\n }\n\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n\n return false;\n }\n\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n if (params.invert) delta = -delta; // Get the scroll positions\n\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n\n if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n\n function addElId($el, id) {\n $el.attr('id', id);\n }\n\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each(bulletEl => {\n const $bulletEl = $(bulletEl);\n\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n }\n\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n\n const initSlides = () => {\n const params = swiper.params.a11y;\n\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n if (params.slideRole) {\n addElRole($(swiper.slides), params.slideRole);\n }\n\n const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n\n if (params.slideLabelMessage) {\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n }\n };\n\n const init = () => {\n const params = swiper.params.a11y;\n swiper.$el.append(liveRegion); // Container\n\n const $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live); // Slide\n\n initSlides(); // Navigation\n\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.on('focus', handleFocus, true);\n swiper.$el.on('pointerdown', handlePointerDown, true);\n swiper.$el.on('pointerup', handlePointerUp, true);\n };\n\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.off('focus', handleFocus, true);\n swiper.$el.off('pointerdown', handlePointerDown, true);\n swiper.$el.off('pointerup', handlePointerUp, true);\n }\n\n on('beforeInit', () => {\n liveRegion = $(``);\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay({\n swiper,\n extendParams,\n on,\n emit\n}) {\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n if (!swiper.size) {\n swiper.autoplay.running = false;\n swiper.autoplay.paused = false;\n return;\n }\n\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.css({\n opacity: slideOpacity\n }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows\n\n swiper.slides.each(slideEl => {\n const $slideEl = swiper.$(slideEl);\n $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();\n }); // create new one\n\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","export default function effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides\n}) {\n const {\n slides,\n activeIndex,\n $wrapperEl\n } = swiper;\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n }\n\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}"],"names":["Point","x","y","this","module","exports","prototype","clone","add","p","_add","sub","_sub","multByPoint","_multByPoint","divByPoint","_divByPoint","mult","k","_mult","div","_div","rotate","a","_rotate","rotateAround","_rotateAround","matMult","m","_matMult","unit","_unit","perp","_perp","round","_round","mag","Math","sqrt","equals","other","dist","distSqr","dx","dy","angle","atan2","angleTo","b","angleWith","angleWithSep","cos","sin","convert","Array","isArray","document","addEventListener","r","require","keys","reduce","modules","script","default","push","map","can","run","documentElement","classList","remove","setHeights","siteHeader","querySelector","style","setProperty","offsetHeight","window","throttle","querySelectorAll","forEach","el","src","includes","replace","__assign","Object","assign","t","s","i","n","arguments","length","hasOwnProperty","call","apply","__spreadArray","to","from","pack","ar","l","slice","concat","mix","one","two","mergeArrays","prop","defaults","errorType","polyfills","fetch","FormData","URLSearchParams","performance","PerformanceObserver","AbortController","polyfill","_a","_b","_c","doThrow","_d","instance","args","_i","res","self","g","Error","bind","onMatch","entries","name","callback","_performance","getEntriesByName","matches","reverse","clearMeasures","perfs","callbacks","delete","size","observer","disconnect","clearResourceTimings","Map","observe","_observer","lazyObserver","entryTypes","set","WretchErrorWrapper","error","extractContentType","headers","find","toLowerCase","isLikelyJsonMime","value","test","Wretcher","_url","_options","_catchers","_resolvers","_middlewares","_deferredChain","factory","url","options","selfFactory","_e","catchers","_f","resolvers","_g","middlewares","_h","deferredChain","mixin","method","split","query","qp","appendQueryParams","headerValues","accept","headerValue","Accept","content","CONTENT_TYPE_HEADER","auth","Authorization","catcher","errorId","newMap","signal","controller","resolve","doResolve","clear","defer","body","base","contentType","jsonify","wretcher","opts","finalOptions","fetchController","timeout","ref","clearTimeout","fetchRequest","fetchFunction","reduceRight","acc","curr","idx","middlewareHelper","throwingPromise","catch","then","response","ok","type","err","status","msg","bodyParser","funName","cb","_","has","get","responseChain","json","blob","formData","arrayBuffer","text","setTimeout","time","abort","badRequest","unauthorized","forbidden","notFound","internalError","fetchError","onAbort","chain","resolver","put","post","patch","head","replay","contents","jsObject","currentContentType","JSON","stringify","formObject","recursive","convertFormData","formUrl","input","key","v","encodeQueryValue","join","queryString","usp","val","append","toString","ancestors","formKey","ancestor","value_1","item","encodeURIComponent","fn","delay","start","Date","getTime","handle","loop","requestAnimationFrame","easeInOutQuad","c","d","_typeof","Symbol","iterator","obj","constructor","element","stop","offset","easing","a11y","distance","duration","timeStart","timeElapsed","next","location","scrollY","pageYOffset","top","getBoundingClientRect","timeCurrent","scrollTo","setAttribute","focus","target","undefined","jumper","getPageOffset","additionalOffset","pageOffset","dataset","scrollOffset","parseInt","Promise","jump","isTouchDevice","on","e","closest","toggle","Node","nodeType","nodeName","context","filter","prototypeToString","NodeList","format","source","TypeError","matrix","identity","RangeError","multiply","fm","fx","product","row","j","col","result","parse","match","parseFloat","scale","scalar","scalarY","clock","now","currentTime","webkitRequestAnimationFrame","mozRequestAnimationFrame","interval","opacity","origin","z","cleanup","container","desktop","mobile","reset","useDelay","viewFactor","viewOffset","right","bottom","left","afterReset","afterReveal","beforeReset","beforeReveal","mount","height","clean","destroy","reveal","sync","noop","isObject","each","collection","logger","message","details","len","debug","console","report","detail","log","rinse","this$1","elementIds","active","stale","sequenceIds","containerIds","node","id","getAttribute","store","elements","indexOf","staleId","containerId","sequence","containers","removeEventListener","delegate","sequences","getPrefixedCssProp","properties","getPrefixedCssProperty","clearCache","computed","getComputedStyle","position","config","inline","inlineMatch","trim","generated","some","theta","computedOpacity","configOpacity","isNaN","transformations","axis","substr","fontSize","width","translateY","translateX","PI","rotateY","rotateZ","transform","property","raw","unshift","initial","final","transition","fragments","delayed","instant","composed","composition","fragment","applyStyle","declaration","pair","dirty","callbackTimer","styles","removeAttribute","history","deepAssign","sources","data","isMobile","agent","navigator","userAgent","uid","nextUniqueId","initialize","visible","revealed","initTimeout","animate","force","pristine","seen","shouldReveal","shouldReset","triggerReveal","triggerReset","registerCallbacks","isDelayed","beforeCallback","afterCallback","elapsed","seq","index","SequenceModel","models","nextId","members","nextElement","cue","blocked","pop","shift","foot","Sequence","abs","max","direction","syncing","sequence$$1","containerBuffer","nodes","elementBuffer","elementNode","existingId","containerNode","contains","collections","getContainerId","record","boundDelegate","boundDestroy","boundReveal","boundClean","boundSync","mathSign","sign","getGeometry","isContainer","clientHeight","clientWidth","offsetWidth","offsetTop","offsetLeft","offsetParent","bounds","getScrolled","pageXOffset","scrollTop","scrollLeft","isElementVisible","min","elementBounds","geometry","containerBounds","scroll","event","ScrollReveal","buffer","getPrototypeOf","isSupported","defineProperty","isTransformSupported","isTransitionSupported","init","setupScrollReveals","footerEmbed","setupFooterForm","handleOpen","handleClose","targetNode","MutationObserver","mutationsList","mutation","handleFormElements","childList","ccModal","modal","emailField","header","formText","parentNode","insertBefore","countUpModule","counters","state","useGrouping","decimalPlaces","end","counter","CountUp","_el","bindEvents","requestTimeout","update","verge","not","focusableSelectors","moveFocusToDialog","findFocusableElement","forward","isFocusable","shadowRoot","getNextChildEl","focusableEl","getNextSiblingEl","localName","assignedElements","flatten","assignedElement","firstElementChild","lastElementChild","nextElementSibling","previousElementSibling","delegatesFocus","getClientRects","isHidden","getActiveElement","root","activeEl","activeElement","A11yDialog","$el","previouslyFocused","shown","maintainFocus","bindKeypress","handleTriggerClicks","show","hide","hasAttribute","replaceWith","cloneNode","fire","tagName","handler","off","dispatchEvent","CustomEvent","cancelable","preventDefault","firstFocusableChild","lastFocusableChild","first","getFocusableEdges","shiftKey","trapTabKey","instantiateDialogs","readyState","getElementById","cookieModal","Cookies","expires","dialog","overflowY","ignorePageTypes","isIos","platform","maxTouchPoints","handleNavigationSelect","handleScrollSelect","handleSubmitSelect","setup","matchMedia","select","selectedIndex","setupDropdown","href","easydropdown","refresh","submit","placeholder","behavior","openOnFocus","maxVisibleItems","liveUpdates","useNativeUiOnMobile","StyledDropdown","validator","group","findFieldWrapper","handleBlur","$fieldWrapper","$existingErrorMessage","handleValidation","$form","rules","$field","fieldName","presence","email","readonly","pattern","$radio","$checkbox","checkboxGroup","buildRules","validate","messages","insertAdjacentHTML","shouldScroll","formScroll","$firstError","$toggleForm","capture","handleLengthLimit","handleAjax","handleAllGroup","handleRadios","handleToggle","showToggles","setupSpecialFields","$input","maxLength","$label","$counter","createElement","$count","textContent","appendChild","$labelHolder","isAll","allEl","checked","$holder","$siblings","getSiblings","$sibling","siblings","sibling","firstChild","nextSibling","$formMessages","$submitButton","autoHideMessage","toggleSubmit","ajax","action","success","hideOnSubmit","URL","queryParameters","showFormMessages","finally","disabled","autoHide","display","innerHTML","$targetEl","toggleIf","targetValues","$toggleGroup","toggleIfGt","targetValue","field","selectedValue","shouldShow","autoOpenModal","openModal","cssClass","buildImageModal","closeMethods","buildVideoModal","buildContentModal","buildCalculatorModal","buildElementModal","buildEmbedModal","autoModal","buildModal","setContent","open","tingle","beforeOpen","closeBtn","onOpen","beforeClose","onClose","_currentModal","resp","calculatorType","hash","tingleClose","dialogClose","tingleContainer","dialogContainer","tingleContent","mobileScreenSize","webKit","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","overflow","gap","padding","translate","maxWidth","handleSearch","hasValues","values","handleClick","trigger","nav","list","isHide","newNav","createRange","createContextualFragment","replaceChild","newList","lightGallery","handleTrigger","gallery","startIndex","currentTarget","galleryIndex","galleryData","photoGallery","dynamic","dynamicEl","thumbnail","download","lgData","once","handleUrl","handleScrollToMe","targetSelector","close","topBar","setHeight","bodyScrollLock","disableBodyScroll","enableBodyScroll","navOpen","navMenu","navAboveMenu","navLogo","navHeader","navHeaderTitle","menuStack","handleResize","closeMenu","openMenu","moveMenuPrev","moveMenuNext","resetMenu","handleMenuToggle","updateMenu","currentMenuStack","menuDepth","updateNavHeader","updateSiteLogo","updateAboveMenu","currentMenu","headerTitle","setCookie","widget","slideUp","transitionProperty","transitionDuration","paddingTop","paddingBottom","marginTop","marginBottom","removeProperty","slideDown","slideToggle","handleOpenedDefault","keyCode","otherTriggers","holder","baseUrl","host","anchor","allowedUrls","allowed_urls","shouldOpen","tourVideo","continueBtn","tourVideos","BCM_Banner_Path","protocol","setupScript","handleVideo","beavercreekmarketinglightbox","returnFocusTo","setURL","getElementsByTagName","css","rel","Swiper","Navigation","Pagination","A11y","swipers","els","setupSlider","handleControls","numSlides","swiper","slidesPerView","speed","loopedSlides","allowTouchMove","navigation","nextEl","prevEl","pagination","clickable","breakpoints","spaceBetween","touchRatio","slideChangeTransitionStart","fractionPagination","realIndex","_container","controls","enabled","Chart","ArcElement","DoughnutController","canvas","ctx","getContext","events","cutout","datasets","backgroundColor","centerInsufficientSlides","afterInit","isBeginning","isEnd","autoplay","EffectFade","effect","fadeEffect","crossFade","AppStateContext","React","AppDispatchContext","appReducer","fields","payload","hasError","merge","AppProvider","children","dispatch","Provider","useAppState","useAppDispatch","ScratchpadRow","setFields","useState","dataType","monthlyPayment","setMonthlyPayment","canSubmit","setCanSubmit","useEffect","hasNoEmptyFields","handleChange","newFields","className","onSubmit","validateFields","isValid","updateValuesFromFields","getMonthlyPayment","principal","interestRate","numPayments","asCurrency","onReset","inputMode","onChange","tabs","component","beforeTabChange","updatedValues","presentDate","futureDate","presentValue","frequency","investment","getInvestment","asDate","asPercentage","futureValue","title","label","addYears","displayAs","numMonths","getNumMonths","depositValue","today","addMonths","keepRunningTotals","getNumPayments","balance","amortization","getAmortization","totalPayment","totalInterest","getPrincipal","payment","highestPaymentAfford","monthlyInsuranceCosts","otherMonthlyCosts","totalAfford","currency","downPayment","otherCosts","duesCosts","subtract","paymentPropertyTax","numYears","groupByCalendarYear","future","deposit","getNeededDeposit","differenceInDays","getCompoundInterestRate","monthlyPaymentRefinance","remainingBalance","newRate","monthlySavings","amortizationRefinance","pointsCost","points","originationCosts","feesCosts","totalOriginationCosts","totalTaxedInterest","taxRate","totalLoanCost","pointsAmount","totalTaxedInterestRefinance","totalLoanCostRefinance","totalSavings","homeCost","getFixedMortgageAmortization","startDate","normalizedDate","propertyTax","divide","totalMonthlyPayment","dues","mortgageInsurance","homeownerInsurance","maintenance","totalRentCost","rate","total","savings","paymentAmount","getTotalRentCost","monthlyRent","rentRate","stayMonths","buyCosts","getBuyTotals","totalHomeEquity","totalValue","totalPrincipal","appreciationRate","paymentSchedule","getTotalEquity","totalBuyNetCost","summary","costDiff","colSpan","getInterestRate","showHighlighted","dayDiff","endOfMonth","closingDate","dailyInterest","closingInterest","startingEvent","eventNum","date","formattedDate","interest","hideFromChart","dueDate","startOfMonth","getAdjustableMortgageAmortization","rateCap","maxFirstRate","maxRate","numMonthsBefore","numMonthsBetween","inflation","getInflationIncrease","currentValue","inflationRate","newValue","getInflationDecrease","monthlyPaymentPrepay","prePayment","numPaymentsPrepay","amortizationPrepay","totalTaxedInterestPrepay","totalLoanCostPrepay","schedule","schedulePrepay","lastEvent","diff","fakeEvent","principal1","amount","downPayment1","monthlyPayment1","interestRate1","numPayments1","amortization1","rateCap1","repricingRate1","repricingMonths1","principal2","downPayment2","monthlyPayment2","interestRate2","numPayments2","amortization2","rateCap2","repricingRate2","repricingMonths2","pointsCost1","points1","originationCosts1","fees1","pointsAmount1","pointsCost2","points2","originationCosts2","fees2","pointsAmount2","originationCostsDiff","numPaymentsDiff","totalTaxedInterest1","totalLoanCost1","totalTaxedInterest2","totalLoanCost2","singleRow","defaultDatasetIdKey","reforwardRef","current","setLabels","currentData","nextLabels","labels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","nextDataset","currentDataset","cloneData","nextData","ChartComponent","param","redraw","plugins","fallbackContent","props","canvasRef","useRef","chartRef","renderChart","destroyChart","chart","nextOptions","role","forwardRef","createTypedChart","registerables","Bar","dirtyObject","setUTCDay","dirtyDate","dirtyDay","dirtyOptions","requiredArgs","locale","localeWeekStartsOn","weekStartsOn","defaultWeekStartsOn","toInteger","toDate","day","currentDay","getUTCDay","remainder","dayIndex","setUTCDate","getUTCDate","numericPatterns","timezonePatterns","parseNumericPattern","string","valueCallback","matchResult","rest","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","RegExp","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","floor","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","year","G","priority","token","era","flags","setUTCFullYear","setUTCHours","incompatibleTokens","isTwoDigitYear","ordinalNumber","_date","getUTCFullYear","normalizedTwoDigitYear","Y","getUTCWeekYear","firstWeekContainsDate","startOfUTCWeek","R","_match","_flags","firstWeekOfYear","startOfUTCISOWeek","u","Q","quarter","setUTCMonth","q","M","month","L","w","dirtyWeek","week","getUTCWeek","setUTCWeek","I","dirtyISOWeek","isoWeek","getUTCISOWeek","setUTCISOWeek","subPriority","isLeapYear","getUTCMonth","D","E","wholeWeekDays","setUTCISODay","dayPeriod","B","h","isPM","getUTCHours","H","K","hours","setUTCMinutes","setUTCSeconds","S","pow","setUTCMilliseconds","X","timestampIsSet","_token","T","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","dateToSystemTimezone","convertedDate","setFullYear","setHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","cleanEscapedString","millisecondsInMinute","millisecondsInHour","patterns","dateTimeDelimiter","timeZoneDelimiter","timezone","dateRegex","timeRegex","timezoneRegex","splitDateString","dateString","timeString","dateStrings","array","exec","parseYear","additionalDigits","regex","captures","NaN","restDateString","century","parseDate","isWeekDate","dayOfYear","parseDateUnit","dayOfWeek","_year","validateWeekDate","isoWeekYear","dayOfISOWeekYear","daysInMonths","validateDate","validateDayOfYearDate","parseTime","parseTimeUnit","minutes","seconds","validateTime","parseTimezone","timezoneString","_hours","validateTimezone","differenceInMilliseconds","dateLeft","dateRight","roundingMap","ceil","trunc","getRoundingMethod","differenceInCalendarMonths","dirtyDateLeft","dirtyDateRight","yearDiff","getFullYear","monthDiff","getMonth","compareAsc","endOfDay","isLastDayOfMonth","differenceInMonths","difference","getDate","setDate","setMonth","isLastMonthNotFull","Number","differenceInCalendarYears","startOfWeek","getDay","FORMATS","datetime","millisecond","second","minute","hour","_id","formats","fmt","dirtyDateString","dirtyFormatString","dirtyReferenceDate","String","formatString","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","subFnOptions","setters","tokens","substring","firstCharacter","longFormatter","longFormatters","formatLong","usedTokens","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","parser","incompatibleToken","usedToken","fullToken","parseResult","uniquePrioritySetters","setter","sort","setterArray","utcDate","subMilliseconds","getTimezoneOffsetInMilliseconds","argument","parseYearResult","timestamp","parseISO","addMilliseconds","dirtyAmount","addSeconds","addMinutes","addHours","addDays","addWeeks","months","addQuarters","roundingMethod","differenceInSeconds","differenceInMinutes","differenceInHours","differenceInWeeks","differenceInQuarters","isLastYearNotFull","differenceInYears","startOf","weekday","setMilliseconds","startOfSecond","setSeconds","startOfMinute","setMinutes","startOfHour","startOfDay","currentMonth","startOfQuarter","cleanDate","startOfYear","endOf","endOfSecond","endOfMinute","endOfHour","endOfWeek","endOfQuarter","endOfYear","BarChart","mergedOptions","responsive","aspectRatio","legend","scales","grid","drawTicks","ticks","precision","count","beginAtZero","EquityBalanceInterestChart","totals","newTotal","BalanceInterestChart","BreakdownChart","stacked","InflationChart","InvestmentChart","EndOfYearChart","getInvestmentByYear","SavingsChart","totalDeposit","ChartJS","BarElement","BarController","Legend","LinearScale","TimeScale","Title","DropdownField","classNames","option","DateField","NumberField","HeaderField","InputFields","htmlFor","dangerouslySetInnerHTML","__html","LoanCompareFields","nonDoubleFields","doubleFields","compareFields","chunk","InvestmentScheduleTable","netChange","totalNetChange","totalBalance","AmortizationScheduleTable","getAmortizationByYear","InflationScheduleTable","diffValue","subMonths","asNum","toFixed","getTimezoneOffset","_fields","_values","monthlyRate","minRate","midRate","getFrequencyPeriods","period","freq","r1","addPeriodFunc","addPeriodDelta","groupedSchedule","scheduleYear","currYearGroup","isLastPayment","intValue","shouldAdjust","currentRate","adjustRate","adjustMonthlyPayment","currentPeriodRate","currentPeriodPayment","paymentScheduleYear","$090815f5086f7f29$export$3d96ec278d3efce4","render","shouldRender","setShouldRender","hidden","TabSelector","isActive","onClick","CalculatorIcon","viewBox","fill","Calculator","selectedTab","setSelectedTab","defaultTab","previousActiveIndex","$090815f5086f7f29$var$usePrevious","useTabs","tab","handleTabChange","Component","rootNode","ReactDOM","Controller","headerNode","gridNode","gridContainer","gridSidebar","mainSwiper","gridSwiper","setupSliders","handleFilters","handleFilterDropdown","adjustCellHeights","positionGrid","dropdown","headerContainer","headerSwiper","watchSlidesProgress","control","containerWidth","sidebarWidth","gridWidth","totalWidth","innerWidth","all","selected","unselected","gridNumRows","rowCount","titleCells","maxTitleHeight","gridCells","maxCellHeight","headerCells","maxHeaderHeight","visibleSlides","handleFields","handleSubmit","form","checkbox","codeField","o","f","removeChild","defaultProps","__k","__","__b","__e","__d","__c","__h","__v","vnode","__r","debounceRendering","__P","__n","ownerSVGElement","A","P","N","$","cssText","contextType","__E","O","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","diffed","createTextNode","createElementNS","is","childNodes","attributes","C","unmount","componentWillUnmount","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","__H","cancelAnimationFrame","isPureReactComponent","__f","for","__u","U","__R","__O","fallback","revealOrder","splice","V","configurable","writable","Z","cancelBubble","defaultPrevented","persist","isPropagationStopped","isDefaultPrevented","nativeEvent","J","class","multiple","defaultValue","enumerable","$$typeof","globalObj","globalThis","FullCalendarVDom","warn","createRef","Fragment","createContext","ContextType","Consumer","origProvider","_this","isNew","subs_1","_props","old","createPortal","flushSync","runBeforeFlush","oldDebounceRendering","callbackQ","FakeComponent","unmountComponentAtNode","_super","EventSourceApi","internalEventSource","sourceId","refetch","sourceIds","isRefetch","publicId","meta","removeElement","elementClosest","selector","elementMatches","parentElement","matchesSelector","PIXEL_PROP_RE","applyStyleProp","getEventTargetViaRoot","ev","composedPath","guid$1","getUniqueDomId","listenBySelector","eventType","attachedHandler","matchedChild","buildDelegationHandler","createAriaClickAttrs","createAriaKeyboardAttrs","tabIndex","onKeyDown","guidNumber","guid","compareByFieldSpec","obj0","obj1","fieldSpec","func","localeCompare","flexibleCompare","order","padStart","formatWithOrdinals","formatter","fallbackText","str","arg","isInt","computeSmallestCellWidth","cellEl","allWidthEl","contentWidthEl","DAY_IDS","dateToUtcArray","arrayToUtcDate","addMs","diffDays","m0","m1","valueOf","diffWholeDays","timeAsMs","weekOfGivenYear","marker","dow","doy","firstWeekStart","firstWeekOffset","dayStart","days","fwd","dateToLocalArray","getHours","getMinutes","getSeconds","getMilliseconds","arrayToLocalDate","UTC","isValidDate","createEventInstance","defId","range","forcedStartTzo","forcedEndTzo","instanceId","mergeProps","propObjs","complexPropsMap","dest","name_1","complexObjs","name_2","filterHash","filtered","mapHash","newHash","arrayToHash","a_1","hashValuesToArray","isPropsEqual","getUnequalProps","compareObjs","oldProps","newProps","equalityFuncs","val0","val1","comparator","expandRecurring","eventStore","framingRange","dateEnv","pluginHooks","defs","instances","recurringDef","def","allDay","defaultAllDayEventDuration","defaultTimedEventDuration","starts_1","expandRecurringRanges","recurringTypes","eventDef","markers","typeId","expand","typeData","PARSE_RE","createDuration","years","milliseconds","parseString","parseObject","ms","weeks","specifiedWeeks","asRoughDays","dur","asRoughMs","greatestDurationDenominator","formatDayString","toISOString","formatTimeZoneOffset","doIso","mins","isArraysEqual","a0","a1","equalityFunc","memoize","workerFunc","resEquality","teardownFunc","currentArgs","currentRes","newArgs","memoizeObjArg","currentArg","newArg","EXTENDED_SETTINGS_AND_SEVERITIES","separator","omitZeroMinute","meridiem","omitCommas","STANDARD_DATE_PROP_SEVERITIES","timeZoneName","MERIDIEM_RE","COMMA_RE","MULTI_SPACE_RE","LTR_RE","UTC_RE","NativeFormatter","formatSettings","standardDateProps","extendedSettings","severity","buildFormattingFunc","formatRange","betterDefaultSeparator","d0","d1","ca","diffSeverity","calendarSystem","getMarkerYear","getMarkerMonth","getMarkerDay","biggestUnitForPartial","full0","full1","partialFormattingFunc","biggestUnit","partialOptions","computePartialFormattingOptions","partial0","partial1","insertion","i0","found0","before0","after0","i1","found1","before1","after1","before","after","findCommonInsertion","defaultSeparator","getLargestUnit","standardDatePropCnt","timeZoneOffset","num","computeWeekNumber","weekText","weekTextLong","parts","simpleNumberFormat","sanitizeSettings","timeZone","zeroFormat","normalFormat","Intl","DateTimeFormat","codes","zeroProps","tzoStr","replaced","injectTzoStr","toLocaleLowerCase","postProcess","buildNativeFormattingFunc","expandZonedMarker","dateInfo","markerToArray","createVerboseFormattingArg","startInfo","localeCodes","CmdFormatter","cmdStr","cmdFormatter","FuncFormatter","createFormatter","BASE_OPTION_REFINERS","navLinkDayClick","navLinkWeekClick","bootstrapFontAwesome","buttonIcons","customButtons","nextDayThreshold","scrollTime","scrollTimeReset","Boolean","slotMinTime","slotMaxTime","dayPopoverFormat","slotDuration","snapDuration","headerToolbar","footerToolbar","defaultRangeSeparator","titleRangeSeparator","forceEventDuration","dayHeaders","dayHeaderFormat","dayHeaderClassNames","dayHeaderContent","dayHeaderDidMount","dayHeaderWillUnmount","dayCellClassNames","dayCellContent","dayCellDidMount","dayCellWillUnmount","initialView","weekends","weekNumberCalculation","weekNumbers","weekNumberClassNames","weekNumberContent","weekNumberDidMount","weekNumberWillUnmount","editable","viewClassNames","viewDidMount","viewWillUnmount","nowIndicator","nowIndicatorClassNames","nowIndicatorContent","nowIndicatorDidMount","nowIndicatorWillUnmount","showNonCurrentDates","lazyFetching","startParam","endParam","timeZoneParam","locales","themeSystem","dragRevertDuration","dragScroll","allDayMaintainDuration","unselectAuto","dropAccept","eventOrder","specs","charAt","eventOrderStrict","handleWindowResize","windowResizeDelay","longPressDelay","eventDragMinDistance","expandRows","contentHeight","weekNumberFormat","eventResizableFromStart","displayEventTime","displayEventEnd","progressiveEventRendering","businessHours","initialDate","eventDataTransform","stickyHeaderDates","stickyFooterScrollbar","viewHeight","defaultAllDay","eventSourceFailure","eventSourceSuccess","eventDisplay","eventStartEditable","eventDurationEditable","eventOverlap","eventConstraint","eventAllow","eventBackgroundColor","eventBorderColor","eventTextColor","eventColor","eventClassNames","eventContent","eventDidMount","eventWillUnmount","selectConstraint","selectOverlap","selectAllow","droppable","unselectCancel","slotLabelFormat","slotLaneClassNames","slotLaneContent","slotLaneDidMount","slotLaneWillUnmount","slotLabelClassNames","slotLabelContent","slotLabelDidMount","slotLabelWillUnmount","dayMaxEvents","dayMaxEventRows","dayMinWidth","slotLabelInterval","allDayText","allDayClassNames","allDayContent","allDayDidMount","allDayWillUnmount","slotMinWidth","navLinks","eventTimeFormat","rerenderDelay","moreLinkText","moreLinkHint","selectMinDistance","selectable","selectLongPressDelay","eventLongPressDelay","selectMirror","eventMaxStack","eventMinHeight","eventMinWidth","eventShortHeight","slotEventOverlap","firstDay","dayCount","dateAlignment","dateIncrement","hiddenDays","monthMode","fixedWeekCount","validRange","visibleRange","titleFormat","eventInteractive","noEventsText","viewHint","navLinkHint","closeHint","timeHint","eventHint","moreLinkClick","moreLinkClassNames","moreLinkContent","moreLinkDidMount","moreLinkWillUnmount","BASE_OPTION_DEFAULTS","center","CALENDAR_LISTENER_REFINERS","datesSet","eventsSet","eventAdd","eventChange","eventRemove","windowResize","eventClick","eventMouseEnter","eventMouseLeave","unselect","loading","_unmount","_beforeprint","_afterprint","_noEventDrop","_noEventResize","_resize","_scrollRequest","CALENDAR_OPTION_REFINERS","buttonText","buttonHints","views","initialEvents","eventSources","COMPLEX_OPTION_COMPARATORS","isBoolComplexEqual","VIEW_OPTION_REFINERS","buttonTextKey","dateProfileGeneratorClass","usesMinMaxTime","didMount","willUnmount","mergeRawOptions","optionSets","refineProps","refiners","refined","extra","propName","parseEvents","rawEvents","eventSource","allowOpenRange","eventRefiners","buildEventRefiners","rawEvents_1","tuple","parseEvent","eventTupleToStore","mergeEventStores","store0","store1","filterEventStoreDefs","filterFunc","parseClassNames","EVENT_UI_REFINERS","startEditable","durationEditable","constraint","overlap","allow","color","borderColor","textColor","EMPTY_EVENT_UI","constraints","allows","createEventUi","normalizeConstraint","combineEventUis","uis","combineTwoEventUis","item0","item1","EVENT_NON_DATE_REFINERS","groupId","interactive","EVENT_DATE_REFINERS","EVENT_REFINERS","extendedProps","refineEventDef","computeIsDefaultAllDay","recurringRes","parsed","allDayGuess","parseRecurring","parseEventDef","singleRes","startMeta","endMeta","startMarker","hasEnd","endMarker","startInput","createMarkerMeta","isTimeUnspecified","forcedTzo","parseSingle","ui","eventDefMemberAdders","memberAdder","freeze","computeAlignedDayRange","timedRange","dayCnt","computeVisibleDayRange","startDay","endDay","endTimeMS","diffDates","date0","date1","largeUnit","diffWholeYears","diffWholeMonths","m0day","m1day","invertRanges","ranges","constraintRange","dateRange","invertedRanges","compareRanges","range0","range1","intersectRanges","newRange","rangeContainsMarker","sliceEventStore","eventUiBases","inverseBgByGroupId","inverseBgByDefId","defByGroupId","bgRanges","fgRanges","eventUis","compileEventUis","origRange","normalRange","slicedRange","isStart","invertedRanges_1","invertedRange","invertedRanges_2","bg","fg","setElSeg","seg","fcSeg","getElSeg","eventDefs","compileEventUi","buildSegCompareObj","eventRange","_seg","computeSegDraggable","transformers","isDraggableTransformers","transformers_1","transformer","computeSegStartResizable","computeSegEndResizable","buildSegTimeText","timeFormat","defaultDisplayEventTime","defaultDisplayEventEnd","startOverride","endOverride","eventInstance","wholeEventStart","wholeEventEnd","segStart","segEnd","isStartDay","isEndDay","getSegMeta","todayRange","nowDate","segRange","isPast","isFuture","isToday","getSegAnchorAttrs","emitter","hasHandlers","EventApi","jsEvent","view","viewApi","STANDARD_PROPS","buildRangeApiWithTimeZone","omitTime","buildRangeApi","startStr","formatIso","endStr","fabricateEventRange","dateSpan","getDefaultEventEnd","applyMutationToEventDef","eventConfig","standardProps","startDelta","endDelta","copy","eventDefMutationAppliers","applier","applyMutationToEventInstance","forceAllDay","clearEnd","datesDelta","ViewApi","getCurrentData","calendarApi","viewTitle","dateProfile","activeRange","currentRange","getOption","EVENT_SOURCE_REFINERS","failure","parseEventSource","rawObj","buildEventSourceRefiners","metaRes","eventSourceDefs","parseMeta","sourceDefId","buildEventSourceMeta","_raw","isFetching","latestFetchId","fetchRange","eventSourceRefiners","getNow","nowInput","createNowMarker","createMarker","CalendarApi","currentDataManager","batchRendering","updateSize","setOption","optionName","rawOptionValue","currentCalendarOptionsInput","getAvailableLocaleCodes","availableRawLocales","handlerName","currentCalendarOptionsRefiners","changeView","viewType","dateOrRange","dateMarker","zoomTo","spec","viewSpecs","getUnitViewSpec","toolbarConfig","viewTypes","viewsWithButtons","footer","singleUnit","prev","prevYear","currentDate","nextYear","calendarOptions","gotoDate","zonedDateInput","incrementDate","deltaInput","delta","formatDate","settings","dateOrObj","endDate","selectionInput","selection","defaultDuration","span","parseOpenDateSpan","parseDateSpan","pev","dateSpanTransforms","buildDateSpanApiWithContext","triggerDateSelect","dateSelection","origEvent","triggerDateUnselect","addEvent","eventInput","sourceInput","_def","_instance","triggerEventAdd","sourceApi","getEventSourceById","newEventApi","eventApi","relatedEvents","revert","eventApiToStore","getEventById","getEvents","buildEventApis","removeAllEvents","getEventSources","sourceHash","sourceApis","internalId","addEventSource","removeAllEventSources","refetchEvents","scrollToTime","timeInput","_context","setProp","mutate","setExtendedProp","setStart","granularity","maintainDuration","setEnd","endInput","setDates","instanceRange","moveStart","moveEnd","moveDates","setAllDay","formatInput","context_1","eventStore_1","relevantEvents","def_1","newStore","lookDef","def0","def1","getRelevantEvents","eventConfigBase","eventConfigs","applyMutationToEventStore","oldEvent","asStore","toPlainObject","collapseColor","collapseExtendedProps","toJSON","excludeInstance","eventApis","excludeInstanceId","theClass","calendarSystemClassMap","GregorianCalendarSystem","arrayToMarker","arr","ISO_RE","DateEnv","isNamedTimeZone","namedTimeZoneImpl","canComputeOffset","weekDow","weekDoy","weekNumberFunc","timestampToMarker","getYear","greatestWholeUnit","diffWholeWeeks","diffHours","diffMinutes","diffSeconds","countDurationsBetween","nextW","weekOfYear","dateOptions","offsetForMarker","isEndExclusive","extraOptions","omitTimeZoneOffset","stripZeroTime","buildIsoString","timestampToArray","offsetForArray","globalLocales","MINIMAL_RAW_EN_LOCALE","code","RAW_EN_LOCALE","eventCnt","organizeRawLocales","explicitRawLocales","defaultCode","allRawLocales","rawLocaleMap","en","allRawLocales_1","rawLocale","buildLocale","inputSingular","available","codeArg","simpleId","queryRawLocale","parseLocale","queryLocale","merged","NumberFormat","canVGrowWithinCell","DEF_DEFAULTS","startTime","endTime","daysOfWeek","getCanVGrowWithinCell","possible","computeCanVGrowWithinCell","EMPTY_EVENT_STORE","buildEventUiForKey","allUi","eventUiForKey","individualUi","baseParts","stuff","getDateMeta","isDisabled","isOther","getDayClassNames","theme","getClass","Splitter","getKeysForEventDefs","_getKeysForEventDefs","splitDateSelection","_splitDateSpan","splitEventStore","_splitEventStore","splitIndividualUi","_splitIndividualUi","splitEventDrag","_splitInteraction","splitEventResize","eventUiBuilders","splitProps","keyInfos","getKeyInfo","defKeys","dateSelections","eventStores","eventDrags","eventDrag","eventResizes","eventResize","info","keyInfo","buildEventUi","eventSelection","dateSpans","keys_1","getKeysForDateSpan","getKeysForEventDef","splitStores","splitHashes","interaction","splitStates","affectedStores_1","affectedEvents","mutatedKeysByDefId","mutatedEvents","mutatedStores_1","populate","isEvent","_scrollbarWidths","DAY_FORMAT","WEEK_FORMAT","buildNavLinkAttrs","isTabbable","dateStr","zonedDate","handleInteraction","customAction","Emitter","handlers","thisContext","setThisContext","setOptions","addToHash","removeFromHash","attachedHandlers","optionHandler","handlers_1","PositionCache","originEl","isHorizontal","isVertical","originClientRect","buildElHorizontals","buildElVerticals","originClientLeft","lefts","rights","rect","originClientTop","tops","bottoms","leftToIndex","leftPosition","topToIndex","topPosition","getWidth","leftIndex","getHeight","topIndex","ScrollController","getMaxScrollTop","getScrollHeight","getClientHeight","getMaxScrollLeft","getScrollWidth","getClientWidth","canScrollVertically","canScrollHorizontally","canScrollUp","getScrollTop","canScrollDown","canScrollLeft","getScrollLeft","canScrollRight","Theme","ElementScrollController","setScrollTop","setScrollLeft","scrollWidth","scrollHeight","WindowScrollController","iconOverrideOption","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","iconClasses","applyIconOverridePrefix","prefix","iconOverridePrefix","classes","getIconClass","isRtl","rtlIconClasses","baseIconClass","getCustomButtonIconClass","customButtonProps","iconOverrideCustomButtonOption","ScrollResponder","execFunc","handleScrollRequest","request","queuedRequest","drain","fireInitialScroll","detach","isDatesNew","ViewContextType","buildViewContext","viewSpec","viewOptions","dateProfileGenerator","registerInteractiveComponent","unregisterInteractiveComponent","addResizeHandler","removeResizeHandler","createScrollResponder","PureComponent","nextProps","nextState","propEquality","stateEquality","addPropsEquality","addStateEquality","BaseComponent","create","setRef","DateComponent","prepareHits","queryHit","positionLeft","positionTop","elWidth","elHeight","isValidSegDownEl","isValidDateDownEl","createPlugin","deps","reducers","isLoadingFuncs","contextInit","eventDragMutationMassagers","dateSelectionTransformers","datePointTransforms","viewPropsTransformers","isPropsValid","externalDefTransforms","viewContainerAppends","eventDropTransformers","componentInteractions","calendarInteractions","themeClasses","namedTimeZonedImpl","elementDraggingImpl","optionChangeHandlers","scrollGridImpl","contentTypeHandlers","listenerRefiners","optionRefiners","propSetHandlers","StandardTheme","ensureViewDef","defaultConfigs","overrideConfigs","viewDef","defaultConfig","overrideConfig","queryProp","theComponent","superType","superDef","rawOptions","overrides","buildViewDef","tableCellShaded","buttonGroup","button","buttonActive","RenderHook","rootElRef","handleRootEl","elRef","hookProps","MountHook","ContentHook","defaultContent","backupElRef","innerElRef","innerContent","normalizeClassNames","CustomContentRenderContext","renderId","ContentHookInner","renderInnerContent","updateCustomContent","customContentInfo","getInnerContent","getContentMeta","contentKey","contentVal","buildLifecycleFuncs","normalizeContent","searchKey","rootEl","buildClassNameNormalizer","currentGenerator","currentHookProps","currentClassNames","generator","ViewRoot","customClassNames","parseViewConfigs","inputs","parseViewConfig","viewProps","viewElRef","buildViewSpecs","defaultInputs","optionOverrides","dynamicOptionOverrides","localeDefaults","viewDefs","compileViewDefs","durationInput","durationUnit","singleUnitOverrides","durationInputMap","createDurationCached","denom","queryButtonText","optionsSubset","buttonTextMap","queryButtonTitle","buttonKey","optionDefaults","buttonTextOverride","buttonTextDefault","buttonTitleOverride","buttonHint","buttonTitleDefault","buildViewSpec","DateProfileGenerator","initHiddenDays","buildPrev","currentDateProfile","forceToValid","prevDate","currentRangeUnit","build","buildNext","nextDate","currentInfo","isRangeAllDay","renderRange","buildValidRange","trimHiddenDays","buildCurrentRangeInfo","buildRenderRange","adjustActiveRange","buildDateIncrement","validRangeInput","simpleInput","refineRange","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","computeRes","isHiddenDay","skipHiddenDays","runningCount","visibleRangeInput","customAlignment","rangeInput","isHiddenDayHash","inc","isExclusive","computeEventSourcesLoading","addSources","eventSourceHash","sources_1","fetchDirtySources","fetchSourcesByIds","doesSourceNeedRange","isSourceDirty","prevSources","sourceIdHash","nextSources","fetchSource","sourceDef","fetchId","xhr","excludeStaticSources","ignoreRange","transformEachRawEvent","refinedEvents","rawEvent","refinedEvent","excludeEventsBySourceId","reduceDateSelection","currentSelection","reduceSelectedEvent","currentInstanceId","eventInstanceId","reduceEventDrag","currentDrag","newDrag","reduceEventResize","currentResize","newResize","parseToolbars","calendarOptionOverrides","parseToolbar","sectionStrHash","sectionWidgets","hasTitle","sectionName","sectionRes","parseSection","widgets","sectionStr","calendarCustomButtons","calendarButtonTextOverrides","calendarButtonText","calendarButtonHintOverrides","calendarButtonHints","sectionSubstrs","buttonGroupStr","buttonClick","buttonIcon","click","hint","textFallback","prevOrNext","navUnit","arrayEventSourcePlugin","funcEventSourcePlugin","isResolved","wrappedSuccess","wrappedFailure","unpromisify","encodeParams","params","jsonFeedEventSourcePlugin","extraParams","toUpperCase","requestParams","customRequestParams","buildRequestParams","successCallback","failureCallback","injectQueryStringParams","XMLHttpRequest","setRequestHeader","onload","responseText","onerror","send","requestJson","errorMessage","simpleRecurringEventsPlugin","startRecur","endRecur","recurringData","clippedFramingRange","dowHash","dayMarker","instanceStarts","instanceStart","expandRanges","changeHandlerPlugin","handleEventSources","unfoundSources","newInputs","inputs_1","inputFound","unfoundSources_1","unfoundSource","newInputs_1","newInput","globalPlugins","html","currentEl","currentHtml","domNodes","currentDomNodes","newDomNodes","newDomNodes_1","newNode","DelayedRunner","drainedOption","isRunning","isDirty","pauseDepths","timeoutId","isPaused","tryDrain","pause","scope","resume","drained","TaskRunner","runTaskOption","queue","delayedRunner","task","completedTasks","runTask","buildTitle","buildTitleFormat","CalendarDataManager","currentHooks","currentOverrideDefs","currentGlobalDefs","computeOptionsData","_computeOptionsData","computeCurrentViewData","_computeCurrentViewData","buildPluginHooks","overrideDefs","globalDefs","pluginDefs","isAdded","hooks","addDefs","defs_1","hooks1","hooks0","buildDateEnv","buildTheme","buildDateProfileGenerator","buildViewApi","buildViewUiProps","buildEventUiBySource","buildEventUiBases","parseContextBusinessHours","actionRunner","_handleAction","updateData","currentCalendarOptionsRefined","currentViewOptionsInput","currentViewOptionsRefined","optionsData","currentViewType","currentViewData","initialDateInput","calendarContext","rawSources","rawSources_1","parseInitialSources","initEventSources","initialState","renderableEventStore","selectionConfig","contextAndState","reducer","computeIsLoading","resetOptions","reduceDynamicOptionOverrides","reduceViewType","reduceCurrentDate","dp","reduceDateProfile","receiveResponse","reduceEventSources","subset","calEachTransform","sourceEachTransform","transformRawEvents","receiveRawEvents","expandRange","master","filteredDefs","filteredInstances","excludeSubEventStore","reduceEventStore","eventUiSingleBase","eventUiBySource","newState","wasLoading","isLoading","onAction","oldDateEnv","newDateEnv","oldData","changeHandlers","oldCalendarOptions","newCalendarOptions","onData","processRawCalendarOptions","refinedOptions","availableLocaleData","warnUnknownOptions","currentRaw","currentRefined","anyChanges","processRawViewOptions","explicitLocale","isLoadingFunc","rawDef","refineInputs","viewName","CalendarDataProvider","handleData","dataManager","prevProps","newOptionOverrides","SegHierarchy","strictOrder","allowReslicing","maxCoord","maxStackCnt","levelCoords","entriesByLevel","stackCnts","addSegs","hiddenEntries","insertEntry","entry","findInsertion","isInsertionValid","insertEntryAt","handleInvalidInsertion","levelCoord","thickness","stackCnt","touchingEntry","splitEntry","barrier","partCnt","splitHiddenEntries","entrySpan","barrierSpan","intersectSpans","lateral","insertAt","level","buildEntryKey","newEntry","levelCnt","candidateCoord","touchingLevel","touchingLateral","trackingLevel","trackingCoord","trackingEntries","trackingEntry","searchRes","binarySearch","getEntrySpanEnd","lateralIndex","trackingEntryBottom","destLevel","destLateral","toRects","rects","entries_1","span0","span1","searchVal","getItemVal","endIndex","middleIndex","middleVal","Interaction","isHitComboAllowed","parseInteractionSettings","useEventCenter","interactionSettingsStore","ElementDragging","setMirrorIsVisible","bool","setMirrorNeedsRevert","setAutoScrollEnabled","ToolbarSection","widgetGroups","widgetGroup","renderWidgetGroup","isOnlyButtons","widgetGroup_1","titleId","isPressed","activeButton","isTodayEnabled","isPrevEnabled","isNextEnabled","buttonClasses","groupClassName","Toolbar","startContent","endContent","model","extraClassName","forceLtr","centerContent","renderSection","ViewContainer","availableWidth","handleEl","updateAvailableWidth","liquid","labeledById","EventClicking","handleSegClick","segEl","hasUrlContainer","EventHovering","onMouseEnter","onMouseLeave","currentMatchedChild","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","triggerEvent","removeHoverListeners","mouseOverEv","realOnMouseLeave_1","mouseLeaveEv","publicEvName","CalendarContent","buildViewPropTransformers","buildToolbarProps","headerRef","footerRef","interactionsStore","viewLabelId","settingsInput","interactions","TheInteractionClass","listeners","listeners_1","resizeRunner","viewAspectRatio","toolbarProps","viewVGrow","isHeightAuto","forPrint","viewContext","renderView","buildAppendContent","CalendarInteractionClass","ViewComponent","todayInfo","prevInfo","nextInfo","theClasses","TheClass","CalendarRoot","handleBeforePrint","handleAfterPrint","CLASS_NAME","renderInner$1","TableDateCell","dayMeta","navLinkAttrs","colCnt","extraHookProps","extraDataAttrs","isSticky","WEEKDAY_FORMAT","TableDowCell","dateMeta","extraClassNames","NowTimer","initialNowDate","initialNowQueriedMs","computeTiming","currentState","unroundedNow","currentUnitStart","nextUnitStart","waitMs","buildDayRange","DayHeader","createDayHeaderFormatter","dates","datesRepDistinctDays","renderIntro","explicitFormat","dateCnt","computeFallbackHeaderFormat","DaySeriesModel","indices","cnt","sliceRange","firstIndex","getDateDayIndex","lastIndex","clippedFirstIndex","clippedLastIndex","dayOffset","DayTableModel","daySeries","breakOnWeeks","daysPerRow","rowCnt","cells","buildCells","headerDates","buildHeaderDates","rows","buildCell","seriesSeg","segs","nextIndex","firstCol","lastCol","Slicer","sliceBusinessHours","_sliceBusinessHours","sliceDateSelection","_sliceDateSpan","_sliceEventStore","sliceEventDrag","_sliceInteraction","sliceEventResize","forceDayIfListItem","sliceProps","extraArgs","eventSegs","dateSelectionSegs","businessHourSegs","fgEventSegs","bgEventSegs","sliceNowDate","computeActiveRange","rangeRes","sliceEventRanges","affectedInstances","segs_1","eventRanges","eventRanges_1","sliceEventRange","segs_2","isComponentAllDay","VISIBLE_HIDDEN_RE","Scroller","liquidIsAbsolute","isAbsolute","overflowX","overcomeLeft","overcomeRight","overcomeBottom","marginLeft","marginRight","maxHeight","needsXScrolling","realClientWidth","getYScrollbarWidth","needsYScrolling","realClientHeight","getXScrollbarWidth","RefMap","masterCallback","currentMap","depths","callbackMap","handleValue","removed","added","refCallback","collect","step","collectFromHash","getAll","getSectionHasLiquidHeight","sectionConfig","isColPropsEqual","cols0","cols1","renderMicroColGroup","cols","shrinkWidth","colNodes","cols_1","colProps","sanitizeShrinkWidth","minWidth","getSectionClassNames","wholeTableVGrow","renderScrollShim","tableMinWidth","getStickyHeaderDates","SimpleScrollGrid","processCols","scrollerRefs","scrollerElRefs","_handleScrollerEl","forceYScrollbars","scrollerClientWidths","scrollerClientHeights","handleSizing","computeShrinkWidth","computeScrollerDims","sectionConfigs","sections","microColGroupNode","getScrollGridClassNames","collapsibleWidth","currentConfig","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","isBuggy","roleAttrs","isHeader","outerContent","renderChunkTd","chunkConfig","getAllowYScrolling","isLiquid","sectionKey","tableClassName","syncRowHeights","tableColGroupNode","rowContent","renderChunkContent","rowSyncHeights","reportRowHeightChange","scrollerEl","section","sections_1","getSectionByKey","scrollerElRef","cols_2","hasShrinkWidth","chunkEls","shrinkCells","HTMLElement","allMatches","findElements","largestWidth","shrinkCells_1","shrinkCell","scrollbarWidth","computeScrollbarWidthsForEl","computeScrollbarWidths","scroller","harnessEl","EventRoot","timeText","isDraggable","disableDragging","isStartResizable","disableResizing","isEndResizable","isMirror","isDragging","isResizing","isDateSelecting","isSelected","standardClassNames","getEventClassNames","StandardEvent","defaultTimeFormat","renderInnerContent$1","innerProps","DAY_NUM_FORMAT","DayCellContent","refineDayCellHookProps","showDayNumber","extraProps","dayNumberText","DayCellRoot","refineHookProps","dataAttrs","renderFill","fillType","BgEvent","WeekNumberRoot","defaultFormat","renderInner","Popover","handleDocumentMouseDown","handleCloseClick","handleDocumentKeyDown","extraAttrs","parentEl","alignmentEl","alignGridTop","alignmentRect","rect1","rect2","clippingParents","parents","computedStyle","getClippingParents","clippingParents_1","intersection","computeClippedClientRect","popoverDims","popoverTop","popoverLeft","origin_1","MorePopover","dayClassNames","extraDateSpan","dayEl","layer","MoreLinkRoot","linkElRef","isPopoverOpen","popoverId","computeRange","buildPublicSeg","allDayDate","allSegs","hiddenSegs","handlePopoverClose","moreCnt","shortText","renderMoreLinkInner","alignmentElRef","popoverContent","updateParentEl","pickEarliestStart","computeLatestSegEnd","seg0","seg1","pickLatestEnd","Calendar","isRendering","isRendered","customContentRenderId","handleAction","renderRunner","handleRenderRequest","currentData_1","setClassNames","wasRendering","pauseRendering","resumeRendering","classNames_1","TableView","headerElRef","renderSimpleLayout","headerRowContent","bodyContent","renderHScrollLayout","ScrollGrid","getStickyFooterScrollbar","chunks","colGroups","splitSegsByRow","byRow","splitSegsByFirstCol","byCol","splitInteractionByRow","TableCellTop","renderTopInner","forceDayTop","dayNumberId","DEFAULT_TABLE_EVENT_TIME_FORMAT","hasListItemDisplay","TableBlockEvent","TableListItemEvent","TableCellMoreLink","compileSegs","singlePlacements","invisibleSegs","isForcedInvisible","visibility","isExpanded","singlePlacements_1","placement","isVisible","DEFAULT_WEEK_NUM_FORMAT","TableCell","dayElRef","rootDataAttrs","showWeekNumber","weekElRef","weekClassNames","fgContentElRef","fgContent","moreMarginTop","bgContent","resliceSeg","spanStart","spanEnd","DayGridSegHierarchy","hiddenConsumes","forceHidden","segInputs","excludeHidden","touchingEntryId","placeholderEntry","TableRow","cellElRefs","frameElRefs","fgElRefs","segHarnessRefs","framePositions","maxContentHeight","eventInstanceHeights","eventOrderSpecs","objs","businessHoursByCol","bgEventSegsByCol","highlightSegsByCol","getHighlightSegs","mirrorSegsByCol","getMirrorSegs","hierarchy","unknownHeightSegs","eventHeight","allRects","rectsByEachCol","rects_3","groupRectsByEachCol","singleColPlacements","multiColPlacements","leftoverMargins","currentHeight","currentMarginTop","rects_1","absoluteTop","multiPlacements","rects_2","isFirstCol","placeRects","moreCnts","moreMarginTops","unknownHeightSegs_1","hiddenEntries_1","hiddenEntry","hiddenSpan","computeFgSegPlacement","fieldSpecs","cmp","compareByFieldSpecs","cell","normalFgNodes","renderFgSegs","mirrorFgNodes","mirrorSegs","colPlacements","topsByInstanceId","colPlacements_1","placements_1","buildAbsoluteTopHash","buildMirrorPlacements","showDayNumbers","showWeekNumbers","renderFillSegs","updateSizing","prevState","currentProps","segPlacements","segPlacements_1","leftRightCss","isExternalSizingChange","frameEls","oldInstanceHeights","newInstanceHeights","queryEventInstanceHeights","limitByContentHeight","computeMaxContentHeight","segElMap","firstKey","fcContainerEl","getCellEls","elMap","Table","splitBusinessHourSegs","splitBgEventSegs","splitFgEventSegs","splitDateSelectionSegs","rowRefs","businessHourSegsByRow","bgEventSegsByRow","fgEventSegsByRow","dateSelectionSegsByRow","eventDragByRow","eventResizeByRow","limitViaBalanced","colGroupNode","renderRowIntro","isSegAllDay","rowPositions","rowObj","colPositions","getCellRange","getCellEl","DayTableSlicer","dayTableModel","DayTable","slicer","tableRef","headerAlignElRef","buildDayTableModel","dayGrid","DayTableView","headerContent","contentArg","TableDateProfileGenerator","dayGridDay","dayGridWeek","dayGridMonth","calendar","calendarEl","setupCalendar","handleView","listView","calendarView","endpoint","dayGridPlugin","urlParams","search","searchCategory","searchTerm","category","hashTarget","otherTrigger","otherTarget","locations","selectedLocation","mapBounds","maps","userCoords","sidebarOpen","mapVisible","isLoadingLocations","zip","panTo","LatLng","lat","lng","setZoom","eddRef","edd","IconPhone","IconEnvelope","IconMapPin","IconMapMarker","IconUserMarker","LocationCard","setIsSelected","address","city","detailsUrl","phone","phoneUrl","phone2","phone2Url","emailUrl","directionsUrl","propTypes","PropTypes","isRequired","Sidebar","siteTitle","headline","fastDeepEqual","equal","DEFAULT_ID","LoaderStatus","Loader","apiKey","authReferrerPolicy","channel","client","language","libraries","mapIds","nonce","region","retries","version","CALLBACK","done","errors","FAILURE","SUCCESS","LOADING","INITIALIZED","failed","createUrl","deleteScript","load","loadPromise","reject","loadCallback","google","execute","setScript","loadErrorCallback","async","onerrorEvent","resetIfRetryingFailed","setCallback","__googleMapsCallback","__proto__","ReferenceError","margin","registerChild","gmapInstance","getChildren","getMousePosition","mouse_","getUpdateCounter","updateCounter_","dispose","removeAllListeners","_getState","dispatcher","updateCounter","_onChangeHandler","dimensionsCache_","_onMouseChangeHandler","_onChildClick","onChildClick","hoverChildProps_","hoverKey_","_onChildMouseDown","onChildMouseDown","_onChildMouseEnter","onChildMouseEnter","hoverKey","_onChildMouseLeave","onChildMouseLeave","_onMouseAllow","allowMouse_","_onMouseChangeHandlerRaf","getHoverDistance","latLng","distanceToMouse","_getDimensions","experimental","removeListener","$geoService","geoService","$onMouseAllow","$prerender","prerender","insideMapPanes","fromLatLngToDivPixel","fromLatLngToCenterPixel","seLatLng","seLat","seLng","fromLatLngToContainerPixel","$markerHolderClassName","$hover","$getDimensions","$dimensionKey","wrap","tileSize","_minZoom","_maxZoom","latRange","zoom","zoomScale","scaleZoom","LN2","project","lngX","latY","unproject","yLat","xLng","worldSize","tan","atan","exp","locationPoint","centerPoint","point","pointLocation","_zoom","minZoom","maxZoom","tileZoom","zoomFraction","hasSize_","hasView_","transform_","setView","bearing","setViewSize","setMapCanvasProjection","maps_","mapCanvasProjection_","canProject","hasSize","fromContainerPixelToLatLng","getZoom","getCenter","getBounds","log2","isExplorer","isFirefox","isOpera","isChrome","isSafari","Function","passive","W","attachEvent","F","mozCancelAnimationFrame","webkitCancelAnimationFrame","__resizeTriggers__","__resizeRAF__","__resizeLast__","__resizeListeners__","ee","te","oe","animationName","ne","re","ie","se","ae","pe","le","ue","he","_getMinZoom","geoService_","_computeMinZoom","_mapDomResizeCallback","resetSizeOnIdle_","defaultCenter","map_","setCenter","resetBoundsOnResize","_setLayers","layers_","setMap","_renderPortal","_getHoverDistance","markersDispatcher_","_initMap","initialized_","defaultZoom","_onBoundsChanged","bootstrapURLKeys","googleMapLoader","heatmapLibrary","mounted_","heatmap","positions","visualization","HeatmapLayer","weight","draggable","minZoom_","overviewMapControl","streetViewControl","rotateControl","mapTypeControl","featureType","elementType","stylers","defaultDraggableOption_","googleMapDom_","layerTypes","OverlayView","onAdd","screen","overlayViewDivStyle","getPanes","overlayMouseTarget","getProjection","overlay","onRemove","draw","debounced","googleApiLoadedCalled_","_onGoogleApiLoaded","_onChildMouseMove","emit","fireMouseEventOnIdle_","overlay_","onTilesLoaded","addListener","_onTilesLoaded","zoomAnimationInProgress_","_onZoomAnimationStart","zoomControlClickTime_","_setViewSize","_onZoomAnimationEnd","dragTime_","mouseInMap_","_onDrag","_onDragEnd","_onMapTypeIdChange","getMapTypeId","onGoogleApiLoaded","hoverDistance","onDrag","onDragEnd","onMapTypeIdChange","onZoomAnimationStart","onZoomAnimationEnd","childMouseDownArgs_","_onChildMouseUp","onChildMouseUp","childMouseUpTime_","onChildMouseMove","fullscreen","webkitIsFullScreen","mozFullScreen","msFullscreenElement","innerHeight","_onWindowResize","_onMapMouseMove","mouseMoveTime_","boundingRect_","clientX","clientY","_onClick","_onMapClick","_onMapMouseDownNative","_onMapMouseDown","_onMapMouseDownCapture","_onKeyDownCapture","_isCenterDefined","onBoundsChange","prevBounds_","centerIsObject_","nw","sw","marginBounds","_registerChild","styleSheet","setData","detachEvent","shouldUnregisterMapOnUnmount","scrollwheel","clearInstanceListeners","onMouseMove","onMouseDownCapture","yesIWantToUseGoogleMapApiInternals","MapInfoWindow","MapMarker","defaultMapCenter","mapOptions","fullscreenControl","zoomControlOptions","debounce","addDomListener","apiIsLoaded","_objectWithoutPropertiesLoose","excluded","sourceKeys","_extends","_assertThisInitialized","_setPrototypeOf","setPrototypeOf","ownerDocument","defaultView","frameElement","idCounter","cbToCb","scrollIntoView","menuNode","actions","scrollMode","block","boundary","skipOverflowHiddenElements","scrollingElement","visualViewport","scrollX","borderLeftWidth","borderTopWidth","borderRightWidth","borderBottomWidth","_ref","isOrContainsNode","parent","child","environment","cancel","wrapper","_len","_key","callAllEventHandlers","_len2","fns","_key2","_len3","_key3","preventDownshiftDefault","handleRefs","_len4","refs","_key4","getA11yStatusMessage$1","_ref2","isOpen","resultCount","previousResultCount","unwrapArray","stateKeys","pickState","isControlledProp","normalizeArrowKey","getNextWrappingIndex","moveAmount","baseIndex","itemCount","getItemNodeFromIndex","circular","itemsLastIndex","newIndex","nonDisabledNewIndex","getNextNonDisabledIndex","currentElementNode","_index","targetWithinDownshift","downshiftElements","checkActiveElement","contextNode","cleanupStatus","documentProp","getStatusDiv","setStatus","statusDiv","border","clip","stateChangeTypes$3","unknown","mouseUp","itemMouseEnter","keyDownArrowUp","keyDownArrowDown","keyDownEscape","keyDownEnter","keyDownHome","keyDownEnd","clickItem","blurInput","changeInput","keyDownSpaceButton","clickButton","blurButton","controlledPropUpdatedSelectedItem","touchEnd","_excluded$4","_excluded2$3","_excluded3$2","_excluded4$1","_excluded5$1","Downshift$1","Downshift","_Component","subClass","superClass","menuId","labelId","inputId","getItemId","items","timeoutIds","internalSetTimeout","setItemCount","unsetItemCount","setHighlightedIndex","highlightedIndex","otherStateToSet","defaultHighlightedIndex","internalSetState","clearSelection","selectedItem","inputValue","defaultIsOpen","selectItem","itemToString","selectItemAtIndex","itemIndex","selectHighlightedItem","getState","stateToSet","isItemSelected","onChangeArg","onStateChangeArg","isStateToSetFunction","onInputValueChange","getStateAndHelpers","newStateToSet","stateReducer","nextFullState","onStateChange","onSelect","onUserAction","rootRef","_rootNode","getRootProps","_temp","_temp2","_extends2","_ref$refKey","refKey","_ref2$suppressRefErro","suppressRefError","called","keyDownHandlers","ArrowDown","_this2","moveHighlightedIndex","getItemCount","nextHighlightedIndex","ArrowUp","_this3","Enter","which","_this$getState2","itemNode","Escape","buttonKeyDownHandlers","toggleMenu","inputKeyDownHandlers","Home","_this4","newHighlightedIndex","End","_this5","getToggleButtonProps","_temp3","_ref3","onPress","onKeyUp","onBlur","enabledEventHandlers","buttonHandleClick","buttonHandleKeyDown","buttonHandleKeyUp","buttonHandleBlur","blurTarget","isMouseDown","getLabelProps","getInputProps","_temp4","_ref4","onInput","onChangeText","_eventHandlers","eventHandlers","_this$getState6","inputHandleChange","inputHandleKeyDown","inputHandleBlur","autoComplete","downshiftButtonIsActive","menuRef","_menuNode","getMenuProps","_temp5","_temp6","_extends3","_ref5","_ref5$refKey","_ref6$suppressRefErro","getItemProps","_temp7","_enabledEventHandlers","_ref7","onMouseDown","_ref7$item","customClickHandler","avoidScrolling","clearItems","_ref8","_ref9","_this$getState7","updateStatus","getA11yStatusMessage","highlightedItem","_this$props","_this$props$initialHi","initialHighlightedIndex","_highlightedIndex","_this$props$initialIs","initialIsOpen","_isOpen","_this$props$initialIn","initialInputValue","_inputValue","_this$props$initialSe","initialSelectedItem","_selectedItem","_state","_proto","internalClearTimeouts","stateToMerge","scrollHighlightedItemIntoView","_this6","_this$getState9","_this7","onMouseUp","onOuterClick","onTouchStart","isTouchMove","onTouchMove","onTouchEnd","contextWithinDownshift","currentHighlightedIndex","prevHighlightedIndex","selectedItemChanged","isDOMElement","cloneElement","getElementProps","prevItem","stateChangeTypes","getA11yMessage","useLayoutEffect","defaultProps$3","changes","getA11ySelectionMessage","selectionParameters","itemToStringLocal","circularNavigation","downshift","App","Mousewheel","Scrollbar","Thumbs","thumbContainer","albumContainer","albumOpts","setThumbsHeight","thumbOpts","mousewheel","scrollbar","thumbSlider","thumbs","Autoplay","handleAccordion","hasPassiveEvents","passiveTestOptions","isIosDevice","locks","documentListenerAdded","initialClientY","previousBodyOverflowSetting","previousBodyPosition","previousBodyPaddingRight","lock","touches","restoreOverflowSetting","paddingRight","restorePositionSetting","targetElement","arr2","_toConsumableArray","_window","bottomBarHeight","_reserveScrollBarGap","reserveScrollBarGap","scrollBarGap","computedBodyPaddingRight","getPropertyValue","setOverflowHidden","ontouchstart","targetTouches","ontouchmove","isTargetElementTotallyScrolled","stopPropagation","handleScroll","clearAllBodyScrollLocks","requestAnimFrame","throttled","thisArg","updateFn","updateArgs","ticking","_toLeftRightCenter","align","_alignStartEnd","isNullOrUndef","isNumberFinite","isFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","endsWith","loopable","_elementsEqual","ilen","v0","v1","datasetIndex","clone$1","klen","isValidKey","_merger","tval","sval","merger","mergeIf","_mergerIf","indexOfDotOrLength","resolveObjectKey","pos","_capitalize","defined","isFunction","setsEqual","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","niceNum","roundedRange","almostEquals","niceRange","fraction","isNumber","epsilon","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","atEdge","elasticIn","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","hex","h1","h2","eq","lim","p2b","n2b","b2n","n2p","RGB_RE","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","calln","hsl2rgb","hue","map$1","names","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","names$1","modHSL","ratio","tmp","proto","fromObject","functionParse","rgbParse","p1","p2","hwb2rgb","hsv2rgb","hueParse","Color","ret","unpacked","tkeys","nk","unpack","transparent","nameParse","_rgb","_valid","valid","rgbString","hexString","isShort","hslString","me","c1","c2","w2","w1","alpha","clearer","greyscale","opaquer","negate","lighten","darken","saturate","desaturate","deg","index_esm","isPatternOrGradient","CanvasGradient","CanvasPattern","getHoverColor","descriptors","getScope$1","_descriptors","animation","devicePixelRatio","getDevicePixelRatio","font","family","lineHeight","hover","hoverBackgroundColor","hoverBorderColor","hoverColor","indexAxis","mode","intersect","maintainAspectRatio","onHover","parsing","showLine","drawActiveElementsOnTop","describe","override","route","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","local","_scriptable","startsWith","_indexable","_fallback","_measureText","gc","longest","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","resetTransform","clearRect","drawPoint","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","drawImage","beginPath","arc","closePath","moveTo","lineTo","SQRT1_2","borderWidth","stroke","_isPointInArea","area","clipArea","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","lines","strokeWidth","strokeColor","line","translation","fillStyle","textAlign","textBaseline","setRenderOpts","strokeStyle","lineWidth","strokeText","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","_readValueToProps","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","toFontString","cacheable","parentContext","_lookup","table","mid","hi","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","_arrayUnique","Set","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","toStringTag","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","proxy","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","getKeysFromAllScopes","ownKeys","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_subProxy","_stack","setContext","receiver","isScriptable","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","capControlPoint","pt","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","splineCurveMonotone","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getPositionedStyle","suffix","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","box","native","offsetX","offsetY","useOffsetPos","getCanvasPosition","round1","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","cacheKey","getNumberFormat","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_boundSegment","segment","startBound","endBound","getSegment","prevValue","inside","subStart","readStyle","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","styleChanged","prevStyle","animator","_request","_charts","_running","_lastDate","_notify","anims","numSteps","currentStep","_refresh","_update","remaining","running","_active","_total","tick","_getAnims","charts","complete","progress","listen","cur","_duration","interpolators","boolean","factor","c0","number","Animation","cfg","_fn","_easing","_start","_loop","_target","_prop","_from","_to","_promises","remain","wait","promises","rej","resolved","animationOptions","colors","numbers","resize","animations","Animations","_chart","_properties","configure","animatedProps","getOwnPropertyNames","_animateOptions","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","isStacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","_cachedMeta","_stacks","iScale","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_parsing","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","$context","_syncList","linkScales","_stacked","addElements","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","getDatasetMeta","scaleID","_getOtherScale","_destroy","_dataCheck","adata","convertObjectDataToArray","isExtensible","object","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","_sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","getMinMax","canStack","otherScale","createStack","NEGATIVE_INFINITY","otherMin","otherMax","minDefined","maxDefined","getUserBounds","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","_clip","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","sharing","datasetElementScopeKeys","resolveNamedOptions","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","updateElement","updateSharedOptions","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","_cache","$bar","visibleMetas","getAllScaleValues","_length","updateMinAndPrev","getPixelForValue","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","iAxisKey","vAxisKey","super","bars","getBasePixel","ruler","_getRuler","firstOpts","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","_getStacks","last","grouped","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","halfGrid","getLineWidthForValue","skipNull","maxBarThickness","Infinity","percent","computeFlexCategoryTraits","computeFitCategoryTraits","stackIndex","_index_","_value_","BubbleController","getPixelForDecimal","tooltip","innerRadius","outerRadius","getter","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","chartWeight","_getRingWeight","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","animationsDisabled","pointCount","getStartAndCountOfVisiblePoints","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","scaleRangesChanged","_datasetIndex","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","DateAdapter","adapters","metaset","lookupMethod","_reversePixels","getRange","optimizedEvaluateItems","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","_minPadding","inRange","getNearestItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestCartesianItems","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","evaluateAllVisibleItems","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","layout","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","fullSize","setBoxDims","placeBoxes","userPadding","placed","stackWeight","autoPadding","layouts","addBox","_layers","removeBox","layoutItem","minPadding","availableHeight","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","vBoxMaxWidth","hBoxMaxHeight","buildStacks","setLayoutDims","updatePos","change","handleMaxPadding","BasePlatform","acquireContext","releaseContext","getMaximumSize","isAttached","updateConfig","BasicPlatform","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","nodeListContains","nodeList","createAttachObserver","addedNodes","removedNodes","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","fromNativeEvent","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","attach","bbWidth","bbHeight","margins","containerSize","containerStyle","containerBorder","containerPadding","getContainerSize","isConnected","Element","tooltipPosition","hasValue","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","newTicks","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","tickLength","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingLeft","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_maxLength","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","beforeUpdate","tickOpts","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","ticksLimit","maxTicksLimit","_tickSize","maxScale","maxChart","determineMaxTicks","majorIndices","getMajorIndices","numMajorIndices","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","beforeFit","fit","afterFit","afterUpdate","startPixel","endPixel","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetRight","isFullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","limit","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","_computeLabelItems","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","labelPadding","_computeLabelArea","drawBackground","fillRect","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","lastLineWidth","drawLabels","drawTitle","titleX","titleY","titleArgs","tz","gz","axisID","_maxDigits","TypedRegistry","isForType","isPrototypeOf","register","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","unregister","registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getElement","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","reg","_getRegistryForType","_exec","itemReg","camelMethod","PluginService","_init","notify","hook","_createDescriptors","descriptor","plugin","invalidate","_oldCache","_notifyStateChanges","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getChart","moveNumericKeys","intKey","userConfig","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","_initialize","_resizeBeforeDraw","newSize","newRatio","onResize","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","determineLastEvent","invalidatePlugins","clipArc","pixelMargin","angleMargin","rThetaToXY","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStart","outerEnd","innerStart","innerEnd","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","parseBorderRadius$1","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","fullCircles","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","inner","lineJoin","drawFullCircleBorders","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","LineElement","_path","_points","_segments","_pointsUpdated","segments","segmentOptions","findStartAndEnd","chartContext","baseStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","doSplitByStyles","splitByStyles","solidSegments","_computeSegments","interpolate","_boundSegments","_interpolate","_getInterpolationMethod","interpolated","segmentMethod","path","strokePathWithCache","strokePathDirect","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","skipX","skipY","addNormalRectPath","inflateRect","refRect","outer","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","boundingRects","addRectPath","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","itemHeight","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","heightLimit","currentColWidth","currentColHeight","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","fontColor","halfFontSize","cursor","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","onLeave","isListened","hoveredItem","sameItem","plugin_legend","_element","_args","afterEvent","ci","_padding","textSize","_drawArgs","fontOpts","plugin_title","titleBlock","createTitle","WeakMap","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getTooltipSize","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","bodyColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","CategoryScale","_startValue","_valueRange","_addedLabels","addedLabels","addIfString","lastIndexOf","findOrAddLabel","relativeLabelSize","minSpacing","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","getTickLimit","maxTicks","stepSize","computeTickLimit","generationOptions","dataRange","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","niceMin","niceMax","numSpaces","rounded","almostWhole","generateTicks$1","isMajor","tickVal","LogarithmicScale","_zero","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","updateLimits","limits","hLimits","vLimits","getTextAlignForAngle","yForAngle","pathRadiusLine","labelCount","getPointPosition","RadialLinearScale","drawingArea","_pointLabels","_pointLabelItems","valueCount","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","plFont","setCenterPoint","outerDistance","pointLabelPosition","buildPointLabelItems","fitWithPointLabels","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","drawPointLabels","gridLineOpts","drawRadiusLine","INTERVALS","common","steps","UNITS","sorter","adapter","_adapter","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","global","isCallable","tryToString","isConstructor","wellKnownSymbol","definePropertyModule","UNSCOPABLES","ArrayPrototype","unicode","it","Prototype","toObject","callWithSafeIterationClosing","isArrayIteratorMethod","lengthOfArrayLike","createProperty","getIterator","getIteratorMethod","arrayLike","IS_CONSTRUCTOR","argumentsLength","mapfn","mapping","iteratorMethod","toIndexedObject","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","fromIndex","fin","arraySlice","mergeSort","comparefn","middle","insertionSort","llength","rlength","lindex","rindex","anObject","iteratorClose","ENTRIES","uncurryThis","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","hasOwn","getOwnPropertyDescriptorModule","exceptions","fails","IteratorPrototype","createPropertyDescriptor","setToStringTag","Iterators","returnThis","IteratorConstructor","NAME","ENUMERABLE_NEXT","DESCRIPTORS","bitmap","toPropertyKey","propertyKey","IS_PURE","FunctionName","createIteratorConstructor","createNonEnumerableProperty","redefine","IteratorsCore","PROPER_FUNCTION_NAME","PROPER","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","BUGGY_SAFARI_ITERATORS","ITERATOR","KEYS","VALUES","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","forced","EXISTS","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","documentCreateElement","DOMTokenListPrototype","getBuiltIn","process","Deno","versions","v8","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","noTargetGet","sham","regexpExec","SPECIES","RegExpPrototype","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","uncurriedNativeRegExpMethod","nativeMethod","regexp","forceStringMethod","uncurriedNativeMethod","$exec","NATIVE_BIND","FunctionPrototype","aCallable","that","getDescriptor","aFunction","namespace","classof","getMethod","usingIterator","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","namedCaptures","replacement","tailPos","symbols","ch","check","propertyIsEnumerable","functionToString","inspectSource","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","wmget","wmhas","wmset","metadata","facade","STATE","enforce","getterFor","TYPE","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","feature","detection","POLYFILL","NATIVE","USE_SYMBOL_AS_UID","$Symbol","kind","innerResult","innerError","PrototypeOfArrayIteratorPrototype","arrayIterator","toLength","V8_VERSION","getOwnPropertySymbols","symbol","searchParams","pathname","username","PromiseCapability","promise","$$resolve","$$reject","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","IndexedObject","$assign","alphabet","chr","activeXDocument","definePropertiesModule","enumBugKeys","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObjectViaActiveX","write","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","domain","contentWindow","Properties","V8_PROTOTYPE_DEFINE_BUG","IE8_DOM_DEFINE","$defineProperty","$getOwnPropertyDescriptor","Attributes","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","$propertyIsEnumerable","NASHORN_BUG","aPossiblePrototype","CORRECT_SETTER","pref","getOwnPropertyNamesModule","newPromiseCapability","promiseCapability","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","re1","re2","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","groups","sticky","charsAdded","strCopy","multiline","hasIndices","ignoreCase","dotAll","$RegExp","MISSED_STICKY","TAG","SHARED","copyright","license","aConstructor","defaultConstructor","toIntegerOrInfinity","requireObjectCoercible","charCodeAt","CONVERT_TO_STRING","codeAt","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","fromCharCode","digitToBasic","digit","adapt","numPoints","firstTime","baseMinusTMin","encode","output","ucs2decode","inputLength","bias","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","encoded","integer","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","toPrimitive","postfix","random","NATIVE_SYMBOL","passed","required","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","description","addToUnscopables","defineIterator","ARRAY_ITERATOR","setInternalState","iterated","Arguments","NativePromiseConstructor","speciesConstructor","promiseResolve","NativePromisePrototype","real","onFinally","STRING_ITERATOR","fixRegExpWellKnownSymbolLogic","advanceStringIndex","getSubstitution","regExpExec","REPLACE","stringIndexOf","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","maybeCallNative","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","rx","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","replacerArgs","DOMIterables","ArrayIteratorMethods","ArrayValues","handlePrototype","CollectionPrototype","COLLECTION_NAME","METHOD_NAME","USE_NATIVE_URL","redefineAll","anInstance","$toString","validateArgumentsLength","arraySort","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","safeGetBuiltIn","nativeFetch","NativeRequest","Headers","RequestPrototype","HeadersPrototype","decodeURIComponent","plus","percentSequence","bytes","percentDecode","deserialize","replacements","serialize","URLSearchParamsIterator","URLSearchParamsState","parseQuery","bindURL","entryIterator","entryNext","attribute","updateURL","URLSearchParamsConstructor","URLSearchParamsPrototype","found","boundFunction","headersHas","headersSet","wrapRequestOptions","RequestConstructor","Request","EOF","arrayFrom","toASCII","URLSearchParamsModule","getInternalURLState","getInternalSearchParamsState","NativeURL","numberToString","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","serializeHost","compress","ignore0","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","C0ControlPercentEncodeSet","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","percentEncode","specialSchemes","ftp","file","http","https","ws","wss","isWindowsDriveLetter","startsWithWindowsDriveLetter","third","isSingleDot","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","URLState","isBase","baseState","urlString","stateOverride","codePoints","bufferCodePoints","pointer","seenAt","seenBracket","seenPasswordToken","scheme","password","port","cannotBeABaseURL","isSpecial","includesCredentials","codePoint","encodedCodePoints","parseHost","shortenPath","numbersSeen","ipv4Piece","swaps","swap","pieceIndex","parseIPv6","partsLength","part","radix","ipv4","parseIPv4","cannotHaveUsernamePasswordPort","pathSize","setHref","getOrigin","URLConstructor","getProtocol","setProtocol","getUsername","setUsername","getPassword","setPassword","getHost","setHost","getHostname","setHostname","hostname","getPort","setPort","getPathname","setPathname","getSearch","setSearch","getSearchParams","getHash","setHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","endVal","startVal","useEasing","smartEasingThreshold","smartEasingAmount","enableScrollSpy","scrollSpyDelay","finalEndVal","countDown","paused","frameVal","easingFn","printValue","rAF","numerals","formattingFn","validateValue","resetDuration","onScrollFns","onscroll","determineDirectionAndSmartEasing","pauseResume","ensureNumber","useVedic","errorOnInvalid","fromCents","negativePattern","distribute","dollars","cents","ce","origPrevent","bubbles","createEvent","initCustomEvent","Event","dateLongFormatter","timeLongFormatter","dateTimeFormat","datePattern","timePattern","dateTime","startOfUTCISOWeekYear","getUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCWeekYear","firstWeek","firstWeekOfNextYear","firstWeekOfThisYear","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","dirtyNumber","dayOfMonth","endOfDesiredMonth","daysInMonth","MILLISECONDS_IN_DAY","differenceInCalendarDays","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","compareLocalAsc","isLastDayNotFull","addLeadingZeros","targetLength","signedYear","numberOfDigits","formatTimezoneShort","dirtyDelimiter","absOffset","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","localize","lightFormatters","signedWeekYear","weekYear","startOfYearTimestamp","getUTCDayOfYear","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","_localize","timezoneOffset","_originalDate","originalDate","dirtyFormatStr","formatStr","formatterOptions","isDate","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","findKey","predicate","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_baseDate","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","any","argStr","SelectorSet","selectors","selectorObjects","indexes","activeIndexes","docElem","oMatchesSelector","idRe","sel","classRe","baseVal","tagRe","chunker","parseSelectorIndexes","allIndexes","dup","allIndexesLen","findByPrototype","ary","sortById","logDefaultIndexUsed","indexProto","selectorIndexes","selectorIndex","selIndex","removedIds","removeAll","queryAll","len2","len3","matchedIds","bubbleEvents","captureEvents","propagationStopped","immediatePropagationStopped","currentTargets","currentTargetDesc","subject","verb","trackPropagation","trackImmediate","getCurrentTarget","defineCurrentTarget","eventPhase","canDispatch","_matches","observers","len1","arrow","composeClassName_1","group_1","isAtTop","bodyAtTop","isAtBottom","bodyAtBottom","isScrollable","bodyScrollable","styleAttr","maxBodyHeight","itemsList","groupState","gradientTop","gradientBottom","option_1","groupDisabled","hasLabel","groupHasLabel","groupLabel","optionState","arrow_1","selectedOption","optionSelected","focusedOption","optionFocused","optionDisabled","body_1","head_1","rootDisabled","isInvalid","rootInvalid","rootOpen","isFocused","rootFocused","rootHasValue","isOpenAbove","rootOpenAbove","isOpenBelow","rootOpenBelow","isUseNativeMode","rootNative","isPlaceholderShown","humanReadableValue","showPlaceholderWhenOpen","closeOnSelect","clampMaxVisibleItems","seal","onOptionClick","Behavior_1","Callbacks_1","ClassNames_1","helpful_merge_1","Config_1","bindEvents_1","Renderer_1","dispatchOpen_1","pollForSelectChange_1","pollForSelectMutation_1","closeOthers_1","scrollToView_1","StateManager_1","StateMapper_1","cache_1","Timers_1","Easydropdown","selectElement","mapFromSelect","renderer","dom","timers","proxyActions","closeOthers","scrollToView","handleStateUpdate","eventBindings","pollChangeIntervalId","pollMutationIntervalId","nextValue","queryDomRefs","binding","unbind","cacheIndex","getOptionFromIndex","focusedIndex","implementation","Timers","clearInterval","Easydropdown_1","EasydropdownFacade_1","selectElementOrSelector","cache_2","cachedInstance","factoryFn","decoratedFactory","selects","UP","DOWN","SPACE","ENTER","ESC","OPTION","EventBinding","eventBindingRaw","boundHandler","closestParent_1","Selectors","optionIndex","selectOption","startClickSelecting","isKeying","focusOption","getIsMobilePlatform_1","handleHeadClick","injectedGetIsMobilePlatform","isMobilePlatform","isClosed","boundHandleHeadClick","topOut","bottomOut","blur","isClickSelecting","killSelectReaction_1","KeyCodes","handleSelectKeydownDown_1","handleSelectKeydownUp_1","handlerParams","isSearching","metaKey","iterations","incrementAmount","totalOptions","searchResetDuration","searchTimeoutId","resetSearch","throttle_1","EventBinding_1","getEventsList_1","bindEvent","eventBinding","handleBodyClick_1","handleBodyMousedown_1","handleBodyMouseover_1","handleHeadClick_1","handleItemsListScroll_1","handleSelectBlur_1","handleSelectFocus_1","handleSelectInvalid_1","handleSelectKeydown_1","handleSelectKeypress_1","handleWindowClick_1","handleWindowClick_2","AttributeChangeType","DomChangeType","Dom","sumItemsHeight","newInnerHtml","newTextContent","attributeChanges","childCommands","root_1","createDomElementFromHtml_1","Dom_1","domDiff_1","domPatch_1","Renderer","rootElement","injectSelect","nextHtml","nextRoot","diffCommand","syncSelectWithValue","tempSelect","localDom","AttributeChangeType_1","DomChangeType_1","PatchCommand_1","diffAttributeChanges","totalAttributes","attributesMap","undef","attr1","attr2","attr","ADD","REMOVE","EDIT","OUTER","domDiff","totalChildNodes","command","NONE","Text","INNER","outerHTML","FULL","childNode","patchAttributes","raf","patchAttribute","domPatch","childCommand","CollisionType","includeSelf","CollisionType_1","mapCollisionData","deltaTop","deltaBottom","maxVisibleItemsOverride","largestDelta","TOP","BOTTOM","bbHead","wh","detectBodyCollision_1","dispatchOpen","injectedDetectBodyCollision","collisionData","boundDispatchOpen","isAndroid","isOperaMini","isWindowsPhone","keyingTimeoutId","keying","resetKeying","lastValue","setInterval","getOptionIndexFromValue","handleMutation","lastOuterHtml","timerId","later","BodyStatus","ScrollStatus","Group","thisInstance","currentScrollTop","optionOffsetTop","optionHeight","bodyHeight","scrollToMiddle","BodyStatus_1","ScrollStatus_1","Group_1","Option_1","State","stateRaw","scrollStatus","AT_TOP","bodyStatus","CLOSED","groupRaw","optionRaw","hasPlaceholder","OPEN_ABOVE","OPEN_BELOW","AT_BOTTOM","groupStartIndex","resolveActions_1","StateManager","injectedActions","stateProxy","createStateProxy","getPropertyDescriptorsFromValue","localDescriptors","isAccessorProperty","readPropertyValue","updatePropertyValue","State_1","StateMapper","isWithinGroup","HTMLOptionElement","mapGroup","lastGroup","mapOption","HTMLOptGroupElement","groupChild","isParentGroupDisabled","SCROLLED","makeScrollable","makeUnscrollable","collisionType","optionAtIndex","shouldScrollToView","useNative","factory_1","Events","EE","_events","_eventsCount","clearEvent","EventEmitter","eventNames","listenerCount","a2","a3","a4","a5","prefixed","ArrayStrategy_1","Messages","deep","useReferenceIfTargetUnset","useReferenceIfArray","preserveTypeIfTargetUnset","includeReadOnly","includeNonEmurable","arrayStrategy","MERGE_ERROR","ArrayStrategy","merge_1","FluentMerge","with","offender","suggestion","TYPE_ERROR_TARGET","TYPE_ERROR_SOURCE","INVALID_ARRAY_STRATEGY","strategy","reduceBestMatch","offendingKeyLower","offendingKey","currBestMatch","currKey","totalMatching","getTotalMatching","possibleKey","longer","shorter","leftPointer","leftInnerPointer","leftTotalMatching","lastCommonIndex","rightPointer","rightInnerPointer","rightTotalMatching","longerLastIndex","shorterLastIndex","isSealed","bestMatch","deriveCustomTypeInstance_1","FluentMerge_1","handleMergeError_1","isClientSide","PUSH","sourceKeys_1","createFluent","lgThumbnail","thumbnailDefaults","animateThumb","currentPagerPosition","thumbWidth","thumbContHeight","thumbMargin","exThumbImage","showThumbByDefault","toggleThumb","pullCaptionUp","enableThumbDrag","enableThumbSwipe","swipeThreshold","loadYoutubeThumbnail","youtubeThumbSize","loadVimeoThumbnail","vimeoThumbSize","loadDailymotionThumbnail","Thumbnail","core","thumbOuter","thumbOuterWidth","thumbTotalWidth","thumbIndex","utils","addClass","isTouch","doCss","thumbClickable","thumbkeyPress","$thumb","thumbList","vimeoErrorThumbSize","getThumb","thumb","thumbImg","isVideo","vimeoId","youtube","vimeo","dailymotion","vimeoVideoId","removeClass","lgBusy","slide","setTranslate","setVendor","lGalleryOn","hasClass","startCoords","endCoords","isDraging","isMoved","tempLeft","pageX","lgScript","getElementsByClassName","lgModules","mod","lgUtils","customEvent","Listener","_event","lightgallery","_lgUtils","_lgUtils2","__esModule","cssEasing","startClass","backdropDuration","hideBarsDelay","useLeft","ariaLabelledby","ariaDescribedby","closable","escKey","keyPress","slideEndAnimatoin","hideControlOnEnd","getCaptionFromTitleOrAlt","appendSubHtmlTo","subHtmlSelectorRelative","preload","showAfterLoad","selectWithin","prevHtml","iframeMaxWidth","appendCounterTo","enableSwipe","enableDrag","galleryId","supportLegacyBrowser","hideBartimeout","___slide","_hash","structure","closeGallery","initialHideBarTimeout","template","subHtmlCont","setTop","prevScrollTop","wH","lGallery","support","html5","vk","addHtml","currentEle","subHtml","fL","loadContent","rec","_img","_src","_poster","_srcset","_sizes","_html","_alt","_hasPoster","getResponsiveSrc","srcItms","rsWidth","rsSrc","__src","wWidth","poster","alt","srcset","sizes","_isVideo","videoClass","picturefill","_speed","fromTouch","fromThumb","_prevIndex","_time","_next","_prev","downloadUrl","prevIndex","arrowDisable","touchPrev","touchNext","goToNextSlide","goToPrevSlide","xValue","yValue","touchMove","manageSwipeClass","mousedown","lguid","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","getNative","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","__data__","Uint8Array","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseAssignValue","objValue","objectCreate","baseCreate","baseFor","createBaseFor","getRawTag","objectToString","symToStringTag","baseGetTag","isObjectLike","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","isLength","typedArrayTags","isPrototype","nativeKeysIn","isProto","assignMergeValue","baseMergeDeep","keysIn","safeGet","baseMerge","srcIndex","customizer","srcValue","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArrayLikeObject","isPlainObject","mergeFunc","isCommon","isTyped","overRest","setToString","constant","baseSetToString","iteratee","trimmedEndIndex","reTrimStart","byteLength","freeExports","freeModule","Buffer","allocUnsafe","isDeep","cloneArrayBuffer","typedArray","byteOffset","assignValue","coreJsData","baseRest","isIterateeCall","assigner","guard","fromRight","keysFunc","iterable","freeGlobal","isKeyable","baseIsNative","getValue","getPrototype","overArg","nativeObjectToString","isOwn","unmasked","nativeCreate","reIsUint","isArrayLike","maskSrcKey","Ctor","assocIndexOf","getMapData","freeProcess","nodeUtil","types","nativeMax","otherArgs","freeSelf","shortOut","nativeNow","lastCalled","stamp","pairs","LARGE_ARRAY_SIZE","reWhitespace","baseSlice","nativeCeil","resIndex","toNumber","nativeMin","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","isInvoking","flush","baseIsArguments","stubFalse","objectCtorString","baseIsTypedArray","baseUnary","nodeIsTypedArray","arrayLikeKeys","baseKeysIn","createAssigner","toFinite","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","copyObject","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","componentName","propFullName","secret","getShim","ReactPropTypes","bigint","arrayOf","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","aa","ba","da","ea","ha","ia","ja","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","setAttributeNS","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","displayName","Qa","_render","Ra","_payload","Sa","Ta","Va","_valueTracker","setValue","stopTracking","Ua","Wa","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","eb","Children","db","defaultSelected","gb","hb","ib","jb","kb","lb","mb","nb","ob","namespaceURI","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","orphans","tabSize","widows","zIndex","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","rb","sb","tb","ub","menuitem","br","embed","hr","img","keygen","link","track","wbr","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","bc","dc","ec","fc","hc","ic","jc","kc","lc","mc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","targetContainers","sc","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","charCode","pd","qd","rd","_reactName","_targetInst","returnValue","isPersistent","wd","xd","yd","sd","timeStamp","isTrusted","td","ud","vd","Ad","screenX","screenY","pageY","ctrlKey","altKey","getModifierState","zd","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","changedTouches","Xd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","be","documentMode","de","fe","ge","tel","qe","ve","we","xe","ye","ze","oninput","Ae","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","Le","Me","compareDocumentPosition","Ne","HTMLIFrameElement","Oe","contentEditable","Pe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Ye","Ze","Yb","$e","af","bf","cf","df","Nb","ef","ff","gf","hf","je","char","ke","jf","kf","lf","mf","autoFocus","nf","of","pf","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","childContextTypes","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","cg","dg","eg","gg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","firstBaseUpdate","lastBaseUpdate","pending","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","Mg","updater","Ng","UNSAFE_componentWillReceiveProps","Og","UNSAFE_componentWillMount","Pg","Qg","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","hh","ih","memoizedProps","jh","kh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","subscribe","setSnapshot","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","di","readContext","useCallback","useContext","useImperativeHandle","useMemo","useReducer","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","ii","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","unstable_avoidThisFallback","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tail","tailMode","Ai","Fi","Gi","wasMultiple","onclick","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","extend","removeAllRanges","addRange","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","hk","_calculateChangedBits","unstable_observedBits","Vj","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","supportsFiber","inject","findDOMNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","jsx","jsxs","StrictMode","Profiler","Suspense","escape","_status","_result","IsSomeRendererActing","toArray","only","_currentValue2","_threadCount","createFactory","isValidElement","lazy","memo","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","postMessage","sortIndex","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","stickyFooter","closeLabel","modalBoxFooter","modalBox","modalCloseBtn","modalCloseBtnIcon","modalCloseBtnLabel","modalBoxContent","clickCloseBtn","clickOverlay","checkOverflow","keyboardNav","addFooter","_busy","_isBusy","_scrollPosition","setStickyFooter","getContent","setFooterContent","getFooterContent","isOverflow","addFooterBtn","extendStatics","__extends","define","runValidations","isPromise","processValidationResults","isEmpty","EMPTY_STRING_REGEXP","validatorName","validators","validatorOptions","isDomElement","isJqueryElement","collectFormValues","getDeepObjectValue","globalOptions","pruneEmptyErrors","expandMultipleErrors","convertErrorMessages","WrapErrors","wrapErrors","cleanAttributes","waitForResults","single","fullMessages","isInteger","isBoolean","isDefined","isString","jquery","vals","FORMAT_REGEXP","m2","prettify","stringifyValue","isHash","unique","forEachKeyInKeypath","keypath","sanitizeFormValue","_val","nullify","capitalize","errorInfo","groupErrorsByAttribute","flattenErrorsToArray","whitelist","whitelistCreator","cleanRecursive","ow","buildObjectWhitelist","exposeModule","amd","allowEmpty","maximum","minimum","tokenizer","wrongLength","tooShort","tooLong","notValid","numericality","checks","greaterThan","greaterThanOrEqualTo","equalTo","lessThan","lessThanOrEqualTo","divisibleBy","strict","onlyInteger","noStrings","notInteger","odd","notOdd","even","notEven","earliest","latest","dateOnly","tooEarly","tooLate","inclusion","within","exclusion","PATTERN","equality","schemes","allowLocal","allowDataUrl","tld","originalOptions","detailed","flat","make","xports","win","doc","mq","viewportW","viewportH","viewport","rectangle","cushion","coords","calibrate","installedModules","moduleId","loaded","ask","ignoreKeys","specificKeys","registerOnChange","unRegisterOnChange","currentElement","currentInput","currentIntent","currentTimestamp","shouldPersist","formInputs","functionList","ignoreMap","specificMap","inputMap","keydown","keyup","mousemove","MSPointerDown","MSPointerMove","isScrolling","mousePos","pointerMap","supportsPassive","setPersist","sessionStorage","getItem","doUpdate","setInput","eventKey","ignoreMatch","specificMatch","shouldUpdate","validateTouch","persistInput","activeElem","checkClosest","fireFunctions","setIntent","detectScrolling","setElement","clearElement","setItem","touchIsValid","detectWheel","onmousewheel","elem","ElementPrototype","PointerEvent","MSPointerEvent","opt","objPos","clearStorage","webpackContext","req","webpackContextResolve","__webpack_require__","converter","defaultAttributes","toUTCString","stringifiedAttributes","cookie","cookies","jar","foundKey","withAttributes","withConverter","ssrDocument","initEvent","importNode","ssrWindow","replaceState","pushState","go","back","Image","Dom7","makeReactive","arrayFlat","arrayFilter","toCreate","tempParent","qsa","uniqueArray","arrayUnique","noTrigger","shortcut","Methods","toggleClass","attrs","attrName","removeAttr","handleLiveEvent","eventData","dom7EventData","dom7LiveListeners","proxyListener","dom7Listeners","dom7proxy","transitionEnd","fireCallBack","includeMargins","clientTop","clientLeft","compareWith","returnIndex","newChild","tempDiv","prepend","nextAll","nextEls","prevAll","prevEls","foundElements","methodName","nextTick","noExtend","keysArray","nextKey","desc","__swiper__","varName","varValue","animateCSSModeScroll","targetPosition","side","startPosition","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","easeProgress","currentPosition","deviceCached","browser","getSupport","smoothScroll","touch","DocumentTouch","passiveListener","gestures","calcSupport","eventsListeners","destroyed","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","updateSlides","getDirectionLabel","getDirectionPropertyValue","$wrapperEl","swiperSize","rtlTranslate","wrongRTL","isVirtual","virtual","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","shouldResetSlideSize","updateSlide","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","roundLengths","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","activeIndex","swiperSlideOffset","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","slideTo","internal","indexAsNumber","animating","preventInteractionOnTransition","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","isH","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalizedSnapGrid","prevSnap","prevSnapIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","touchEventsData","originalEvent","touchEventsTarget","isTouchEvent","isTouched","swipingClassHasValue","noSwipingClass","eventPath","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","targetTouch","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","touchAngle","touchMoveStopPropagation","nested","startTranslate","getTranslate","allowMomentumBounce","grabCursor","setGrabCursor","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","setBreakpoint","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","dummyEventAttached","dummyEventListener","touchEvents","device","domMethod","swiperMethod","passiveListeners","updateOnWindowResize","ios","android","attachEvents","detachEvents","isGridEnabled","addClasses","suffixes","resultClasses","prepareClasses","emitContainerClasses","removeClasses","initialSlide","resizeObserver","createElements","virtualTranslate","breakpointsBase","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlidesLimit","loopFillGroupWithBlank","slideBlankClass","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","loopCreate","$selector","blankSlidesNum","blankNode","prependSlides","appendSlides","loopDestroy","moving","isLocked","unsetGrabCursor","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","minRatio","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","checkForComplete","image","onReady","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","newParams","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getDevice","isWebView","calcBrowser","__modules__","extendParams","swiperParams","passedParams","eventName","velocity","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mounted","getWrapperSelector","getWrapper","deleteInstance","cleanStyles","deleteProps","static","newDefaults","installModule","prototypeGroup","protoMethod","use","animationFrame","resizeHandler","orientationChangeHandler","contentBoxSize","inlineSize","blockSize","unobserve","WebkitMutationObserver","mutations","observerUpdate","characterData","observeParents","observeSlideChildren","containerParents","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","rtlFactor","sX","sY","pX","pY","HORIZONTAL_AXIS","spinX","spinY","pixelX","pixelY","ignoreWheelEvents","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","releaseScroll","createElementIfNotDefined","checkProps","getEl","toggleEl","disabledClass","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetEl","classesToSelector","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","paginationType","midIndex","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scaleX","scaleY","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","$dragEl","newPos","getPointerPosition","setDragPosition","positionRatio","onDragStart","onDragMove","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","scrollbarDisabledClass","LinearSpline","minIndex","guess","i3","removeSpline","spline","inverse","by","_t","controlledTranslate","setControlledTranslate","getInterpolateFunction","setControlledTransition","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notification","makeElFocusable","makeElNotFocusable","addElRole","addElRoleDescription","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","hasPagination","hasClickablePagination","initNavEl","wrapperId","addElControls","handlePointerDown","handlePointerUp","handleFocus","sourceCapabilities","firesTouchEvents","$slideEl","$containerEl","getRandomNumber","live","addElLive","updateNavigation","bulletEl","updatePagination","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","waitForTransition","onTransitionEnd","onVisibilityChange","visibilityState","disableOnInteraction","pauseOnMouseEnter","Thumb","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","effectParams","transformEl","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","slideShadows","tx","ty","slideOpacity","allSlides","$transitionEndTarget","eventTriggered","triggerEvents"],"sourceRoot":""}