{"version":3,"file":"js/714-e2efbe26d6fda715d7e2.js","mappings":"wJAIA,MAAMA,EACFC,YAAYC,EAAaC,EAAWC,GAChCC,KAAKH,YAAcA,EACnBG,KAAKF,UAAYA,EACjBE,KAAKD,aAAeA,EACpBC,KAAKC,kBAAoB,IAAIC,IAEjCC,UACIH,KAAKH,YAAYO,iBAAiBJ,KAAKF,UAAWE,KAAMA,KAAKD,cAEjEM,aACIL,KAAKH,YAAYS,oBAAoBN,KAAKF,UAAWE,KAAMA,KAAKD,cAEpEQ,iBAAiBC,GACbR,KAAKC,kBAAkBQ,IAAID,GAE/BE,oBAAoBF,GAChBR,KAAKC,kBAAkBU,OAAOH,GAElCI,YAAYC,GACR,MAAMC,EAiBd,SAAqBD,GACjB,GAAI,gCAAiCA,EACjC,OAAOA,EAEN,CACD,MAAM,yBAAEE,GAA6BF,EACrC,OAAOG,OAAOC,OAAOJ,EAAO,CACxBK,6BAA6B,EAC7BH,2BACIf,KAAKkB,6BAA8B,EACnCH,EAAyBI,KAAKnB,UA3BhBoB,CAAYP,GAClC,IAAK,MAAML,KAAWR,KAAKqB,SAAU,CACjC,GAAIP,EAAcI,4BACd,MAGAV,EAAQI,YAAYE,IAI5BO,eACA,OAAOC,MAAMC,KAAKvB,KAAKC,mBAAmBuB,MAAK,CAACC,EAAMC,KAClD,MAAMC,EAAYF,EAAKG,MAAOC,EAAaH,EAAME,MACjD,OAAOD,EAAYE,GAAc,EAAIF,EAAYE,EAAa,EAAI,MAoB9E,MAAMC,EACFlC,YAAYmC,GACR/B,KAAK+B,YAAcA,EACnB/B,KAAKgC,kBAAoB,IAAIC,IAC7BjC,KAAKkC,SAAU,EAEnBC,QACSnC,KAAKkC,UACNlC,KAAKkC,SAAU,EACflC,KAAKoC,eAAeC,SAAQC,GAAiBA,EAAcnC,aAGnEoC,OACQvC,KAAKkC,UACLlC,KAAKkC,SAAU,EACflC,KAAKoC,eAAeC,SAAQC,GAAiBA,EAAcjC,gBAG/D+B,qBACA,OAAOd,MAAMC,KAAKvB,KAAKgC,kBAAkBQ,UACpCC,QAAO,CAACC,EAAWC,IAAQD,EAAUE,OAAOtB,MAAMC,KAAKoB,EAAIH,YAAY,IAEhFjC,iBAAiBC,GACbR,KAAK6C,6BAA6BrC,GAASD,iBAAiBC,GAEhEE,oBAAoBF,GAChBR,KAAK6C,6BAA6BrC,GAASE,oBAAoBF,GAEnEsC,YAAYC,EAAOC,EAASC,EAAS,IACjCjD,KAAK+B,YAAYe,YAAYC,EAAO,SAASC,IAAWC,GAE5DJ,6BAA6BrC,GACzB,MAAM,YAAEX,EAAW,UAAEC,EAAS,aAAEC,GAAiBS,EACjD,OAAOR,KAAKkD,mBAAmBrD,EAAaC,EAAWC,GAE3DmD,mBAAmBrD,EAAaC,EAAWC,GACvC,MAAMoD,EAAmBnD,KAAKoD,oCAAoCvD,GAC5DwD,EAAWrD,KAAKqD,SAASvD,EAAWC,GAC1C,IAAIuC,EAAgBa,EAAiBG,IAAID,GAKzC,OAJKf,IACDA,EAAgBtC,KAAKuD,oBAAoB1D,EAAaC,EAAWC,GACjEoD,EAAiBK,IAAIH,EAAUf,IAE5BA,EAEXiB,oBAAoB1D,EAAaC,EAAWC,GACxC,MAAMuC,EAAgB,IAAI3C,EAAcE,EAAaC,EAAWC,GAIhE,OAHIC,KAAKkC,SACLI,EAAcnC,UAEXmC,EAEXc,oCAAoCvD,GAChC,IAAIsD,EAAmBnD,KAAKgC,kBAAkBsB,IAAIzD,GAKlD,OAJKsD,IACDA,EAAmB,IAAIlB,IACvBjC,KAAKgC,kBAAkBwB,IAAI3D,EAAasD,IAErCA,EAEXE,SAASvD,EAAWC,GAChB,MAAM0D,EAAQ,CAAC3D,GAIf,OAHAkB,OAAO0C,KAAK3D,GAAcyB,OAAOa,SAAQsB,IACrCF,EAAMG,KAAK,GAAG7D,EAAa4D,GAAO,GAAK,MAAMA,QAE1CF,EAAMI,KAAK,MAI1B,MAAMC,EAAoB,4DAY1B,SAASC,EAAiBC,GACtB,MAAuB,UAAnBA,EACOC,OAEiB,YAAnBD,EACEE,cADN,EAgBT,SAASC,EAASC,GACd,OAAOA,EAAMC,QAAQ,uBAAuB,CAACC,EAAGC,IAASA,EAAKC,gBAElE,SAASC,EAAWL,GAChB,OAAOA,EAAMM,OAAO,GAAGF,cAAgBJ,EAAMO,MAAM,GAEvD,SAASC,EAAUR,GACf,OAAOA,EAAMC,QAAQ,YAAY,CAACC,EAAGC,IAAS,IAAIA,EAAKM,kBAgD3D,MAAMC,EAAoB,CACtB,EAAKC,GAAK,QACV,OAAUA,GAAK,QACf,KAAQA,GAAK,SACb,QAAWA,GAAK,SAChB,MAASA,GAA+B,UAA1BA,EAAEC,aAAa,QAAsB,QAAU,QAC7D,OAAUD,GAAK,SACf,SAAYA,GAAK,SAQrB,SAAShC,EAAMC,GACX,MAAM,IAAIiC,MAAMjC,GAEpB,SAASkC,EAASd,GACd,IACI,OAAOe,KAAKC,MAAMhB,GAEtB,MAAOiB,GACH,OAAOjB,GAIf,MAAMkB,EACF1F,YAAY2F,EAASC,GACjBxF,KAAKuF,QAAUA,EACfvF,KAAKwF,OAASA,EAEd5D,YACA,OAAO5B,KAAKwF,OAAO5D,MAEnB/B,kBACA,OAAOG,KAAKwF,OAAO3F,YAEnBE,mBACA,OAAOC,KAAKwF,OAAOzF,aAEnB0F,iBACA,OAAOzF,KAAKuF,QAAQE,WAExB7E,YAAYC,GACJb,KAAK0F,qBAAqB7E,IAC1Bb,KAAK2F,gBAAgB9E,GAGzBf,gBACA,OAAOE,KAAKwF,OAAO1F,UAEnB8F,aACA,MAAMA,EAAS5F,KAAK6F,WAAW7F,KAAK8F,YACpC,GAAqB,mBAAVF,EACP,OAAOA,EAEX,MAAM,IAAIX,MAAM,WAAWjF,KAAKwF,wCAAwCxF,KAAK8F,eAEjFH,gBAAgB9E,GACZ,MAAM,OAAEkF,EAAM,cAAEC,GAAkBnF,EAClC,IACI,MAAM,OAAEoF,GAAWjG,KAAKwF,OAClBU,EAAclF,OAAOC,OAAOJ,EAAO,CAAEoF,OAAAA,IAC3CjG,KAAK4F,OAAOzE,KAAKnB,KAAK6F,WAAYK,GAClClG,KAAKuF,QAAQY,iBAAiBnG,KAAK8F,WAAY,CAAEjF,MAAAA,EAAOkF,OAAAA,EAAQC,cAAAA,EAAeR,OAAQxF,KAAK8F,aAEhG,MAAO/C,GACH,MAAM,WAAE0C,EAAU,WAAEI,EAAU,QAAEO,EAAO,MAAExE,GAAU5B,KAC7CiD,EAAS,CAAEwC,WAAAA,EAAYI,WAAAA,EAAYO,QAAAA,EAASxE,MAAAA,EAAOf,MAAAA,GACzDb,KAAKuF,QAAQzC,YAAYC,EAAO,oBAAoB/C,KAAKwF,UAAWvC,IAG5EyC,qBAAqB7E,GACjB,MAAMhB,EAAcgB,EAAMkF,OAC1B,OAAI/F,KAAKoG,UAAYvG,IAGZA,aAAuBwG,SAAWrG,KAAKoG,QAAQE,SAASzG,GACtDG,KAAKuG,MAAMC,gBAAgB3G,GAG3BG,KAAKuG,MAAMC,gBAAgBxG,KAAKwF,OAAOY,UAGlDP,iBACA,OAAO7F,KAAKuF,QAAQM,WAEpBC,iBACA,OAAO9F,KAAKwF,OAAOM,WAEnBM,cACA,OAAOpG,KAAKuG,MAAMH,QAElBG,YACA,OAAOvG,KAAKuF,QAAQgB,OAI5B,MAAME,EACF7G,YAAYwG,EAASM,GACjB1G,KAAK2G,qBAAuB,CAAEC,YAAY,EAAMC,WAAW,EAAMC,SAAS,GAC1E9G,KAAKoG,QAAUA,EACfpG,KAAKkC,SAAU,EACflC,KAAK0G,SAAWA,EAChB1G,KAAK+G,SAAW,IAAI7G,IACpBF,KAAKgH,iBAAmB,IAAIC,kBAAkBC,GAAclH,KAAKmH,iBAAiBD,KAEtF/E,QACSnC,KAAKkC,UACNlC,KAAKkC,SAAU,EACflC,KAAKgH,iBAAiBI,QAAQpH,KAAKoG,QAASpG,KAAK2G,sBACjD3G,KAAKqH,WAGbC,MAAMC,GACEvH,KAAKkC,UACLlC,KAAKgH,iBAAiB3G,aACtBL,KAAKkC,SAAU,GAEnBqF,IACKvH,KAAKkC,UACNlC,KAAKgH,iBAAiBI,QAAQpH,KAAKoG,QAASpG,KAAK2G,sBACjD3G,KAAKkC,SAAU,GAGvBK,OACQvC,KAAKkC,UACLlC,KAAKgH,iBAAiBQ,cACtBxH,KAAKgH,iBAAiB3G,aACtBL,KAAKkC,SAAU,GAGvBmF,UACI,GAAIrH,KAAKkC,QAAS,CACd,MAAMuF,EAAU,IAAIvH,IAAIF,KAAK0H,uBAC7B,IAAK,MAAMtB,KAAW9E,MAAMC,KAAKvB,KAAK+G,UAC7BU,EAAQE,IAAIvB,IACbpG,KAAK4H,cAAcxB,GAG3B,IAAK,MAAMA,KAAW9E,MAAMC,KAAKkG,GAC7BzH,KAAK6H,WAAWzB,IAI5Be,iBAAiBD,GACb,GAAIlH,KAAKkC,QACL,IAAK,MAAM4F,KAAYZ,EACnBlH,KAAK+H,gBAAgBD,GAIjCC,gBAAgBD,GACS,cAAjBA,EAASE,KACThI,KAAKiI,uBAAuBH,EAAS/B,OAAQ+B,EAASI,eAEhC,aAAjBJ,EAASE,OACdhI,KAAKmI,oBAAoBL,EAASM,cAClCpI,KAAKqI,kBAAkBP,EAASQ,aAGxCL,uBAAuBM,EAAML,GACzB,MAAM9B,EAAUmC,EACZvI,KAAK+G,SAASY,IAAIvB,GACdpG,KAAK0G,SAAS8B,yBAA2BxI,KAAKyI,aAAarC,GAC3DpG,KAAK0G,SAAS8B,wBAAwBpC,EAAS8B,GAG/ClI,KAAK4H,cAAcxB,GAGlBpG,KAAKyI,aAAarC,IACvBpG,KAAK6H,WAAWzB,GAGxB+B,oBAAoBO,GAChB,IAAK,MAAMH,KAAQjH,MAAMC,KAAKmH,GAAQ,CAClC,MAAMtC,EAAUpG,KAAK2I,gBAAgBJ,GACjCnC,GACApG,KAAK4I,YAAYxC,EAASpG,KAAK4H,gBAI3CS,kBAAkBK,GACd,IAAK,MAAMH,KAAQjH,MAAMC,KAAKmH,GAAQ,CAClC,MAAMtC,EAAUpG,KAAK2I,gBAAgBJ,GACjCnC,GAAWpG,KAAK6I,gBAAgBzC,IAChCpG,KAAK4I,YAAYxC,EAASpG,KAAK6H,aAI3CY,aAAarC,GACT,OAAOpG,KAAK0G,SAAS+B,aAAarC,GAEtCsB,oBAAoBoB,EAAO9I,KAAKoG,SAC5B,OAAOpG,KAAK0G,SAASgB,oBAAoBoB,GAE7CF,YAAYE,EAAMC,GACd,IAAK,MAAM3C,KAAWpG,KAAK0H,oBAAoBoB,GAC3CC,EAAU5H,KAAKnB,KAAMoG,GAG7BuC,gBAAgBJ,GACZ,GAAIA,EAAKS,UAAYC,KAAKC,aACtB,OAAOX,EAGfM,gBAAgBzC,GACZ,OAAIA,EAAQ+C,aAAenJ,KAAKoG,QAAQ+C,aAI7BnJ,KAAKoG,QAAQE,SAASF,GAGrCyB,WAAWzB,GACFpG,KAAK+G,SAASY,IAAIvB,IACfpG,KAAK6I,gBAAgBzC,KACrBpG,KAAK+G,SAAStG,IAAI2F,GACdpG,KAAK0G,SAAS0C,gBACdpJ,KAAK0G,SAAS0C,eAAehD,IAK7CwB,cAAcxB,GACNpG,KAAK+G,SAASY,IAAIvB,KAClBpG,KAAK+G,SAASpG,OAAOyF,GACjBpG,KAAK0G,SAAS2C,kBACdrJ,KAAK0G,SAAS2C,iBAAiBjD,KAM/C,MAAMkD,EACF1J,YAAYwG,EAAS8B,EAAexB,GAChC1G,KAAKkI,cAAgBA,EACrBlI,KAAK0G,SAAWA,EAChB1G,KAAKuJ,gBAAkB,IAAI9C,EAAgBL,EAASpG,MAEpDoG,cACA,OAAOpG,KAAKuJ,gBAAgBnD,QAE5BoD,eACA,MAAO,IAAIxJ,KAAKkI,iBAEpB/F,QACInC,KAAKuJ,gBAAgBpH,QAEzBmF,MAAMC,GACFvH,KAAKuJ,gBAAgBjC,MAAMC,GAE/BhF,OACIvC,KAAKuJ,gBAAgBhH,OAEzB8E,UACIrH,KAAKuJ,gBAAgBlC,UAErBnF,cACA,OAAOlC,KAAKuJ,gBAAgBrH,QAEhCuG,aAAarC,GACT,OAAOA,EAAQqD,aAAazJ,KAAKkI,eAErCR,oBAAoBoB,GAChB,MAAMY,EAAQ1J,KAAKyI,aAAaK,GAAQ,CAACA,GAAQ,GAC3CrB,EAAUnG,MAAMC,KAAKuH,EAAKa,iBAAiB3J,KAAKwJ,WACtD,OAAOE,EAAM9G,OAAO6E,GAExB2B,eAAehD,GACPpG,KAAK0G,SAASkD,yBACd5J,KAAK0G,SAASkD,wBAAwBxD,EAASpG,KAAKkI,eAG5DmB,iBAAiBjD,GACTpG,KAAK0G,SAASmD,2BACd7J,KAAK0G,SAASmD,0BAA0BzD,EAASpG,KAAKkI,eAG9DM,wBAAwBpC,EAAS8B,GACzBlI,KAAK0G,SAASoD,8BAAgC9J,KAAKkI,eAAiBA,GACpElI,KAAK0G,SAASoD,6BAA6B1D,EAAS8B,IAKhE,MAAM6B,EACFnK,YAAYwG,EAASM,GACjB1G,KAAKoG,QAAUA,EACfpG,KAAK0G,SAAWA,EAChB1G,KAAKkC,SAAU,EACflC,KAAKgK,UAAY,IAAI/H,IACrBjC,KAAKgH,iBAAmB,IAAIC,kBAAiBC,GAAalH,KAAKmH,iBAAiBD,KAEpF/E,QACSnC,KAAKkC,UACNlC,KAAKkC,SAAU,EACflC,KAAKgH,iBAAiBI,QAAQpH,KAAKoG,QAAS,CAAEQ,YAAY,EAAMqD,mBAAmB,IACnFjK,KAAKqH,WAGb9E,OACQvC,KAAKkC,UACLlC,KAAKgH,iBAAiBQ,cACtBxH,KAAKgH,iBAAiB3G,aACtBL,KAAKkC,SAAU,GAGvBmF,UACI,GAAIrH,KAAKkC,QACL,IAAK,MAAMgG,KAAiBlI,KAAKkK,oBAC7BlK,KAAKmK,iBAAiBjC,EAAe,MAIjDf,iBAAiBD,GACb,GAAIlH,KAAKkC,QACL,IAAK,MAAM4F,KAAYZ,EACnBlH,KAAK+H,gBAAgBD,GAIjCC,gBAAgBD,GACZ,MAAMI,EAAgBJ,EAASI,cAC3BA,GACAlI,KAAKmK,iBAAiBjC,EAAeJ,EAASsC,UAGtDD,iBAAiBjC,EAAekC,GAC5B,MAAMzG,EAAM3D,KAAK0G,SAAS2D,4BAA4BnC,GACtD,GAAW,MAAPvE,EAAa,CACR3D,KAAKgK,UAAUrC,IAAIO,IACpBlI,KAAKsK,kBAAkB3G,EAAKuE,GAEhC,MAAM9D,EAAQpE,KAAKoG,QAAQpB,aAAakD,GAIxC,GAHIlI,KAAKgK,UAAU1G,IAAI4E,IAAkB9D,GACrCpE,KAAKuK,sBAAsBnG,EAAOT,EAAKyG,GAE9B,MAAThG,EAAe,CACf,MAAMgG,EAAWpK,KAAKgK,UAAU1G,IAAI4E,GACpClI,KAAKgK,UAAUrJ,OAAOuH,GAClBkC,GACApK,KAAKwK,oBAAoB7G,EAAKuE,EAAekC,QAGjDpK,KAAKgK,UAAUxG,IAAI0E,EAAe9D,IAI9CkG,kBAAkB3G,EAAKuE,GACflI,KAAK0G,SAAS4D,mBACdtK,KAAK0G,SAAS4D,kBAAkB3G,EAAKuE,GAG7CqC,sBAAsBnG,EAAOT,EAAKyG,GAC1BpK,KAAK0G,SAAS6D,uBACdvK,KAAK0G,SAAS6D,sBAAsBnG,EAAOT,EAAKyG,GAGxDI,oBAAoB7G,EAAKuE,EAAekC,GAChCpK,KAAK0G,SAAS8D,qBACdxK,KAAK0G,SAAS8D,oBAAoB7G,EAAKuE,EAAekC,GAG1DF,0BACA,OAAO5I,MAAMC,KAAK,IAAIrB,IAAIF,KAAKyK,sBAAsB7H,OAAO5C,KAAK0K,0BAEjED,4BACA,OAAOnJ,MAAMC,KAAKvB,KAAKoG,QAAQQ,YAAYjE,KAAIgI,GAAaA,EAAUC,OAEtEF,6BACA,OAAOpJ,MAAMC,KAAKvB,KAAKgK,UAAUtG,SAIzC,SAASjD,EAAIkC,EAAKgB,EAAKS,GACnByG,EAAMlI,EAAKgB,GAAKlD,IAAI2D,GAExB,SAAS0G,EAAInI,EAAKgB,EAAKS,GACnByG,EAAMlI,EAAKgB,GAAKhD,OAAOyD,GAW3B,SAAezB,EAAKgB,GAChB,MAAMnB,EAASG,EAAIW,IAAIK,GACT,MAAVnB,GAAiC,GAAfA,EAAOuI,MACzBpI,EAAIhC,OAAOgD,GAbfqH,CAAMrI,EAAKgB,GAEf,SAASkH,EAAMlI,EAAKgB,GAChB,IAAInB,EAASG,EAAIW,IAAIK,GAKrB,OAJKnB,IACDA,EAAS,IAAItC,IACbyC,EAAIa,IAAIG,EAAKnB,IAEVA,EASX,MAAMyI,EACFrL,cACII,KAAKkL,YAAc,IAAIjJ,IAEvByB,WACA,OAAOpC,MAAMC,KAAKvB,KAAKkL,YAAYxH,QAEnClB,aAEA,OADalB,MAAMC,KAAKvB,KAAKkL,YAAY1I,UAC7BC,QAAO,CAACD,EAAQgB,IAAQhB,EAAOI,OAAOtB,MAAMC,KAAKiC,KAAO,IAEpEuH,WAEA,OADazJ,MAAMC,KAAKvB,KAAKkL,YAAY1I,UAC7BC,QAAO,CAACsI,EAAMvH,IAAQuH,EAAOvH,EAAIuH,MAAM,GAEvDtK,IAAIkD,EAAKS,GACL3D,EAAIT,KAAKkL,YAAavH,EAAKS,GAE/BzD,OAAOgD,EAAKS,GACR0G,EAAI9K,KAAKkL,YAAavH,EAAKS,GAE/BuD,IAAIhE,EAAKS,GACL,MAAM5B,EAASxC,KAAKkL,YAAY5H,IAAIK,GACpC,OAAiB,MAAVnB,GAAkBA,EAAOmF,IAAIvD,GAExC+G,OAAOxH,GACH,OAAO3D,KAAKkL,YAAYvD,IAAIhE,GAEhCyH,SAAShH,GAEL,OADa9C,MAAMC,KAAKvB,KAAKkL,YAAY1I,UAC7B6I,MAAK7H,GAAOA,EAAImE,IAAIvD,KAEpCkH,gBAAgB3H,GACZ,MAAMnB,EAASxC,KAAKkL,YAAY5H,IAAIK,GACpC,OAAOnB,EAASlB,MAAMC,KAAKiB,GAAU,GAEzC+I,gBAAgBnH,GACZ,OAAO9C,MAAMC,KAAKvB,KAAKkL,aAClBM,QAAO,EAAE7H,EAAKnB,KAAYA,EAAOmF,IAAIvD,KACrCzB,KAAI,EAAEgB,EAAKnB,KAAYmB,KA6BpC,MAAM8H,EACF7L,YAAYwG,EAAS8B,EAAexB,GAChC1G,KAAK0L,kBAAoB,IAAIpC,EAAkBlD,EAAS8B,EAAelI,MACvEA,KAAK0G,SAAWA,EAChB1G,KAAK2L,gBAAkB,IAAIV,EAE3B/I,cACA,OAAOlC,KAAK0L,kBAAkBxJ,QAElCC,QACInC,KAAK0L,kBAAkBvJ,QAE3BmF,MAAMC,GACFvH,KAAK0L,kBAAkBpE,MAAMC,GAEjChF,OACIvC,KAAK0L,kBAAkBnJ,OAE3B8E,UACIrH,KAAK0L,kBAAkBrE,UAEvBjB,cACA,OAAOpG,KAAK0L,kBAAkBtF,QAE9B8B,oBACA,OAAOlI,KAAK0L,kBAAkBxD,cAElC0B,wBAAwBxD,GACpBpG,KAAK4L,cAAc5L,KAAK6L,qBAAqBzF,IAEjD0D,6BAA6B1D,GACzB,MAAO0F,EAAiBC,GAAiB/L,KAAKgM,wBAAwB5F,GACtEpG,KAAKiM,gBAAgBH,GACrB9L,KAAK4L,cAAcG,GAEvBlC,0BAA0BzD,GACtBpG,KAAKiM,gBAAgBjM,KAAK2L,gBAAgBL,gBAAgBlF,IAE9DwF,cAAcM,GACVA,EAAO7J,SAAQ8J,GAASnM,KAAKoM,aAAaD,KAE9CF,gBAAgBC,GACZA,EAAO7J,SAAQ8J,GAASnM,KAAKqM,eAAeF,KAEhDC,aAAaD,GACTnM,KAAK0G,SAAS0F,aAAaD,GAC3BnM,KAAK2L,gBAAgBlL,IAAI0L,EAAM/F,QAAS+F,GAE5CE,eAAeF,GACXnM,KAAK0G,SAAS2F,eAAeF,GAC7BnM,KAAK2L,gBAAgBhL,OAAOwL,EAAM/F,QAAS+F,GAE/CH,wBAAwB5F,GACpB,MAAMkG,EAAiBtM,KAAK2L,gBAAgBL,gBAAgBlF,GACtDmG,EAAgBvM,KAAK6L,qBAAqBzF,GAC1CoG,EAmBd,SAAa/K,EAAMC,GACf,MAAM+K,EAASC,KAAKC,IAAIlL,EAAKgL,OAAQ/K,EAAM+K,QAC3C,OAAOnL,MAAMC,KAAK,CAAEkL,OAAAA,IAAU,CAACnI,EAAG1C,IAAU,CAACH,EAAKG,GAAQF,EAAME,MArBhCgL,CAAIN,EAAgBC,GAC3CM,WAAU,EAAEC,EAAeC,MAAkB,OAsB5BrL,EAtB2DqL,KAsBjEtL,EAtBkDqL,IAuBvDpL,GAASD,EAAKG,OAASF,EAAME,OAASH,EAAKuL,SAAWtL,EAAMsL,SAD/E,IAAwBvL,EAAMC,KArBtB,OAA4B,GAAxB8K,EACO,CAAC,GAAI,IAGL,CAACF,EAAe3H,MAAM6H,GAAsBD,EAAc5H,MAAM6H,IAG/EX,qBAAqBzF,GACjB,MAAM8B,EAAgBlI,KAAKkI,cAE3B,OAGR,SAA0B+E,EAAa7G,EAAS8B,GAC5C,OAAO+E,EAAYC,OAAOC,MAAM,OAAO3B,QAAOwB,GAAWA,EAAQP,SAC5D9J,KAAI,CAACqK,EAASpL,KAAU,CAAGwE,QAAAA,EAAS8B,cAAAA,EAAe8E,QAAAA,EAASpL,MAAAA,MALtDwL,CADahH,EAAQpB,aAAakD,IAAkB,GACtB9B,EAAS8B,IAetD,MAAMmF,EACFzN,YAAYwG,EAAS8B,EAAexB,GAChC1G,KAAKsN,kBAAoB,IAAI7B,EAAkBrF,EAAS8B,EAAelI,MACvEA,KAAK0G,SAAWA,EAChB1G,KAAKuN,oBAAsB,IAAIC,QAC/BxN,KAAKyN,uBAAyB,IAAID,QAElCtL,cACA,OAAOlC,KAAKsN,kBAAkBpL,QAElCC,QACInC,KAAKsN,kBAAkBnL,QAE3BI,OACIvC,KAAKsN,kBAAkB/K,OAE3B8E,UACIrH,KAAKsN,kBAAkBjG,UAEvBjB,cACA,OAAOpG,KAAKsN,kBAAkBlH,QAE9B8B,oBACA,OAAOlI,KAAKsN,kBAAkBpF,cAElCkE,aAAaD,GACT,MAAM,QAAE/F,GAAY+F,GACd,MAAE/H,GAAUpE,KAAK0N,yBAAyBvB,GAC5C/H,IACApE,KAAK2N,6BAA6BvH,GAAS5C,IAAI2I,EAAO/H,GACtDpE,KAAK0G,SAASkH,oBAAoBxH,EAAShC,IAGnDiI,eAAeF,GACX,MAAM,QAAE/F,GAAY+F,GACd,MAAE/H,GAAUpE,KAAK0N,yBAAyBvB,GAC5C/H,IACApE,KAAK2N,6BAA6BvH,GAASzF,OAAOwL,GAClDnM,KAAK0G,SAASmH,sBAAsBzH,EAAShC,IAGrDsJ,yBAAyBvB,GACrB,IAAI2B,EAAc9N,KAAKuN,oBAAoBjK,IAAI6I,GAK/C,OAJK2B,IACDA,EAAc9N,KAAK+N,WAAW5B,GAC9BnM,KAAKuN,oBAAoB/J,IAAI2I,EAAO2B,IAEjCA,EAEXH,6BAA6BvH,GACzB,IAAI4H,EAAgBhO,KAAKyN,uBAAuBnK,IAAI8C,GAKpD,OAJK4H,IACDA,EAAgB,IAAI/L,IACpBjC,KAAKyN,uBAAuBjK,IAAI4C,EAAS4H,IAEtCA,EAEXD,WAAW5B,GACP,IAEI,MAAO,CAAE/H,MADKpE,KAAK0G,SAASuH,mBAAmB9B,IAGnD,MAAOpJ,GACH,MAAO,CAAEA,MAAAA,KAKrB,MAAMmL,EACFtO,YAAY2F,EAASmB,GACjB1G,KAAKuF,QAAUA,EACfvF,KAAK0G,SAAWA,EAChB1G,KAAKmO,iBAAmB,IAAIlM,IAEhCE,QACSnC,KAAKoO,oBACNpO,KAAKoO,kBAAoB,IAAIf,EAAkBrN,KAAKoG,QAASpG,KAAKqO,gBAAiBrO,MACnFA,KAAKoO,kBAAkBjM,SAG/BI,OACQvC,KAAKoO,oBACLpO,KAAKoO,kBAAkB7L,cAChBvC,KAAKoO,kBACZpO,KAAKsO,wBAGTlI,cACA,OAAOpG,KAAKuF,QAAQa,QAEpBX,iBACA,OAAOzF,KAAKuF,QAAQE,WAEpB4I,sBACA,OAAOrO,KAAKuO,OAAOF,gBAEnBE,aACA,OAAOvO,KAAKuF,QAAQgJ,OAEpBlN,eACA,OAAOC,MAAMC,KAAKvB,KAAKmO,iBAAiB3L,UAE5CgM,cAAchJ,GACV,MAAMhF,EAAU,IAAI8E,EAAQtF,KAAKuF,QAASC,GAC1CxF,KAAKmO,iBAAiB3K,IAAIgC,EAAQhF,GAClCR,KAAK0G,SAASnG,iBAAiBC,GAEnCiO,iBAAiBjJ,GACb,MAAMhF,EAAUR,KAAKmO,iBAAiB7K,IAAIkC,GACtChF,IACAR,KAAKmO,iBAAiBxN,OAAO6E,GAC7BxF,KAAK0G,SAAShG,oBAAoBF,IAG1C8N,uBACItO,KAAKqB,SAASgB,SAAQ7B,GAAWR,KAAK0G,SAAShG,oBAAoBF,KACnER,KAAKmO,iBAAiBO,QAE1BT,mBAAmB9B,GACf,MAAM3G,EAtsBd,MACI5F,YAAYwG,EAASxE,EAAO+M,GACxB3O,KAAKoG,QAAUA,EACfpG,KAAK4B,MAAQA,EACb5B,KAAKH,YAAc8O,EAAW9O,aAAeuG,EAC7CpG,KAAKF,UAAY6O,EAAW7O,WA8CpC,SAAuCsG,GACnC,MAAMwI,EAAUxI,EAAQwI,QAAQ/J,cAChC,GAAI+J,KAAW9J,EACX,OAAOA,EAAkB8J,GAASxI,GAjDOyI,CAA8BzI,IAAYrD,EAAM,sBACzF/C,KAAKD,aAAe4O,EAAW5O,cAAgB,GAC/CC,KAAKyF,WAAakJ,EAAWlJ,YAAc1C,EAAM,sBACjD/C,KAAK8F,WAAa6I,EAAW7I,YAAc/C,EAAM,uBAErD+L,gBAAgB3C,GACZ,OAAO,IAAInM,KAAKmM,EAAM/F,QAAS+F,EAAMvK,MAvD7C,SAAqCmN,GACjC,MACMtH,EADSsH,EAAiB7B,OACTxD,MAAM5F,IAAsB,GACnD,MAAO,CACHjE,YAAakE,EAAiB0D,EAAQ,IACtC3H,UAAW2H,EAAQ,GACnB1H,aAAc0H,EAAQ,IAaH1H,EAb0B0H,EAAQ,GAclD1H,EAAaoN,MAAM,KAAK1K,QAAO,CAACuM,EAAS7C,IAAUnL,OAAOC,OAAO+N,EAAS,CAAE,CAAC7C,EAAM9H,QAAQ,KAAM,MAAO,KAAK4K,KAAK9C,MAAW,KAdrE,GAC3D1G,WAAYgC,EAAQ,GACpB3B,WAAY2B,EAAQ,IAW5B,IAA2B1H,EAoCyBmP,CAA4B/C,EAAMa,UAElFmC,WACI,MAAMC,EAAkBpP,KAAKgE,gBAAkB,IAAIhE,KAAKgE,kBAAoB,GAC5E,MAAO,GAAGhE,KAAKF,YAAYsP,MAAoBpP,KAAKyF,cAAczF,KAAK8F,aAEvEG,aACA,OAAIjG,KAAKH,uBAAuBwG,QACrBrG,KAAKqP,mCAAmCrP,KAAKH,aAG7C,GAGfwP,mCAAmCxP,GAC/B,MAAMoG,EAAS,GACTqJ,EAAU,IAAIC,OAAO,SAASvP,KAAKyF,0BASzC,OARmBnE,MAAMC,KAAK1B,EAAY+G,YAC/BvE,SAAQ,EAAGuI,KAAAA,EAAMxG,MAAAA,MACxB,MAAMsF,EAAQkB,EAAKlB,MAAM4F,GACnB3L,EAAM+F,GAASA,EAAM,GACvB/F,GACA3C,OAAOC,OAAOgF,EAAQ,CAAE,CAAC9B,EAASR,IAAOuB,EAASd,QAGnD6B,EAEPjC,sBACA,OA7DsBnE,EA6DMG,KAAKH,cA5DlBoE,OACR,SAEFpE,GAAeqE,SACb,gBADN,EAJT,IAA8BrE,IA4tBA2P,SAASrD,GAC/B,GAAI3G,EAAOC,YAAczF,KAAKyF,WAC1B,OAAOD,EAGfoI,oBAAoBxH,EAASZ,GACzBxF,KAAKwO,cAAchJ,GAEvBqI,sBAAsBzH,EAASZ,GAC3BxF,KAAKyO,iBAAiBjJ,IAI9B,MAAMiK,EACF7P,YAAY2F,EAASmK,GACjB1P,KAAKuF,QAAUA,EACfvF,KAAK0P,SAAWA,EAChB1P,KAAK2P,kBAAoB,IAAI5F,EAAkB/J,KAAKoG,QAASpG,MAC7DA,KAAK4P,mBAAqB5P,KAAK6F,WAAW+J,mBAC1C5P,KAAK6P,yCAET1N,QACInC,KAAK2P,kBAAkBxN,QAE3BI,OACIvC,KAAK2P,kBAAkBpN,OAEvB6D,cACA,OAAOpG,KAAKuF,QAAQa,QAEpBP,iBACA,OAAO7F,KAAKuF,QAAQM,WAExBwE,4BAA4BnC,GACxB,GAAIA,KAAiBlI,KAAK4P,mBACtB,OAAO5P,KAAK4P,mBAAmB1H,GAAe0C,KAGtDN,kBAAkB3G,EAAKuE,GACnB,MAAMyG,EAAa3O,KAAK4P,mBAAmB1H,GACtClI,KAAKoL,SAASzH,IACf3D,KAAK8P,sBAAsBnM,EAAKgL,EAAWoB,OAAO/P,KAAK0P,SAAS/L,IAAOgL,EAAWoB,OAAOpB,EAAWqB,eAG5GzF,sBAAsBnG,EAAOwG,EAAMR,GAC/B,MAAMuE,EAAa3O,KAAKiQ,uBAAuBrF,GACjC,OAAVxG,IAEa,OAAbgG,IACAA,EAAWuE,EAAWoB,OAAOpB,EAAWqB,eAE5ChQ,KAAK8P,sBAAsBlF,EAAMxG,EAAOgG,IAE5CI,oBAAoB7G,EAAKuE,EAAekC,GACpC,MAAMuE,EAAa3O,KAAKiQ,uBAAuBtM,GAC3C3D,KAAKoL,SAASzH,GACd3D,KAAK8P,sBAAsBnM,EAAKgL,EAAWoB,OAAO/P,KAAK0P,SAAS/L,IAAOyG,GAGvEpK,KAAK8P,sBAAsBnM,EAAKgL,EAAWoB,OAAOpB,EAAWqB,cAAe5F,GAGpFyF,yCACI,IAAK,MAAM,IAAElM,EAAG,KAAEiH,EAAI,aAAEoF,EAAY,OAAED,KAAY/P,KAAKkQ,sBAC/BC,GAAhBH,GAA8BhQ,KAAK6F,WAAWuK,KAAKzI,IAAIhE,IACvD3D,KAAK8P,sBAAsBlF,EAAMmF,EAAOC,QAAeG,GAInEL,sBAAsBlF,EAAMyF,EAAUC,GAClC,MAAMC,EAAoB,GAAG3F,WACvB4F,EAAgBxQ,KAAK0P,SAASa,GACpC,GAA4B,mBAAjBC,EAA6B,CACpC,MAAM7B,EAAa3O,KAAKiQ,uBAAuBrF,GACzCxG,EAAQuK,EAAW8B,OAAOJ,GAChC,IAAIjG,EAAWkG,EACXA,IACAlG,EAAWuE,EAAW8B,OAAOH,IAEjCE,EAAcrP,KAAKnB,KAAK0P,SAAUtL,EAAOgG,IAG7C8F,uBACA,MAAM,mBAAEN,GAAuB5P,KAC/B,OAAOgB,OAAO0C,KAAKkM,GAAoBjN,KAAIgB,GAAOiM,EAAmBjM,KAErEsM,6BACA,MAAMS,EAAc,GAKpB,OAJA1P,OAAO0C,KAAK1D,KAAK4P,oBAAoBvN,SAAQsB,IACzC,MAAMgL,EAAa3O,KAAK4P,mBAAmBjM,GAC3C+M,EAAY/B,EAAW/D,MAAQ+D,KAE5B+B,EAEXtF,SAASlD,GACL,MACMyI,EAAgB,MAAMlM,EADTzE,KAAKiQ,uBAAuB/H,GACG0C,QAClD,OAAO5K,KAAK0P,SAASiB,IAI7B,MAAMC,EACFhR,YAAY2F,EAASmB,GACjB1G,KAAKuF,QAAUA,EACfvF,KAAK0G,SAAWA,EAChB1G,KAAK6Q,cAAgB,IAAI5F,EAE7B9I,QACSnC,KAAKsN,oBACNtN,KAAKsN,kBAAoB,IAAI7B,EAAkBzL,KAAKoG,QAASpG,KAAKkI,cAAelI,MACjFA,KAAKsN,kBAAkBnL,SAG/BI,OACQvC,KAAKsN,oBACLtN,KAAK8Q,uBACL9Q,KAAKsN,kBAAkB/K,cAChBvC,KAAKsN,mBAGpBlB,cAAa,QAAEhG,EAAS4G,QAASpC,IACzB5K,KAAKuG,MAAMC,gBAAgBJ,IAC3BpG,KAAK+Q,cAAc3K,EAASwE,GAGpCyB,gBAAe,QAAEjG,EAAS4G,QAASpC,IAC/B5K,KAAKgR,iBAAiB5K,EAASwE,GAEnCmG,cAAc3K,EAASwE,GACnB,IAAIqG,EACCjR,KAAK6Q,cAAclJ,IAAIiD,EAAMxE,KAC9BpG,KAAK6Q,cAAcpQ,IAAImK,EAAMxE,GACK,QAAjC6K,EAAKjR,KAAKsN,yBAAsC,IAAP2D,GAAyBA,EAAG3J,OAAM,IAAMtH,KAAK0G,SAASwK,gBAAgB9K,EAASwE,MAGjIoG,iBAAiB5K,EAASwE,GACtB,IAAIqG,EACAjR,KAAK6Q,cAAclJ,IAAIiD,EAAMxE,KAC7BpG,KAAK6Q,cAAclQ,OAAOiK,EAAMxE,GACE,QAAjC6K,EAAKjR,KAAKsN,yBAAsC,IAAP2D,GAAyBA,EAAG3J,OAAM,IAAMtH,KAAK0G,SAASyK,mBAAmB/K,EAASwE,MAGpIkG,uBACI,IAAK,MAAMlG,KAAQ5K,KAAK6Q,cAAcnN,KAClC,IAAK,MAAM0C,KAAWpG,KAAK6Q,cAAcvF,gBAAgBV,GACrD5K,KAAKgR,iBAAiB5K,EAASwE,GAIvC1C,oBACA,MAAO,QAAQlI,KAAKuF,QAAQE,oBAE5BW,cACA,OAAOpG,KAAKuF,QAAQa,QAEpBG,YACA,OAAOvG,KAAKuF,QAAQgB,OAI5B,MAAM6K,EACFxR,YAAYyR,EAAQ9K,GAChBvG,KAAKmG,iBAAmB,CAACmL,EAAcrO,EAAS,MAC5C,MAAM,WAAEwC,EAAU,WAAEI,EAAU,QAAEO,GAAYpG,KAC5CiD,EAASjC,OAAOC,OAAO,CAAEwE,WAAAA,EAAYI,WAAAA,EAAYO,QAAAA,GAAWnD,GAC5DjD,KAAK+B,YAAYoE,iBAAiBnG,KAAKyF,WAAY6L,EAAcrO,IAErEjD,KAAKqR,OAASA,EACdrR,KAAKuG,MAAQA,EACbvG,KAAK6F,WAAa,IAAIwL,EAAOE,sBAAsBvR,MACnDA,KAAKwR,gBAAkB,IAAItD,EAAgBlO,KAAMA,KAAKyR,YACtDzR,KAAK0R,cAAgB,IAAIjC,EAAczP,KAAMA,KAAK6F,YAClD7F,KAAK2R,eAAiB,IAAIf,EAAe5Q,KAAMA,MAC/C,IACIA,KAAK6F,WAAW+L,aAChB5R,KAAKmG,iBAAiB,cAE1B,MAAOpD,GACH/C,KAAK8C,YAAYC,EAAO,4BAGhC5C,UACIH,KAAKwR,gBAAgBrP,QACrBnC,KAAK0R,cAAcvP,QACnBnC,KAAK2R,eAAexP,QACpB,IACInC,KAAK6F,WAAW1F,UAChBH,KAAKmG,iBAAiB,WAE1B,MAAOpD,GACH/C,KAAK8C,YAAYC,EAAO,0BAGhC1C,aACI,IACIL,KAAK6F,WAAWxF,aAChBL,KAAKmG,iBAAiB,cAE1B,MAAOpD,GACH/C,KAAK8C,YAAYC,EAAO,4BAE5B/C,KAAK2R,eAAepP,OACpBvC,KAAK0R,cAAcnP,OACnBvC,KAAKwR,gBAAgBjP,OAErBR,kBACA,OAAO/B,KAAKqR,OAAOtP,YAEnB0D,iBACA,OAAOzF,KAAKqR,OAAO5L,WAEnB8I,aACA,OAAOvO,KAAK+B,YAAYwM,OAExBkD,iBACA,OAAOzR,KAAK+B,YAAY0P,WAExBrL,cACA,OAAOpG,KAAKuG,MAAMH,QAElByL,oBACA,OAAO7R,KAAKoG,QAAQyL,cAExB/O,YAAYC,EAAOC,EAASC,EAAS,IACjC,MAAM,WAAEwC,EAAU,WAAEI,EAAU,QAAEO,GAAYpG,KAC5CiD,EAASjC,OAAOC,OAAO,CAAEwE,WAAAA,EAAYI,WAAAA,EAAYO,QAAAA,GAAWnD,GAC5DjD,KAAK+B,YAAYe,YAAYC,EAAO,SAASC,IAAWC,GAE5DiO,gBAAgB9K,EAASwE,GACrB5K,KAAK8R,uBAAuB,GAAGlH,mBAAuBxE,GAE1D+K,mBAAmB/K,EAASwE,GACxB5K,KAAK8R,uBAAuB,GAAGlH,sBAA0BxE,GAE7D0L,uBAAuBhM,KAAeiM,GAClC,MAAMlM,EAAa7F,KAAK6F,WACa,mBAA1BA,EAAWC,IAClBD,EAAWC,MAAeiM,IAKtC,SAASC,EAAiCpS,EAAaqS,GACnD,MAAMC,EAAYC,EAA2BvS,GAC7C,OAAO0B,MAAMC,KAAK2Q,EAAUzP,QAAO,CAACD,EAAQ5C,KAoBhD,SAAiCA,EAAaqS,GAC1C,MAAMG,EAAaxS,EAAYqS,GAC/B,OAAO3Q,MAAM+Q,QAAQD,GAAcA,EAAa,GArB5CE,CAAwB1S,EAAaqS,GAAc5P,SAAQuI,GAAQpI,EAAO/B,IAAImK,KACvEpI,IACR,IAAItC,MAEX,SAASqS,EAAiC3S,EAAaqS,GAEnD,OADkBE,EAA2BvS,GAC5B6C,QAAO,CAAC+P,EAAO5S,KAC5B4S,EAAM5O,QAgBd,SAAiChE,EAAaqS,GAC1C,MAAMG,EAAaxS,EAAYqS,GAC/B,OAAOG,EAAapR,OAAO0C,KAAK0O,GAAYzP,KAAIgB,GAAO,CAACA,EAAKyO,EAAWzO,MAAS,GAlB/D8O,CAAwB7S,EAAaqS,IAC5CO,IACR,IAEP,SAASL,EAA2BvS,GAChC,MAAMsS,EAAY,GAClB,KAAOtS,GACHsS,EAAUtO,KAAKhE,GACfA,EAAcoB,OAAO0R,eAAe9S,GAExC,OAAOsS,EAAUS,UAWrB,SAASC,EAAMhT,GACX,OAEJ,SAAgBA,EAAaiT,GACzB,MAAMC,EAAoBC,EAAOnT,GAC3BoT,EAeV,SAA6BC,EAAWJ,GACpC,OAAOK,EAAWL,GAAYpQ,QAAO,CAACuQ,EAAkBrP,KACpD,MAAMgL,EAOd,SAA+BsE,EAAWJ,EAAYlP,GAClD,MAAMwP,EAAsBnS,OAAOoS,yBAAyBH,EAAWtP,GAEvE,IADwBwP,KAAuB,UAAWA,GACpC,CAClB,MAAMxE,EAAa3N,OAAOoS,yBAAyBP,EAAYlP,GAAKS,MAKpE,OAJI+O,IACAxE,EAAWrL,IAAM6P,EAAoB7P,KAAOqL,EAAWrL,IACvDqL,EAAWnL,IAAM2P,EAAoB3P,KAAOmL,EAAWnL,KAEpDmL,GAhBY0E,CAAsBJ,EAAWJ,EAAYlP,GAIhE,OAHIgL,GACA3N,OAAOC,OAAO+R,EAAkB,CAAE,CAACrP,GAAMgL,IAEtCqE,IACR,IAtBsBM,CAAoB1T,EAAYqT,UAAWJ,GAEpE,OADA7R,OAAOuS,iBAAiBT,EAAkBG,UAAWD,GAC9CF,EANAU,CAAO5T,EAQlB,SAA8BA,GAE1B,OADkBoS,EAAiCpS,EAAa,aAC/C6C,QAAO,CAACgR,EAAmBC,KACxC,MAAMb,EAAaa,EAAS9T,GAC5B,IAAK,MAAM+D,KAAOkP,EAAY,CAC1B,MAAMlE,EAAa8E,EAAkB9P,IAAQ,GAC7C8P,EAAkB9P,GAAO3C,OAAOC,OAAO0N,EAAYkE,EAAWlP,IAElE,OAAO8P,IACR,IAjBwBE,CAAqB/T,IAwCpD,MAAMsT,EACyC,mBAAhClS,OAAO4S,sBACNC,GAAW,IACZ7S,OAAO8S,oBAAoBD,MAC3B7S,OAAO4S,sBAAsBC,IAI7B7S,OAAO8S,oBAGhBf,EAAS,MACX,SAASgB,EAAkBnU,GACvB,SAASoU,IACL,OAAOC,QAAQC,UAAUtU,EAAauU,sBAM1C,OAJAH,EAASf,UAAYjS,OAAOoT,OAAOxU,EAAYqT,UAAW,CACtDrT,YAAa,CAAEwE,MAAO4P,KAE1BC,QAAQI,eAAeL,EAAUpU,GAC1BoU,EAQX,IAEI,OARJ,WACI,MACMM,EAAIP,GADA,WAAc/T,KAAKuU,EAAEpT,KAAKnB,SAEpCsU,EAAErB,UAAUsB,EAAI,aACT,IAAID,EAGXE,GACOT,EAEX,MAAOhR,GACH,OAAQnD,GAAgB,cAAuBA,MAtBxC,GAkCf,MAAM6U,EACF7U,YAAYmC,EAAaqQ,GACrBpS,KAAK+B,YAAcA,EACnB/B,KAAKoS,WAVb,SAAyBA,GACrB,MAAO,CACH3M,WAAY2M,EAAW3M,WACvB8L,sBAAuBqB,EAAMR,EAAWb,wBAOtBmD,CAAgBtC,GAClCpS,KAAK2U,gBAAkB,IAAInH,QAC3BxN,KAAK4U,kBAAoB,IAAI1U,IAE7BuF,iBACA,OAAOzF,KAAKoS,WAAW3M,WAEvB8L,4BACA,OAAOvR,KAAKoS,WAAWb,sBAEvBsD,eACA,OAAOvT,MAAMC,KAAKvB,KAAK4U,mBAE3BE,uBAAuBvO,GACnB,MAAMhB,EAAUvF,KAAK+U,qBAAqBxO,GAC1CvG,KAAK4U,kBAAkBnU,IAAI8E,GAC3BA,EAAQpF,UAEZ6U,0BAA0BzO,GACtB,MAAMhB,EAAUvF,KAAK2U,gBAAgBrR,IAAIiD,GACrChB,IACAvF,KAAK4U,kBAAkBjU,OAAO4E,GAC9BA,EAAQlF,cAGhB0U,qBAAqBxO,GACjB,IAAIhB,EAAUvF,KAAK2U,gBAAgBrR,IAAIiD,GAKvC,OAJKhB,IACDA,EAAU,IAAI6L,EAAQpR,KAAMuG,GAC5BvG,KAAK2U,gBAAgBnR,IAAI+C,EAAOhB,IAE7BA,GAIf,MAAM0P,EACFrV,YAAY2G,GACRvG,KAAKuG,MAAQA,EAEjBoB,IAAIiD,GACA,OAAO5K,KAAKoQ,KAAKzI,IAAI3H,KAAKkV,WAAWtK,IAEzCtH,IAAIsH,GACA,OAAO5K,KAAKmV,OAAOvK,GAAM,GAE7BuK,OAAOvK,GACH,MAAMqC,EAAcjN,KAAKoQ,KAAK9M,IAAItD,KAAKkV,WAAWtK,KAAU,GAC5D,OAAgBqC,EAlmCPvD,MAAM,YAAc,GAomCjC0L,iBAAiBxK,GACb,OAAO5K,KAAKoQ,KAAKiF,uBAAuBrV,KAAKkV,WAAWtK,IAE5DsK,WAAWtK,GACP,MAAO,GAAGA,UAEVwF,WACA,OAAOpQ,KAAKuG,MAAM6J,MAI1B,MAAMkF,EACF1V,YAAY2G,GACRvG,KAAKuG,MAAQA,EAEbH,cACA,OAAOpG,KAAKuG,MAAMH,QAElBX,iBACA,OAAOzF,KAAKuG,MAAMd,WAEtBnC,IAAIK,GACA,MAAMiH,EAAO5K,KAAKqV,uBAAuB1R,GACzC,OAAO3D,KAAKoG,QAAQpB,aAAa4F,GAErCpH,IAAIG,EAAKS,GACL,MAAMwG,EAAO5K,KAAKqV,uBAAuB1R,GAEzC,OADA3D,KAAKoG,QAAQmP,aAAa3K,EAAMxG,GACzBpE,KAAKsD,IAAIK,GAEpBgE,IAAIhE,GACA,MAAMiH,EAAO5K,KAAKqV,uBAAuB1R,GACzC,OAAO3D,KAAKoG,QAAQqD,aAAamB,GAErCjK,OAAOgD,GACH,GAAI3D,KAAK2H,IAAIhE,GAAM,CACf,MAAMiH,EAAO5K,KAAKqV,uBAAuB1R,GAEzC,OADA3D,KAAKoG,QAAQoP,gBAAgB5K,IACtB,EAGP,OAAO,EAGfyK,uBAAuB1R,GACnB,MAAO,QAAQ3D,KAAKyF,cAAcb,EAAUjB,MAIpD,MAAM8R,EACF7V,YAAY8V,GACR1V,KAAK2V,mBAAqB,IAAInI,QAC9BxN,KAAK0V,OAASA,EAElBE,KAAK/B,EAAQlQ,EAAKX,GACd,IAAI6S,EAAa7V,KAAK2V,mBAAmBrS,IAAIuQ,GACxCgC,IACDA,EAAa,IAAI3V,IACjBF,KAAK2V,mBAAmBnS,IAAIqQ,EAAQgC,IAEnCA,EAAWlO,IAAIhE,KAChBkS,EAAWpV,IAAIkD,GACf3D,KAAK0V,OAAOE,KAAK5S,EAAS6Q,KAKtC,SAASiC,EAA4B5N,EAAeiE,GAChD,MAAO,IAAIjE,OAAmBiE,MAGlC,MAAM4J,EACFnW,YAAY2G,GACRvG,KAAKuG,MAAQA,EAEbH,cACA,OAAOpG,KAAKuG,MAAMH,QAElBX,iBACA,OAAOzF,KAAKuG,MAAMd,WAElB8I,aACA,OAAOvO,KAAKuG,MAAMgI,OAEtB5G,IAAIqO,GACA,OAAgC,MAAzBhW,KAAKiW,KAAKD,GAErBC,QAAQC,GACJ,OAAOA,EAAYzT,QAAO,CAACsD,EAAQiQ,IAAejQ,GAC3C/F,KAAKmW,WAAWH,IAChBhW,KAAKoW,iBAAiBJ,SAAa7F,GAE9CkG,WAAWH,GACP,OAAOA,EAAYzT,QAAO,CAAC6T,EAASN,IAAe,IAC5CM,KACAtW,KAAKuW,eAAeP,MACpBhW,KAAKwW,qBAAqBR,KAC9B,IAEPG,WAAWH,GACP,MAAMxM,EAAWxJ,KAAKyW,yBAAyBT,GAC/C,OAAOhW,KAAKuG,MAAMmQ,YAAYlN,GAElC+M,eAAeP,GACX,MAAMxM,EAAWxJ,KAAKyW,yBAAyBT,GAC/C,OAAOhW,KAAKuG,MAAMoQ,gBAAgBnN,GAEtCiN,yBAAyBT,GAErB,OAAOF,EADe9V,KAAKuO,OAAOqI,wBAAwB5W,KAAKyF,YACbuQ,GAEtDI,iBAAiBJ,GACb,MAAMxM,EAAWxJ,KAAK6W,+BAA+Bb,GACrD,OAAOhW,KAAK8W,UAAU9W,KAAKuG,MAAMmQ,YAAYlN,GAAWwM,GAE5DQ,qBAAqBR,GACjB,MAAMxM,EAAWxJ,KAAK6W,+BAA+Bb,GACrD,OAAOhW,KAAKuG,MAAMoQ,gBAAgBnN,GAAU7G,KAAIyD,GAAWpG,KAAK8W,UAAU1Q,EAAS4P,KAEvFa,+BAA+Bb,GAC3B,MAAMe,EAAmB,GAAG/W,KAAKyF,cAAcuQ,IAC/C,OAAOF,EAA4B9V,KAAKuO,OAAOyI,gBAAiBD,GAEpED,UAAU1Q,EAAS4P,GACf,GAAI5P,EAAS,CACT,MAAM,WAAEX,GAAezF,KACjBkI,EAAgBlI,KAAKuO,OAAOyI,gBAC5BC,EAAuBjX,KAAKuO,OAAOqI,wBAAwBnR,GACjEzF,KAAKkX,MAAMtB,KAAKxP,EAAS,UAAU4P,IAAc,kBAAkB9N,MAAkBzC,KAAcuQ,WAAoBiB,MAAyBjB,WACrI9N,kFAEf,OAAO9B,EAEP8Q,YACA,OAAOlX,KAAKuG,MAAM2Q,OAI1B,MAAMC,EACFvX,YAAY2O,EAAQnI,EAASX,EAAYiQ,GACrC1V,KAAKsW,QAAU,IAAIP,EAAU/V,MAC7BA,KAAKoX,QAAU,IAAInC,EAASjV,MAC5BA,KAAKoQ,KAAO,IAAIkF,EAAQtV,MACxBA,KAAKwG,gBAAmBJ,GACbA,EAAQiR,QAAQrX,KAAKsX,sBAAwBtX,KAAKoG,QAE7DpG,KAAKuO,OAASA,EACdvO,KAAKoG,QAAUA,EACfpG,KAAKyF,WAAaA,EAClBzF,KAAKkX,MAAQ,IAAIzB,EAAMC,GAE3BgB,YAAYlN,GACR,OAAOxJ,KAAKoG,QAAQqB,QAAQ+B,GACtBxJ,KAAKoG,QACLpG,KAAKuX,cAAc/N,GAAUyM,KAAKjW,KAAKwG,iBAEjDmQ,gBAAgBnN,GACZ,MAAO,IACAxJ,KAAKoG,QAAQqB,QAAQ+B,GAAY,CAACxJ,KAAKoG,SAAW,MAClDpG,KAAKuX,cAAc/N,GAAUgC,OAAOxL,KAAKwG,kBAGpD+Q,cAAc/N,GACV,OAAOlI,MAAMC,KAAKvB,KAAKoG,QAAQuD,iBAAiBH,IAEhD8N,yBACA,OAAOxB,EAA4B9V,KAAKuO,OAAOiJ,oBAAqBxX,KAAKyF,aAIjF,MAAMgS,EACF7X,YAAYwG,EAASmI,EAAQ7H,GACzB1G,KAAKoG,QAAUA,EACfpG,KAAKuO,OAASA,EACdvO,KAAK0G,SAAWA,EAChB1G,KAAKoO,kBAAoB,IAAIf,EAAkBrN,KAAKoG,QAASpG,KAAKwX,oBAAqBxX,MACvFA,KAAK0X,4BAA8B,IAAIlK,QACvCxN,KAAK2X,qBAAuB,IAAInK,QAEpCrL,QACInC,KAAKoO,kBAAkBjM,QAE3BI,OACIvC,KAAKoO,kBAAkB7L,OAEvBiV,0BACA,OAAOxX,KAAKuO,OAAOiJ,oBAEvBvJ,mBAAmB9B,GACf,MAAM,QAAE/F,EAAS4G,QAASvH,GAAe0G,EACnCyL,EAAqB5X,KAAK6X,kCAAkCzR,GAClE,IAAIG,EAAQqR,EAAmBtU,IAAImC,GAKnC,OAJKc,IACDA,EAAQvG,KAAK0G,SAASoR,mCAAmC1R,EAASX,GAClEmS,EAAmBpU,IAAIiC,EAAYc,IAEhCA,EAEXqH,oBAAoBxH,EAAShC,GACzB,MAAM2T,GAAkB/X,KAAK2X,qBAAqBrU,IAAIc,IAAU,GAAK,EACrEpE,KAAK2X,qBAAqBnU,IAAIY,EAAO2T,GACf,GAAlBA,GACA/X,KAAK0G,SAASsR,eAAe5T,GAGrCyJ,sBAAsBzH,EAAShC,GAC3B,MAAM2T,EAAiB/X,KAAK2X,qBAAqBrU,IAAIc,GACjD2T,IACA/X,KAAK2X,qBAAqBnU,IAAIY,EAAO2T,EAAiB,GAChC,GAAlBA,GACA/X,KAAK0G,SAASuR,kBAAkB7T,IAI5CyT,kCAAkCzR,GAC9B,IAAIwR,EAAqB5X,KAAK0X,4BAA4BpU,IAAI8C,GAK9D,OAJKwR,IACDA,EAAqB,IAAI3V,IACzBjC,KAAK0X,4BAA4BlU,IAAI4C,EAASwR,IAE3CA,GAIf,MAAMM,EACFtY,YAAYmC,GACR/B,KAAK+B,YAAcA,EACnB/B,KAAKmY,cAAgB,IAAIV,EAAczX,KAAKoG,QAASpG,KAAKuO,OAAQvO,MAClEA,KAAK4X,mBAAqB,IAAI3M,EAC9BjL,KAAKoY,oBAAsB,IAAInW,IAE/BmE,cACA,OAAOpG,KAAK+B,YAAYqE,QAExBmI,aACA,OAAOvO,KAAK+B,YAAYwM,OAExBmH,aACA,OAAO1V,KAAK+B,YAAY2T,OAExB8B,0BACA,OAAOxX,KAAKuO,OAAOiJ,oBAEnBa,cACA,OAAO/W,MAAMC,KAAKvB,KAAKoY,oBAAoB5V,UAE3CqS,eACA,OAAO7U,KAAKqY,QAAQ5V,QAAO,CAACoS,EAAUxD,IAAWwD,EAASjS,OAAOyO,EAAOwD,WAAW,IAEvF1S,QACInC,KAAKmY,cAAchW,QAEvBI,OACIvC,KAAKmY,cAAc5V,OAEvB+V,eAAelG,GACXpS,KAAKuY,iBAAiBnG,EAAW3M,YACjC,MAAM4L,EAAS,IAAIoD,EAAOzU,KAAK+B,YAAaqQ,GAC5CpS,KAAKwY,cAAcnH,GAEvBkH,iBAAiB9S,GACb,MAAM4L,EAASrR,KAAKoY,oBAAoB9U,IAAImC,GACxC4L,GACArR,KAAKyY,iBAAiBpH,GAG9BqH,kCAAkCtS,EAASX,GACvC,MAAM4L,EAASrR,KAAKoY,oBAAoB9U,IAAImC,GAC5C,GAAI4L,EACA,OAAOA,EAAOwD,SAASoB,MAAK1Q,GAAWA,EAAQa,SAAWA,IAGlEtD,YAAYC,EAAOC,EAASC,GACxBjD,KAAK+B,YAAYe,YAAYC,EAAOC,EAASC,GAEjD6U,mCAAmC1R,EAASX,GACxC,OAAO,IAAI0R,EAAMnX,KAAKuO,OAAQnI,EAASX,EAAYzF,KAAK0V,QAE5DsC,eAAezR,GACXvG,KAAK4X,mBAAmBnX,IAAI8F,EAAMd,WAAYc,GAC9C,MAAM8K,EAASrR,KAAKoY,oBAAoB9U,IAAIiD,EAAMd,YAC9C4L,GACAA,EAAOyD,uBAAuBvO,GAGtC0R,kBAAkB1R,GACdvG,KAAK4X,mBAAmBjX,OAAO4F,EAAMd,WAAYc,GACjD,MAAM8K,EAASrR,KAAKoY,oBAAoB9U,IAAIiD,EAAMd,YAC9C4L,GACAA,EAAO2D,0BAA0BzO,GAGzCiS,cAAcnH,GACVrR,KAAKoY,oBAAoB5U,IAAI6N,EAAO5L,WAAY4L,GACjCrR,KAAK4X,mBAAmBtM,gBAAgB+F,EAAO5L,YACvDpD,SAAQkE,GAAS8K,EAAOyD,uBAAuBvO,KAE1DkS,iBAAiBpH,GACbrR,KAAKoY,oBAAoBzX,OAAO0Q,EAAO5L,YACxBzF,KAAK4X,mBAAmBtM,gBAAgB+F,EAAO5L,YACvDpD,SAAQkE,GAAS8K,EAAO2D,0BAA0BzO,MAIjE,MAAMoS,EAAgB,CAClBnB,oBAAqB,kBACrBnJ,gBAAiB,cACjB2I,gBAAiB,cACjBJ,wBAAyBnR,GAAc,QAAQA,YAGnD,MAAMmT,EACFhZ,YAAYwG,EAAUlC,SAAS2U,gBAAiBtK,EAASoK,GACrD3Y,KAAK0V,OAASoD,QACd9Y,KAAK+Y,OAAQ,EACb/Y,KAAKmG,iBAAmB,CAACV,EAAY6L,EAAcrO,EAAS,MACpDjD,KAAK+Y,OACL/Y,KAAKgZ,oBAAoBvT,EAAY6L,EAAcrO,IAG3DjD,KAAKoG,QAAUA,EACfpG,KAAKuO,OAASA,EACdvO,KAAKyR,WAAa,IAAI3P,EAAW9B,MACjCA,KAAKiZ,OAAS,IAAIf,EAAOlY,MAE7B8O,aAAa1I,EAASmI,GAClB,MAAMxM,EAAc,IAAI6W,EAAYxS,EAASmI,GAE7C,OADAxM,EAAYI,QACLJ,EAEXmX,oBA8CO,IAAIC,SAAQC,IACY,WAAvBlV,SAASmV,WACTnV,SAAS9D,iBAAiB,oBAAoB,IAAMgZ,MAGpDA,OAjDJpZ,KAAKmG,iBAAiB,cAAe,YACrCnG,KAAKyR,WAAWtP,QAChBnC,KAAKiZ,OAAO9W,QACZnC,KAAKmG,iBAAiB,cAAe,SAEzC5D,OACIvC,KAAKmG,iBAAiB,cAAe,YACrCnG,KAAKyR,WAAWlP,OAChBvC,KAAKiZ,OAAO1W,OACZvC,KAAKmG,iBAAiB,cAAe,QAEzCmT,SAAS7T,EAAY8L,GACbA,EAAsBgI,YACtBvZ,KAAKwZ,KAAK,CAAE/T,WAAAA,EAAY8L,sBAAAA,IAGhCiI,KAAKC,KAASC,IACUpY,MAAM+Q,QAAQoH,GAAQA,EAAO,CAACA,KAASC,IAC/CrX,SAAQ+P,GAAcpS,KAAKiZ,OAAOX,eAAelG,KAEjEuH,OAAOF,KAASC,IACQpY,MAAM+Q,QAAQoH,GAAQA,EAAO,CAACA,KAASC,IAC/CrX,SAAQoD,GAAczF,KAAKiZ,OAAOV,iBAAiB9S,KAE/DmU,kBACA,OAAO5Z,KAAKiZ,OAAOpE,SAASlS,KAAI4C,GAAWA,EAAQM,aAEvDgU,qCAAqCzT,EAASX,GAC1C,MAAMF,EAAUvF,KAAKiZ,OAAOP,kCAAkCtS,EAASX,GACvE,OAAOF,EAAUA,EAAQM,WAAa,KAE1C/C,YAAYC,EAAOC,EAASC,GACxB,IAAIgO,EACJjR,KAAK0V,OAAO3S,MAAM,iBAAkBC,EAASD,EAAOE,GAC1B,QAAzBgO,EAAKhN,OAAO6V,eAA4B,IAAP7I,GAAyBA,EAAG9P,KAAK8C,OAAQjB,EAAS,GAAI,EAAG,EAAGD,GAElGiW,oBAAoBvT,EAAY6L,EAAcrO,EAAS,IACnDA,EAASjC,OAAOC,OAAO,CAAEc,YAAa/B,MAAQiD,GAC9CjD,KAAK0V,OAAOqE,eAAe,GAAGtU,MAAe6L,KAC7CtR,KAAK0V,OAAOsE,IAAI,WAAYhZ,OAAOC,OAAO,GAAIgC,IAC9CjD,KAAK0V,OAAOuE,YA8HpB,SAASC,GAA0B/N,EAAOgO,IACtC,OAkDJ,SAAkDhO,EAAOgO,GACrD,MAAMxW,EAAM,GAAGiB,EAAUuH,WACnBnE,EApBV,SAAkCmS,GAC9B,MAAMC,EAXV,SAA8BC,GAC1B,MAAMD,EAAiBE,EAAuBD,EAAWrS,MACzD,GAAIoS,EAAgB,CAChB,MAAMG,EAAmBC,EAAsBH,EAAWI,SAC1D,GAAIL,IAAmBG,EACnB,MAAM,IAAItV,MAAM,SAASmV,sEAAmFC,EAAWI,gBAAgBF,MAE3I,OAAOH,GAIYM,CAAqBP,GACtCQ,EAAuBH,EAAsBL,GAC7CS,EAAmBN,EAAuBH,GAC1CnS,EAAOoS,GAAkBO,GAAwBC,EACvD,GAAI5S,EACA,OAAOA,EACX,MAAM,IAAI/C,MAAM,uBAAuBkV,MAa1BU,CAAyBV,GACtC,MAAO,CACHnS,KAAAA,EACArE,IAAAA,EACAiH,KAAMzG,EAASR,GACXqM,mBAAiB,OAhB7B,SAAmCmK,GAC/B,MAAMW,EAAWR,EAAuBH,GACxC,GAAIW,EACA,OAAOC,EAAoBD,GAC/B,MAAM9K,EAAemK,EAAeM,QACpC,YAAqBtK,IAAjBH,EACOA,EACJmK,EASyBa,CAA0Bb,IAClDc,4BAA0B,YAAiD9K,IAA1CqK,EAAsBL,IAC3D1J,OAAQyK,EAAQlT,GAChB+H,OAAQoL,EAAQnT,IAASmT,EAAQV,SA5D9BW,CAAyCjP,EAAOgO,GAE3D,SAASG,EAAuBQ,GAC5B,OAAQA,GACJ,KAAKxZ,MAAO,MAAO,QACnB,KAAK+Z,QAAS,MAAO,UACrB,KAAKC,OAAQ,MAAO,SACpB,KAAKta,OAAQ,MAAO,SACpB,KAAKua,OAAQ,MAAO,UAG5B,SAASf,EAAsBxK,GAC3B,cAAeA,GACX,IAAK,UAAW,MAAO,UACvB,IAAK,SAAU,MAAO,SACtB,IAAK,SAAU,MAAO,SAE1B,OAAI1O,MAAM+Q,QAAQrC,GACP,QAC0C,oBAAjDhP,OAAOiS,UAAU9D,SAAShO,KAAK6O,GACxB,cADX,EA4CJ,MAAM+K,EAAsB,CACpBS,YAAU,MAAO,IACrBC,SAAS,EACTC,OAAQ,EACJ7H,aAAW,MAAO,IACtB8H,OAAQ,IAENT,EAAU,CACZM,MAAMpX,GACF,MAAMoX,EAAQrW,KAAKC,MAAMhB,GACzB,IAAK9C,MAAM+Q,QAAQmJ,GACf,MAAM,IAAII,UAAU,kBAExB,OAAOJ,GAEXC,QAAQrX,KACc,KAATA,GAAyB,SAATA,GAE7BsX,OAAOtX,GACIkX,OAAOlX,GAElByP,OAAOzP,GACH,MAAMyP,EAAS1O,KAAKC,MAAMhB,GAC1B,GAAe,OAAXyP,GAAoC,iBAAVA,GAAsBvS,MAAM+Q,QAAQwB,GAC9D,MAAM,IAAI+H,UAAU,mBAExB,OAAO/H,GAEX8H,OAAOvX,GACIA,GAGT+W,EAAU,CACZV,QAOJ,SAAqBrW,GACjB,MAAO,GAAGA,KAPVoX,MAAOK,EACPhI,OAAQgI,GAEZ,SAASA,EAAUzX,GACf,OAAOe,KAAK2W,UAAU1X,GAM1B,MAAM2X,EACFnc,YAAY2F,GACRvF,KAAKuF,QAAUA,EAERgU,wBACP,OAAO,EAEPxX,kBACA,OAAO/B,KAAKuF,QAAQxD,YAEpBwE,YACA,OAAOvG,KAAKuF,QAAQgB,MAEpBH,cACA,OAAOpG,KAAKuG,MAAMH,QAElBX,iBACA,OAAOzF,KAAKuG,MAAMd,WAElB6Q,cACA,OAAOtW,KAAKuG,MAAM+P,QAElBc,cACA,OAAOpX,KAAKuG,MAAM6Q,QAElBhH,WACA,OAAOpQ,KAAKuG,MAAM6J,KAEtBwB,cAEAzR,WAEAE,cAEA2b,SAASlc,GAAW,OAAEiG,EAAS/F,KAAKoG,QAAO,OAAEnD,EAAS,GAAE,OAAEgZ,EAASjc,KAAKyF,WAAU,QAAEyW,GAAU,EAAI,WAAEC,GAAa,GAAS,IACtH,MACMtb,EAAQ,IAAIub,YADLH,EAAS,GAAGA,KAAUnc,IAAcA,EACb,CAAEmD,OAAAA,EAAQiZ,QAAAA,EAASC,WAAAA,IAEvD,OADApW,EAAOsW,cAAcxb,GACdA,GAGfkb,EAAWO,UAAY,CArQvB,SAAiC1c,GAE7B,OADgBoS,EAAiCpS,EAAa,WAC/C6C,QAAO,CAACoQ,EAAY0J,KAC/B,OAAOvb,OAAOC,OAAO4R,EAIlB,CACH,CAAC,GAF6BlP,EAHgC4Y,UAK7C,CACbjZ,MACI,MAAM,QAAE8T,GAAYpX,KACpB,GAAIoX,EAAQzP,IAAIhE,GACZ,OAAOyT,EAAQ9T,IAAIK,GAElB,CACD,MAAMgH,EAAYyM,EAAQhC,iBAAiBzR,GAC3C,MAAM,IAAIsB,MAAM,sBAAsB0F,SAIlD,CAAC,GAAGhH,YAAe,CACfL,MACI,OAAOtD,KAAKoX,QAAQjC,OAAOxR,KAGnC,CAAC,MAAMc,EAAWd,WAAc,CAC5BL,MACI,OAAOtD,KAAKoX,QAAQzP,IAAIhE,OArBxC,IAAsCA,IAF/B,KA6BP,SAAkC/D,GAE9B,OADgBoS,EAAiCpS,EAAa,WAC/C6C,QAAO,CAACoQ,EAAY2J,KAC/B,OAAOxb,OAAOC,OAAO4R,EAIlB,CACH,CAAC,GAF8BjI,EAHgC4R,WAK5C,CACflZ,MACI,MAAMyC,EAAS/F,KAAKsW,QAAQL,KAAKrL,GACjC,GAAI7E,EACA,OAAOA,EAGP,MAAM,IAAId,MAAM,2BAA2B2F,WAAc5K,KAAKyF,4BAI1E,CAAC,GAAGmF,YAAgB,CAChBtH,MACI,OAAOtD,KAAKsW,QAAQD,QAAQzL,KAGpC,CAAC,MAAMnG,EAAWmG,YAAgB,CAC9BtH,MACI,OAAOtD,KAAKsW,QAAQ3O,IAAIiD,OApBxC,IAAuCA,IAFhC,KA4BP,SAAiChL,GAC7B,MAAM6c,EAAuBlK,EAAiC3S,EAAa,UACrE8c,EAAwB,CAC1B9M,mBAAoB,CAChBtM,MACI,OAAOmZ,EAAqBha,QAAO,CAACka,EAAQC,KACxC,MAAMC,EAAkB3C,EAAyB0C,GAC3C1U,EAAgBlI,KAAKoQ,KAAKiF,uBAAuBwH,EAAgBlZ,KACvE,OAAO3C,OAAOC,OAAO0b,EAAQ,CAAE,CAACzU,GAAgB2U,MACjD,OAIf,OAAOJ,EAAqBha,QAAO,CAACoQ,EAAY+J,IACrC5b,OAAOC,OAAO4R,EAG7B,SAA0C+J,GACtC,MAAMxK,EAAa8H,EAAyB0C,IACtC,IAAEjZ,EAAG,KAAEiH,EAAM6F,OAAQqM,EAAM/M,OAAQgN,GAAU3K,EACnD,MAAO,CACH,CAACxH,GAAO,CACJtH,MACI,MAAMc,EAAQpE,KAAKoQ,KAAK9M,IAAIK,GAC5B,OAAc,OAAVS,EACO0Y,EAAK1Y,GAGLgO,EAAWpC,cAG1BxM,IAAIY,QACc+L,IAAV/L,EACApE,KAAKoQ,KAAKzP,OAAOgD,GAGjB3D,KAAKoQ,KAAK5M,IAAIG,EAAKoZ,EAAM3Y,MAIrC,CAAC,MAAMK,EAAWmG,MAAU,CACxBtH,MACI,OAAOtD,KAAKoQ,KAAKzI,IAAIhE,IAAQyO,EAAW6I,yBA5Bf+B,CAAiCJ,KACnEF,KAsLPX,EAAWzF,QAAU,GACrByF,EAAWvZ,OAAS,I,2CCr5DmF,MAAMya,UAAU,KAAE9c,WAAU,OAAEH,KAAK,CAACoG,QAAQpG,KAAKkd,aAAaC,SAASnd,KAAKod,mBAAmBC,KAAKC,GAAGtd,KAAKoG,QAAQE,SAASgX,EAAEvX,SAAS/F,KAAKkd,WAAWK,UAAUjX,SAAS,WAAWtG,KAAKwd,SAASP,EAAE3G,QAAQ,CAAC,QAAQ,O,mDCA9T,MAAMmH,EAAc,CAChBC,eAAgB,QAChBC,iBAAkB,aAClBC,aAAc,WACdC,eAAgB,QAChBC,iBAAkB,aAClBC,aAAc,YAEZC,EAAiB,CACnBC,cAAc,EACdC,YAAa,SACbC,uBAAuB,EACvBC,iBAAiB,GAERC,EAAgB,CAACxY,EAAYmJ,EAAU,MAChD,IAAIiC,EAAIqN,EAAIC,EACZ,MAAMvI,EAAanQ,EAAWO,QAAQoY,QAAQC,iBAC9C,IAAIC,EACA1I,IACA0I,EAAsB7Y,EAAW,GAAGmQ,YAExC,MAAM2I,GAA6B,OAAZ3P,QAAgC,IAAZA,OAAqB,EAASA,EAAQ5I,UAAYsY,GAAuB7Y,EAAWO,QAE/H,KAAMuY,aAAyBC,aAAeD,aAAyBE,YACnE,OACJ,MAAML,EAAUG,EAAcH,QACxBM,EAAaC,SAASP,EAAQM,YAAc,KAAO9P,EAAQ8P,YAAc,GACzE,aAAEb,EAAY,YAAEC,EAAW,sBAAEC,EAAqB,gBAAEC,GAAoBpd,OAAOC,OAAO+c,EAAgBhP,GACtGgQ,EAA8C,QAA3B/N,EAAKpL,EAAWoZ,aAA0B,IAAPhO,OAAgB,EAASA,EAAGiO,KAAKrZ,GACvFsZ,EAA8C,QAA3Bb,EAAKzY,EAAW2X,aAA0B,IAAPc,OAAgB,EAASA,EAAGY,KAAKrZ,GACvFuZ,EAAoE,QAAtCb,EAAK1Y,EAAWuX,wBAAqC,IAAPmB,OAAgB,EAASA,EAAGW,KAAKrZ,GACnHqT,eAAe+F,EAAMpe,GACjB,GAAIgF,EAAWoY,aACX,OACJpY,EAAWoY,cAAe,EAC1Be,GAAmBA,EAAgBne,GACnC,MAAMwe,EAAmBra,EAAa,YAAagK,EAASwP,GACtDc,EAAqBta,EAAa,cAAegK,EAASwP,GAC1De,EAAiBva,EAAa,UAAWgK,EAASwP,GAClDgB,EAAiBxa,EAAa,UAAWgK,EAASwP,GAClDN,GACFS,EAAcpB,UAAUkC,OAAOvB,GAE9BE,GACDsB,EAAcf,EAAea,SAE3BG,EAAWhB,EAAeU,EAAkBC,EAAoBC,EAAgBrB,EAAaC,EAAuBC,GACtHU,EAAa,GACbc,YAAW,KACPpC,EAAM3c,KACPie,GAGX5F,eAAesE,EAAM3c,GACjB,IAAKgF,EAAWoY,aACZ,OACJpY,EAAWoY,cAAe,EAC1BkB,GAAmBA,EAAgBte,GACnC,MAAMgf,EAAmB7a,EAAa,YAAagK,EAASwP,GACtDsB,EAAqB9a,EAAa,cAAegK,EAASwP,GAC1DgB,EAAiBxa,EAAa,UAAWgK,EAASwP,GAClDe,EAAiBva,EAAa,UAAWgK,EAASwP,GACnDJ,GACDsB,EAAcf,EAAeY,SAE3BI,EAAWhB,EAAekB,EAAkBC,EAAoBN,EAAgBtB,EAAaC,EAAuBC,GACpHF,GACFS,EAAcpB,UAAU9c,IAAIyd,GAGpC,SAASd,EAAiBvc,GACtBue,GAA8BA,EAA2Bve,GACrDgF,EAAWoY,aACXT,IAGAyB,IAGR/F,eAAeyG,EAAWvZ,EAAS2Z,EAAgBC,EAAeC,EAAY/B,EAAaC,EAAuB+B,GAG9G,MAAMC,EAAiB,GACnBhC,IACA4B,EAAe1d,SAAQ+d,GAAOha,EAAQmX,UAAUjX,SAAS8Z,IAAQA,IAAQlC,GAAeiC,EAAevc,KAAKwc,KAC5GJ,EAAc3d,SAAQ+d,GAAOha,EAAQmX,UAAUjX,SAAS8Z,IAAQA,IAAQlC,GAAeiC,EAAevc,KAAKwc,KAC3GH,EAAW5d,SAAQ+d,GAAOha,EAAQmX,UAAUjX,SAAS8Z,IAAQA,IAAQlC,GAAeiC,EAAevc,KAAKwc,MAG5GC,EAAWja,EAAS2Z,GAEpBL,EAActZ,EAAS+Z,GAEvBE,EAAWja,EAAS4Z,SA2D5B9G,iBACI,OAAO,IAAIC,SAAQC,IACfkH,uBAAsB,KAClBA,sBAAsBlH,SA7DpBmH,GAENb,EAActZ,EAAS2Z,GAEvBM,EAAWja,EAAS6Z,SA8C5B/G,eAA+B9S,GAC3B,OAAO,IAAI+S,SAAQC,IACf,MAAMoH,EAAiG,IAAtFlF,OAAOmF,iBAAiBra,GAASsa,mBAAmBvT,MAAM,KAAK,GAAG9I,QAAQ,IAAK,KAChGub,YAAW,KACPxG,EAAQoH,KACTA,MAjDGG,CAAgBva,GAEtBsZ,EAActZ,EAAS4Z,GACnBE,GACAR,EAActZ,EAAS6Z,GAG3BI,EAAWja,EAAS+Z,GAiBxB,SAASE,EAAWja,EAASgR,GACrBA,EAAQ3K,OAAS,GACjBrG,EAAQmX,UAAU9c,OAAO2W,GAGjC,SAASsI,EAActZ,EAASgR,GACxBA,EAAQ3K,OAAS,GACjBrG,EAAQmX,UAAUkC,UAAUrI,GAKpC,OA1BIvR,EAAWoY,aAAeA,EACtBA,GACMC,GACFS,EAAcpB,UAAUkC,OAAOvB,GAEnCe,MAGMf,GACFS,EAAcpB,UAAU9c,IAAIyd,GAEhCV,KAcRxc,OAAOC,OAAO4E,EAAY,CAAEoZ,MAAAA,EAAOzB,MAAAA,EAAOJ,iBAAAA,IACnC,CAAC6B,EAAOzB,EAAOJ,IAE1B,SAASpY,EAAa4F,EAAMoE,EAASwP,GACjC,MAAMoC,EAAc,aAAahW,EAAK,GAAGpG,gBAAgBoG,EAAKiW,OAAO,KAC/DC,EAAoBrD,EAAY7S,GAChCwM,EAAUpI,EAAQpE,IAAS4T,EAAQoC,IAAgBpC,EAAQsC,IAAsB,IACvF,OAkBsB,KADTC,EAjBE3J,GAkBJ3K,QAAiBsU,EAAI7T,OAlBDkK,EAAQjK,MAAM,KAAnB,GAiB9B,IAAiB4T,I","sources":["webpack://app/./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack://app/./node_modules/stimulus-dropdown/dist/stimulus-dropdown.es.js","webpack://app/./node_modules/stimulus-use/dist/use-transition/use-transition.js"],"sourcesContent":["/*\nStimulus 3.0.1\nCopyright © 2021 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n }\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map;\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(eventListener => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(eventListener => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values())\n .reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map;\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions).sort().forEach(key => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n identifier: matches[5],\n methodName: matches[7]\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n constructor(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n static forToken(token) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content));\n }\n toString() {\n const eventNameSuffix = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventNameSuffix}->${this.identifier}#${this.methodName}`;\n }\n get params() {\n if (this.eventTarget instanceof Element) {\n return this.getParamsFromEventTargetAttributes(this.eventTarget);\n }\n else {\n return {};\n }\n }\n getParamsFromEventTargetAttributes(eventTarget) {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`);\n const attributes = Array.from(eventTarget.attributes);\n attributes.forEach(({ name, value }) => {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n Object.assign(params, { [camelize(key)]: typecast(value) });\n }\n });\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n}\nconst defaultEventNames = {\n \"a\": e => \"click\",\n \"button\": e => \"click\",\n \"form\": e => \"submit\",\n \"details\": e => \"toggle\",\n \"input\": e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n \"select\": e => \"change\",\n \"textarea\": e => \"input\"\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n const { params } = this.action;\n const actionEvent = Object.assign(event, { params });\n this.method.call(this.controller, actionEvent);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set;\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(node, attributeName) {\n const element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map;\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map(attribute => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some(set => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([key, values]) => values.has(value))\n .map(([key, values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map;\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap;\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach(token => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach(token => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens)\n .findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(content => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap;\n this.valuesByTokenByElement = new WeakMap;\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map;\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map;\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach(binding => this.delegate.bindingDisconnected(binding));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n this.invokeChangedCallbacksForDefaultValues();\n }\n start() {\n this.stringMapObserver.start();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map(key => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(key => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap;\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach(name => values.add(name));\n return values;\n }, new Set));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(key => [key, definition[key]]) : [];\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [\n ...Object.getOwnPropertyNames(object),\n ...Object.getOwnPropertySymbols(object)\n ];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () { this.a.call(this); };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b;\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap;\n this.connectedContexts = new Set;\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap;\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set;\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target\n || this.findTarget(targetName)\n || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName)\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(element => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n }\n findElement(selector) {\n return this.element.matches(selector)\n ? this.element\n : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...this.element.matches(selector) ? [this.element] : [],\n ...this.queryElements(selector).filter(this.containsElement)\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap;\n this.scopeReferenceCounts = new WeakMap;\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map;\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap;\n this.modulesByIdentifier = new Map;\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(context => context.element == element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: identifier => `data-${identifier}-target`\n};\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n static start(element, schema) {\n const application = new Application(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n if (controllerConstructor.shouldLoad) {\n this.load({ identifier, controllerConstructor });\n }\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach(definition => this.router.loadDefinition(definition));\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach(identifier => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map(context => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise(resolve => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n }\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n }\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n }\n }\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n }\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n }\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n }\n }\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair) {\n const definition = parseValueDefinitionPair(valueDefinitionPair);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n }\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n }\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition]) {\n return valueDescriptorForTokenAndTypeDefinition(token, typeDefinition);\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array: return \"array\";\n case Boolean: return \"boolean\";\n case Number: return \"number\";\n case Object: return \"object\";\n case String: return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\": return \"boolean\";\n case \"number\": return \"number\";\n case \"string\": return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(typeObject) {\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n if (typeFromObject) {\n const defaultValueType = parseValueTypeDefault(typeObject.default);\n if (typeFromObject !== defaultValueType) {\n throw new Error(`Type \"${typeFromObject}\" must match the type of the default value. Given default value: \"${typeObject.default}\" as \"${defaultValueType}\"`);\n }\n return typeFromObject;\n }\n}\nfunction parseValueTypeDefinition(typeDefinition) {\n const typeFromObject = parseValueTypeObject(typeDefinition);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n throw new Error(`Unknown value type \"${typeDefinition}\"`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const defaultValue = typeDefinition.default;\n if (defaultValue !== undefined)\n return defaultValue;\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(token, typeDefinition) {\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(typeDefinition);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() { return defaultValueForDefinition(typeDefinition); },\n get hasCustomDefaultValue() { return parseValueTypeDefault(typeDefinition) !== undefined; },\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\nconst defaultValuesByType = {\n get array() { return []; },\n boolean: false,\n number: 0,\n get object() { return {}; },\n string: \"\"\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(\"Expected array\");\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || value == \"false\");\n },\n number(value) {\n return Number(value);\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(\"Expected object\");\n }\n return object;\n },\n string(value) {\n return value;\n }\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\nController.targets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n","import{Controller as t}from\"stimulus\";import{useTransition as e}from\"stimulus-use/dist/use-transition\";class s extends t{connect(){e(this,{element:this.menuTarget})}toggle(){this.toggleTransition()}hide(t){this.element.contains(t.target)||this.menuTarget.classList.contains(\"hidden\")||this.leave()}}s.targets=[\"menu\"];export default s;\n","const alpineNames = {\n enterFromClass: 'enter',\n enterActiveClass: 'enterStart',\n enterToClass: 'enterEnd',\n leaveFromClass: 'leave',\n leaveActiveClass: 'leaveStart',\n leaveToClass: 'leaveEnd'\n};\nconst defaultOptions = {\n transitioned: false,\n hiddenClass: 'hidden',\n preserveOriginalClass: true,\n removeToClasses: true\n};\nexport const useTransition = (controller, options = {}) => {\n var _a, _b, _c;\n const targetName = controller.element.dataset.transitionTarget;\n let targetFromAttribute;\n if (targetName) {\n targetFromAttribute = controller[`${targetName}Target`];\n }\n const targetElement = (options === null || options === void 0 ? void 0 : options.element) || targetFromAttribute || controller.element;\n // data attributes are only available on HTMLElement and SVGElement\n if (!(targetElement instanceof HTMLElement || targetElement instanceof SVGElement))\n return;\n const dataset = targetElement.dataset;\n const leaveAfter = parseInt(dataset.leaveAfter || '') || options.leaveAfter || 0;\n const { transitioned, hiddenClass, preserveOriginalClass, removeToClasses } = Object.assign(defaultOptions, options);\n const controllerEnter = (_a = controller.enter) === null || _a === void 0 ? void 0 : _a.bind(controller);\n const controllerLeave = (_b = controller.leave) === null || _b === void 0 ? void 0 : _b.bind(controller);\n const controllerToggleTransition = (_c = controller.toggleTransition) === null || _c === void 0 ? void 0 : _c.bind(controller);\n async function enter(event) {\n if (controller.transitioned)\n return;\n controller.transitioned = true;\n controllerEnter && controllerEnter(event);\n const enterFromClasses = getAttribute('enterFrom', options, dataset);\n const enterActiveClasses = getAttribute('enterActive', options, dataset);\n const enterToClasses = getAttribute('enterTo', options, dataset);\n const leaveToClasses = getAttribute('leaveTo', options, dataset);\n if (!!hiddenClass) {\n targetElement.classList.remove(hiddenClass);\n }\n if (!removeToClasses) {\n removeClasses(targetElement, leaveToClasses);\n }\n await transition(targetElement, enterFromClasses, enterActiveClasses, enterToClasses, hiddenClass, preserveOriginalClass, removeToClasses);\n if (leaveAfter > 0) {\n setTimeout(() => {\n leave(event);\n }, leaveAfter);\n }\n }\n async function leave(event) {\n if (!controller.transitioned)\n return;\n controller.transitioned = false;\n controllerLeave && controllerLeave(event);\n const leaveFromClasses = getAttribute('leaveFrom', options, dataset);\n const leaveActiveClasses = getAttribute('leaveActive', options, dataset);\n const leaveToClasses = getAttribute('leaveTo', options, dataset);\n const enterToClasses = getAttribute('enterTo', options, dataset);\n if (!removeToClasses) {\n removeClasses(targetElement, enterToClasses);\n }\n await transition(targetElement, leaveFromClasses, leaveActiveClasses, leaveToClasses, hiddenClass, preserveOriginalClass, removeToClasses);\n if (!!hiddenClass) {\n targetElement.classList.add(hiddenClass);\n }\n }\n function toggleTransition(event) {\n controllerToggleTransition && controllerToggleTransition(event);\n if (controller.transitioned) {\n leave();\n }\n else {\n enter();\n }\n }\n async function transition(element, initialClasses, activeClasses, endClasses, hiddenClass, preserveOriginalClass, removeEndClasses) {\n // if there's any overlap between the current set of classes and initialClasses/activeClasses/endClasses,\n // we should remove them before we start and add them back at the end\n const stashedClasses = [];\n if (preserveOriginalClass) {\n initialClasses.forEach(cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls));\n activeClasses.forEach(cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls));\n endClasses.forEach(cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls));\n }\n // Add initial class before element start transition\n addClasses(element, initialClasses);\n // remove the overlapping classes\n removeClasses(element, stashedClasses);\n // Add active class before element start transition and maitain it during the entire transition.\n addClasses(element, activeClasses);\n await nextAnimationFrame();\n // remove the initial class on frame after the beginning of the transition\n removeClasses(element, initialClasses);\n // add the endClass on frame after the beginning of the transition\n addClasses(element, endClasses);\n // dynamically comput the duration of the transition from the style of the element\n await afterTransition(element);\n // remove both activeClasses and endClasses\n removeClasses(element, activeClasses);\n if (removeEndClasses) {\n removeClasses(element, endClasses);\n }\n // restore the overlaping classes\n addClasses(element, stashedClasses);\n }\n function initialState() {\n controller.transitioned = transitioned;\n if (transitioned) {\n if (!!hiddenClass) {\n targetElement.classList.remove(hiddenClass);\n }\n enter();\n }\n else {\n if (!!hiddenClass) {\n targetElement.classList.add(hiddenClass);\n }\n leave();\n }\n }\n function addClasses(element, classes) {\n if (classes.length > 0) {\n element.classList.add(...classes);\n }\n }\n function removeClasses(element, classes) {\n if (classes.length > 0) {\n element.classList.remove(...classes);\n }\n }\n initialState();\n Object.assign(controller, { enter, leave, toggleTransition });\n return [enter, leave, toggleTransition];\n};\nfunction getAttribute(name, options, dataset) {\n const datasetName = `transition${name[0].toUpperCase()}${name.substr(1)}`;\n const datasetAlpineName = alpineNames[name];\n const classes = options[name] || dataset[datasetName] || dataset[datasetAlpineName] || ' ';\n return isEmpty(classes) ? [] : classes.split(' ');\n}\nasync function afterTransition(element) {\n return new Promise(resolve => {\n const duration = Number(getComputedStyle(element).transitionDuration.split(',')[0].replace('s', '')) * 1000;\n setTimeout(() => {\n resolve(duration);\n }, duration);\n });\n}\nasync function nextAnimationFrame() {\n return new Promise(resolve => {\n requestAnimationFrame(() => {\n requestAnimationFrame(resolve);\n });\n });\n}\nfunction isEmpty(str) {\n return str.length === 0 || !str.trim();\n}\n//# sourceMappingURL=use-transition.js.map"],"names":["EventListener","constructor","eventTarget","eventName","eventOptions","this","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","delete","handleEvent","event","extendedEvent","stopImmediatePropagation","Object","assign","immediatePropagationStopped","call","extendEvent","bindings","Array","from","sort","left","right","leftIndex","index","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","map","concat","fetchEventListenerForBinding","handleError","error","message","detail","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","get","createEventListener","set","parts","keys","key","push","join","descriptorPattern","parseEventTarget","eventTargetName","window","document","camelize","value","replace","_","char","toUpperCase","capitalize","charAt","slice","dasherize","toLowerCase","defaultEventNames","e","getAttribute","Error","typecast","JSON","parse","o_O","Binding","context","action","identifier","willBeInvokedByEvent","invokeWithEvent","method","controller","methodName","target","currentTarget","params","actionEvent","logDebugActivity","element","Element","contains","scope","containsElement","ElementObserver","delegate","mutationObserverInit","attributes","childList","subtree","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","refresh","pause","callback","takeRecords","matches","matchElementsInTree","has","removeElement","addElement","mutation","processMutation","type","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","selector","hasAttribute","match","querySelectorAll","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","StringMapObserver","stringMap","attributeOldValue","knownAttributeNames","refreshAttribute","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","name","fetch","del","size","prune","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","filter","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","unmatchedTokens","matchedTokens","refreshTokensForElement","tokensUnmatched","tokens","token","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","length","Math","max","zip","findIndex","previousToken","currentToken","content","tokenString","trim","split","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","descriptor","tagName","getDefaultEventNameForElement","static","descriptorString","options","test","parseActionDescriptorString","toString","eventNameSuffix","getParamsFromEventTargetAttributes","pattern","RegExp","forToken","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","valueDescriptors","undefined","data","rawValue","rawOldValue","changedMethodName","changedMethod","reader","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","connectTarget","disconnectTarget","_a","targetConnected","targetDisconnected","Context","module","functionName","controllerConstructor","bindingObserver","dispatcher","valueObserver","targetObserver","initialize","parentElement","invokeControllerMethod","args","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","isArray","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","getPrototypeOf","reverse","bless","properties","shadowConstructor","extend","shadowProperties","prototype","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","defineProperties","shadow","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","object","getOwnPropertyNames","extendWithReflect","extended","Reflect","construct","arguments","create","setPrototypeOf","b","a","testReflectExtension","Module","blessDefinition","contextsByScope","connectedContexts","contexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","ClassMap","getDataKey","getAll","getAttributeName","getAttributeNameForKey","DataMap","setAttribute","removeAttribute","Guide","logger","warnedKeysByObject","warn","warnedKeys","attributeValueContainsToken","TargetSet","targetName","find","targetNames","findTarget","findLegacyTarget","findAll","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","deprecate","targetDescriptor","targetAttribute","revisedAttributeName","guide","Scope","classes","closest","controllerSelector","queryElements","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","modules","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","Application","documentElement","console","debug","logFormattedMessage","router","async","Promise","resolve","readyState","register","shouldLoad","load","head","rest","unload","controllers","getControllerForElementAndIdentifier","onerror","groupCollapsed","log","groupEnd","parseValueDefinitionPair","typeDefinition","typeFromObject","typeObject","parseValueTypeConstant","defaultValueType","parseValueTypeDefault","default","parseValueTypeObject","typeFromDefaultValue","typeFromConstant","parseValueTypeDefinition","constant","defaultValuesByType","defaultValueForDefinition","hasCustomDefaultValue","readers","writers","valueDescriptorForTokenAndTypeDefinition","Boolean","Number","String","array","boolean","number","string","TypeError","writeJSON","stringify","Controller","dispatch","prefix","bubbles","cancelable","CustomEvent","dispatchEvent","blessings","classDefinition","targetDefinition","valueDefinitionPairs","propertyDescriptorMap","result","valueDefinitionPair","valueDescriptor","read","write","propertiesForValueDefinitionPair","s","menuTarget","toggle","toggleTransition","hide","t","classList","leave","alpineNames","enterFromClass","enterActiveClass","enterToClass","leaveFromClass","leaveActiveClass","leaveToClass","defaultOptions","transitioned","hiddenClass","preserveOriginalClass","removeToClasses","useTransition","_b","_c","dataset","transitionTarget","targetFromAttribute","targetElement","HTMLElement","SVGElement","leaveAfter","parseInt","controllerEnter","enter","bind","controllerLeave","controllerToggleTransition","enterFromClasses","enterActiveClasses","enterToClasses","leaveToClasses","remove","removeClasses","transition","setTimeout","leaveFromClasses","leaveActiveClasses","initialClasses","activeClasses","endClasses","removeEndClasses","stashedClasses","cls","addClasses","requestAnimationFrame","nextAnimationFrame","duration","getComputedStyle","transitionDuration","afterTransition","datasetName","substr","datasetAlpineName","str"],"sourceRoot":""}