{"version":3,"file":"/js/echo.js","mappings":";sBAQA,IAAiDA,EAS9CC,OAT8CD,EAStC,WACX,OAAgB,SAAUE,GAEhB,IAAIC,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAH,EAAQE,GAAUK,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBK,EAAIR,EAGxB,EAAoBS,EAAIR,EAGxB,EAAoBS,EAAI,SAASP,EAASQ,EAAMC,GAC3C,EAAoBC,EAAEV,EAASQ,IAClCG,OAAOC,eAAeZ,EAASQ,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAASf,GACX,oBAAXgB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeZ,EAASgB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeZ,EAAS,aAAc,CAAEkB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAASzB,GAChC,IAAIQ,EAASR,GAAUA,EAAOoB,WAC7B,WAAwB,OAAOpB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBM,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,EACnD,CApFM,CAsFN,CAEJ,SAAU/B,EAAQD,EAASiC,GAEjC,aAIA,IACQC,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,GAEJ9B,OAAOC,eAAeZ,EAAS,aAAc,CAAEkB,OAAO,IAOtD,IAAIyB,EAAe,IAMfC,EAAuB,WAEvB,SAASA,EAAMC,QACe,IAAtBA,IAAgCA,EAAoB,KACxDT,KAAKS,kBAAoBA,CAC7B,CAyKA,OAxKAD,EAAMf,UAAUiB,cAAgB,SAAUC,GACtC,OAAKX,KAAKS,mBAGFE,EAAS,GAAK,EAAI,EAAI,GAFT,EAATA,EAAa,GAAK,EAAI,CAGtC,EACAH,EAAMf,UAAUmB,OAAS,SAAUC,GAG/B,IAFA,IAAIC,EAAM,GACNhD,EAAI,EACDA,EAAI+C,EAAKF,OAAS,EAAG7C,GAAK,EAAG,CAChC,IAAII,EAAK2C,EAAK/C,IAAM,GAAO+C,EAAK/C,EAAI,IAAM,EAAM+C,EAAK/C,EAAI,GACzDgD,GAAOd,KAAKe,YAAa7C,IAAM,GAAS,IACxC4C,GAAOd,KAAKe,YAAa7C,IAAM,GAAS,IACxC4C,GAAOd,KAAKe,YAAa7C,IAAM,EAAS,IACxC4C,GAAOd,KAAKe,YAAa7C,IAAM,EAAS,GAC5C,CACA,IAAI8C,EAAOH,EAAKF,OAAS7C,EAazB,OAZIkD,EAAO,IACH9C,EAAK2C,EAAK/C,IAAM,IAAgB,IAATkD,EAAaH,EAAK/C,EAAI,IAAM,EAAI,GAC3DgD,GAAOd,KAAKe,YAAa7C,IAAM,GAAS,IACxC4C,GAAOd,KAAKe,YAAa7C,IAAM,GAAS,IAEpC4C,GADS,IAATE,EACOhB,KAAKe,YAAa7C,IAAM,EAAS,IAGjC8B,KAAKS,mBAAqB,GAErCK,GAAOd,KAAKS,mBAAqB,IAE9BK,CACX,EACAN,EAAMf,UAAUwB,iBAAmB,SAAUN,GACzC,OAAKX,KAAKS,kBAGHE,EAAS,EAAI,EAAI,GAFH,EAATA,EAAa,GAAK,EAAI,CAGtC,EACAH,EAAMf,UAAUyB,cAAgB,SAAUtB,GACtC,OAAOI,KAAKiB,iBAAiBrB,EAAEe,OAASX,KAAKmB,kBAAkBvB,GACnE,EACAY,EAAMf,UAAU2B,OAAS,SAAUxB,GAC/B,GAAiB,IAAbA,EAAEe,OACF,OAAO,IAAIU,WAAW,GAS1B,IAPA,IAAIC,EAAgBtB,KAAKmB,kBAAkBvB,GACvCe,EAASf,EAAEe,OAASW,EACpBR,EAAM,IAAIO,WAAWrB,KAAKiB,iBAAiBN,IAC3CY,EAAK,EACLzD,EAAI,EACJ0D,EAAU,EACVC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAC1B9D,EAAI6C,EAAS,EAAG7C,GAAK,EACxB2D,EAAKzB,KAAK6B,YAAYjC,EAAEkC,WAAWhE,EAAI,IACvC4D,EAAK1B,KAAK6B,YAAYjC,EAAEkC,WAAWhE,EAAI,IACvC6D,EAAK3B,KAAK6B,YAAYjC,EAAEkC,WAAWhE,EAAI,IACvC8D,EAAK5B,KAAK6B,YAAYjC,EAAEkC,WAAWhE,EAAI,IACvCgD,EAAIS,KAASE,GAAM,EAAMC,IAAO,EAChCZ,EAAIS,KAASG,GAAM,EAAMC,IAAO,EAChCb,EAAIS,KAASI,GAAM,EAAKC,EACxBJ,GAAWC,EAAKlB,EAChBiB,GAAWE,EAAKnB,EAChBiB,GAAWG,EAAKpB,EAChBiB,GAAWI,EAAKrB,EAmBpB,GAjBIzC,EAAI6C,EAAS,IACbc,EAAKzB,KAAK6B,YAAYjC,EAAEkC,WAAWhE,IACnC4D,EAAK1B,KAAK6B,YAAYjC,EAAEkC,WAAWhE,EAAI,IACvCgD,EAAIS,KAASE,GAAM,EAAMC,IAAO,EAChCF,GAAWC,EAAKlB,EAChBiB,GAAWE,EAAKnB,GAEhBzC,EAAI6C,EAAS,IACbgB,EAAK3B,KAAK6B,YAAYjC,EAAEkC,WAAWhE,EAAI,IACvCgD,EAAIS,KAASG,GAAM,EAAMC,IAAO,EAChCH,GAAWG,EAAKpB,GAEhBzC,EAAI6C,EAAS,IACbiB,EAAK5B,KAAK6B,YAAYjC,EAAEkC,WAAWhE,EAAI,IACvCgD,EAAIS,KAASI,GAAM,EAAKC,EACxBJ,GAAWI,EAAKrB,GAEJ,IAAZiB,EACA,MAAM,IAAIO,MAAM,kDAEpB,OAAOjB,CACX,EASAN,EAAMf,UAAUsB,YAAc,SAAUd,GAqBpC,IAAI+B,EAAS/B,EAWb,OATA+B,GAAU,GAEVA,GAAY,GAAK/B,IAAO,EAAK,EAE7B+B,GAAY,GAAK/B,IAAO,GAAK,GAE7B+B,GAAY,GAAK/B,IAAO,GAAK,GAE7B+B,GAAY,GAAK/B,IAAO,EAAK,EACtBgC,OAAOC,aAAaF,EAC/B,EAGAxB,EAAMf,UAAUoC,YAAc,SAAU3D,GAUpC,IAAI8D,EAASzB,EAWb,OATAyB,IAAa,GAAK9D,EAAMA,EAAI,MAAS,GAAM,IAAgBA,EAAI,GAAK,GAEpE8D,IAAa,GAAK9D,EAAMA,EAAI,MAAS,GAAM,IAAgBA,EAAI,GAAK,GAEpE8D,IAAa,GAAK9D,EAAMA,EAAI,MAAS,GAAM,IAAgBA,EAAI,GAAK,GAEpE8D,IAAa,GAAK9D,EAAMA,EAAI,MAAS,GAAM,IAAgBA,EAAI,GAAK,EAEpE8D,IAAa,GAAK9D,EAAMA,EAAI,OAAU,GAAM,IAAgBA,EAAI,GAAK,EAEzE,EACAsC,EAAMf,UAAU0B,kBAAoB,SAAUvB,GAC1C,IAAI0B,EAAgB,EACpB,GAAItB,KAAKS,kBAAmB,CACxB,IAAK,IAAI3C,EAAI8B,EAAEe,OAAS,EAAG7C,GAAK,GACxB8B,EAAE9B,KAAOkC,KAAKS,kBADa3C,IAI/BwD,IAEJ,GAAI1B,EAAEe,OAAS,GAAKW,EAAgB,EAChC,MAAM,IAAIS,MAAM,iCAExB,CACA,OAAOT,CACX,EACOd,CACX,CA/K0B,GAgL1B5C,EAAQ4C,MAAQA,EAChB,IAAI2B,EAAW,IAAI3B,EAInB5C,EAAQgD,OAHR,SAAgBC,GACZ,OAAOsB,EAASvB,OAAOC,EAC3B,EAKAjD,EAAQwD,OAHR,SAAgBxB,GACZ,OAAOuC,EAASf,OAAOxB,EAC3B,EAQA,IAAIwC,EAA8B,SAAUC,GAExC,SAASD,IACL,OAAkB,OAAXC,GAAmBA,EAAOC,MAAMtC,KAAMuC,YAAcvC,IAC/D,CAmCA,OAtCAD,EAAUqC,EAAcC,GAUxBD,EAAa3C,UAAUsB,YAAc,SAAUd,GAC3C,IAAI+B,EAAS/B,EAWb,OATA+B,GAAU,GAEVA,GAAY,GAAK/B,IAAO,EAAK,EAE7B+B,GAAY,GAAK/B,IAAO,GAAK,GAE7B+B,GAAY,GAAK/B,IAAO,GAAK,GAE7B+B,GAAY,GAAK/B,IAAO,EAAK,GACtBgC,OAAOC,aAAaF,EAC/B,EACAI,EAAa3C,UAAUoC,YAAc,SAAU3D,GAC3C,IAAI8D,EAASzB,EAWb,OATAyB,IAAa,GAAK9D,EAAMA,EAAI,MAAS,GAAM,IAAgBA,EAAI,GAAK,GAEpE8D,IAAa,GAAK9D,EAAMA,EAAI,MAAS,GAAM,IAAgBA,EAAI,GAAK,GAEpE8D,IAAa,GAAK9D,EAAMA,EAAI,MAAS,GAAM,IAAgBA,EAAI,GAAK,GAEpE8D,IAAa,GAAK9D,EAAMA,EAAI,MAAS,GAAM,IAAgBA,EAAI,GAAK,EAEpE8D,IAAa,GAAK9D,EAAMA,EAAI,OAAU,GAAM,IAAgBA,EAAI,GAAK,EAEzE,EACOkE,CACX,CAxCiC,CAwC/B5B,GACF5C,EAAQwE,aAAeA,EACvB,IAAII,EAAe,IAAIJ,EAIvBxE,EAAQ6E,cAHR,SAAuB5B,GACnB,OAAO2B,EAAa5B,OAAOC,EAC/B,EAKAjD,EAAQ8E,cAHR,SAAuB9C,GACnB,OAAO4C,EAAapB,OAAOxB,EAC/B,EAEAhC,EAAQ8C,cAAgB,SAAUC,GAC9B,OAAOwB,EAASzB,cAAcC,EAClC,EACA/C,EAAQqD,iBAAmB,SAAUN,GACjC,OAAOwB,EAASlB,iBAAiBN,EACrC,EACA/C,EAAQsD,cAAgB,SAAUtB,GAC9B,OAAOuC,EAASjB,cAActB,EAClC,CAGO,EAED,SAAU/B,EAAQD,EAASiC,GAEjC,aAIAtB,OAAOC,eAAeZ,EAAS,aAAc,CAAEkB,OAAO,IAItD,IAAI6D,EAAgB,uBAChBC,EAAe,gCA2CnB,SAASlC,EAAcd,GAEnB,IADA,IAAIoC,EAAS,EACJlE,EAAI,EAAGA,EAAI8B,EAAEe,OAAQ7C,IAAK,CAC/B,IAAII,EAAI0B,EAAEkC,WAAWhE,GACrB,GAAII,EAAI,IACJ8D,GAAU,OAET,GAAI9D,EAAI,KACT8D,GAAU,OAET,GAAI9D,EAAI,MACT8D,GAAU,MAET,MAAI9D,GAAK,OAQV,MAAM,IAAI6D,MAAMY,GAPhB,GAAI7E,GAAK8B,EAAEe,OAAS,EAChB,MAAM,IAAIoB,MAAMY,GAEpB7E,IACAkE,GAAU,CAId,CACJ,CACA,OAAOA,CACX,CA9BApE,EAAQgD,OAjCR,SAAgBhB,GAMZ,IAFA,IAAIiD,EAAM,IAAIxB,WAAWX,EAAcd,IACnCkD,EAAM,EACDhF,EAAI,EAAGA,EAAI8B,EAAEe,OAAQ7C,IAAK,CAC/B,IAAII,EAAI0B,EAAEkC,WAAWhE,GACjBI,EAAI,IACJ2E,EAAIC,KAAS5E,EAERA,EAAI,MACT2E,EAAIC,KAAS,IAAO5E,GAAK,EACzB2E,EAAIC,KAAS,IAAW,GAAJ5E,GAEfA,EAAI,OACT2E,EAAIC,KAAS,IAAO5E,GAAK,GACzB2E,EAAIC,KAAS,IAAQ5E,GAAK,EAAK,GAC/B2E,EAAIC,KAAS,IAAW,GAAJ5E,IAGpBJ,IACAI,GAAS,KAAJA,IAAc,GACnBA,GAAuB,KAAlB0B,EAAEkC,WAAWhE,GAClBI,GAAK,MACL2E,EAAIC,KAAS,IAAO5E,GAAK,GACzB2E,EAAIC,KAAS,IAAQ5E,GAAK,GAAM,GAChC2E,EAAIC,KAAS,IAAQ5E,GAAK,EAAK,GAC/B2E,EAAIC,KAAS,IAAW,GAAJ5E,EAE5B,CACA,OAAO2E,CACX,EAgCAjF,EAAQ8C,cAAgBA,EAsExB9C,EAAQwD,OAjER,SAAgByB,GAEZ,IADA,IAAIE,EAAQ,GACHjF,EAAI,EAAGA,EAAI+E,EAAIlC,OAAQ7C,IAAK,CACjC,IAAImC,EAAI4C,EAAI/E,GACZ,GAAQ,IAAJmC,EAAU,CACV,IAAI+C,OAAM,EACV,GAAI/C,EAAI,IAAM,CAEV,GAAInC,GAAK+E,EAAIlC,OACT,MAAM,IAAIoB,MAAMa,GAGpB,GAAoB,MAAV,KADNK,EAAKJ,IAAM/E,KAEX,MAAM,IAAIiE,MAAMa,GAEpB3C,GAAS,GAAJA,IAAa,EAAU,GAALgD,EACvBD,EAAM,GACV,MACK,GAAI/C,EAAI,IAAM,CAEf,GAAInC,GAAK+E,EAAIlC,OAAS,EAClB,MAAM,IAAIoB,MAAMa,GAEpB,IAAIK,EAAKJ,IAAM/E,GACXoF,EAAKL,IAAM/E,GACf,GAAoB,MAAV,IAALmF,IAAuC,MAAV,IAALC,GACzB,MAAM,IAAInB,MAAMa,GAEpB3C,GAAS,GAAJA,IAAa,IAAW,GAALgD,IAAc,EAAU,GAALC,EAC3CF,EAAM,IACV,KACK,MAAI/C,EAAI,KAeT,MAAM,IAAI8B,MAAMa,GAbhB,GAAI9E,GAAK+E,EAAIlC,OAAS,EAClB,MAAM,IAAIoB,MAAMa,GAEhBK,EAAKJ,IAAM/E,GACXoF,EAAKL,IAAM/E,GADf,IAEIqF,EAAKN,IAAM/E,GACf,GAAoB,MAAV,IAALmF,IAAuC,MAAV,IAALC,IAAuC,MAAV,IAALC,GACjD,MAAM,IAAIpB,MAAMa,GAEpB3C,GAAS,GAAJA,IAAa,IAAW,GAALgD,IAAc,IAAW,GAALC,IAAc,EAAU,GAALC,EAC/DH,EAAM,KAIV,CACA,GAAI/C,EAAI+C,GAAQ/C,GAAK,OAAUA,GAAK,MAChC,MAAM,IAAI8B,MAAMa,GAEpB,GAAI3C,GAAK,MAAS,CAEd,GAAIA,EAAI,QACJ,MAAM,IAAI8B,MAAMa,GAEpB3C,GAAK,MACL8C,EAAMK,KAAKnB,OAAOC,aAAa,MAAUjC,GAAK,KAC9CA,EAAI,MAAc,KAAJA,CAClB,CACJ,CACA8C,EAAMK,KAAKnB,OAAOC,aAAajC,GACnC,CACA,OAAO8C,EAAMM,KAAK,GACtB,CAIO,EAED,SAAUxF,EAAQD,EAAS,GAGjCC,EAAOD,QAAU,EAAoB,GAAG0F,OAGjC,EAED,SAAUzF,EAAQ0F,EAAqB,GAE7C,aAEA,EAAoB5E,EAAE4E,GAGtB,IAuKIC,EAvKAC,EAAyB,WACzB,SAASA,EAAsBC,EAAQtF,GACnC4B,KAAK2D,OAAS,EACd3D,KAAK0D,OAASA,EACd1D,KAAK5B,KAAOA,CAChB,CAmBA,OAlBAqF,EAAsBhE,UAAUN,OAAS,SAAUyE,GAC/C5D,KAAK2D,SACL,IAAIE,EAAS7D,KAAK2D,OACdG,EAAK9D,KAAK0D,OAASG,EACnBzF,EAAO4B,KAAK5B,KAAO,IAAMyF,EAAS,IAClCE,GAAS,EACTC,EAAkB,WACbD,IACDH,EAAStB,MAAM,KAAMC,WACrBwB,GAAS,EAEjB,EAEA,OADA/D,KAAK6D,GAAUG,EACR,CAAEH,OAAQA,EAAQC,GAAIA,EAAI1F,KAAMA,EAAMwF,SAAUI,EAC3D,EACAP,EAAsBhE,UAAUwE,OAAS,SAAUC,UACxClE,KAAKkE,EAASL,OACzB,EACOJ,CACX,CAzB4B,GA2BxBU,EAAkB,IAAIV,EAAsB,kBAAmB,0BAgClCW,EA7BlB,CACXC,QAAS,QACTC,SAAU,EACVC,OAAQ,GACRC,QAAS,IACTC,OAAQ,GACRC,SAAU,oBACVC,SAAU,GACVC,UAAW,IACXC,SAAU,UACVC,WAAY,mBACZC,aAAc,eACdC,cAAe,OACfC,gBAAiB,KACjBC,YAAa,IACbC,mBAAoB,IACpBC,QAAS,MACTC,mBAAoB,CAChBC,SAAU,oBACVC,UAAW,QAEfC,qBAAsB,CAClBF,SAAU,eACVC,UAAW,QAEfE,SAAU,uBACVC,UAAW,wBACXC,kBAAmB,IAuDUC,EAhDS,WACtC,SAASC,EAAiBC,GACtB9F,KAAK8F,QAAUA,EACf9F,KAAK+F,UAAYD,EAAQC,WAAa5B,EACtCnE,KAAKgG,QAAU,CAAC,CACpB,CAyCA,OAxCAH,EAAiBpG,UAAUwG,KAAO,SAAU7H,EAAM0H,EAASlC,GACvD,IAAIsC,EAAOlG,KACX,GAAIkG,EAAKF,QAAQ5H,IAAS8H,EAAKF,QAAQ5H,GAAMuC,OAAS,EAClDuF,EAAKF,QAAQ5H,GAAMgF,KAAKQ,OAEvB,CACDsC,EAAKF,QAAQ5H,GAAQ,CAACwF,GACtB,IAAIuC,EAAUC,GAAQC,oBAAoBH,EAAKI,QAAQlI,EAAM0H,IACzD5B,EAAWgC,EAAKH,UAAU5G,QAAO,SAAUoH,GAE3C,GADAL,EAAKH,UAAU9B,OAAOC,GAClBgC,EAAKF,QAAQ5H,GAAO,CACpB,IAAIoI,EAAYN,EAAKF,QAAQ5H,UACtB8H,EAAKF,QAAQ5H,GAMpB,IALA,IAAIqI,EAAkB,SAAUC,GACvBA,GACDP,EAAQQ,SAEhB,EACS7I,EAAI,EAAGA,EAAI0I,EAAU7F,OAAQ7C,IAClC0I,EAAU1I,GAAGyI,EAAOE,EAE5B,CACJ,IACAN,EAAQS,KAAK1C,EACjB,CACJ,EACA2B,EAAiBpG,UAAUoH,QAAU,SAAUf,GAC3C,IACIgB,EAAWV,GAAQW,cAAcC,SAASF,SAO9C,OANKhB,GAAWA,EAAQmB,QAAwB,WAAbH,EACzB9G,KAAK8F,QAAQJ,UAGb1F,KAAK8F,QAAQL,UAEZyB,QAAQ,OAAQ,IAAM,IAAMlH,KAAK8F,QAAQqB,OACxD,EACAtB,EAAiBpG,UAAU6G,QAAU,SAAUlI,EAAM0H,GACjD,OAAO9F,KAAK6G,QAAQf,GAAW,IAAM1H,EAAO4B,KAAK8F,QAAQsB,OAAS,KACtE,EACOvB,CACX,CA/CyC,GAsDrCwB,EAAwB,IAAI5D,EAAsB,uBAAwB,gCAC1E6D,EAAe,IAAI1B,EAAkB,CACrCH,SAAUrB,EAASqB,SACnBC,UAAWtB,EAASsB,UACpByB,QAAS/C,EAASC,QAClB+C,OAAQhD,EAASuB,kBACjBI,UAAWsB,IAIXE,EAAW,CACXC,QAAS,qBACTC,KAAM,CACFC,uBAAwB,CACpBC,KAAM,kDAEVC,sBAAuB,CACnBD,KAAM,gDAEVE,qBAAsB,CAClBF,KAAM,gCAEVG,uBAAwB,CACpBH,KAAM,uDAEVI,wBAAyB,CACrBC,QAAS,iHAoBYC,EAAY,CAAGC,eAhB3B,SAAU9I,GAC3B,IAII+I,EAHAC,EAASb,EAASE,KAAKrI,GAC3B,OAAKgJ,GAGDA,EAAOJ,QACPG,EAAMC,EAAOJ,QAERI,EAAOT,OACZQ,EAAMZ,EAASC,QAAUY,EAAOT,MAE/BQ,EAEEE,QAAkBF,EADd,IATA,EAWf,IAKA,SAAW3E,GACPA,EAAoC,mBAAI,sBACxCA,EAAsC,qBAAI,uBAC7C,CAHD,CAGGA,IAAoBA,EAAkB,CAAC,IAkL1C,IA/KA,IACQ1D,EADJC,GACID,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,GAEAiI,EAAgB,SAAUjG,GAE1B,SAASiG,EAAaC,GAClB,IAAIC,EAAaxI,KAAKM,YAClBmI,EAAQpG,EAAOrE,KAAKgC,KAAMuI,IAAQvI,KAEtC,OADAzB,OAAO2B,eAAeuI,EAAOD,EAAW/I,WACjCgJ,CACX,CACA,OAPA1I,EAAUuI,EAAcjG,GAOjBiG,CACX,CATmB,CASjBvG,OAEE2G,EAAkB,SAAUrG,GAE5B,SAASqG,EAAeH,GACpB,IAAIC,EAAaxI,KAAKM,YAClBmI,EAAQpG,EAAOrE,KAAKgC,KAAMuI,IAAQvI,KAEtC,OADAzB,OAAO2B,eAAeuI,EAAOD,EAAW/I,WACjCgJ,CACX,CACA,OAPA1I,EAAU2I,EAAgBrG,GAOnBqG,CACX,CATqB,CASnB3G,OAEE4G,EAAmB,SAAUtG,GAE7B,SAASsG,EAAgBJ,GACrB,IAAIC,EAAaxI,KAAKM,YAClBmI,EAAQpG,EAAOrE,KAAKgC,KAAMuI,IAAQvI,KAEtC,OADAzB,OAAO2B,eAAeuI,EAAOD,EAAW/I,WACjCgJ,CACX,CACA,OAPA1I,EAAU4I,EAAiBtG,GAOpBsG,CACX,CATsB,CASpB5G,OAEE6G,EAA2B,SAAUvG,GAErC,SAASuG,EAAwBL,GAC7B,IAAIC,EAAaxI,KAAKM,YAClBmI,EAAQpG,EAAOrE,KAAKgC,KAAMuI,IAAQvI,KAEtC,OADAzB,OAAO2B,eAAeuI,EAAOD,EAAW/I,WACjCgJ,CACX,CACA,OAPA1I,EAAU6I,EAAyBvG,GAO5BuG,CACX,CAT8B,CAS5B7G,OAEE8G,EAAmB,SAAUxG,GAE7B,SAASwG,EAAgBN,GACrB,IAAIC,EAAaxI,KAAKM,YAClBmI,EAAQpG,EAAOrE,KAAKgC,KAAMuI,IAAQvI,KAEtC,OADAzB,OAAO2B,eAAeuI,EAAOD,EAAW/I,WACjCgJ,CACX,CACA,OAPA1I,EAAU8I,EAAiBxG,GAOpBwG,CACX,CATsB,CASpB9G,OAEE+G,EAAsB,SAAUzG,GAEhC,SAASyG,EAAmBP,GACxB,IAAIC,EAAaxI,KAAKM,YAClBmI,EAAQpG,EAAOrE,KAAKgC,KAAMuI,IAAQvI,KAEtC,OADAzB,OAAO2B,eAAeuI,EAAOD,EAAW/I,WACjCgJ,CACX,CACA,OAPA1I,EAAU+I,EAAoBzG,GAOvByG,CACX,CATyB,CASvB/G,OAEEgH,EAAwB,SAAU1G,GAElC,SAAS0G,EAAqBR,GAC1B,IAAIC,EAAaxI,KAAKM,YAClBmI,EAAQpG,EAAOrE,KAAKgC,KAAMuI,IAAQvI,KAEtC,OADAzB,OAAO2B,eAAeuI,EAAOD,EAAW/I,WACjCgJ,CACX,CACA,OAPA1I,EAAUgJ,EAAsB1G,GAOzB0G,CACX,CAT2B,CASzBhH,OAEEiH,EAAuB,SAAU3G,GAEjC,SAAS2G,EAAoBT,GACzB,IAAIC,EAAaxI,KAAKM,YAClBmI,EAAQpG,EAAOrE,KAAKgC,KAAMuI,IAAQvI,KAEtC,OADAzB,OAAO2B,eAAeuI,EAAOD,EAAW/I,WACjCgJ,CACX,CACA,OAPA1I,EAAUiJ,EAAqB3G,GAOxB2G,CACX,CAT0B,CASxBjH,OAEEkH,EAAiB,SAAU5G,GAE3B,SAAS4G,EAAcC,EAAQX,GAC3B,IAAIC,EAAaxI,KAAKM,YAClBmI,EAAQpG,EAAOrE,KAAKgC,KAAMuI,IAAQvI,KAGtC,OAFAyI,EAAMS,OAASA,EACf3K,OAAO2B,eAAeuI,EAAOD,EAAW/I,WACjCgJ,CACX,CACA,OARA1I,EAAUkJ,EAAe5G,GAQlB4G,CACX,CAVoB,CAUlBlH,OAuD+BoH,EA/CtB,SAAUC,EAASC,EAAOC,EAAaC,EAAiB3F,GAC/D,IAAI4F,EAAMpD,GAAQqD,YAGlB,IAAK,IAAIC,KAFTF,EAAIG,KAAK,OAAQL,EAAYhE,UAAU,GACvCkE,EAAII,iBAAiB,eAAgB,qCACdN,EAAYO,QAC/BL,EAAII,iBAAiBF,EAAYJ,EAAYO,QAAQH,IAEzD,GAAmC,MAA/BJ,EAAYQ,gBAAyB,CACrC,IAAIC,EAAiBT,EAAYQ,kBACjC,IAAK,IAAIJ,KAAcK,EACnBP,EAAII,iBAAiBF,EAAYK,EAAeL,GAExD,CAiCA,OAhCAF,EAAIQ,mBAAqB,WACrB,GAAuB,IAAnBR,EAAIS,WACJ,GAAmB,MAAfT,EAAIN,OAAgB,CACpB,IAAIrI,OAAO,EACPqJ,GAAS,EACb,IACIrJ,EAAOsJ,KAAKC,MAAMZ,EAAIa,cACtBH,GAAS,CACb,CACA,MAAOI,GACH1G,EAAS,IAAIqF,EAAc,IAAK,sBAAwBM,EAAgBgB,WAAa,6DAA+Df,EAAIa,cAAe,KAC3K,CACIH,GACAtG,EAAS,KAAM/C,EAEvB,KACK,CACD,IAAIuG,EAAS,GACb,OAAQmC,GACJ,KAAK/F,EAAgBgH,mBACjBpD,EAASa,EAAUC,eAAe,0BAClC,MACJ,KAAK1E,EAAgBiH,qBACjBrD,EAAS,oEAAsEa,EAAUC,eAAe,yBAGhHtE,EAAS,IAAIqF,EAAcO,EAAIN,OAAQ,uCAAyCK,EAAgBgB,WAAzD,gCACZf,EAAIN,OAAS,SAAWI,EAAYhE,SAAW,KAAO8B,GAAU,KAC/F,CAER,EACAoC,EAAI5C,KAAKyC,GACFG,CACX,EAOItH,EAAeD,OAAOC,aACtBwI,EAAW,mEACXC,EAAS,CAAC,EACLC,EAAW,EAAG7M,EAAI2M,EAAS/J,OAAQiK,EAAW7M,EAAG6M,IACtDD,EAAOD,EAASG,OAAOD,IAAaA,EAExC,IAAIE,EAAU,SAAU5M,GACpB,IAAI6M,EAAK7M,EAAE4D,WAAW,GACtB,OAAOiJ,EAAK,IACN7M,EACA6M,EAAK,KACD7I,EAAa,IAAQ6I,IAAO,GAAM7I,EAAa,IAAa,GAAL6I,GACvD7I,EAAa,IAAS6I,IAAO,GAAM,IACjC7I,EAAa,IAAS6I,IAAO,EAAK,IAClC7I,EAAa,IAAa,GAAL6I,EACrC,EACIC,EAAO,SAAUC,GACjB,OAAOA,EAAE/D,QAAQ,gBAAiB4D,EACtC,EACII,EAAY,SAAUC,GACtB,IAAIC,EAAS,CAAC,EAAG,EAAG,GAAGD,EAAIxK,OAAS,GAChC0K,EAAOF,EAAIrJ,WAAW,IAAM,IAC1BqJ,EAAIxK,OAAS,EAAIwK,EAAIrJ,WAAW,GAAK,IAAM,GAC5CqJ,EAAIxK,OAAS,EAAIwK,EAAIrJ,WAAW,GAAK,GAO1C,MANY,CACR4I,EAASG,OAAOQ,IAAQ,IACxBX,EAASG,OAAQQ,IAAQ,GAAM,IAC/BD,GAAU,EAAI,IAAMV,EAASG,OAAQQ,IAAQ,EAAK,IAClDD,GAAU,EAAI,IAAMV,EAASG,OAAa,GAANQ,IAE3BhI,KAAK,GACtB,EACIiI,EAAO9N,OAAO8N,MACd,SAAUrL,GACN,OAAOA,EAAEiH,QAAQ,eAAgBgE,EACrC,EAwB6BK,EArBpB,WACT,SAASC,EAAMC,EAAKC,EAAOC,EAAO/H,GAC9B,IAAI6E,EAAQzI,KACZA,KAAK0L,MAAQA,EACb1L,KAAK4L,MAAQH,GAAI,WACThD,EAAMmD,QACNnD,EAAMmD,MAAQhI,EAAS6E,EAAMmD,OAErC,GAAGD,EACP,CAUA,OATAH,EAAM/L,UAAUoM,UAAY,WACxB,OAAsB,OAAf7L,KAAK4L,KAChB,EACAJ,EAAM/L,UAAUqM,cAAgB,WACxB9L,KAAK4L,QACL5L,KAAK0L,MAAM1L,KAAK4L,OAChB5L,KAAK4L,MAAQ,KAErB,EACOJ,CACX,CApBY,GAwBRO,EAAuD,WACvD,IAAIjM,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACA,OAAO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,CACH,CAZ0D,GAc3D,SAAS2L,EAAoBJ,GACzBpO,OAAOyO,aAAaL,EACxB,CACA,SAASM,EAAqBN,GAC1BpO,OAAO2O,cAAcP,EACzB,CACA,IAAIQ,EAAe,SAAU/J,GAEzB,SAAS+J,EAAYT,EAAO/H,GACxB,OAAOvB,EAAOrE,KAAKgC,KAAMqM,WAAYL,EAAqBL,GAAO,SAAUC,GAEvE,OADAhI,IACO,IACX,KAAM5D,IACV,CACA,OAPA+L,EAAeK,EAAa/J,GAOrB+J,CACX,CATkB,CAShBb,GAEEe,EAAiB,SAAUjK,GAE3B,SAASiK,EAAcX,EAAO/H,GAC1B,OAAOvB,EAAOrE,KAAKgC,KAAMuM,YAAaL,EAAsBP,GAAO,SAAUC,GAEzE,OADAhI,IACOgI,CACX,KAAM5L,IACV,CACA,OAPA+L,EAAeO,EAAejK,GAOvBiK,CACX,CAToB,CASlBf,GAKEiB,EAAO,CACPC,IAAK,WACD,OAAIC,KAAKD,IACEC,KAAKD,OAGL,IAAIC,MAAOC,SAE1B,EACAC,MAAO,SAAUhJ,GACb,OAAO,IAAIwI,EAAY,EAAGxI,EAC9B,EACAiJ,OAAQ,SAAUzO,GAEd,IADA,IAAI0O,EAAO,GACFC,EAAK,EAAGA,EAAKxK,UAAU5B,OAAQoM,IACpCD,EAAKC,EAAK,GAAKxK,UAAUwK,GAE7B,IAAIC,EAAiB5M,MAAMX,UAAUwN,MAAMjP,KAAKuE,UAAW,GAC3D,OAAO,SAAUhD,GACb,OAAOA,EAAOnB,GAAMkE,MAAM/C,EAAQyN,EAAeE,OAAO3K,WAC5D,CACJ,GAE6B4K,EAAO,EAKxC,SAASC,EAAOC,GAEZ,IADA,IAAIC,EAAU,GACLP,EAAK,EAAGA,EAAKxK,UAAU5B,OAAQoM,IACpCO,EAAQP,EAAK,GAAKxK,UAAUwK,GAEhC,IAAK,IAAIjP,EAAI,EAAGA,EAAIwP,EAAQ3M,OAAQ7C,IAAK,CACrC,IAAIyP,EAAaD,EAAQxP,GACzB,IAAK,IAAI0B,KAAY+N,EACbA,EAAW/N,IACX+N,EAAW/N,GAAUc,aACrBiN,EAAW/N,GAAUc,cAAgB/B,OACrC8O,EAAO7N,GAAY4N,EAAOC,EAAO7N,IAAa,CAAC,EAAG+N,EAAW/N,IAG7D6N,EAAO7N,GAAY+N,EAAW/N,EAG1C,CACA,OAAO6N,CACX,CACA,SAASG,IAEL,IADA,IAAIvP,EAAI,CAAC,UACAH,EAAI,EAAGA,EAAIyE,UAAU5B,OAAQ7C,IACN,iBAAjByE,UAAUzE,GACjBG,EAAEmF,KAAKb,UAAUzE,IAGjBG,EAAEmF,KAAKqK,EAAkBlL,UAAUzE,KAG3C,OAAOG,EAAEoF,KAAK,MAClB,CACA,SAASqK,EAAaC,EAAOC,GACzB,IAAIC,EAAgBzN,MAAMX,UAAUqO,QACpC,GAAc,OAAVH,EACA,OAAQ,EAEZ,GAAIE,GAAiBF,EAAMG,UAAYD,EACnC,OAAOF,EAAMG,QAAQF,GAEzB,IAAK,IAAI9P,EAAI,EAAGC,EAAI4P,EAAMhN,OAAQ7C,EAAIC,EAAGD,IACrC,GAAI6P,EAAM7P,KAAO8P,EACb,OAAO9P,EAGf,OAAQ,CACZ,CACA,SAASiQ,EAAYxO,EAAQyO,GACzB,IAAK,IAAI5O,KAAOG,EACRhB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQH,IAC7C4O,EAAEzO,EAAOH,GAAMA,EAAKG,EAGhC,CACA,SAAS0O,EAAK1O,GACV,IAAI0O,EAAO,GAIX,OAHAF,EAAYxO,GAAQ,SAAU2O,EAAG9O,GAC7B6O,EAAK7K,KAAKhE,EACd,IACO6O,CACX,CAQA,SAAS3L,EAAMqL,EAAOK,EAAG5E,GACrB,IAAK,IAAItL,EAAI,EAAGA,EAAI6P,EAAMhN,OAAQ7C,IAC9BkQ,EAAEhQ,KAAKoL,GAAW5L,OAAQmQ,EAAM7P,GAAIA,EAAG6P,EAE/C,CACA,SAASQ,EAAIR,EAAOK,GAEhB,IADA,IAAIhM,EAAS,GACJlE,EAAI,EAAGA,EAAI6P,EAAMhN,OAAQ7C,IAC9BkE,EAAOoB,KAAK4K,EAAEL,EAAM7P,GAAIA,EAAG6P,EAAO3L,IAEtC,OAAOA,CACX,CAQA,SAASoM,EAAOT,EAAOU,GACnBA,EACIA,GACI,SAAUvP,GACN,QAASA,CACb,EAER,IADA,IAAIkD,EAAS,GACJlE,EAAI,EAAGA,EAAI6P,EAAMhN,OAAQ7C,IAC1BuQ,EAAKV,EAAM7P,GAAIA,EAAG6P,EAAO3L,IACzBA,EAAOoB,KAAKuK,EAAM7P,IAG1B,OAAOkE,CACX,CACA,SAASsM,EAAa/O,EAAQ8O,GAC1B,IAAIrM,EAAS,CAAC,EAMd,OALA+L,EAAYxO,GAAQ,SAAUT,EAAOM,IAC5BiP,GAAQA,EAAKvP,EAAOM,EAAKG,EAAQyC,IAAYuM,QAAQzP,MACtDkD,EAAO5C,GAAON,EAEtB,IACOkD,CACX,CAQA,SAASwM,EAAIb,EAAOU,GAChB,IAAK,IAAIvQ,EAAI,EAAGA,EAAI6P,EAAMhN,OAAQ7C,IAC9B,GAAIuQ,EAAKV,EAAM7P,GAAIA,EAAG6P,GAClB,OAAO,EAGf,OAAO,CACX,CASA,SAASc,EAAmB5N,GACxB,OAtDuBmN,EAsDA,SAAUlP,GAI7B,MAHqB,iBAAVA,IACPA,EAAQ2O,EAAkB3O,IAEvB4P,oBApRC9O,EAoRyBd,EAAMyL,WAnRpCe,EAAKN,EAAKpL,MADrB,IAAgBA,CAqRZ,EA1DIoC,EAAS,CAAC,EACd+L,EAoDiBlN,GApDG,SAAU/B,EAAOM,GACjC4C,EAAO5C,GAAO4O,EAAElP,EACpB,IACOkD,EALX,IAA2BgM,EACnBhM,CA2DR,CACA,SAAS2M,EAAiB9N,GACtB,IAhCatB,EACTyC,EA+BA4M,EAASN,EAAazN,GAAM,SAAU/B,GACtC,YAAiB+P,IAAV/P,CACX,IAEA,OADYqP,GAnCC5O,EAmCWkP,EAAmBG,GAlCvC5M,EAAS,GACb+L,EAAYxO,GAAQ,SAAUT,EAAOM,GACjC4C,EAAOoB,KAAK,CAAChE,EAAKN,GACtB,IACOkD,GA8B8CmL,EAAKN,OAAO,OAAQ,MAAMxJ,KAAK,IAExF,CAuCA,SAASoK,EAAkBqB,GACvB,IACI,OAAO3E,KAAKqD,UAAUsB,EAC1B,CACA,MAAOxE,GACH,OAAOH,KAAKqD,WA1CZuB,EAAU,GAAIC,EAAQ,GACnB,SAAUC,EAAMnQ,EAAO6I,GAC1B,IAAI7J,EAAGM,EAAM8Q,EACb,cAAepQ,GACX,IAAK,SACD,IAAKA,EACD,OAAO,KAEX,IAAKhB,EAAI,EAAGA,EAAIiR,EAAQpO,OAAQ7C,GAAK,EACjC,GAAIiR,EAAQjR,KAAOgB,EACf,MAAO,CAAEqQ,KAAMH,EAAMlR,IAK7B,GAFAiR,EAAQ3L,KAAKtE,GACbkQ,EAAM5L,KAAKuE,GACoC,mBAA3CpJ,OAAOkB,UAAU8K,SAASjI,MAAMxD,GAEhC,IADAoQ,EAAK,GACApR,EAAI,EAAGA,EAAIgB,EAAM6B,OAAQ7C,GAAK,EAC/BoR,EAAGpR,GAAKmR,EAAMnQ,EAAMhB,GAAI6J,EAAO,IAAM7J,EAAI,UAK7C,IAAKM,KADL8Q,EAAK,CAAC,EACOpQ,EACLP,OAAOkB,UAAUC,eAAe1B,KAAKc,EAAOV,KAC5C8Q,EAAG9Q,GAAQ6Q,EAAMnQ,EAAMV,GAAOuJ,EAAO,IAAMwC,KAAKqD,UAAUpP,GAAQ,MAI9E,OAAO8Q,EACX,IAAK,SACL,IAAK,SACL,IAAK,UACD,OAAOpQ,EAElB,CAlCM,CAyCiCgQ,EAP7B,MAQX,CA5CJ,IACQC,EAAcC,CA4CtB,CAKA,IAAII,GAAiB,WACjB,SAASC,IACLrP,KAAKsP,UAAY,SAAUC,GACnB/R,OAAOgS,SAAWhS,OAAOgS,QAAQC,KACjCjS,OAAOgS,QAAQC,IAAIF,EAE3B,CACJ,CAoDA,OAnDAF,EAAO5P,UAAUiQ,MAAQ,WAErB,IADA,IAAI5C,EAAO,GACFC,EAAK,EAAGA,EAAKxK,UAAU5B,OAAQoM,IACpCD,EAAKC,GAAMxK,UAAUwK,GAEzB/M,KAAKyP,IAAIzP,KAAKsP,UAAWxC,EAC7B,EACAuC,EAAO5P,UAAUkQ,KAAO,WAEpB,IADA,IAAI7C,EAAO,GACFC,EAAK,EAAGA,EAAKxK,UAAU5B,OAAQoM,IACpCD,EAAKC,GAAMxK,UAAUwK,GAEzB/M,KAAKyP,IAAIzP,KAAK4P,cAAe9C,EACjC,EACAuC,EAAO5P,UAAU8G,MAAQ,WAErB,IADA,IAAIuG,EAAO,GACFC,EAAK,EAAGA,EAAKxK,UAAU5B,OAAQoM,IACpCD,EAAKC,GAAMxK,UAAUwK,GAEzB/M,KAAKyP,IAAIzP,KAAK6P,eAAgB/C,EAClC,EACAuC,EAAO5P,UAAUmQ,cAAgB,SAAUL,GACnC/R,OAAOgS,SAAWhS,OAAOgS,QAAQG,KACjCnS,OAAOgS,QAAQG,KAAKJ,GAGpBvP,KAAKsP,UAAUC,EAEvB,EACAF,EAAO5P,UAAUoQ,eAAiB,SAAUN,GACpC/R,OAAOgS,SAAWhS,OAAOgS,QAAQjJ,MACjC/I,OAAOgS,QAAQjJ,MAAMgJ,GAGrBvP,KAAK4P,cAAcL,EAE3B,EACAF,EAAO5P,UAAUgQ,IAAM,SAAUK,GAE7B,IADA,IAAIhD,EAAO,GACFC,EAAK,EAAGA,EAAKxK,UAAU5B,OAAQoM,IACpCD,EAAKC,EAAK,GAAKxK,UAAUwK,GAE7B,IAAIwC,EAAU/B,EAAUlL,MAAMtC,KAAMuC,WAChCwN,GAAYN,IACZM,GAAYN,IAAIF,GAEXQ,GAAYC,cACPF,EAAuBzQ,KAAKW,KACtCyP,CAAIF,EAEZ,EACOF,CACX,CA5DoB,GA6DaY,GAAS,IAAKb,GA0Bdc,GAtBrB,SAAU9G,EAASC,EAAOC,EAAaC,EAAiB3F,QACpCiL,IAAxBvF,EAAYO,SACmB,MAA/BP,EAAYQ,iBACZmG,GAAON,KAAK,4BAA8BpG,EAAgBgB,WAAa,mDAE3E,IAAI4F,EAAe/G,EAAQgH,mBAAmB7F,WAC9CnB,EAAQgH,qBACR,IAAIC,EAAWjH,EAAQrC,cACnBuJ,EAASD,EAASE,cAAc,UACpCnH,EAAQoH,eAAeL,GAAgB,SAAUtP,GAC7C+C,EAAS,KAAM/C,EACnB,EACA,IAAI4P,EAAgB,0BAA4BN,EAAe,KAC/DG,EAAOI,IACHpH,EAAYhE,SACR,aACAoJ,mBAAmB+B,GACnB,IACApH,EACR,IAAIsH,EAAON,EAASO,qBAAqB,QAAQ,IAAMP,EAASQ,gBAChEF,EAAKG,aAAaR,EAAQK,EAAKI,WACnC,EAiEiCC,GA7DZ,WACjB,SAASC,EAAcP,GACnB1Q,KAAK0Q,IAAMA,CACf,CAwDA,OAvDAO,EAAcxR,UAAUmH,KAAO,SAAU1C,GACrC,IAAIgC,EAAOlG,KACPkR,EAAc,iBAAmBhL,EAAKwK,IAC1CxK,EAAKoK,OAASD,SAASE,cAAc,UACrCrK,EAAKoK,OAAOxM,GAAKI,EAASJ,GAC1BoC,EAAKoK,OAAOI,IAAMxK,EAAKwK,IACvBxK,EAAKoK,OAAOa,KAAO,kBACnBjL,EAAKoK,OAAOc,QAAU,QAClBlL,EAAKoK,OAAOe,kBACZnL,EAAKoK,OAAOgB,QAAU,WAClBpN,EAASN,SAASsN,EACtB,EACAhL,EAAKoK,OAAOiB,OAAS,WACjBrN,EAASN,SAAS,KACtB,GAGAsC,EAAKoK,OAAOtG,mBAAqB,WACE,WAA3B9D,EAAKoK,OAAOrG,YACe,aAA3B/D,EAAKoK,OAAOrG,YACZ/F,EAASN,SAAS,KAE1B,OAEsBiL,IAAtB3I,EAAKoK,OAAOkB,OACZnB,SAASoB,aACT,SAASpD,KAAKqD,UAAUC,YACxBzL,EAAK0L,YAAcvB,SAASE,cAAc,UAC1CrK,EAAK0L,YAAY9N,GAAKI,EAASJ,GAAK,SACpCoC,EAAK0L,YAAYC,KAAO3N,EAAS9F,KAAO,KAAO8S,EAAc,MAC7DhL,EAAKoK,OAAOkB,MAAQtL,EAAK0L,YAAYJ,OAAQ,GAG7CtL,EAAKoK,OAAOkB,OAAQ,EAExB,IAAIb,EAAON,SAASO,qBAAqB,QAAQ,GACjDD,EAAKG,aAAa5K,EAAKoK,OAAQK,EAAKI,YAChC7K,EAAK0L,aACLjB,EAAKG,aAAa5K,EAAK0L,YAAa1L,EAAKoK,OAAOwB,YAExD,EACAb,EAAcxR,UAAUkH,QAAU,WAC1B3G,KAAKsQ,SACLtQ,KAAKsQ,OAAOiB,OAASvR,KAAKsQ,OAAOgB,QAAU,KAC3CtR,KAAKsQ,OAAOtG,mBAAqB,MAEjChK,KAAKsQ,QAAUtQ,KAAKsQ,OAAOyB,YAC3B/R,KAAKsQ,OAAOyB,WAAWC,YAAYhS,KAAKsQ,QAExCtQ,KAAK4R,aAAe5R,KAAK4R,YAAYG,YACrC/R,KAAK4R,YAAYG,WAAWC,YAAYhS,KAAK4R,aAEjD5R,KAAKsQ,OAAS,KACdtQ,KAAK4R,YAAc,IACvB,EACOX,CACX,CA5DoB,GAuFagB,GArBC,WAC9B,SAASC,EAAa/J,EAAKtH,GACvBb,KAAKmI,IAAMA,EACXnI,KAAKa,KAAOA,CAChB,CAeA,OAdAqR,EAAazS,UAAUmH,KAAO,SAAU1C,GACpC,IAAIlE,KAAKmG,QAAT,CAGA,IAAIkD,EAAQsF,EAAiB3O,KAAKa,MAC9BsH,EAAMnI,KAAKmI,IAAM,IAAMjE,EAASL,OAAS,IAAMwF,EACnDrJ,KAAKmG,QAAUC,GAAQC,oBAAoB8B,GAC3CnI,KAAKmG,QAAQS,KAAK1C,EAJlB,CAKJ,EACAgO,EAAazS,UAAUkH,QAAU,WACzB3G,KAAKmG,SACLnG,KAAKmG,QAAQQ,SAErB,EACOuL,CACX,CApBiC,GAgDAC,GAJN,CACvB/T,KAAM,QACNgU,SApBW,SAAUC,EAAQpL,GAC7B,OAAO,SAAUpG,EAAM+C,GACnB,IACIuE,EADS,QAAUlB,EAAS,IAAM,IAAM,OACxBoL,EAAOC,MAAQD,EAAOvM,QAAQwM,MAAQD,EAAOvM,QAAQ6B,KACrExB,EAAUC,GAAQmM,mBAAmBpK,EAAKtH,GAC1CqD,EAAWkC,GAAQjC,gBAAgBhF,QAAO,SAAUoH,EAAOvE,GAC3DmC,EAAgBF,OAAOC,GACvBiC,EAAQQ,UACJ3E,GAAUA,EAAOsQ,OACjBD,EAAOC,KAAOtQ,EAAOsQ,MAErB1O,GACAA,EAAS2C,EAAOvE,EAExB,IACAmE,EAAQS,KAAK1C,EACjB,CACJ,GASA,SAASsO,GAAcC,EAAY7D,EAAQjH,GAGvC,OAFa8K,GAAc7D,EAAO3H,OAAS,IAAM,IAEjC,OADL2H,EAAO3H,OAAS2H,EAAO8D,QAAU9D,EAAO+D,YACpBhL,CACnC,CACA,SAASiL,GAAexT,EAAKyT,GAQzB,MAPW,QAAUzT,EACT,aACRgF,EAASE,SADD,sBAIRF,EAASC,SACRwO,EAAc,IAAMA,EAAc,GAE3C,CACA,IAAIC,GAAK,CACLC,WAAY,SAAU3T,EAAKwP,GAEvB,OAAO4D,GAAc,KAAM5D,GADfA,EAAO/J,UAAY,IAAM+N,GAAexT,EAAK,eAE7D,GAEA4T,GAAO,CACPD,WAAY,SAAU3T,EAAKwP,GAEvB,OAAO4D,GAAc,OAAQ5D,GADjBA,EAAO/J,UAAY,WAAa+N,GAAexT,GAE/D,GAEA6T,GAAS,CACTF,WAAY,SAAU3T,EAAKwP,GACvB,OAAO4D,GAAc,OAAQ5D,EAAQA,EAAO/J,UAAY,UAC5D,EACAyB,QAAS,SAAUlH,EAAKwP,GACpB,OAAOgE,GAAexT,EAC1B,GAoD6B8T,GA/CS,WACtC,SAASC,IACLnT,KAAKoT,WAAa,CAAC,CACvB,CA0CA,OAzCAD,EAAiB1T,UAAUf,IAAM,SAAUN,GACvC,OAAO4B,KAAKoT,WAAW1P,GAAOtF,GAClC,EACA+U,EAAiB1T,UAAU4T,IAAM,SAAUjV,EAAMwF,EAAUwF,GACvD,IAAIkK,EAAoB5P,GAAOtF,GAC/B4B,KAAKoT,WAAWE,GACZtT,KAAKoT,WAAWE,IAAsB,GAC1CtT,KAAKoT,WAAWE,GAAmBlQ,KAAK,CACpCmQ,GAAI3P,EACJwF,QAASA,GAEjB,EACA+J,EAAiB1T,UAAUwE,OAAS,SAAU7F,EAAMwF,EAAUwF,GAC1D,GAAKhL,GAASwF,GAAawF,EAA3B,CAIA,IAAIoK,EAAQpV,EAAO,CAACsF,GAAOtF,IAAS6P,EAAKjO,KAAKoT,YAC1CxP,GAAYwF,EACZpJ,KAAKyT,eAAeD,EAAO5P,EAAUwF,GAGrCpJ,KAAK0T,mBAAmBF,EAN5B,MAFIxT,KAAKoT,WAAa,CAAC,CAU3B,EACAD,EAAiB1T,UAAUgU,eAAiB,SAAUD,EAAO5P,EAAUwF,GACnE9G,EAAMkR,GAAO,SAAUpV,GACnB4B,KAAKoT,WAAWhV,GAAQgQ,EAAOpO,KAAKoT,WAAWhV,IAAS,IAAI,SAAUuV,GAClE,OAAS/P,GAAYA,IAAa+P,EAAQJ,IACrCnK,GAAWA,IAAYuK,EAAQvK,OACxC,IACqC,IAAjCpJ,KAAKoT,WAAWhV,GAAMuC,eACfX,KAAKoT,WAAWhV,EAE/B,GAAG4B,KACP,EACAmT,EAAiB1T,UAAUiU,mBAAqB,SAAUF,GACtDlR,EAAMkR,GAAO,SAAUpV,UACZ4B,KAAKoT,WAAWhV,EAC3B,GAAG4B,KACP,EACOmT,CACX,CA9CyC,GAgDzC,SAASzP,GAAOtF,GACZ,MAAO,IAAMA,CACjB,CAKA,IAuDiCwV,GAvDJ,WACzB,SAASC,EAAWC,GAChB9T,KAAKwG,UAAY,IAAI0M,GACrBlT,KAAK+T,iBAAmB,GACxB/T,KAAK8T,YAAcA,CACvB,CAgDA,OA/CAD,EAAWpU,UAAUJ,KAAO,SAAU2U,EAAWpQ,EAAUwF,GAEvD,OADApJ,KAAKwG,UAAU6M,IAAIW,EAAWpQ,EAAUwF,GACjCpJ,IACX,EACA6T,EAAWpU,UAAUwU,YAAc,SAAUrQ,GAEzC,OADA5D,KAAK+T,iBAAiB3Q,KAAKQ,GACpB5D,IACX,EACA6T,EAAWpU,UAAUyU,OAAS,SAAUF,EAAWpQ,EAAUwF,GAEzD,OADApJ,KAAKwG,UAAUvC,OAAO+P,EAAWpQ,EAAUwF,GACpCpJ,IACX,EACA6T,EAAWpU,UAAU0U,cAAgB,SAAUvQ,GAC3C,OAAKA,GAIL5D,KAAK+T,iBAAmB3F,EAAOpO,KAAK+T,kBAAoB,IAAI,SAAU7V,GAAK,OAAOA,IAAM0F,CAAU,IAC3F5D,OAJHA,KAAK+T,iBAAmB,GACjB/T,KAIf,EACA6T,EAAWpU,UAAU2U,WAAa,WAG9B,OAFApU,KAAKkU,SACLlU,KAAKmU,gBACEnU,IACX,EACA6T,EAAWpU,UAAU4U,KAAO,SAAUL,EAAWnT,EAAMyT,GACnD,IAAK,IAAIxW,EAAI,EAAGA,EAAIkC,KAAK+T,iBAAiBpT,OAAQ7C,IAC9CkC,KAAK+T,iBAAiBjW,GAAGkW,EAAWnT,GAExC,IAAI2F,EAAYxG,KAAKwG,UAAU9H,IAAIsV,GAC/BlH,EAAO,GAOX,GANIwH,EACAxH,EAAK1J,KAAKvC,EAAMyT,GAEXzT,GACLiM,EAAK1J,KAAKvC,GAEV2F,GAAaA,EAAU7F,OAAS,EAChC,IAAS7C,EAAI,EAAGA,EAAI0I,EAAU7F,OAAQ7C,IAClC0I,EAAU1I,GAAGyV,GAAGjR,MAAMkE,EAAU1I,GAAGsL,SAAW5L,OAAQsP,QAGrD9M,KAAK8T,aACV9T,KAAK8T,YAAYE,EAAWnT,GAEhC,OAAOb,IACX,EACO6T,CACX,CAtD4B,GA0DxBU,GAAqE,WACrE,IAAIzU,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACA,OAAO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,CACH,CAZwE,GAkBrEmU,GAA4C,SAAUnS,GAEtD,SAASoS,EAAoBC,EAAOtW,EAAMuW,EAAUvV,EAAK0G,GACrD,IAAI2C,EAAQpG,EAAOrE,KAAKgC,OAASA,KAWjC,OAVAyI,EAAMmM,WAAaxO,GAAQyO,+BAC3BpM,EAAMiM,MAAQA,EACdjM,EAAMrK,KAAOA,EACbqK,EAAMkM,SAAWA,EACjBlM,EAAMrJ,IAAMA,EACZqJ,EAAM3C,QAAUA,EAChB2C,EAAMqM,MAAQ,MACdrM,EAAMsM,SAAWjP,EAAQiP,SACzBtM,EAAMxD,gBAAkBa,EAAQb,gBAChCwD,EAAM3E,GAAK2E,EAAMsM,SAASC,mBACnBvM,CACX,CAiIA,OA/IA8L,GAA6BE,EAAqBpS,GAelDoS,EAAoBhV,UAAUwV,sBAAwB,WAClD,OAAO1G,QAAQvO,KAAK0U,MAAMO,sBAC9B,EACAR,EAAoBhV,UAAUyV,aAAe,WACzC,OAAO3G,QAAQvO,KAAK0U,MAAMQ,aAC9B,EACAT,EAAoBhV,UAAU0V,QAAU,WACpC,IAAI1M,EAAQzI,KACZ,GAAIA,KAAKoV,QAAyB,gBAAfpV,KAAK8U,MACpB,OAAO,EAEX,IAAI3M,EAAMnI,KAAK0U,MAAMjN,KAAKsL,WAAW/S,KAAKZ,IAAKY,KAAK8F,SACpD,IACI9F,KAAKoV,OAASpV,KAAK0U,MAAMW,UAAUlN,EAAKnI,KAAK8F,QACjD,CACA,MAAOwE,GAKH,OAJA6C,EAAKP,OAAM,WACPnE,EAAM6M,QAAQhL,GACd7B,EAAM8M,YAAY,SACtB,KACO,CACX,CAIA,OAHAvV,KAAKwV,gBACLvF,GAAOP,MAAM,aAAc,CAAEnK,UAAWvF,KAAK5B,KAAM+J,IAAKA,IACxDnI,KAAKuV,YAAY,eACV,CACX,EACAd,EAAoBhV,UAAUgW,MAAQ,WAClC,QAAIzV,KAAKoV,SACLpV,KAAKoV,OAAOK,SACL,EAKf,EACAhB,EAAoBhV,UAAUmH,KAAO,SAAU/F,GAC3C,IAAI4H,EAAQzI,KACZ,MAAmB,SAAfA,KAAK8U,QACL3H,EAAKP,OAAM,WACHnE,EAAM2M,QACN3M,EAAM2M,OAAOxO,KAAK/F,EAE1B,KACO,EAKf,EACA4T,EAAoBhV,UAAUiW,KAAO,WACd,SAAf1V,KAAK8U,OAAoB9U,KAAKkV,gBAC9BlV,KAAKoV,OAAOM,MAEpB,EACAjB,EAAoBhV,UAAUkW,OAAS,WAC/B3V,KAAK0U,MAAMkB,YACX5V,KAAK0U,MAAMkB,WAAW5V,KAAKoV,OAAQpV,KAAK0U,MAAMjN,KAAKnB,QAAQtG,KAAKZ,IAAKY,KAAK8F,UAE9E9F,KAAKuV,YAAY,QACjBvV,KAAKoV,OAAOS,YAAShH,CACzB,EACA4F,EAAoBhV,UAAU6V,QAAU,SAAU/O,GAC9CvG,KAAKqU,KAAK,QAAS,CAAElD,KAAM,iBAAkB5K,MAAOA,IACpDvG,KAAK+U,SAASxO,MAAMvG,KAAK8V,qBAAqB,CAAEvP,MAAOA,EAAMgE,aACjE,EACAkK,EAAoBhV,UAAUsW,QAAU,SAAUC,GAC1CA,EACAhW,KAAKuV,YAAY,SAAU,CACvBU,KAAMD,EAAWC,KACjBC,OAAQF,EAAWE,OACnBC,SAAUH,EAAWG,WAIzBnW,KAAKuV,YAAY,UAErBvV,KAAKoW,kBACLpW,KAAKoV,YAASvG,CAClB,EACA4F,EAAoBhV,UAAU4W,UAAY,SAAU9G,GAChDvP,KAAKqU,KAAK,UAAW9E,EACzB,EACAkF,EAAoBhV,UAAU6W,WAAa,WACvCtW,KAAKqU,KAAK,WACd,EACAI,EAAoBhV,UAAU+V,cAAgB,WAC1C,IAAI/M,EAAQzI,KACZA,KAAKoV,OAAOS,OAAS,WACjBpN,EAAMkN,QACV,EACA3V,KAAKoV,OAAO9D,QAAU,SAAU/K,GAC5BkC,EAAM6M,QAAQ/O,EAClB,EACAvG,KAAKoV,OAAOmB,QAAU,SAAUP,GAC5BvN,EAAMsN,QAAQC,EAClB,EACAhW,KAAKoV,OAAOoB,UAAY,SAAUjH,GAC9B9G,EAAM4N,UAAU9G,EACpB,EACIvP,KAAKkV,iBACLlV,KAAKoV,OAAOqB,WAAa,WACrBhO,EAAM6N,YACV,EAER,EACA7B,EAAoBhV,UAAU2W,gBAAkB,WACxCpW,KAAKoV,SACLpV,KAAKoV,OAAOS,YAAShH,EACrB7O,KAAKoV,OAAO9D,aAAUzC,EACtB7O,KAAKoV,OAAOmB,aAAU1H,EACtB7O,KAAKoV,OAAOoB,eAAY3H,EACpB7O,KAAKkV,iBACLlV,KAAKoV,OAAOqB,gBAAa5H,GAGrC,EACA4F,EAAoBhV,UAAU8V,YAAc,SAAUT,EAAOlG,GACzD5O,KAAK8U,MAAQA,EACb9U,KAAK+U,SAAS2B,KAAK1W,KAAK8V,qBAAqB,CACzChB,MAAOA,EACPlG,OAAQA,KAEZ5O,KAAKqU,KAAKS,EAAOlG,EACrB,EACA6F,EAAoBhV,UAAUqW,qBAAuB,SAAUvG,GAC3D,OAAOnC,EAAO,CAAEuJ,IAAK3W,KAAK8D,IAAMyL,EACpC,EACOkF,CACX,CAjJ+C,CAiJ7Cb,IAC+BgD,GAAuB,GAgBvBC,GAZN,WACvB,SAASC,EAAUpC,GACf1U,KAAK0U,MAAQA,CACjB,CAOA,OANAoC,EAAUrX,UAAUsX,YAAc,SAAUC,GACxC,OAAOhX,KAAK0U,MAAMqC,YAAYC,EAClC,EACAF,EAAUrX,UAAUwX,iBAAmB,SAAU7Y,EAAMuW,EAAUvV,EAAK0G,GAClE,OAAO,IAAI8Q,GAAqB5W,KAAK0U,MAAOtW,EAAMuW,EAAUvV,EAAK0G,EACrE,EACOgR,CACX,CAX0B,GAmBtBI,GAAc,IAAIL,GAAqB,CACvCpP,KAAMqL,GACNmC,uBAAuB,EACvBC,cAAc,EACdiC,cAAe,WACX,OAAO5I,QAAQnI,GAAQgR,kBAC3B,EACAL,YAAa,WACT,OAAOxI,QAAQnI,GAAQgR,kBAC3B,EACA/B,UAAW,SAAUlN,GACjB,OAAO/B,GAAQiR,gBAAgBlP,EACnC,IAEAmP,GAAoB,CACpB7P,KAAMuL,GACNiC,uBAAuB,EACvBC,cAAc,EACdiC,cAAe,WACX,OAAO,CACX,GAEAI,GAAyBnK,EAAO,CAChCiI,UAAW,SAAUlN,GACjB,OAAO/B,GAAQoR,YAAYC,sBAAsBtP,EACrD,GACDmP,IACCI,GAAuBtK,EAAO,CAC9BiI,UAAW,SAAUlN,GACjB,OAAO/B,GAAQoR,YAAYG,oBAAoBxP,EACnD,GACDmP,IACCM,GAAmB,CACnBb,YAAa,WACT,OAAO3Q,GAAQyR,gBACnB,GAS6BC,GALhB,CACbhF,GAAIoE,GACJa,cAJwB,IAAIlB,GAAsBzJ,EAAO,CAAC,EAAGmK,GAAwBK,KAKrFI,YAJsB,IAAInB,GAAqBzJ,EAAO,CAAC,EAAGsK,GAAsBE,MAehFK,GAAkB,IAAIpB,GAAqB,CAC3CqB,KAAM,SACNzQ,KAAMwL,GACNgC,uBAAuB,EACvBC,cAAc,EACd6B,YAAa,WACT,OAAO,CACX,EACAI,cAAe,WACX,YAAyBtI,IAAlBrR,OAAO2a,MAClB,EACA9C,UAAW,SAAUlN,EAAKrC,GACtB,OAAO,IAAItI,OAAO2a,OAAOhQ,EAAK,KAAM,CAChCiQ,QAAS9Q,EAAahB,QAAQ,SAAU,CACpCW,OAAQnB,EAAQmB,SAEpBoR,mBAAoBvS,EAAQwS,kBAEpC,EACA1C,WAAY,SAAUR,EAAQzN,GAC1ByN,EAAOxO,KAAKuD,KAAKqD,UAAU,CACvB7F,KAAMA,IAEd,IAEA4Q,GAAmB,CACnBxB,YAAa,SAAUC,GAEnB,OADU5Q,GAAQoS,eAAexB,EAAY/P,OAEjD,GAEAwR,GAAwB,IAAI5B,GAAsBzJ,EAAO,CAAC,EAAGmK,GAAwBgB,KACrFG,GAAsB,IAAI7B,GAAqBzJ,EAAO,CAAC,EAAGsK,GAAsBa,KACpFT,GAAWa,cAAgBF,GAC3BX,GAAWc,YAAcF,GACzBZ,GAAW7E,OAASgF,GACS,IAAIY,GAAwB,GAGrDC,GAAyD,WACzD,IAAIhZ,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACA,OAAO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,CACH,CAZ4D,GAwCzD0Y,GAAmB,IA1BR,SAAU1W,GAErB,SAAS2W,IACL,IAAIvQ,EAAQpG,EAAOrE,KAAKgC,OAASA,KAC7BkG,EAAOuC,EASX,YARgCoG,IAA5BrR,OAAO6T,mBACP7T,OAAO6T,iBAAiB,UAAU,WAC9BnL,EAAKmO,KAAK,SACd,IAAG,GACH7W,OAAO6T,iBAAiB,WAAW,WAC/BnL,EAAKmO,KAAK,UACd,IAAG,IAEA5L,CACX,CASA,OAtBAqQ,GAAiBE,EAAS3W,GAc1B2W,EAAQvZ,UAAUwZ,SAAW,WACzB,YAAgCpK,IAA5BrR,OAAOkU,UAAUwH,QAIV1b,OAAOkU,UAAUwH,MAEhC,EACOF,CACX,CAxBc,CAwBZpF,KAgD+BuF,GAzCwC,WACrE,SAASC,EAA+BC,EAAS9T,EAAWO,GACxD9F,KAAKqZ,QAAUA,EACfrZ,KAAKuF,UAAYA,EACjBvF,KAAKsZ,aAAexT,EAAQwT,aAC5BtZ,KAAKuZ,aAAezT,EAAQyT,aAC5BvZ,KAAKwZ,eAAY3K,CACrB,CAgCA,OA/BAuK,EAA+B3Z,UAAUwX,iBAAmB,SAAU7Y,EAAMuW,EAAUvV,EAAK0G,GACvF,IAAI2C,EAAQzI,KACZ8F,EAAUsH,EAAO,CAAC,EAAGtH,EAAS,CAC1Bb,gBAAiBjF,KAAKwZ,YAE1B,IAAIC,EAAazZ,KAAKuF,UAAU0R,iBAAiB7Y,EAAMuW,EAAUvV,EAAK0G,GAClE4T,EAAgB,KAChB/D,EAAS,WACT8D,EAAWvF,OAAO,OAAQyB,GAC1B8D,EAAWpa,KAAK,SAAUsa,GAC1BD,EAAgBvM,EAAKV,KACzB,EACIkN,EAAW,SAAU3D,GAErB,GADAyD,EAAWvF,OAAO,SAAUyF,GACJ,OAApB3D,EAAWC,MAAqC,OAApBD,EAAWC,KACvCxN,EAAM4Q,QAAQO,mBAEb,IAAK5D,EAAWG,UAAYuD,EAAe,CAC5C,IAAIG,EAAW1M,EAAKV,MAAQiN,EACxBG,EAAW,EAAIpR,EAAM8Q,eACrB9Q,EAAM4Q,QAAQO,cACdnR,EAAM+Q,UAAYM,KAAKC,IAAIF,EAAW,EAAGpR,EAAM6Q,cAEvD,CACJ,EAEA,OADAG,EAAWpa,KAAK,OAAQsW,GACjB8D,CACX,EACAL,EAA+B3Z,UAAUsX,YAAc,SAAUC,GAC7D,OAAOhX,KAAKqZ,QAAQW,WAAaha,KAAKuF,UAAUwR,YAAYC,EAChE,EACOoC,CACX,CAxCwE,GA4CpEa,GAAW,CACXC,cAAe,SAAUC,GACrB,IACI,IAAIC,EAAcjQ,KAAKC,MAAM+P,EAAatZ,MACtCwZ,EAAkBD,EAAYvZ,KAClC,GAA+B,iBAApBwZ,EACP,IACIA,EAAkBlQ,KAAKC,MAAMgQ,EAAYvZ,KAC7C,CACA,MAAOyJ,GAAK,CAEhB,IAAIgQ,EAAc,CACdC,MAAOH,EAAYG,MACnBC,QAASJ,EAAYI,QACrB3Z,KAAMwZ,GAKV,OAHID,EAAYK,UACZH,EAAYG,QAAUL,EAAYK,SAE/BH,CACX,CACA,MAAOhQ,GACH,KAAM,CAAE6G,KAAM,oBAAqB5K,MAAO+D,EAAGzJ,KAAMsZ,EAAatZ,KACpE,CACJ,EACA6Z,cAAe,SAAUH,GACrB,OAAOpQ,KAAKqD,UAAU+M,EAC1B,EACAI,iBAAkB,SAAUR,GACxB,IAAI5K,EAAU0K,GAASC,cAAcC,GACrC,GAAsB,kCAAlB5K,EAAQgL,MAA2C,CACnD,IAAKhL,EAAQ1O,KAAK+Z,iBACd,KAAM,6CAEV,MAAO,CACHC,OAAQ,YACR/W,GAAIyL,EAAQ1O,KAAKia,UACjB7V,gBAAiD,IAAhCsK,EAAQ1O,KAAK+Z,iBAEtC,CACK,GAAsB,iBAAlBrL,EAAQgL,MACb,MAAO,CACHM,OAAQ7a,KAAK+a,eAAexL,EAAQ1O,MACpC0F,MAAOvG,KAAKgb,cAAczL,EAAQ1O,OAItC,KAAM,mBAEd,EACAka,eAAgB,SAAU/E,GACtB,OAAIA,EAAWC,KAAO,IACdD,EAAWC,MAAQ,MAAQD,EAAWC,MAAQ,KACvC,UAGA,KAGc,MAApBD,EAAWC,KACT,WAEFD,EAAWC,KAAO,KAChB,UAEFD,EAAWC,KAAO,KAChB,UAEFD,EAAWC,KAAO,KAChB,QAGA,SAEf,EACA+E,cAAe,SAAUhF,GACrB,OAAwB,MAApBA,EAAWC,MAAqC,OAApBD,EAAWC,KAChC,CACH9E,KAAM,cACNtQ,KAAM,CACFoV,KAAMD,EAAWC,KACjB1G,QAASyG,EAAWE,QAAUF,EAAWzG,UAK1C,IAEf,GAE6B0L,GAAoB,GAGjDC,GAA2D,WAC3D,IAAIpb,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACA,OAAO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,CACH,CAZ8D,GA0H9B8a,GAzGJ,SAAU9Y,GAEnC,SAAS+Y,EAAWtX,EAAIyB,GACpB,IAAIkD,EAAQpG,EAAOrE,KAAKgC,OAASA,KAKjC,OAJAyI,EAAM3E,GAAKA,EACX2E,EAAMlD,UAAYA,EAClBkD,EAAMxD,gBAAkBM,EAAUN,gBAClCwD,EAAM+M,gBACC/M,CACX,CA8FA,OAtGAyS,GAAmBE,EAAY/Y,GAS/B+Y,EAAW3b,UAAUwV,sBAAwB,WACzC,OAAOjV,KAAKuF,UAAU0P,uBAC1B,EACAmG,EAAW3b,UAAUmH,KAAO,SAAU/F,GAClC,OAAOb,KAAKuF,UAAUqB,KAAK/F,EAC/B,EACAua,EAAW3b,UAAU4b,WAAa,SAAUjd,EAAMyC,EAAM2Z,GACpD,IAAID,EAAQ,CAAEA,MAAOnc,EAAMyC,KAAMA,GAKjC,OAJI2Z,IACAD,EAAMC,QAAUA,GAEpBvK,GAAOP,MAAM,aAAc6K,GACpBva,KAAK4G,KAAKqU,GAAkBP,cAAcH,GACrD,EACAa,EAAW3b,UAAUiW,KAAO,WACpB1V,KAAKuF,UAAU2P,eACflV,KAAKuF,UAAUmQ,OAGf1V,KAAKqb,WAAW,cAAe,CAAC,EAExC,EACAD,EAAW3b,UAAUgW,MAAQ,WACzBzV,KAAKuF,UAAUkQ,OACnB,EACA2F,EAAW3b,UAAU+V,cAAgB,WACjC,IAAI/M,EAAQzI,KACRsb,EAAY,CACZ/L,QAAS,SAAU4K,GACf,IAAIG,EACJ,IACIA,EAAcW,GAAkBf,cAAcC,EAClD,CACA,MAAO7P,GACH7B,EAAM4L,KAAK,QAAS,CAChBlD,KAAM,oBACN5K,MAAO+D,EACPzJ,KAAMsZ,EAAatZ,MAE3B,CACA,QAAoBgO,IAAhByL,EAA2B,CAE3B,OADArK,GAAOP,MAAM,aAAc4K,GACnBA,EAAYC,OAChB,IAAK,eACD9R,EAAM4L,KAAK,QAAS,CAChBlD,KAAM,cACNtQ,KAAMyZ,EAAYzZ,OAEtB,MACJ,IAAK,cACD4H,EAAM4L,KAAK,QACX,MACJ,IAAK,cACD5L,EAAM4L,KAAK,QAGnB5L,EAAM4L,KAAK,UAAWiG,EAC1B,CACJ,EACAiB,SAAU,WACN9S,EAAM4L,KAAK,WACf,EACA9N,MAAO,SAAUA,GACbkC,EAAM4L,KAAK,QAAS9N,EACxB,EACAiV,OAAQ,SAAUxF,GACdI,IACIJ,GAAcA,EAAWC,MACzBxN,EAAMgT,iBAAiBzF,GAE3BvN,EAAMlD,UAAY,KAClBkD,EAAM4L,KAAK,SACf,GAEA+B,EAAkB,WAClBrI,EAAYuN,GAAW,SAAUI,EAAUnB,GACvC9R,EAAMlD,UAAU2O,OAAOqG,EAAOmB,EAClC,GACJ,EACA3N,EAAYuN,GAAW,SAAUI,EAAUnB,GACvC9R,EAAMlD,UAAUlG,KAAKkb,EAAOmB,EAChC,GACJ,EACAN,EAAW3b,UAAUgc,iBAAmB,SAAUzF,GAC9C,IAAI6E,EAASI,GAAkBF,eAAe/E,GAC1CzP,EAAQ0U,GAAkBD,cAAchF,GACxCzP,GACAvG,KAAKqU,KAAK,QAAS9N,GAEnBsU,GACA7a,KAAKqU,KAAKwG,EAAQ,CAAEA,OAAQA,EAAQtU,MAAOA,GAEnD,EACO6U,CACX,CAxG4B,CAwG1BxH,IA2D+B+H,GApDN,WACvB,SAASC,EAAUrW,EAAW3B,GAC1B5D,KAAKuF,UAAYA,EACjBvF,KAAK4D,SAAWA,EAChB5D,KAAKwV,eACT,CA6CA,OA5CAoG,EAAUnc,UAAUgW,MAAQ,WACxBzV,KAAKoW,kBACLpW,KAAKuF,UAAUkQ,OACnB,EACAmG,EAAUnc,UAAU+V,cAAgB,WAChC,IAAI/M,EAAQzI,KACZA,KAAKqW,UAAY,SAAUpY,GAEvB,IAAI+D,EADJyG,EAAM2N,kBAEN,IACIpU,EAASiZ,GAAkBN,iBAAiB1c,EAChD,CACA,MAAOqM,GAGH,OAFA7B,EAAMoT,OAAO,QAAS,CAAEtV,MAAO+D,SAC/B7B,EAAMlD,UAAUkQ,OAEpB,CACsB,cAAlBzT,EAAO6Y,OACPpS,EAAMoT,OAAO,YAAa,CACtBpC,WAAY,IAAI0B,GAAsBnZ,EAAO8B,GAAI2E,EAAMlD,WACvDN,gBAAiBjD,EAAOiD,mBAI5BwD,EAAMoT,OAAO7Z,EAAO6Y,OAAQ,CAAEtU,MAAOvE,EAAOuE,QAC5CkC,EAAMlD,UAAUkQ,QAExB,EACAzV,KAAK2Z,SAAW,SAAU3D,GACtBvN,EAAM2N,kBACN,IAAIyE,EAASI,GAAkBF,eAAe/E,IAAe,UACzDzP,EAAQ0U,GAAkBD,cAAchF,GAC5CvN,EAAMoT,OAAOhB,EAAQ,CAAEtU,MAAOA,GAClC,EACAvG,KAAKuF,UAAUlG,KAAK,UAAWW,KAAKqW,WACpCrW,KAAKuF,UAAUlG,KAAK,SAAUW,KAAK2Z,SACvC,EACAiC,EAAUnc,UAAU2W,gBAAkB,WAClCpW,KAAKuF,UAAU2O,OAAO,UAAWlU,KAAKqW,WACtCrW,KAAKuF,UAAU2O,OAAO,SAAUlU,KAAK2Z,SACzC,EACAiC,EAAUnc,UAAUoc,OAAS,SAAUhB,EAAQjM,GAC3C5O,KAAK4D,SAASwJ,EAAO,CAAE7H,UAAWvF,KAAKuF,UAAWsV,OAAQA,GAAUjM,GACxE,EACOgN,CACX,CAnD0B,GAqEOE,GAbK,WAClC,SAASC,EAAehH,EAAUjP,GAC9B9F,KAAK+U,SAAWA,EAChB/U,KAAK8F,QAAUA,GAAW,CAAC,CAC/B,CAOA,OANAiW,EAAetc,UAAUmH,KAAO,SAAUK,EAAQrD,GAC1C5D,KAAK+U,SAASiH,WAGlBhc,KAAK+U,SAASnO,KAAKR,GAAQ6V,kBAAkB7J,SAASpS,KAAMiH,GAASrD,EACzE,EACOmY,CACX,CAZqC,GAgBjCG,GAAwD,WACxD,IAAIpc,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACA,OAAO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,CACH,CAZ2D,GAqH3B8b,GAnGV,SAAU9Z,GAE7B,SAAS+Z,EAAQhe,EAAMie,GACnB,IAAI5T,EAAQpG,EAAOrE,KAAKgC,MAAM,SAAUua,EAAO1Z,GAC3CoP,GAAOP,MAAM,mBAAqBtR,EAAO,QAAUmc,EACvD,KAAMva,KAMN,OALAyI,EAAMrK,KAAOA,EACbqK,EAAM4T,OAASA,EACf5T,EAAM6T,YAAa,EACnB7T,EAAM8T,qBAAsB,EAC5B9T,EAAM+T,uBAAwB,EACvB/T,CACX,CAqFA,OAhGAyT,GAAgBE,EAAS/Z,GAYzB+Z,EAAQ3c,UAAUgd,UAAY,SAAUC,EAAU9Y,GAC9C,OAAOA,EAAS,KAAM,CAAE+Y,KAAM,IAClC,EACAP,EAAQ3c,UAAUmd,QAAU,SAAUrC,EAAO1Z,GACzC,GAAiC,IAA7B0Z,EAAMzM,QAAQ,WACd,MAAM,IAAIxF,EAAa,UAAYiS,EAAQ,mCAE/C,IAAKva,KAAKsc,WAAY,CAClB,IAAIlV,EAASa,EAAUC,eAAe,0BACtC+H,GAAON,KAAK,0EAA4EvI,EAC5F,CACA,OAAOpH,KAAKqc,OAAOhB,WAAWd,EAAO1Z,EAAMb,KAAK5B,KACpD,EACAge,EAAQ3c,UAAUod,WAAa,WAC3B7c,KAAKsc,YAAa,EAClBtc,KAAKuc,qBAAsB,CAC/B,EACAH,EAAQ3c,UAAUqd,YAAc,SAAUvC,GACtC,IAAIvG,EAAYuG,EAAMA,MAClB1Z,EAAO0Z,EAAM1Z,KACC,2CAAdmT,EACAhU,KAAK+c,iCAAiCxC,GAEnB,uCAAdvG,EACLhU,KAAKgd,6BAA6BzC,GAEa,IAA1CvG,EAAUlG,QAAQ,qBAEvB9N,KAAKqU,KAAKL,EAAWnT,EADN,CAAC,EAGxB,EACAub,EAAQ3c,UAAUsd,iCAAmC,SAAUxC,GAC3Dva,KAAKuc,qBAAsB,EAC3Bvc,KAAKsc,YAAa,EACdtc,KAAKwc,sBACLxc,KAAKqc,OAAOY,YAAYjd,KAAK5B,MAG7B4B,KAAKqU,KAAK,gCAAiCkG,EAAM1Z,KAEzD,EACAub,EAAQ3c,UAAUud,6BAA+B,SAAUzC,GACnDA,EAAM1Z,KAAKqc,qBACXld,KAAKmd,kBAAoB5C,EAAM1Z,KAAKqc,oBAExCld,KAAKqU,KAAK,4BAA6BkG,EAAM1Z,KACjD,EACAub,EAAQ3c,UAAU2d,UAAY,WAC1B,IAAI3U,EAAQzI,KACRA,KAAKsc,aAGTtc,KAAKuc,qBAAsB,EAC3Bvc,KAAKwc,uBAAwB,EAC7Bxc,KAAKyc,UAAUzc,KAAKqc,OAAO5C,WAAWqB,WAAW,SAAUvU,EAAO1F,GAC1D0F,GACAkC,EAAM8T,qBAAsB,EAC5BtM,GAAO1J,MAAMA,EAAMgE,YACnB9B,EAAM4L,KAAK,4BAA6B9V,OAAO8e,OAAO,CAAC,EAAG,CACtDlM,KAAM,YACN5K,MAAOA,EAAMgJ,SACdhJ,aAAiB0C,EAAgB,CAAEC,OAAQ3C,EAAM2C,QAAW,CAAC,KAGhET,EAAM4T,OAAOhB,WAAW,mBAAoB,CACxCsB,KAAM9b,EAAK8b,KACXW,aAAczc,EAAKyc,aACnB9C,QAAS/R,EAAMrK,MAG3B,IACJ,EACAge,EAAQ3c,UAAUwd,YAAc,WAC5Bjd,KAAKsc,YAAa,EAClBtc,KAAKqc,OAAOhB,WAAW,qBAAsB,CACzCb,QAASxa,KAAK5B,MAEtB,EACAge,EAAQ3c,UAAU8d,mBAAqB,WACnCvd,KAAKwc,uBAAwB,CACjC,EACAJ,EAAQ3c,UAAU+d,sBAAwB,WACtCxd,KAAKwc,uBAAwB,CACjC,EACOJ,CACX,CAlGsB,CAkGpBxI,IAIE6J,GAAgE,WAChE,IAAI3d,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACA,OAAO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,CACH,CAZmE,GAchEqd,GAAkB,SAAUrb,GAE5B,SAASqb,IACL,OAAkB,OAAXrb,GAAmBA,EAAOC,MAAMtC,KAAMuC,YAAcvC,IAC/D,CAOA,OAVAyd,GAAwBC,EAAgBrb,GAIxCqb,EAAeje,UAAUgd,UAAY,SAAUC,EAAU9Y,GACrD,OAAO5D,KAAKqc,OAAOsB,OAAOC,kBAAkB,CACxCC,YAAa7d,KAAK5B,KAClBse,SAAUA,GACX9Y,EACP,EACO8Z,CACX,CAZqB,CAYnBvB,IAC+B2B,GAAkB,GAwDlBC,GApDV,WACnB,SAASC,IACLhe,KAAKie,OACT,CA+CA,OA9CAD,EAAQve,UAAUf,IAAM,SAAUoF,GAC9B,OAAIvF,OAAOkB,UAAUC,eAAe1B,KAAKgC,KAAK+d,QAASja,GAC5C,CACHA,GAAIA,EACJ4S,KAAM1W,KAAK+d,QAAQja,IAIhB,IAEf,EACAka,EAAQve,UAAUye,KAAO,SAAUta,GAC/B,IAAI6E,EAAQzI,KACZ+N,EAAY/N,KAAK+d,SAAS,SAAUI,EAAQra,GACxCF,EAAS6E,EAAM/J,IAAIoF,GACvB,GACJ,EACAka,EAAQve,UAAU2e,QAAU,SAAUta,GAClC9D,KAAKqe,KAAOva,CAChB,EACAka,EAAQve,UAAU6e,eAAiB,SAAUC,GACzCve,KAAK+d,QAAUQ,EAAiBC,SAASC,KACzCze,KAAK0e,MAAQH,EAAiBC,SAASE,MACvC1e,KAAK2e,GAAK3e,KAAKtB,IAAIsB,KAAKqe,KAC5B,EACAL,EAAQve,UAAUmf,UAAY,SAAUC,GAKpC,OAJqC,OAAjC7e,KAAKtB,IAAImgB,EAAWpE,UACpBza,KAAK0e,QAET1e,KAAK+d,QAAQc,EAAWpE,SAAWoE,EAAWC,UACvC9e,KAAKtB,IAAImgB,EAAWpE,QAC/B,EACAuD,EAAQve,UAAUsf,aAAe,SAAUF,GACvC,IAAIV,EAASne,KAAKtB,IAAImgB,EAAWpE,SAKjC,OAJI0D,WACOne,KAAK+d,QAAQc,EAAWpE,SAC/Bza,KAAK0e,SAEFP,CACX,EACAH,EAAQve,UAAUwe,MAAQ,WACtBje,KAAK+d,QAAU,CAAC,EAChB/d,KAAK0e,MAAQ,EACb1e,KAAKqe,KAAO,KACZre,KAAK2e,GAAK,IACd,EACOX,CACX,CAnDsB,GAuDlBgB,GAAiE,WACjE,IAAIlf,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACA,OAAO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,CACH,CAZoE,GAajE4e,GAAkD,SAAUC,EAASC,EAAYC,EAAGC,GAEpF,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU3gB,GAAS,IAAM4gB,EAAKL,EAAUM,KAAK7gB,GAAS,CAAE,MAAOwL,GAAKkV,EAAOlV,EAAI,CAAE,CAC1F,SAASsV,EAAS9gB,GAAS,IAAM4gB,EAAKL,EAAiB,MAAEvgB,GAAS,CAAE,MAAOwL,GAAKkV,EAAOlV,EAAI,CAAE,CAC7F,SAASoV,EAAK1d,GAJlB,IAAelD,EAIakD,EAAO6d,KAAON,EAAQvd,EAAOlD,QAJ1CA,EAIyDkD,EAAOlD,MAJhDA,aAAiBsgB,EAAItgB,EAAQ,IAAIsgB,GAAE,SAAUG,GAAWA,EAAQzgB,EAAQ,KAIjBghB,KAAKL,EAAWG,EAAW,CAC7GF,GAAML,EAAYA,EAAU/c,MAAM4c,EAASC,GAAc,KAAKQ,OAClE,GACJ,EACII,GAAsD,SAAUb,EAASc,GACzE,IAAsGhS,EAAGiS,EAAGlhB,EAAGmhB,EAA3GhS,EAAI,CAAEiS,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPrhB,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGshB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEP,KAAMY,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAX3hB,SAA0BshB,EAAEthB,OAAO4hB,UAAY,WAAa,OAAOxgB,IAAM,GAAIkgB,EACvJ,SAASK,EAAKjhB,GAAK,OAAO,SAAUmhB,GAAK,OACzC,SAAclf,GACV,GAAIyM,EAAG,MAAM,IAAI0S,UAAU,mCAC3B,KAAOxS,OACH,GAAIF,EAAI,EAAGiS,IAAMlhB,EAAY,EAARwC,EAAG,GAAS0e,EAAU,OAAI1e,EAAG,GAAK0e,EAAS,SAAOlhB,EAAIkhB,EAAU,SAAMlhB,EAAEf,KAAKiiB,GAAI,GAAKA,EAAEN,SAAW5gB,EAAIA,EAAEf,KAAKiiB,EAAG1e,EAAG,KAAKse,KAAM,OAAO9gB,EAE3J,OADIkhB,EAAI,EAAGlhB,IAAGwC,EAAK,CAAS,EAARA,EAAG,GAAQxC,EAAED,QACzByC,EAAG,IACP,KAAK,EAAG,KAAK,EAAGxC,EAAIwC,EAAI,MACxB,KAAK,EAAc,OAAX2M,EAAEiS,QAAgB,CAAErhB,MAAOyC,EAAG,GAAIse,MAAM,GAChD,KAAK,EAAG3R,EAAEiS,QAASF,EAAI1e,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK2M,EAAEoS,IAAIK,MAAOzS,EAAEmS,KAAKM,MAAO,SACxC,QACI,MAAkB5hB,GAAZA,EAAImP,EAAEmS,MAAY1f,OAAS,GAAK5B,EAAEA,EAAE4B,OAAS,KAAkB,IAAVY,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE2M,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAV3M,EAAG,MAAcxC,GAAMwC,EAAG,GAAKxC,EAAE,IAAMwC,EAAG,GAAKxC,EAAE,IAAM,CAAEmP,EAAEiS,MAAQ5e,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAY2M,EAAEiS,MAAQphB,EAAE,GAAI,CAAEmP,EAAEiS,MAAQphB,EAAE,GAAIA,EAAIwC,EAAI,KAAO,CACpE,GAAIxC,GAAKmP,EAAEiS,MAAQphB,EAAE,GAAI,CAAEmP,EAAEiS,MAAQphB,EAAE,GAAImP,EAAEoS,IAAIld,KAAK7B,GAAK,KAAO,CAC9DxC,EAAE,IAAImP,EAAEoS,IAAIK,MAChBzS,EAAEmS,KAAKM,MAAO,SAEtBpf,EAAKye,EAAKhiB,KAAKkhB,EAAShR,EAC5B,CAAE,MAAO5D,GAAK/I,EAAK,CAAC,EAAG+I,GAAI2V,EAAI,CAAG,CAAE,QAAUjS,EAAIjP,EAAI,CAAG,CACzD,GAAY,EAARwC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEzC,MAAOyC,EAAG,GAAKA,EAAG,QAAK,EAAQse,MAAM,EAC9E,CAtBgDH,CAAK,CAACpgB,EAAGmhB,GAAK,CAAG,CAuBrE,EAoGiCG,GA/FO,SAAUve,GAE9C,SAASwe,EAAgBziB,EAAMie,GAC3B,IAAI5T,EAAQpG,EAAOrE,KAAKgC,KAAM5B,EAAMie,IAAWrc,KAE/C,OADAyI,EAAMsV,QAAU,IAAIA,GACbtV,CACX,CAuFA,OA5FAuW,GAAyB6B,EAAiBxe,GAM1Cwe,EAAgBphB,UAAUgd,UAAY,SAAUC,EAAU9Y,GACtD,IAAI6E,EAAQzI,KACZqC,EAAO5C,UAAUgd,UAAUze,KAAKgC,KAAM0c,GAAU,SAAUnW,EAAOua,GAAY,OAAO7B,GAAUxW,OAAO,OAAQ,GAAQ,WACjH,IAAIsY,EAAa3Z,EACjB,OAAO2Y,GAAY/f,MAAM,SAAUghB,GAC/B,OAAQA,EAAGb,OACP,KAAK,EACD,OAAM5Z,EAAc,CAAC,EAAG,GAEO,MAAzBua,EAASxD,aAA8B,CAAC,EAAG,IACjDyD,EAAc5W,KAAKC,MAAM0W,EAASxD,cAClCtd,KAAK+d,QAAQK,QAAQ2C,EAAYtG,SAC1B,CAAC,EAAG,IACf,KAAK,EAAG,MAAO,CAAC,EAAGza,KAAKqc,OAAO4E,KAAKC,mBACpC,KAAK,EAED,GADAF,EAAGZ,OAC+B,MAA9BpgB,KAAKqc,OAAO4E,KAAKE,UASjB,OALA/Z,EAASa,EAAUC,eAAe,yBAClC+H,GAAO1J,MAAM,sCAAwCvG,KAAK5B,KAA7C,qCAC4BgJ,EAD5B,sCAGbxD,EAAS,yBACF,CAAC,GARR5D,KAAK+d,QAAQK,QAAQpe,KAAKqc,OAAO4E,KAAKE,UAAUrd,IAUpDkd,EAAGb,MAAQ,EACf,KAAK,EAED,OADAvc,EAAS2C,EAAOua,GACT,CAAC,GAEpB,GACJ,GAAI,GACR,EACAD,EAAgBphB,UAAUqd,YAAc,SAAUvC,GAC9C,IAAIvG,EAAYuG,EAAMA,MACtB,GAA8C,IAA1CvG,EAAUlG,QAAQ,oBAClB9N,KAAKohB,oBAAoB7G,OAExB,CACD,IAAI1Z,EAAO0Z,EAAM1Z,KACbyT,EAAW,CAAC,EACZiG,EAAME,UACNnG,EAASmG,QAAUF,EAAME,SAE7Bza,KAAKqU,KAAKL,EAAWnT,EAAMyT,EAC/B,CACJ,EACAuM,EAAgBphB,UAAU2hB,oBAAsB,SAAU7G,GACtD,IAAIvG,EAAYuG,EAAMA,MAClB1Z,EAAO0Z,EAAM1Z,KACjB,OAAQmT,GACJ,IAAK,yCACDhU,KAAK+c,iCAAiCxC,GACtC,MACJ,IAAK,qCACDva,KAAKgd,6BAA6BzC,GAClC,MACJ,IAAK,+BACD,IAAI8G,EAAcrhB,KAAK+d,QAAQa,UAAU/d,GACzCb,KAAKqU,KAAK,sBAAuBgN,GACjC,MACJ,IAAK,iCACD,IAAIC,EAAgBthB,KAAK+d,QAAQgB,aAAale,GAC1CygB,GACAthB,KAAKqU,KAAK,wBAAyBiN,GAInD,EACAT,EAAgBphB,UAAUsd,iCAAmC,SAAUxC,GACnEva,KAAKuc,qBAAsB,EAC3Bvc,KAAKsc,YAAa,EACdtc,KAAKwc,sBACLxc,KAAKqc,OAAOY,YAAYjd,KAAK5B,OAG7B4B,KAAK+d,QAAQO,eAAe/D,EAAM1Z,MAClCb,KAAKqU,KAAK,gCAAiCrU,KAAK+d,SAExD,EACA8C,EAAgBphB,UAAUod,WAAa,WACnC7c,KAAK+d,QAAQE,QACb5b,EAAO5C,UAAUod,WAAW7e,KAAKgC,KACrC,EACO6gB,CACX,CA9FuC,CA8FrC/C,IAIEyD,GAAO,EAAoB,GAG3BC,GAAS,EAAoB,GAG7BC,GAAkE,WAClE,IAAI3hB,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACA,OAAO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,CACH,CAZqE,GA4GrCqhB,GA1FS,SAAUrf,GAEhD,SAASsf,EAAiBvjB,EAAMie,EAAQuF,GACpC,IAAInZ,EAAQpG,EAAOrE,KAAKgC,KAAM5B,EAAMie,IAAWrc,KAG/C,OAFAyI,EAAMrJ,IAAM,KACZqJ,EAAMmZ,KAAOA,EACNnZ,CACX,CAiFA,OAvFAgZ,GAA0BE,EAAkBtf,GAO5Csf,EAAiBliB,UAAUgd,UAAY,SAAUC,EAAU9Y,GACvD,IAAI6E,EAAQzI,KACZqC,EAAO5C,UAAUgd,UAAUze,KAAKgC,KAAM0c,GAAU,SAAUnW,EAAOua,GAC7D,GAAIva,EACA3C,EAAS2C,EAAOua,OADpB,CAIA,IAAIe,EAAef,EAAwB,cACtCe,GAILpZ,EAAMrJ,IAAMb,OAAOijB,GAAe,OAAtBjjB,CAAyBsjB,UAC9Bf,EAAwB,cAC/Bld,EAAS,KAAMkd,IALXld,EAAS,IAAI7B,MAAM,+DAAiE0G,EAAMrK,MAAO,KAHrG,CASJ,GACJ,EACAujB,EAAiBliB,UAAUmd,QAAU,SAAUrC,EAAO1Z,GAClD,MAAM,IAAIiI,EAAmB,mEACjC,EACA6Y,EAAiBliB,UAAUqd,YAAc,SAAUvC,GAC/C,IAAIvG,EAAYuG,EAAMA,MAClB1Z,EAAO0Z,EAAM1Z,KAC6B,IAA1CmT,EAAUlG,QAAQ,qBACe,IAAjCkG,EAAUlG,QAAQ,WAItB9N,KAAK8hB,qBAAqB9N,EAAWnT,GAHjCwB,EAAO5C,UAAUqd,YAAY9e,KAAKgC,KAAMua,EAIhD,EACAoH,EAAiBliB,UAAUqiB,qBAAuB,SAAUvH,EAAO1Z,GAC/D,IAAI4H,EAAQzI,KACZ,GAAKA,KAAKZ,IAIV,GAAKyB,EAAKkhB,YAAelhB,EAAKmhB,MAA9B,CAKA,IAAIC,EAAa1jB,OAAOijB,GAAe,OAAtBjjB,CAAyBsC,EAAKkhB,YAC/C,GAAIE,EAAWthB,OAASX,KAAK4hB,KAAKM,UAAUC,eACxClS,GAAO1J,MAAM,oDAAsDvG,KAAK4hB,KAAKM,UAAUC,eAAiB,UAAYF,EAAWthB,YADnI,CAIA,IAAIqhB,EAAQzjB,OAAOijB,GAAe,OAAtBjjB,CAAyBsC,EAAKmhB,OAC1C,GAAIA,EAAMrhB,OAASX,KAAK4hB,KAAKM,UAAUE,YACnCnS,GAAO1J,MAAM,+CAAiDvG,KAAK4hB,KAAKM,UAAUE,YAAc,UAAYJ,EAAMrhB,YADtH,CAIA,IAAI0hB,EAAQriB,KAAK4hB,KAAKM,UAAUvY,KAAKsY,EAAYD,EAAOhiB,KAAKZ,KAC7D,GAAc,OAAVijB,EAeA,OAdApS,GAAOP,MAAM,wIACb1P,KAAKyc,UAAUzc,KAAKqc,OAAO5C,WAAWqB,WAAW,SAAUvU,EAAOua,GAC1Dva,EACA0J,GAAO1J,MAAM,iDAAmDua,EAAW,0DAIjE,QADduB,EAAQ5Z,EAAMmZ,KAAKM,UAAUvY,KAAKsY,EAAYD,EAAOvZ,EAAMrJ,MAK3DqJ,EAAM4L,KAAKkG,EAAO9R,EAAM6Z,cAAcD,IAHlCpS,GAAO1J,MAAM,iEAKrB,IAGJvG,KAAKqU,KAAKkG,EAAOva,KAAKsiB,cAAcD,GAnBpC,CALA,CALA,MAHIpS,GAAO1J,MAAM,qGACT1F,QALJoP,GAAOP,MAAM,+EAqCrB,EACAiS,EAAiBliB,UAAU6iB,cAAgB,SAAUD,GACjD,IAAIE,EAAMhkB,OAAOgjB,GAAa,OAApBhjB,CAAuB8jB,GACjC,IACI,OAAOlY,KAAKC,MAAMmY,EACtB,CACA,MAAOvB,GACH,OAAOuB,CACX,CACJ,EACOZ,CACX,CAzFyC,CAyFvC7D,IAIE0E,GAAmE,WACnE,IAAI1iB,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACA,OAAO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,CACH,CAZsE,GAsRtCoiB,GApQW,SAAUpgB,GAElD,SAASqgB,EAAkBtjB,EAAK0G,GAC5B,IAAI2C,EAAQpG,EAAOrE,KAAKgC,OAASA,KACjCyI,EAAMqM,MAAQ,cACdrM,EAAMgR,WAAa,KACnBhR,EAAMrJ,IAAMA,EACZqJ,EAAM3C,QAAUA,EAChB2C,EAAMsM,SAAWtM,EAAM3C,QAAQiP,SAC/BtM,EAAMka,SAAWla,EAAM3C,QAAQmB,OAC/BwB,EAAMma,eAAiBna,EAAMoa,sBAC7Bpa,EAAMqa,oBAAsBra,EAAMsa,yBAAyBta,EAAMma,gBACjEna,EAAMua,mBAAqBva,EAAMwa,wBAAwBxa,EAAMma,gBAC/D,IAAIM,EAAU9c,GAAQ+c,aActB,OAbAD,EAAQ7jB,KAAK,UAAU,WACnBoJ,EAAMsM,SAAS2B,KAAK,CAAE0M,QAAS,WACX,eAAhB3a,EAAMqM,OAA0C,gBAAhBrM,EAAMqM,OACtCrM,EAAM4a,QAAQ,EAEtB,IACAH,EAAQ7jB,KAAK,WAAW,WACpBoJ,EAAMsM,SAAS2B,KAAK,CAAE0M,QAAS,YAC3B3a,EAAMgR,YACNhR,EAAM6a,mBAEd,IACA7a,EAAM8a,iBACC9a,CACX,CAsOA,OAjQA+Z,GAA2BE,EAAmBrgB,GA4B9CqgB,EAAkBjjB,UAAU0V,QAAU,WAC9BnV,KAAKyZ,YAAczZ,KAAKwjB,SAGvBxjB,KAAKyjB,SAAS1M,eAInB/W,KAAK0jB,YAAY,cACjB1jB,KAAK2jB,kBACL3jB,KAAK4jB,uBALD5jB,KAAK0jB,YAAY,UAMzB,EACAhB,EAAkBjjB,UAAUmH,KAAO,SAAU/F,GACzC,QAAIb,KAAKyZ,YACEzZ,KAAKyZ,WAAW7S,KAAK/F,EAKpC,EACA6hB,EAAkBjjB,UAAU4b,WAAa,SAAUjd,EAAMyC,EAAM2Z,GAC3D,QAAIxa,KAAKyZ,YACEzZ,KAAKyZ,WAAW4B,WAAWjd,EAAMyC,EAAM2Z,EAKtD,EACAkI,EAAkBjjB,UAAUod,WAAa,WACrC7c,KAAK6jB,uBACL7jB,KAAK0jB,YAAY,eACrB,EACAhB,EAAkBjjB,UAAUqkB,WAAa,WACrC,OAAO9jB,KAAK2iB,QAChB,EACAD,EAAkBjjB,UAAUkkB,gBAAkB,WAC1C,IAAIlb,EAAQzI,KACR4D,EAAW,SAAU2C,EAAOwd,GACxBxd,EACAkC,EAAM+a,OAAS/a,EAAMgb,SAAStO,QAAQ,EAAGvR,GAGhB,UAArBmgB,EAAUlJ,QACVpS,EAAM4L,KAAK,QAAS,CAChBlD,KAAM,iBACN5K,MAAOwd,EAAUxd,QAErBkC,EAAMsM,SAASxO,MAAM,CAAEyd,eAAgBD,EAAUxd,UAGjDkC,EAAMwb,kBACNxb,EAAMua,mBAAmBe,EAAUlJ,QAAQkJ,GAGvD,EACA/jB,KAAKwjB,OAASxjB,KAAKyjB,SAAStO,QAAQ,EAAGvR,EAC3C,EACA8e,EAAkBjjB,UAAUwkB,gBAAkB,WACtCjkB,KAAKwjB,SACLxjB,KAAKwjB,OAAOU,QACZlkB,KAAKwjB,OAAS,KAEtB,EACAd,EAAkBjjB,UAAUokB,qBAAuB,WAC/C7jB,KAAKikB,kBACLjkB,KAAKmkB,kBACLnkB,KAAKokB,wBACDpkB,KAAKyZ,YACYzZ,KAAKqkB,oBACX5O,OAEnB,EACAiN,EAAkBjjB,UAAU8jB,eAAiB,WACzCvjB,KAAKyjB,SAAWzjB,KAAK8F,QAAQwe,YAAY,CACrCllB,IAAKY,KAAKZ,IACV2V,SAAU/U,KAAK+U,SACf9N,OAAQjH,KAAK2iB,UAErB,EACAD,EAAkBjjB,UAAU4jB,QAAU,SAAU1X,GAC5C,IAAIlD,EAAQzI,KACZA,KAAK+U,SAAS2B,KAAK,CAAEmE,OAAQ,QAASlP,MAAOA,IACzCA,EAAQ,GACR3L,KAAKqU,KAAK,gBAAiByF,KAAKyK,MAAM5Y,EAAQ,MAElD3L,KAAKwkB,WAAa,IAAIpY,EAAYT,GAAS,GAAG,WAC1ClD,EAAMob,uBACNpb,EAAM0M,SACV,GACJ,EACAuN,EAAkBjjB,UAAU0kB,gBAAkB,WACtCnkB,KAAKwkB,aACLxkB,KAAKwkB,WAAW1Y,gBAChB9L,KAAKwkB,WAAa,KAE1B,EACA9B,EAAkBjjB,UAAUmkB,oBAAsB,WAC9C,IAAInb,EAAQzI,KACZA,KAAKykB,iBAAmB,IAAIrY,EAAYpM,KAAK8F,QAAQX,oBAAoB,WACrEsD,EAAMib,YAAY,cACtB,GACJ,EACAhB,EAAkBjjB,UAAU2kB,sBAAwB,WAC5CpkB,KAAKykB,kBACLzkB,KAAKykB,iBAAiB3Y,eAE9B,EACA4W,EAAkBjjB,UAAU6jB,kBAAoB,WAC5C,IAAI7a,EAAQzI,KACZA,KAAK0kB,oBACL1kB,KAAKyZ,WAAW/D,OAChB1V,KAAK2kB,cAAgB,IAAIvY,EAAYpM,KAAK8F,QAAQZ,aAAa,WAC3DuD,EAAMsM,SAASxO,MAAM,CAAEqe,eAAgBnc,EAAM3C,QAAQZ,cACrDuD,EAAM4a,QAAQ,EAClB,GACJ,EACAX,EAAkBjjB,UAAUolB,mBAAqB,WAC7C,IAAIpc,EAAQzI,KACZA,KAAK0kB,oBACD1kB,KAAKyZ,aAAezZ,KAAKyZ,WAAWxE,0BACpCjV,KAAK2kB,cAAgB,IAAIvY,EAAYpM,KAAKiF,iBAAiB,WACvDwD,EAAM6a,mBACV,IAER,EACAZ,EAAkBjjB,UAAUilB,kBAAoB,WACxC1kB,KAAK2kB,eACL3kB,KAAK2kB,cAAc7Y,eAE3B,EACA4W,EAAkBjjB,UAAUsjB,yBAA2B,SAAUH,GAC7D,IAAIna,EAAQzI,KACZ,OAAOoN,EAAO,CAAC,EAAGwV,EAAgB,CAC9BrT,QAAS,SAAUA,GACf9G,EAAMoc,qBACNpc,EAAM4L,KAAK,UAAW9E,EAC1B,EACAmG,KAAM,WACFjN,EAAM4S,WAAW,cAAe,CAAC,EACrC,EACAE,SAAU,WACN9S,EAAMoc,oBACV,EACAte,MAAO,SAAUA,GACbkC,EAAM4L,KAAK,QAAS9N,EACxB,EACAiV,OAAQ,WACJ/S,EAAM4b,oBACF5b,EAAMqc,eACNrc,EAAM4a,QAAQ,IAEtB,GAER,EACAX,EAAkBjjB,UAAUwjB,wBAA0B,SAAUL,GAC5D,IAAIna,EAAQzI,KACZ,OAAOoN,EAAO,CAAC,EAAGwV,EAAgB,CAC9BmC,UAAW,SAAUhB,GACjBtb,EAAMxD,gBAAkB6U,KAAK9W,IAAIyF,EAAM3C,QAAQb,gBAAiB8e,EAAU9e,gBAAiB8e,EAAUtK,WAAWxU,iBAAmB+f,KACnIvc,EAAM2b,wBACN3b,EAAMwc,cAAclB,EAAUtK,YAC9BhR,EAAMqS,UAAYrS,EAAMgR,WAAW3V,GACnC2E,EAAMib,YAAY,YAAa,CAAE5I,UAAWrS,EAAMqS,WACtD,GAER,EACA4H,EAAkBjjB,UAAUojB,oBAAsB,WAC9C,IAAIpa,EAAQzI,KACRklB,EAAmB,SAAUthB,GAC7B,OAAO,SAAU5B,GACTA,EAAOuE,OACPkC,EAAM4L,KAAK,QAAS,CAAElD,KAAM,iBAAkB5K,MAAOvE,EAAOuE,QAEhE3C,EAAS5B,EACb,CACJ,EACA,MAAO,CACHmjB,SAAUD,GAAiB,WACvBzc,EAAMka,UAAW,EACjBla,EAAM8a,iBACN9a,EAAM4a,QAAQ,EAClB,IACA+B,QAASF,GAAiB,WACtBzc,EAAMoU,YACV,IACAwI,QAASH,GAAiB,WACtBzc,EAAM4a,QAAQ,IAClB,IACAiC,MAAOJ,GAAiB,WACpBzc,EAAM4a,QAAQ,EAClB,IAER,EACAX,EAAkBjjB,UAAUwlB,cAAgB,SAAUxL,GAElD,IAAK,IAAIc,KADTva,KAAKyZ,WAAaA,EACAzZ,KAAK8iB,oBACnB9iB,KAAKyZ,WAAWpa,KAAKkb,EAAOva,KAAK8iB,oBAAoBvI,IAEzDva,KAAK6kB,oBACT,EACAnC,EAAkBjjB,UAAU4kB,kBAAoB,WAC5C,GAAKrkB,KAAKyZ,WAAV,CAIA,IAAK,IAAIc,KADTva,KAAK0kB,oBACa1kB,KAAK8iB,oBACnB9iB,KAAKyZ,WAAWvF,OAAOqG,EAAOva,KAAK8iB,oBAAoBvI,IAE3D,IAAId,EAAazZ,KAAKyZ,WAEtB,OADAzZ,KAAKyZ,WAAa,KACXA,CAPP,CAQJ,EACAiJ,EAAkBjjB,UAAUikB,YAAc,SAAU6B,EAAU1kB,GAC1D,IAAI2kB,EAAgBxlB,KAAK8U,MAEzB,GADA9U,KAAK8U,MAAQyQ,EACTC,IAAkBD,EAAU,CAC5B,IAAIE,EAAsBF,EACE,cAAxBE,IACAA,GAAuB,uBAAyB5kB,EAAKia,WAEzD7K,GAAOP,MAAM,gBAAiB8V,EAAgB,OAASC,GACvDzlB,KAAK+U,SAAS2B,KAAK,CAAE5B,MAAOyQ,EAAU3W,OAAQ/N,IAC9Cb,KAAKqU,KAAK,eAAgB,CAAEqR,SAAUF,EAAeG,QAASJ,IAC9DvlB,KAAKqU,KAAKkR,EAAU1kB,EACxB,CACJ,EACA6hB,EAAkBjjB,UAAUqlB,YAAc,WACtC,MAAsB,eAAf9kB,KAAK8U,OAAyC,cAAf9U,KAAK8U,KAC/C,EACO4N,CACX,CAnQ2C,CAmQzC9O,IAQEgS,GAAqB,WACrB,SAASC,IACL7lB,KAAK8lB,SAAW,CAAC,CACrB,CAuBA,OAtBAD,EAASpmB,UAAU4T,IAAM,SAAUjV,EAAMie,GAIrC,OAHKrc,KAAK8lB,SAAS1nB,KACf4B,KAAK8lB,SAAS1nB,GAuB1B,SAAuBA,EAAMie,GACzB,GAA2C,IAAvCje,EAAK0P,QAAQ,sBAA6B,CAC1C,GAAIuO,EAAOsB,OAAOiE,KACd,OAAOrkB,GAAQwoB,uBAAuB3nB,EAAMie,EAAQA,EAAOsB,OAAOiE,MAEtE,IAAIoE,EAAS,0FACT5e,EAASa,EAAUC,eAAe,2BACtC,MAAM,IAAIY,EAAmBkd,EAAS,KAAO5e,EACjD,CACK,GAAiC,IAA7BhJ,EAAK0P,QAAQ,YAClB,OAAOvQ,GAAQ0oB,qBAAqB7nB,EAAMie,GAEzC,GAAkC,IAA9Bje,EAAK0P,QAAQ,aAClB,OAAOvQ,GAAQ2oB,sBAAsB9nB,EAAMie,GAE1C,GAA0B,IAAtBje,EAAK0P,QAAQ,KAClB,MAAM,IAAIpF,EAAe,sCAAwCtK,EAAO,MAGxE,OAAOb,GAAQ4oB,cAAc/nB,EAAMie,EAE3C,CA5CkC8J,CAAc/nB,EAAMie,IAEvCrc,KAAK8lB,SAAS1nB,EACzB,EACAynB,EAASpmB,UAAU2mB,IAAM,WACrB,OAv4DR,SAAgB7mB,GACZ,IAAI8mB,EAAS,GAIb,OAHAtY,EAAYxO,GAAQ,SAAUT,GAC1BunB,EAAOjjB,KAAKtE,EAChB,IACOunB,CACX,CAi4DeA,CAAOrmB,KAAK8lB,SACvB,EACAD,EAASpmB,UAAU6mB,KAAO,SAAUloB,GAChC,OAAO4B,KAAK8lB,SAAS1nB,EACzB,EACAynB,EAASpmB,UAAUwE,OAAS,SAAU7F,GAClC,IAAIoc,EAAUxa,KAAK8lB,SAAS1nB,GAE5B,cADO4B,KAAK8lB,SAAS1nB,GACdoc,CACX,EACAqL,EAASpmB,UAAUod,WAAa,WAC5B9O,EAAY/N,KAAK8lB,UAAU,SAAUtL,GACjCA,EAAQqC,YACZ,GACJ,EACOgJ,CACX,CA3BwB,GA4BSC,GAAW,GA+DXvoB,GA7BnB,CACVgpB,eAAgB,WACZ,OAAO,IAAIT,EACf,EACAU,wBAAyB,SAAUpnB,EAAK0G,GACpC,OAAO,IAAI2c,GAAmBrjB,EAAK0G,EACvC,EACAqgB,cAAe,SAAU/nB,EAAMie,GAC3B,OAAO,IAAIF,GAAiB/d,EAAMie,EACtC,EACA4J,qBAAsB,SAAU7nB,EAAMie,GAClC,OAAO,IAAIyB,GAAgB1f,EAAMie,EACrC,EACA6J,sBAAuB,SAAU9nB,EAAMie,GACnC,OAAO,IAAIuE,GAAiBxiB,EAAMie,EACtC,EACA0J,uBAAwB,SAAU3nB,EAAMie,EAAQuF,GAC5C,OAAO,IAAIF,GAAkBtjB,EAAMie,EAAQuF,EAC/C,EACA6E,qBAAsB,SAAU1R,EAAUjP,GACtC,OAAO,IAAIgW,GAAgB/G,EAAUjP,EACzC,EACA4gB,gBAAiB,SAAUnhB,EAAW3B,GAClC,OAAO,IAAI+X,GAAqBpW,EAAW3B,EAC/C,EACA+iB,qCAAsC,SAAUtN,EAAS9T,EAAWO,GAChE,OAAO,IAAIqT,GAAmCE,EAAS9T,EAAWO,EACtE,GAyB6B8gB,GAnBS,WACtC,SAASC,EAAiB/gB,GACtB9F,KAAK8F,QAAUA,GAAW,CAAC,EAC3B9F,KAAK8mB,UAAY9mB,KAAK8F,QAAQihB,OAAS/B,GAC3C,CAaA,OAZA6B,EAAiBpnB,UAAUunB,aAAe,SAAUzhB,GAChD,OAAOhI,GAAQopB,qCAAqC3mB,KAAMuF,EAAW,CACjE+T,aAActZ,KAAK8F,QAAQwT,aAC3BC,aAAcvZ,KAAK8F,QAAQyT,cAEnC,EACAsN,EAAiBpnB,UAAUua,QAAU,WACjC,OAAOha,KAAK8mB,UAAY,CAC5B,EACAD,EAAiBpnB,UAAUma,YAAc,WACrC5Z,KAAK8mB,WAAa,CACtB,EACOD,CACX,CAlByC,GA8GRI,GArFa,WAC1C,SAASC,EAAmBC,EAAYrhB,GACpC9F,KAAKmnB,WAAaA,EAClBnnB,KAAKonB,KAAO7Y,QAAQzI,EAAQshB,MAC5BpnB,KAAKqnB,SAAW9Y,QAAQzI,EAAQuhB,UAChCrnB,KAAKsnB,QAAUxhB,EAAQwhB,QACvBtnB,KAAKunB,aAAezhB,EAAQyhB,YAChC,CA4EA,OA3EAL,EAAmBznB,UAAUsX,YAAc,WACvC,OAAOvI,EAAIxO,KAAKmnB,WAAYha,EAAKN,OAAO,eAC5C,EACAqa,EAAmBznB,UAAU0V,QAAU,SAAUqS,EAAa5jB,GAC1D,IAAI6E,EAAQzI,KACRmnB,EAAannB,KAAKmnB,WAClBxB,EAAU,EACV2B,EAAUtnB,KAAKsnB,QACf9D,EAAS,KACTiE,EAAkB,SAAUlhB,EAAOwd,GAC/BA,EACAngB,EAAS,KAAMmgB,IAGf4B,GAAoB,EAChBld,EAAM2e,OACNzB,GAAoBwB,EAAWxmB,QAE/BglB,EAAUwB,EAAWxmB,QACjB2mB,IACAA,GAAoB,EAChB7e,EAAM8e,eACND,EAAUxN,KAAK9W,IAAIskB,EAAS7e,EAAM8e,gBAG1C/D,EAAS/a,EAAMif,YAAYP,EAAWxB,GAAU6B,EAAa,CAAEF,QAASA,EAASD,SAAU5e,EAAM4e,UAAYI,IAG7G7jB,GAAS,GAGrB,EAEA,OADA4f,EAASxjB,KAAK0nB,YAAYP,EAAWxB,GAAU6B,EAAa,CAAEF,QAASA,EAASD,SAAUrnB,KAAKqnB,UAAYI,GACpG,CACHvD,MAAO,WACHV,EAAOU,OACX,EACAyD,iBAAkB,SAAUhoB,GACxB6nB,EAAc7nB,EACV6jB,GACAA,EAAOmE,iBAAiBhoB,EAEhC,EAER,EACAunB,EAAmBznB,UAAUioB,YAAc,SAAUjE,EAAU+D,EAAa1hB,EAASlC,GACjF,IAAIgI,EAAQ,KACR4X,EAAS,KAgBb,OAfI1d,EAAQwhB,QAAU,IAClB1b,EAAQ,IAAIQ,EAAYtG,EAAQwhB,SAAS,WACrC9D,EAAOU,QACPtgB,GAAS,EACb,KAEJ4f,EAASC,EAAStO,QAAQqS,GAAa,SAAUjhB,EAAOwd,GAChDxd,GAASqF,GAASA,EAAMC,cAAgB/F,EAAQuhB,WAGhDzb,GACAA,EAAME,gBAEVlI,EAAS2C,EAAOwd,GACpB,IACO,CACHG,MAAO,WACCtY,GACAA,EAAME,gBAEV0X,EAAOU,OACX,EACAyD,iBAAkB,SAAUhoB,GACxB6jB,EAAOmE,iBAAiBhoB,EAC5B,EAER,EACOunB,CACX,CApF6C,GAoHZU,GA1B6B,WAC1D,SAASC,EAA0BV,GAC/BnnB,KAAKmnB,WAAaA,CACtB,CAqBA,OApBAU,EAA0BpoB,UAAUsX,YAAc,WAC9C,OAAOvI,EAAIxO,KAAKmnB,WAAYha,EAAKN,OAAO,eAC5C,EACAgb,EAA0BpoB,UAAU0V,QAAU,SAAUqS,EAAa5jB,GACjE,OAmBR,SAAiBujB,EAAYK,EAAaM,GACtC,IAAIC,EAAU5Z,EAAIgZ,GAAY,SAAU1D,EAAU3lB,EAAGoQ,EAAG8Z,GACpD,OAAOvE,EAAStO,QAAQqS,EAAaM,EAAgBhqB,EAAGkqB,GAC5D,IACA,MAAO,CACH9D,MAAO,WACH5hB,EAAMylB,EAASE,GACnB,EACAN,iBAAkB,SAAUhoB,GACxB2C,EAAMylB,GAAS,SAAUvE,GACrBA,EAAOmE,iBAAiBhoB,EAC5B,GACJ,EAER,CAjCewV,CAAQnV,KAAKmnB,WAAYK,GAAa,SAAU1pB,EAAGiqB,GACtD,OAAO,SAAUxhB,EAAOwd,GACpBgE,EAAQjqB,GAAGyI,MAAQA,EACfA,EA+BpB,SAA0BwhB,GACtB,OAzjEJ,SAAyBpa,EAAOU,GAC5B,IAAK,IAAIvQ,EAAI,EAAGA,EAAI6P,EAAMhN,OAAQ7C,IAC9B,IAAKuQ,EAAKV,EAAM7P,GAAIA,EAAG6P,GACnB,OAAO,EAGf,OAAO,CACX,CAkjEWua,CAAgBH,GAAS,SAAUvE,GACtC,OAAOjV,QAAQiV,EAAOjd,MAC1B,GACJ,CAlCwB4hB,CAAiBJ,IACjBnkB,GAAS,IAIjBtB,EAAMylB,GAAS,SAAUvE,GACrBA,EAAOmE,iBAAiB5D,EAAUxe,UAAUoP,SAChD,IACA/Q,EAAS,KAAMmgB,GACnB,CACJ,GACJ,EACO8D,CACX,CAzB6D,GA+C7D,SAASI,GAAYzE,GACZA,EAAOjd,OAAUid,EAAO4E,UACzB5E,EAAOU,QACPV,EAAO4E,SAAU,EAEzB,CAOA,IAAIC,GAAkC,WAClC,SAASC,EAAe7E,EAAU3L,EAAYhS,GAC1C9F,KAAKyjB,SAAWA,EAChBzjB,KAAK8X,WAAaA,EAClB9X,KAAKuoB,IAAMziB,EAAQyiB,KAAO,KAC1BvoB,KAAK2iB,SAAW7c,EAAQmB,OACxBjH,KAAK+U,SAAWjP,EAAQiP,QAC5B,CAqDA,OApDAuT,EAAe7oB,UAAUsX,YAAc,WACnC,OAAO/W,KAAKyjB,SAAS1M,aACzB,EACAuR,EAAe7oB,UAAU0V,QAAU,SAAUqS,EAAa5jB,GACtD,IAAI+e,EAAW3iB,KAAK2iB,SAChBjM,EAqDZ,SAA6BiM,GACzB,IAAI6F,EAAUpiB,GAAQqiB,kBACtB,GAAID,EACA,IACI,IAAIE,EAAkBF,EAAQG,GAAqBhG,IACnD,GAAI+F,EACA,OAAOve,KAAKC,MAAMse,EAE1B,CACA,MAAOpe,GACHse,GAAoBjG,EACxB,CAEJ,OAAO,IACX,CAnEmBkG,CAAoBlG,GAC3BwE,EAAa,CAACnnB,KAAKyjB,UACvB,GAAI/M,GAAQA,EAAKoS,UAAY9oB,KAAKuoB,KAAOpb,EAAKV,MAAO,CACjD,IAAIlH,EAAYvF,KAAK8X,WAAWpB,EAAKnR,WACjCA,IACAvF,KAAK+U,SAAS2B,KAAK,CACfqS,QAAQ,EACRxjB,UAAWmR,EAAKnR,UAChByjB,QAAStS,EAAKsS,UAElB7B,EAAW/jB,KAAK,IAAI6jB,GAAoB,CAAC1hB,GAAY,CACjD+hB,QAAwB,EAAf5Q,EAAKsS,QAAc,IAC5B3B,UAAU,KAGtB,CACA,IAAI4B,EAAiB9b,EAAKV,MACtB+W,EAAS2D,EACRxG,MACAxL,QAAQqS,GAAa,SAAS0B,EAAG3iB,EAAOwd,GACrCxd,GACAqiB,GAAoBjG,GAChBwE,EAAWxmB,OAAS,GACpBsoB,EAAiB9b,EAAKV,MACtB+W,EAAS2D,EAAWxG,MAAMxL,QAAQqS,EAAa0B,IAG/CtlB,EAAS2C,KAyC7B,SAA6Boc,EAAUpd,EAAWyjB,GAC9C,IAAIR,EAAUpiB,GAAQqiB,kBACtB,GAAID,EACA,IACIA,EAAQG,GAAqBhG,IAAalV,EAAkB,CACxDqb,UAAW3b,EAAKV,MAChBlH,UAAWA,EACXyjB,QAASA,GAEjB,CACA,MAAO1e,GACP,CAER,CAlDgB6e,CAAoBxG,EAAUoB,EAAUxe,UAAUnH,KAAM+O,EAAKV,MAAQwc,GACrErlB,EAAS,KAAMmgB,GAEvB,IACA,MAAO,CACHG,MAAO,WACHV,EAAOU,OACX,EACAyD,iBAAkB,SAAUhoB,GACxB6nB,EAAc7nB,EACV6jB,GACAA,EAAOmE,iBAAiBhoB,EAEhC,EAER,EACO2oB,CACX,CA7DqC,GA8DJc,GAAkB,GACnD,SAAST,GAAqBhG,GAC1B,MAAO,mBAAqBA,EAAW,MAAQ,SACnD,CA8BA,SAASiG,GAAoBjG,GACzB,IAAI6F,EAAUpiB,GAAQqiB,kBACtB,GAAID,EACA,WACWA,EAAQG,GAAqBhG,GACxC,CACA,MAAOrY,GACP,CAER,CAIA,IAgCiC+e,GAhCO,WACpC,SAASC,EAAgB7F,EAAUzC,GAC/B,IAAInd,EAASmd,EAAGrV,MAChB3L,KAAKyjB,SAAWA,EAChBzjB,KAAK8F,QAAU,CAAE6F,MAAO9H,EAC5B,CAyBA,OAxBAylB,EAAgB7pB,UAAUsX,YAAc,WACpC,OAAO/W,KAAKyjB,SAAS1M,aACzB,EACAuS,EAAgB7pB,UAAU0V,QAAU,SAAUqS,EAAa5jB,GACvD,IACI4f,EADAC,EAAWzjB,KAAKyjB,SAEhB7X,EAAQ,IAAIQ,EAAYpM,KAAK8F,QAAQ6F,OAAO,WAC5C6X,EAASC,EAAStO,QAAQqS,EAAa5jB,EAC3C,IACA,MAAO,CACHsgB,MAAO,WACHtY,EAAME,gBACF0X,GACAA,EAAOU,OAEf,EACAyD,iBAAkB,SAAUhoB,GACxB6nB,EAAc7nB,EACV6jB,GACAA,EAAOmE,iBAAiBhoB,EAEhC,EAER,EACO2pB,CACX,CA/BuC,GAmDNC,GAhBf,WACd,SAASC,EAAWnb,EAAMob,EAAYC,GAClC1pB,KAAKqO,KAAOA,EACZrO,KAAKypB,WAAaA,EAClBzpB,KAAK0pB,YAAcA,CACvB,CASA,OARAF,EAAW/pB,UAAUsX,YAAc,WAE/B,OADa/W,KAAKqO,OAASrO,KAAKypB,WAAazpB,KAAK0pB,aACpC3S,aAClB,EACAyS,EAAW/pB,UAAU0V,QAAU,SAAUqS,EAAa5jB,GAElD,OADa5D,KAAKqO,OAASrO,KAAKypB,WAAazpB,KAAK0pB,aACpCvU,QAAQqS,EAAa5jB,EACvC,EACO4lB,CACX,CAfiB,GAqCgBG,GAlBH,WAC1B,SAASC,EAAuBnG,GAC5BzjB,KAAKyjB,SAAWA,CACpB,CAaA,OAZAmG,EAAuBnqB,UAAUsX,YAAc,WAC3C,OAAO/W,KAAKyjB,SAAS1M,aACzB,EACA6S,EAAuBnqB,UAAU0V,QAAU,SAAUqS,EAAa5jB,GAC9D,IAAI4f,EAASxjB,KAAKyjB,SAAStO,QAAQqS,GAAa,SAAUjhB,EAAOwd,GACzDA,GACAP,EAAOU,QAEXtgB,EAAS2C,EAAOwd,EACpB,IACA,OAAOP,CACX,EACOoG,CACX,CAjB6B,GA4B7B,SAASC,GAAqBpG,GAC1B,OAAO,WACH,OAAOA,EAAS1M,aACpB,CACJ,CACA,IAoOI+S,GAtJ6BC,GA9ER,SAAUpM,EAAQqM,EAAaC,GACpD,IAAIC,EAAoB,CAAC,EACzB,SAASC,EAAwB/rB,EAAM+S,EAAMwD,EAAU7O,EAASuT,GAC5D,IAAI9T,EAAY0kB,EAAgBtM,EAAQvf,EAAM+S,EAAMwD,EAAU7O,EAASuT,GAEvE,OADA6Q,EAAkB9rB,GAAQmH,EACnBA,CACX,CACA,IAmDI6kB,EAnDAC,EAAa9rB,OAAO8e,OAAO,CAAC,EAAG2M,EAAa,CAC5CrX,WAAYgL,EAAO2M,OAAS,IAAM3M,EAAOpZ,OACzCmO,QAASiL,EAAO2M,OAAS,IAAM3M,EAAOnZ,QACtCK,SAAU8Y,EAAOlZ,SAEjB8lB,EAAchsB,OAAO8e,OAAO,CAAC,EAAGgN,EAAY,CAC5CpjB,QAAQ,IAERujB,EAAiBjsB,OAAO8e,OAAO,CAAC,EAAG2M,EAAa,CAChDrX,WAAYgL,EAAOjZ,SAAW,IAAMiZ,EAAOhZ,SAC3C+N,QAASiL,EAAOjZ,SAAW,IAAMiZ,EAAO/Y,UACxCC,SAAU8Y,EAAO9Y,WAEjB4lB,EAAW,CACXrD,MAAM,EACNE,QAAS,KACTC,aAAc,KAEdmD,EAAa,IAAI9D,GAAkB,CACnCG,MAAO,EACPzN,aAAc,IACdC,aAAcoE,EAAO1Y,kBAErB0lB,EAAoB,IAAI/D,GAAkB,CAC1CG,MAAO,EACPzN,aAAc,IACdC,aAAcoE,EAAO1Y,kBAErB2lB,EAAeT,EAAwB,KAAM,KAAM,EAAGE,EAAYK,GAClEG,EAAgBV,EAAwB,MAAO,KAAM,EAAGI,EAAaG,GACrEI,EAAmBX,EAAwB,SAAU,SAAU,EAAGK,GAClEO,EAA0BZ,EAAwB,gBAAiB,gBAAiB,EAAGK,EAAgBG,GACvGK,EAA0Bb,EAAwB,gBAAiB,gBAAiB,EAAGK,EAAgBG,GACvGM,EAAwBd,EAAwB,cAAe,cAAe,EAAGK,GACjFU,EAAwBf,EAAwB,cAAe,cAAe,EAAGK,GACjFW,EAAU,IAAIlE,GAAoB,CAAC2D,GAAeH,GAClDW,EAAW,IAAInE,GAAoB,CAAC4D,GAAgBJ,GACpDY,EAAc,IAAIpE,GAAoB,CAAC6D,GAAmBL,GAC1Da,EAAiB,IAAIrE,GAAoB,CACzC,IAAIsC,GAAYM,GAAqBkB,GAA0BA,EAAyBC,IACzFP,GACCc,EAAe,IAAItE,GAAoB,CACvC,IAAIsC,GAAYM,GAAqBoB,GAAwBA,EAAuBC,IACrFT,GACCe,EAAY,IAAIvE,GAAoB,CACpC,IAAIsC,GAAYM,GAAqByB,GAAiB,IAAI1D,GAA6B,CACnF0D,EACA,IAAIjC,GAAiBkC,EAAc,CAAE5f,MAAO,QAC5C4f,IACLd,GACCgB,EAAqB,IAAIlC,GAAYM,GAAqB2B,GAAYA,EAAWH,GAerF,OAZIjB,EADAJ,EAAY/iB,OACC,IAAI2gB,GAA6B,CAC1CuD,EACA,IAAI9B,GAAiBoC,EAAoB,CAAE9f,MAAO,QAIzC,IAAIic,GAA6B,CAC1CuD,EACA,IAAI9B,GAAiB+B,EAAU,CAAEzf,MAAO,MACxC,IAAI0d,GAAiBoC,EAAoB,CAAE9f,MAAO,QAGnD,IAAIyd,GAAgB,IAAIO,GAAyB,IAAIJ,GAAYM,GAAqBe,GAAeR,EAAYqB,IAAsBvB,EAAmB,CAC7J3B,IAAK,KACLxT,SAAUiV,EAAYjV,SACtB9N,OAAQ+iB,EAAY/iB,QAE5B,EAkEiCykB,GA9BA,CAC7BC,WAAY,SAAUvW,GAClB,IAAIwW,EAAM,IAAIpuB,OAAOquB,eAqBrB,OApBAD,EAAIE,UAAY,WACZ1W,EAAOf,KAAK,QAAS,IAAI1L,GACzByM,EAAOK,OACX,EACAmW,EAAIta,QAAU,SAAUhH,GACpB8K,EAAOf,KAAK,QAAS/J,GACrB8K,EAAOK,OACX,EACAmW,EAAIG,WAAa,WACTH,EAAIvhB,cAAgBuhB,EAAIvhB,aAAa1J,OAAS,GAC9CyU,EAAO4W,QAAQ,IAAKJ,EAAIvhB,aAEhC,EACAuhB,EAAIra,OAAS,WACLqa,EAAIvhB,cAAgBuhB,EAAIvhB,aAAa1J,OAAS,GAC9CyU,EAAO4W,QAAQ,IAAKJ,EAAIvhB,cAE5B+K,EAAOf,KAAK,WAAY,KACxBe,EAAOK,OACX,EACOmW,CACX,EACAK,aAAc,SAAUL,GACpBA,EAAIE,UAAYF,EAAIta,QAAUsa,EAAIG,WAAaH,EAAIra,OAAS,KAC5Dqa,EAAI1H,OACR,GAKAgI,GAA6D,WAC7D,IAAIpsB,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACA,OAAO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,CACH,CAZgE,GA+EhC8rB,GA/DD,SAAU9pB,GAEtC,SAAS+pB,EAAY1X,EAAO7H,EAAQ1E,GAChC,IAAIM,EAAQpG,EAAOrE,KAAKgC,OAASA,KAIjC,OAHAyI,EAAMiM,MAAQA,EACdjM,EAAMoE,OAASA,EACfpE,EAAMN,IAAMA,EACLM,CACX,CAqDA,OA5DAyjB,GAAqBE,EAAa/pB,GAQlC+pB,EAAY3sB,UAAU4sB,MAAQ,SAAUC,GACpC,IAAI7jB,EAAQzI,KACZA,KAAKusB,SAAW,EAChBvsB,KAAKwJ,IAAMxJ,KAAK0U,MAAMiX,WAAW3rB,MACjCA,KAAKwsB,SAAW,WACZ/jB,EAAMgN,OACV,EACArP,GAAQqmB,kBAAkBzsB,KAAKwsB,UAC/BxsB,KAAKwJ,IAAIG,KAAK3J,KAAK6M,OAAQ7M,KAAKmI,KAAK,GACjCnI,KAAKwJ,IAAII,kBACT5J,KAAKwJ,IAAII,iBAAiB,eAAgB,oBAE9C5J,KAAKwJ,IAAI5C,KAAK0lB,EAClB,EACAF,EAAY3sB,UAAUgW,MAAQ,WACtBzV,KAAKwsB,WACLpmB,GAAQsmB,qBAAqB1sB,KAAKwsB,UAClCxsB,KAAKwsB,SAAW,MAEhBxsB,KAAKwJ,MACLxJ,KAAK0U,MAAMuX,aAAajsB,KAAKwJ,KAC7BxJ,KAAKwJ,IAAM,KAEnB,EACA4iB,EAAY3sB,UAAUusB,QAAU,SAAU9iB,EAAQrI,GAC9C,OAAa,CACT,IAAI8rB,EAAQ3sB,KAAK4sB,cAAc/rB,GAC/B,IAAI8rB,EAIA,MAHA3sB,KAAKqU,KAAK,QAAS,CAAEnL,OAAQA,EAAQrI,KAAM8rB,GAKnD,CACI3sB,KAAK6sB,gBAAgBhsB,IACrBb,KAAKqU,KAAK,kBAElB,EACA+X,EAAY3sB,UAAUmtB,cAAgB,SAAUE,GAC5C,IAAIC,EAAaD,EAAO7f,MAAMjN,KAAKusB,UAC/BS,EAAoBD,EAAWjf,QAAQ,MAC3C,OAA2B,IAAvBkf,GACAhtB,KAAKusB,UAAYS,EAAoB,EAC9BD,EAAW9f,MAAM,EAAG+f,IAGpB,IAEf,EACAZ,EAAY3sB,UAAUotB,gBAAkB,SAAUC,GAC9C,OAAO9sB,KAAKusB,WAAaO,EAAOnsB,QAAUmsB,EAAOnsB,OA5DjC,MA6DpB,EACOyrB,CACX,CA9D+B,CA8D7BxY,KAKF,SAAWkW,GACPA,EAAMA,EAAkB,WAAI,GAAK,aACjCA,EAAMA,EAAY,KAAI,GAAK,OAC3BA,EAAMA,EAAc,OAAI,GAAK,QAChC,CAJD,CAIGA,KAAUA,GAAQ,CAAC,IACO,IAAIhV,GAAQ,GAMrCmY,GAAgB,EAsJpB,SAASC,GAAa/kB,GAClB,IAAIglB,GAAkC,IAAtBhlB,EAAI2F,QAAQ,KAAc,IAAM,IAChD,OAAO3F,EAAMglB,EAAY,OAAQ,IAAIzgB,KAAS,MAAQugB,IAC1D,CAKA,SAASG,GAAarT,GAClB,OAAO3T,GAAQinB,UAAUtT,EAC7B,CAQ6B,IA0PzBuT,GA1P6BC,GAvKH,WAC1B,SAASC,EAAW9Y,EAAOvM,GACvBnI,KAAK0U,MAAQA,EACb1U,KAAKytB,QAAUL,GAAa,KAAQ,IA6J5C,SAAsBzsB,GAElB,IADA,IAAIqB,EAAS,GACJlE,EAAI,EAAGA,EAAI6C,EAAQ7C,IACxBkE,EAAOoB,KAAKgqB,GAAa,IAAI7iB,SAAS,KAE1C,OAAOvI,EAAOqB,KAAK,GACvB,CAnKkDqqB,CAAa,GACvD1tB,KAAKgH,SAuIb,SAAqBmB,GACjB,IAAIwlB,EAAQ,qBAAqBC,KAAKzlB,GACtC,MAAO,CACH0lB,KAAMF,EAAM,GACZ9a,YAAa8a,EAAM,GAE3B,CA7IwBG,CAAY3lB,GAC5BnI,KAAKiK,WAAa6K,GAAMiZ,WACxB/tB,KAAKguB,YACT,CAkIA,OAjIAR,EAAW/tB,UAAUmH,KAAO,SAAU0lB,GAClC,OAAOtsB,KAAKiuB,QAAQ9jB,KAAKqD,UAAU,CAAC8e,IACxC,EACAkB,EAAW/tB,UAAUiW,KAAO,WACxB1V,KAAK0U,MAAMwZ,cAAcluB,KAC7B,EACAwtB,EAAW/tB,UAAUgW,MAAQ,SAAUQ,EAAMC,GACzClW,KAAK+V,QAAQE,EAAMC,GAAQ,EAC/B,EACAsX,EAAW/tB,UAAUwuB,QAAU,SAAU3B,GACrC,GAAItsB,KAAKiK,aAAe6K,GAAMqZ,KAU1B,OAAO,EATP,IAEI,OADA/nB,GAAQgoB,oBAAoB,OAAQlB,IA8HhC/kB,EA9HwDnI,KAAKgH,SA8HxDymB,EA9HkEztB,KAAKytB,QA+HrFtlB,EAAI0lB,KAAO,IAAMJ,EAAU,eA/HqEpB,MAAMC,IAC1F,CACX,CACA,MAAOhiB,GACH,OAAO,CACX,CAyHZ,IAAoBnC,EAAKslB,CApHrB,EACAD,EAAW/tB,UAAU4uB,UAAY,WAC7BruB,KAAKsuB,cACLtuB,KAAKguB,YACT,EACAR,EAAW/tB,UAAUsW,QAAU,SAAUE,EAAMC,EAAQC,GACnDnW,KAAKsuB,cACLtuB,KAAKiK,WAAa6K,GAAMyZ,OACpBvuB,KAAKuW,SACLvW,KAAKuW,QAAQ,CACTN,KAAMA,EACNC,OAAQA,EACRC,SAAUA,GAGtB,EACAqX,EAAW/tB,UAAUusB,QAAU,SAAUW,GAOrC,IAAIL,EANJ,GAAqB,MAAjBK,EAAMzjB,OAQV,OALIlJ,KAAKiK,aAAe6K,GAAMqZ,MAC1BnuB,KAAKsW,aAGEqW,EAAM9rB,KAAKoM,MAAM,EAAG,IAE3B,IAAK,IACDqf,EAAUniB,KAAKC,MAAMuiB,EAAM9rB,KAAKoM,MAAM,IAAM,MAC5CjN,KAAK2V,OAAO2W,GACZ,MACJ,IAAK,IACDA,EAAUniB,KAAKC,MAAMuiB,EAAM9rB,KAAKoM,MAAM,IAAM,MAC5C,IAAK,IAAInP,EAAI,EAAGA,EAAIwuB,EAAQ3rB,OAAQ7C,IAChCkC,KAAKwuB,QAAQlC,EAAQxuB,IAEzB,MACJ,IAAK,IACDwuB,EAAUniB,KAAKC,MAAMuiB,EAAM9rB,KAAKoM,MAAM,IAAM,QAC5CjN,KAAKwuB,QAAQlC,GACb,MACJ,IAAK,IACDtsB,KAAK0U,MAAM+Z,YAAYzuB,MACvB,MACJ,IAAK,IACDssB,EAAUniB,KAAKC,MAAMuiB,EAAM9rB,KAAKoM,MAAM,IAAM,MAC5CjN,KAAK+V,QAAQuW,EAAQ,GAAIA,EAAQ,IAAI,GAGjD,EACAkB,EAAW/tB,UAAUkW,OAAS,SAAU7P,GA0E5C,IAAqBqC,EAAKumB,EAClBC,EA1EI3uB,KAAKiK,aAAe6K,GAAMiZ,YACtBjoB,GAAWA,EAAQ4oB,WACnB1uB,KAAKgH,SAAS6mB,MAuET1lB,EAvE4BnI,KAAKgH,SAAS6mB,KAuErCa,EAvE2C5oB,EAAQ4oB,UAwErEC,EAAW,oCAAoCf,KAAKzlB,IACxC,GAAKumB,EAAWC,EAAS,KAvEjC3uB,KAAKiK,WAAa6K,GAAMqZ,KACpBnuB,KAAK6V,QACL7V,KAAK6V,UAIT7V,KAAK+V,QAAQ,KAAM,uBAAuB,EAElD,EACAyX,EAAW/tB,UAAU+uB,QAAU,SAAUjU,GACjCva,KAAKiK,aAAe6K,GAAMqZ,MAAQnuB,KAAKwW,WACvCxW,KAAKwW,UAAU,CAAE3V,KAAM0Z,GAE/B,EACAiT,EAAW/tB,UAAU6W,WAAa,WAC1BtW,KAAKyW,YACLzW,KAAKyW,YAEb,EACA+W,EAAW/tB,UAAU6V,QAAU,SAAU/O,GACjCvG,KAAKsR,SACLtR,KAAKsR,QAAQ/K,EAErB,EACAinB,EAAW/tB,UAAUuuB,WAAa,WAC9B,IAAIvlB,EAAQzI,KACZA,KAAK4uB,OAASxoB,GAAQgoB,oBAAoB,OAAQlB,GAAaltB,KAAK0U,MAAMma,cAAc7uB,KAAKgH,SAAUhH,KAAKytB,WAC5GztB,KAAK4uB,OAAOvvB,KAAK,SAAS,SAAUstB,GAChClkB,EAAMujB,QAAQW,EAClB,IACA3sB,KAAK4uB,OAAOvvB,KAAK,YAAY,SAAU6J,GACnCT,EAAMiM,MAAMoa,WAAWrmB,EAAOS,EAClC,IACAlJ,KAAK4uB,OAAOvvB,KAAK,mBAAmB,WAChCoJ,EAAM4lB,WACV,IACA,IACIruB,KAAK4uB,OAAOvC,OAChB,CACA,MAAO9lB,GACH4G,EAAKP,OAAM,WACPnE,EAAM6M,QAAQ/O,GACdkC,EAAMsN,QAAQ,KAAM,6BAA6B,EACrD,GACJ,CACJ,EACAyX,EAAW/tB,UAAU6uB,YAAc,WAC3BtuB,KAAK4uB,SACL5uB,KAAK4uB,OAAOxa,aACZpU,KAAK4uB,OAAOnZ,QACZzV,KAAK4uB,OAAS,KAEtB,EACOpB,CACX,CA1I6B,GAwLIuB,GAdC,CAC9BF,cAAe,SAAU1mB,EAAKslB,GAC1B,OAAOtlB,EAAI0lB,KAAO,IAAMJ,EAAU,iBAAmBtlB,EAAI0K,WAC7D,EACA4b,YAAa,SAAUrZ,GACnBA,EAAO6Y,QAAQ,KACnB,EACAC,cAAe,SAAU9Y,GACrBA,EAAO6Y,QAAQ,KACnB,EACAa,WAAY,SAAU1Z,EAAQlM,GAC1BkM,EAAOW,QAAQ,KAAM,2BAA6B7M,EAAS,KAAK,EACpE,GAuB6B8lB,GAlBD,CAC5BH,cAAe,SAAU1mB,EAAKslB,GAC1B,OAAOtlB,EAAI0lB,KAAO,IAAMJ,EAAU,OAAStlB,EAAI0K,WACnD,EACA4b,YAAa,WACb,EACAP,cAAe,SAAU9Y,GACrBA,EAAO6Y,QAAQ,KACnB,EACAa,WAAY,SAAU1Z,EAAQlM,GACX,MAAXA,EACAkM,EAAOiZ,YAGPjZ,EAAOW,QAAQ,KAAM,2BAA6B7M,EAAS,KAAK,EAExE,GAiC6B+lB,GA3BJ,CACzBtD,WAAY,SAAUvW,GAClB,IACI5L,EAAM,IADQpD,GAAQ8oB,aAkB1B,OAhBA1lB,EAAIQ,mBAAqBR,EAAIuiB,WAAa,WACtC,OAAQviB,EAAIS,YACR,KAAK,EACGT,EAAIa,cAAgBb,EAAIa,aAAa1J,OAAS,GAC9CyU,EAAO4W,QAAQxiB,EAAIN,OAAQM,EAAIa,cAEnC,MACJ,KAAK,EACGb,EAAIa,cAAgBb,EAAIa,aAAa1J,OAAS,GAC9CyU,EAAO4W,QAAQxiB,EAAIN,OAAQM,EAAIa,cAEnC+K,EAAOf,KAAK,WAAY7K,EAAIN,QAC5BkM,EAAOK,QAGnB,EACOjM,CACX,EACAyiB,aAAc,SAAUziB,GACpBA,EAAIQ,mBAAqB,KACzBR,EAAI0a,OACR,GA2B6BiL,GAjBtB,CACP1X,sBAAuB,SAAUtP,GAC7B,OAAOnI,KAAKovB,aAAaL,GAAuB5mB,EACpD,EACAwP,oBAAqB,SAAUxP,GAC3B,OAAOnI,KAAKovB,aAAaJ,GAAqB7mB,EAClD,EACAinB,aAAc,SAAU1a,EAAOvM,GAC3B,OAAO,IAAIolB,GAAY7Y,EAAOvM,EAClC,EACAsB,UAAW,SAAUoD,EAAQ1E,GACzB,OAAOnI,KAAKqvB,cAAcJ,GAAkBpiB,EAAQ1E,EACxD,EACAknB,cAAe,SAAU3a,EAAO7H,EAAQ1E,GACpC,OAAO,IAAIgkB,GAAazX,EAAO7H,EAAQ1E,EAC3C,EAOJgnB,UAAsB,SAAUtiB,EAAQ1E,GACpC,OAAOnI,KAAKqvB,cAAc3D,GAAsB7e,EAAQ1E,EAC5D,GAkJiC/B,GAlInB,CACVgK,mBAAoB,EACpBI,eAAgB,CAAC,EACjBrM,gBAAiBA,EACjBkD,sBAAuBA,EACvBioB,mBAAoBvF,GACpBwF,WAAY1W,GACZhE,+BAlcgE,WAChE,IAAI3O,EAAOlG,KACXkG,EAAK6O,SAAS2B,KAAKxQ,EAAK4P,qBAAqB,CACzCvQ,UAAWW,EAAK9H,MAAQ8H,EAAKJ,QAAQmB,OAAS,IAAM,OAEpDf,EAAKwO,MAAMyC,gBACXjR,EAAKqP,YAAY,eAEZrP,EAAKwO,MAAMwD,MAChBhS,EAAKqP,YAAY,gBACjBjO,EAAarB,KAAKC,EAAKwO,MAAMwD,KAAM,CAAEjR,OAAQf,EAAKJ,QAAQmB,SAAU,SAAUV,EAAO3C,GAC7EsC,EAAKwO,MAAMyC,iBACXjR,EAAKqP,YAAY,eACjB3R,GAAS,KAGL2C,GACAL,EAAKoP,QAAQ/O,GAEjBL,EAAK6P,UACLnS,GAAS,GAEjB,KAGAsC,EAAK6P,SAEZ,EAwaGyB,YAvB6C,GAwB7CyE,kBAAmB9J,GACnB+c,UAAW,WACP,OAAO1xB,OAAOgyB,cAClB,EACApY,gBAAiB,WACb,OAAO5Z,OAAOiyB,WAAajyB,OAAOkyB,YACtC,EACAC,MAAO,SAAUC,GACb,IAAInnB,EAAQzI,KACZxC,OAAOqyB,OAASD,EAChB,IAAIE,EAA2B,WAC3BrnB,EAAMsnB,eAAeH,EAAYI,MACrC,EACKxyB,OAAO2M,KAIR2lB,IAHAxoB,EAAarB,KAAK,QAAS,CAAC,EAAG6pB,EAKvC,EACA/oB,YAAa,WACT,OAAOsJ,QACX,EACA4f,YAAa,WACT,OAAOjwB,KAAK+G,cAAcC,SAASF,QACvC,EACAopB,eAAgB,WACZ,MAAO,CAAEC,KAAMhnB,EAAUinB,MAAOlgB,GACpC,EACA6f,eAAgB,SAAUnsB,GACtB,IAAI6E,EAAQzI,KACRqQ,SAAS2P,KACTpc,IAGAyI,YAAW,WACP5D,EAAMsnB,eAAensB,EACzB,GAAG,EAEX,EACA2O,mBAAoB,SAAUpK,EAAKtH,GAC/B,OAAO,IAAIoR,GAAc9J,EAAKtH,EAClC,EACAwF,oBAAqB,SAAUqK,GAC3B,OAAO,IAAIM,GAAeN,EAC9B,EACA+X,gBAAiB,WACb,IACI,OAAOjrB,OAAO6yB,YAClB,CACA,MAAO/lB,GACH,MACJ,CACJ,EACAb,UAAW,WACP,OAAIzJ,KAAKkvB,YACElvB,KAAKswB,uBAGLtwB,KAAKuwB,oBAEpB,EACAD,qBAAsB,WAElB,OAAO,IADWtwB,KAAKkvB,YAE3B,EACAqB,mBAAoB,WAChB,OAAO,IAAIC,cAAc,oBAC7B,EACArN,WAAY,WACR,OAAOpK,EACX,EACA1B,gBAAiB,SAAUlP,GAEvB,OAAO,IADWnI,KAAKoX,kBAChB,CAAgBjP,EAC3B,EACAimB,oBAAqB,SAAUvhB,EAAQ1E,GACnC,GAAInI,KAAK6X,iBACL,OAAO7X,KAAKwX,YAAY/N,UAAUoD,EAAQ1E,GAEzC,GAAInI,KAAKwY,eAAyC,IAA1BrQ,EAAI2F,QAAQ,WACrC,OAAO9N,KAAKwX,YAAYiZ,UAAU5jB,EAAQ1E,GAG1C,KAAM,8CAEd,EACA0P,eAAgB,WACZ,IAAI6Y,EAAc1wB,KAAKkvB,YACvB,OAAQ3gB,QAAQmiB,SAAsD7hB,KAAtC,IAAI6hB,GAAcC,eACtD,EACAnY,eAAgB,SAAUvR,GACtB,IAAIH,EAAWG,EAAS,SAAW,QAC/B2pB,EAAmB5wB,KAAKiwB,cAC5B,OAAQ1hB,QAAQ/Q,OAAuB,iBAAMozB,IAAqB9pB,CACtE,EACA2lB,kBAAmB,SAAU/Q,QACO7M,IAA5BrR,OAAO6T,iBACP7T,OAAO6T,iBAAiB,SAAUqK,GAAU,QAEhB7M,IAAvBrR,OAAOiU,aACZjU,OAAOiU,YAAY,WAAYiK,EAEvC,EACAgR,qBAAsB,SAAUhR,QACI7M,IAA5BrR,OAAO6T,iBACP7T,OAAOqzB,oBAAoB,SAAUnV,GAAU,QAEnB7M,IAAvBrR,OAAOszB,aACZtzB,OAAOszB,YAAY,WAAYpV,EAEvC,EACA2R,UAAW,SAAUtT,GAMjB,OAAOD,KAAKiX,OAJKvzB,OAAOwzB,QAAUxzB,OAAiB,UAC3ByzB,gBAAgB,IAAIC,YAAY,IAAI,GACxCpX,KAAKqX,IAAI,EAAG,IAEHpX,EACjC,IAMJ,SAAWuT,GACPA,EAAcA,EAAqB,MAAI,GAAK,QAC5CA,EAAcA,EAAoB,KAAI,GAAK,OAC3CA,EAAcA,EAAqB,MAAI,GAAK,OAC/C,CAJD,CAIGA,KAAkBA,GAAgB,CAAC,IACT,IAAI8D,GAAiB,GAgEjBC,GA1DR,WACrB,SAASC,EAASlyB,EAAKquB,EAAS3nB,GAC5B9F,KAAKZ,IAAMA,EACXY,KAAKytB,QAAUA,EACfztB,KAAKuxB,OAAS,GACdvxB,KAAK8F,QAAUA,GAAW,CAAC,EAC3B9F,KAAKogB,KAAO,EACZpgB,KAAKwxB,SAAW,CACpB,CAgDA,OA/CAF,EAAS7xB,UAAUgQ,IAAM,SAAUgiB,EAAOlX,GAClCkX,GAASzxB,KAAK8F,QAAQ2rB,QACtBzxB,KAAKuxB,OAAOnuB,KAAKgK,EAAO,CAAC,EAAGmN,EAAO,CAAEuO,UAAW3b,EAAKV,SACjDzM,KAAK8F,QAAQ4rB,OAAS1xB,KAAKuxB,OAAO5wB,OAASX,KAAK8F,QAAQ4rB,OACxD1xB,KAAKuxB,OAAOI,QAGxB,EACAL,EAAS7xB,UAAU8G,MAAQ,SAAUgU,GACjCva,KAAKyP,IAAI2hB,GAAeQ,MAAOrX,EACnC,EACA+W,EAAS7xB,UAAUiX,KAAO,SAAU6D,GAChCva,KAAKyP,IAAI2hB,GAAeS,KAAMtX,EAClC,EACA+W,EAAS7xB,UAAUiQ,MAAQ,SAAU6K,GACjCva,KAAKyP,IAAI2hB,GAAeU,MAAOvX,EACnC,EACA+W,EAAS7xB,UAAUuc,QAAU,WACzB,OAA8B,IAAvBhc,KAAKuxB,OAAO5wB,MACvB,EACA2wB,EAAS7xB,UAAUmH,KAAO,SAAUmrB,EAAQnuB,GACxC,IAAI6E,EAAQzI,KACRa,EAAOuM,EAAO,CACdqgB,QAASztB,KAAKytB,QACduE,OAAQhyB,KAAKogB,KAAO,EACpBhhB,IAAKY,KAAKZ,IACV6yB,IAAK,KACL9qB,QAASnH,KAAK8F,QAAQqB,QACtB/B,QAASpF,KAAK8F,QAAQV,QACtB8sB,SAAUlyB,KAAK8F,QAAQosB,SACvBnd,SAAU/U,KAAKuxB,QAChBvxB,KAAK8F,QAAQ8I,QAUhB,OATA5O,KAAKuxB,OAAS,GACdQ,EAAOlxB,GAAM,SAAU0F,EAAOvE,GACrBuE,GACDkC,EAAM2X,OAENxc,GACAA,EAAS2C,EAAOvE,EAExB,KACO,CACX,EACAsvB,EAAS7xB,UAAUuV,iBAAmB,WAElC,OADAhV,KAAKwxB,WACExxB,KAAKwxB,QAChB,EACOF,CACX,CAzDwB,GAsJSa,GArFW,WACxC,SAASC,EAAkBh0B,EAAMuW,EAAUpP,EAAWO,GAClD9F,KAAK5B,KAAOA,EACZ4B,KAAK2U,SAAWA,EAChB3U,KAAKuF,UAAYA,EACjBvF,KAAK8F,QAAUA,GAAW,CAAC,CAC/B,CA6EA,OA5EAssB,EAAkB3yB,UAAUsX,YAAc,WACtC,OAAO/W,KAAKuF,UAAUwR,YAAY,CAC9B9P,OAAQjH,KAAK8F,QAAQmB,QAE7B,EACAmrB,EAAkB3yB,UAAU0V,QAAU,SAAUqS,EAAa5jB,GACzD,IAAI6E,EAAQzI,KACZ,IAAKA,KAAK+W,cACN,OAAOsb,GAAY,IAAIrpB,EAAuBpF,GAE7C,GAAI5D,KAAK2U,SAAW6S,EACrB,OAAO6K,GAAY,IAAIzpB,EAA2BhF,GAEtD,IAAImhB,GAAY,EACZxf,EAAYvF,KAAKuF,UAAU0R,iBAAiBjX,KAAK5B,KAAM4B,KAAK2U,SAAU3U,KAAK8F,QAAQ1G,IAAKY,KAAK8F,SAC7Fie,EAAY,KACZuO,EAAgB,WAChB/sB,EAAU2O,OAAO,cAAeoe,GAChC/sB,EAAU4P,SACd,EACIQ,EAAS,WACToO,EAAYxmB,GAAQmpB,gBAAgBnhB,GAAW,SAAUvD,GACrD+iB,GAAY,EACZ3O,IACAxS,EAAS,KAAM5B,EACnB,GACJ,EACIsT,EAAU,SAAU/O,GACpB6P,IACAxS,EAAS2C,EACb,EACIoT,EAAW,WAEX,IAAI4Y,EADJnc,IAEAmc,EAAsB9kB,EAAkBlI,GACxC3B,EAAS,IAAIiF,EAAgB0pB,GACjC,EACInc,EAAkB,WAClB7Q,EAAU2O,OAAO,cAAeoe,GAChC/sB,EAAU2O,OAAO,OAAQyB,GACzBpQ,EAAU2O,OAAO,QAASoB,GAC1B/P,EAAU2O,OAAO,SAAUyF,EAC/B,EAMA,OALApU,EAAUlG,KAAK,cAAeizB,GAC9B/sB,EAAUlG,KAAK,OAAQsW,GACvBpQ,EAAUlG,KAAK,QAASiW,GACxB/P,EAAUlG,KAAK,SAAUsa,GACzBpU,EAAUqP,aACH,CACHsP,MAAO,WACCa,IAGJ3O,IACI2N,EACAA,EAAUtO,QAGVlQ,EAAUkQ,QAElB,EACAkS,iBAAkB,SAAUhoB,GACpBolB,GAGAtc,EAAMkM,SAAWhV,IACbokB,EACAA,EAAUtO,QAGVlQ,EAAUkQ,QAGtB,EAER,EACO2c,CACX,CApF2C,GAsF3C,SAASC,GAAY9rB,EAAO3C,GAIxB,OAHAuJ,EAAKP,OAAM,WACPhJ,EAAS2C,EACb,IACO,CACH2d,MAAO,WAAc,EACrByD,iBAAkB,WAAc,EAExC,CAQA,IAAI6K,GAA8BpsB,GAAQmpB,WACtCkD,GAAmC,SAAU9U,EAAQvf,EAAM+S,EAAMwD,EAAU7O,EAASuT,GACpF,IAQI9T,EARAmtB,EAAiBF,GAA4BrhB,GACjD,IAAKuhB,EACD,MAAM,IAAI3pB,EAAqBoI,GAcnC,OAZgBwM,EAAOgV,oBAC+B,IAAlDjlB,EAAaiQ,EAAOgV,kBAAmBv0B,IACrCuf,EAAOiV,qBAC8C,IAAnDllB,EAAaiQ,EAAOiV,mBAAoBx0B,GAO5CmH,EAAYstB,IAJZ/sB,EAAUvH,OAAO8e,OAAO,CAAE/E,iBAAkBqF,EAAOrF,kBAAoBxS,GACvEP,EAAY,IAAI4sB,GAAmB/zB,EAAMuW,EAAU0E,EAAUA,EAAQ2N,aAAa0L,GAAkBA,EAAgB5sB,IAKjHP,CACX,EACIstB,GAAuC,CACvC9b,YAAa,WACT,OAAO,CACX,EACA5B,QAAS,SAAUjH,EAAGtK,GAClB,IAAIkvB,EAAW3lB,EAAKP,OAAM,WACtBhJ,EAAS,IAAIoF,EACjB,IACA,MAAO,CACHkb,MAAO,WACH4O,EAAShnB,eACb,EACA6b,iBAAkB,WAAc,EAExC,GAoC6BoL,GATT,SAAUzpB,GAC9B,QAA+D,IAApDlD,GAAQ8pB,iBAAiB5mB,EAAY/D,WAC5C,KAAM,IAAM+D,EAAY/D,UAAY,uCAExC,OAAO,SAAUqJ,EAAQhL,GACrB,IAAIyF,EA1Bc,SAAUuF,EAAQtF,GACxC,IAAID,EAAQ,aAAeqF,mBAAmBE,EAAO8N,UACrD,IAAK,IAAItd,KAAOkK,EAAYsF,OACxBvF,GACI,IACIqF,mBAAmBtP,GACnB,IACAsP,mBAAmBpF,EAAYsF,OAAOxP,IAElD,GAAkC,MAA9BkK,EAAY0pB,eAAwB,CACpC,IAAIC,EAAgB3pB,EAAY0pB,iBAChC,IAAK,IAAI5zB,KAAO6zB,EACZ5pB,GACI,IACIqF,mBAAmBtP,GACnB,IACAsP,mBAAmBukB,EAAc7zB,GAEjD,CACA,OAAOiK,CACX,CAMoB6pB,CAAoBtkB,EAAQtF,GACxClD,GAAQ8pB,iBAAiB5mB,EAAY/D,WAAWa,GAASiD,EAAOC,EAAa9F,EAAgBgH,mBAAoB5G,EACrH,CACJ,EAqCiCuvB,GATT,SAAU7pB,GAC9B,QAA+D,IAApDlD,GAAQ8pB,iBAAiB5mB,EAAY/D,WAC5C,KAAM,IAAM+D,EAAY/D,UAAY,uCAExC,OAAO,SAAUqJ,EAAQhL,GACrB,IAAIyF,EA3BiC,SAAUuF,EAAQtF,GAC3D,IAAID,EAAQ,aAAeqF,mBAAmBE,EAAO8N,UAErD,IAAK,IAAItd,KADTiK,GAAS,iBAAmBqF,mBAAmBE,EAAOiP,aACtCvU,EAAYsF,OACxBvF,GACI,IACIqF,mBAAmBtP,GACnB,IACAsP,mBAAmBpF,EAAYsF,OAAOxP,IAElD,GAAkC,MAA9BkK,EAAY0pB,eAAwB,CACpC,IAAIC,EAAgB3pB,EAAY0pB,iBAChC,IAAK,IAAI5zB,KAAO6zB,EACZ5pB,GACI,IACIqF,mBAAmBtP,GACnB,IACAsP,mBAAmBukB,EAAc7zB,GAEjD,CACA,OAAOiK,CACX,CAMoB+pB,CAAuCxkB,EAAQtF,GAC3DlD,GAAQ8pB,iBAAiB5mB,EAAY/D,WAAWa,GAASiD,EAAOC,EAAa9F,EAAgBiH,qBAAsB7G,EACvH,CACJ,EAIIyvB,GAAyB,SAAUhX,EAAQ/S,EAAagqB,GACxD,IAAIC,EAA8B,CAC9BvuB,cAAesE,EAAY/D,UAC3BR,aAAcuE,EAAYhE,SAC1BqX,KAAM,CACF/N,OAAQtF,EAAYsF,OACpB/E,QAASP,EAAYO,UAG7B,OAAO,SAAU+E,EAAQhL,GACrB,IAAI4W,EAAU6B,EAAO7B,QAAQ5L,EAAOiP,aACZyV,EAA2B9Y,EAAS+Y,GAC1C9W,UAAU7N,EAAO8N,SAAU9Y,EACjD,CACJ,EAGI4vB,GAAgD,WAShD,OARAA,GAAWj1B,OAAO8e,QAAU,SAASte,GACjC,IAAK,IAAIa,EAAG9B,EAAI,EAAGwB,EAAIiD,UAAU5B,OAAQ7C,EAAIwB,EAAGxB,IAE5C,IAAK,IAAI6B,KADTC,EAAI2C,UAAUzE,GACOS,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,KACzDZ,EAAEY,GAAKC,EAAED,IAEjB,OAAOZ,CACX,EACOy0B,GAASlxB,MAAMtC,KAAMuC,UAChC,EAuCA,SAASkxB,GAAYC,GACjB,OAAIA,EAAKhvB,SACEgvB,EAAKhvB,SAEZgvB,EAAKtuB,QACE,UAAYsuB,EAAKtuB,QAAU,cAE/BhB,EAASM,QACpB,CACA,SAASivB,GAAiBD,GACtB,OAAIA,EAAKpJ,OACEoJ,EAAKpJ,OAEZoJ,EAAKtuB,QACEwuB,GAA4BF,EAAKtuB,SAErCwuB,GAA4BxvB,EAASgB,QAChD,CACA,SAASwuB,GAA4BxuB,GACjC,MAAO,MAAQA,EAAU,aAC7B,CACA,SAASyuB,GAAaH,GAClB,MAA8B,WAA1BttB,GAAQ6pB,gBAGe,IAAlByD,EAAKI,QAIlB,CACA,SAASC,GAAqBL,GAC1B,MAAI,gBAAiBA,EACVA,EAAKM,YAEZ,iBAAkBN,IACVA,EAAKO,YAGrB,CACA,SAASC,GAAuBR,GAC5B,IAAIruB,EAAqBmuB,GAASA,GAAS,CAAC,EAAGpvB,EAASiB,oBAAqBquB,EAAKruB,oBAClF,MAAI,kBAAmBA,GACoB,MAAvCA,EAAkC,cAC3BA,EAAkC,cAEtC0tB,GAAmB1tB,EAC9B,CAsBA,SAAS8uB,GAAuBT,EAAMrX,GAClC,IAAI7W,EAtBR,SAA0BkuB,EAAMrX,GAC5B,IAAI7W,EAkBJ,MAjBI,yBAA0BkuB,EAC1BluB,EAAuBguB,GAASA,GAAS,CAAC,EAAGpvB,EAASoB,sBAAuBkuB,EAAKluB,uBAGlFA,EAAuB,CACnBD,UAAWmuB,EAAK1uB,eAAiBZ,EAASY,cAC1CM,SAAUouB,EAAK3uB,cAAgBX,EAASW,cAExC,SAAU2uB,IACN,WAAYA,EAAK/W,OACjBnX,EAAqBoJ,OAAS8kB,EAAK/W,KAAK/N,QACxC,YAAa8kB,EAAK/W,OAClBnX,EAAqBqE,QAAU6pB,EAAK/W,KAAK9S,UAE7C,eAAgB6pB,IAChBluB,EAAqB4uB,cAAgBf,GAAuBhX,EAAQ7W,EAAsBkuB,EAAKW,cAEhG7uB,CACX,CAE+B8uB,CAAiBZ,EAAMrX,GAClD,MAAI,kBAAmB7W,GACsB,MAAzCA,EAAoC,cAC7BA,EAAoC,cAExC2tB,GAAmB3tB,EAC9B,CAGA,IAAI+uB,GAA0D,WAC1D,IAAIz0B,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACA,OAAO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,CACH,CAZ6D,GA0C7Bm0B,GA3BA,SAAUnyB,GAEvC,SAASoyB,EAAgBpY,GACrB,IAAI5T,EAAQpG,EAAOrE,KAAKgC,MAAM,SAAUgU,EAAWnT,GAC/CoP,GAAOP,MAAM,wCAA0CsE,EAC3D,KAAMhU,KAGN,OAFAyI,EAAM4T,OAASA,EACf5T,EAAMisB,6BACCjsB,CACX,CAgBA,OAxBA8rB,GAAkBE,EAAiBpyB,GASnCoyB,EAAgBh1B,UAAUqd,YAAc,SAAUxC,GAC9C,IAAI7R,EAAQzI,KACZsa,EAAYzZ,KAAK0wB,OAAOoD,SAAQ,SAAUC,GACtCnsB,EAAM4L,KAAKugB,EAAex2B,KAAMw2B,EACpC,GACJ,EACAH,EAAgBh1B,UAAUi1B,2BAA6B,WACnD,IAAIjsB,EAAQzI,KACZA,KAAKqc,OAAO5C,WAAWpa,KAAK,WAAW,SAAUib,GAE3B,qCADFA,EAAYC,OAExB9R,EAAMqU,YAAYxC,EAE1B,GACJ,EACOma,CACX,CA1BgC,CA0B9B7gB,IAY+BihB,GARjC,WACI,IAAItV,EAASC,EAKb,MAAO,CAAEsV,QAJK,IAAIxV,SAAQ,SAAUyV,EAAKC,GACrCzV,EAAUwV,EACVvV,EAASwV,CACb,IAC2BzV,QAASA,EAASC,OAAQA,EACzD,EAIIyV,GAAqD,WACrD,IAAIn1B,EAAgB,SAAU3B,EAAG8B,GAI7B,OAHAH,EAAgBvB,OAAO2B,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjC,EAAG8B,GAAK9B,EAAEgC,UAAYF,CAAG,GAC1E,SAAU9B,EAAG8B,GAAK,IAAK,IAAIN,KAAKM,EAAOA,EAAEP,eAAeC,KAAIxB,EAAEwB,GAAKM,EAAEN,GAAI,EACtEG,EAAc3B,EAAG8B,EAC5B,EACA,OAAO,SAAU9B,EAAG8B,GAEhB,SAASI,IAAOL,KAAKM,YAAcnC,CAAG,CADtC2B,EAAc3B,EAAG8B,GAEjB9B,EAAEsB,UAAkB,OAANQ,EAAa1B,OAAOY,OAAOc,IAAMI,EAAGZ,UAAYQ,EAAER,UAAW,IAAIY,EACnF,CACH,CAZwD,GAsJxB4gB,GApIV,SAAU5e,GAE7B,SAAS6yB,EAAW7Y,GAChB,IAAI5T,EAAQpG,EAAOrE,KAAKgC,MAAM,SAAUgU,EAAWnT,GAC/CoP,GAAOP,MAAM,4BAA8BsE,EAC/C,KAAMhU,KAuCN,OAtCAyI,EAAM0sB,kBAAmB,EACzB1sB,EAAM0Y,UAAY,KAClB1Y,EAAM2sB,oBAAsB,KAC5B3sB,EAAMyY,kBAAoB,KAC1BzY,EAAM4sB,mBAAqB,KAC3B5sB,EAAM6sB,aAAe,SAAUC,EAAKzU,GAChC,GAAIyU,EAGA,OAFAtlB,GAAON,KAAK,wBAA0B4lB,QACtC9sB,EAAM+sB,WAGV/sB,EAAM4T,OAAOhB,WAAW,gBAAiB,CACrCsB,KAAMmE,EAASnE,KACfwE,UAAWL,EAASK,WAE5B,EACA1Y,EAAM4T,OAASA,EACf5T,EAAM4T,OAAO5C,WAAWpa,KAAK,gBAAgB,SAAU2hB,GACnD,IAAI0E,EAAW1E,EAAG0E,SAAUC,EAAU3E,EAAG2E,QACxB,cAAbD,GAAwC,cAAZC,GAC5Bld,EAAMgtB,UAEO,cAAb/P,GAAwC,cAAZC,IAC5Bld,EAAM+sB,WACN/sB,EAAMitB,4BAEd,IACAjtB,EAAM+rB,UAAY,IAAIA,GAAUnY,GAChC5T,EAAM4T,OAAO5C,WAAWpa,KAAK,WAAW,SAAUkb,GAE5B,0BADFA,EAAMA,OAElB9R,EAAMktB,iBAAiBpb,EAAM1Z,MAE7B4H,EAAM2sB,qBACN3sB,EAAM2sB,oBAAoBh3B,OAASmc,EAAMC,SACzC/R,EAAM2sB,oBAAoBtY,YAAYvC,EAE9C,IACO9R,CACX,CAqFA,OAjIAwsB,GAAaC,EAAY7yB,GA6CzB6yB,EAAWz1B,UAAUm2B,OAAS,WACtB51B,KAAKm1B,mBAGTn1B,KAAKm1B,kBAAmB,EACxBn1B,KAAKy1B,UACT,EACAP,EAAWz1B,UAAUg2B,QAAU,WACtBz1B,KAAKm1B,mBAGVn1B,KAAK01B,4BACgC,cAAjC11B,KAAKqc,OAAO5C,WAAW3E,OAG3B9U,KAAKqc,OAAOsB,OAAOkY,kBAAkB,CACjCnZ,SAAU1c,KAAKqc,OAAO5C,WAAWqB,WAClC9a,KAAKs1B,cACZ,EACAJ,EAAWz1B,UAAUk2B,iBAAmB,SAAU90B,GAC9C,IACIb,KAAKmhB,UAAYhX,KAAKC,MAAMvJ,EAAKsgB,UACrC,CACA,MAAO7W,GAGH,OAFA2F,GAAO1J,MAAM,0CAA4C1F,EAAKsgB,gBAC9DnhB,KAAKw1B,UAET,CACA,GAAiC,iBAAtBx1B,KAAKmhB,UAAUrd,IAAyC,KAAtB9D,KAAKmhB,UAAUrd,GAGxD,OAFAmM,GAAO1J,MAAM,+CAAiDvG,KAAKmhB,gBACnEnhB,KAAKw1B,WAGTx1B,KAAKq1B,qBACLr1B,KAAK81B,oBACT,EACAZ,EAAWz1B,UAAUq2B,mBAAqB,WACtC,IACkCtb,EAD9B/R,EAAQzI,KAUZA,KAAKo1B,oBAAsB,IAAIjZ,GAAiB,mBAAqBnc,KAAKmhB,UAAUrd,GAAI9D,KAAKqc,QAC7Frc,KAAKo1B,oBAAoBnhB,aAAY,SAAUD,EAAWnT,GACR,IAA1CmT,EAAUlG,QAAQ,qBACe,IAAjCkG,EAAUlG,QAAQ,YAGtBrF,EAAM4L,KAAKL,EAAWnT,EAC1B,KAhBkC2Z,EAiBhBxa,KAAKo1B,qBAhBP7Y,qBAAuB/B,EAAQgC,sBACvChC,EAAQgD,wBAEFhD,EAAQ+B,qBACoB,cAAlC9T,EAAM4T,OAAO5C,WAAW3E,OACxB0F,EAAQ4C,WAYpB,EACA8X,EAAWz1B,UAAU+1B,SAAW,WAC5Bx1B,KAAKmhB,UAAY,KACbnhB,KAAKo1B,sBACLp1B,KAAKo1B,oBAAoBhhB,aACzBpU,KAAKo1B,oBAAoBvY,aACzB7c,KAAKo1B,oBAAsB,MAE3Bp1B,KAAKm1B,kBACLn1B,KAAKq1B,oBAEb,EACAH,EAAWz1B,UAAUi2B,0BAA4B,WAC7C,GAAK11B,KAAKm1B,oBAGNn1B,KAAKkhB,mBAAsBlhB,KAAKkhB,kBAAkBrB,MAAtD,CAGA,IAAImB,EAAK6T,KAAgBC,EAAU9T,EAAG8T,QAASvV,EAAUyB,EAAGzB,QAAayB,EAAGxB,OAC5EsV,EAAQjV,MAAO,EACf,IAAIkW,EAAU,WACVjB,EAAQjV,MAAO,CACnB,EACAiV,EAAQhV,KAAKiW,GAAgB,MAAEA,GAC/B/1B,KAAKkhB,kBAAoB4T,EACzB90B,KAAKq1B,mBAAqB9V,CAR1B,CASJ,EACO2V,CACX,CAnIsB,CAmIpBthB,IAiBEoiB,GAAiB,WACjB,SAASnG,EAAOoG,EAASnwB,GACrB,IA/UW4tB,EAAMrX,EACjBsB,EA8UIlV,EAAQzI,KAGZ,GAkLR,SAAqBZ,GACjB,GAAIA,QACA,KAAM,yDAEd,CAxLQ82B,CAAYD,KACZnwB,EAAUA,GAAW,CAAC,GACTV,UAAaU,EAAQwkB,SAAUxkB,EAAQpB,SAAW,CAC3D,IAAI0C,EAASa,EAAUC,eAAe,wBACtC+H,GAAON,KAAK,wDAA0DvI,EAC1E,CACI,iBAAkBtB,GAClBmK,GAAON,KAAK,iEAEhB3P,KAAKZ,IAAM62B,EACXj2B,KAAK2d,QA1VYtB,EA0VgBrc,KAzVjC2d,EAAS,CACT1Y,iBAFWyuB,EA0Va5tB,GAxVFb,iBAAmBb,EAASa,gBAClDG,QAASsuB,EAAKtuB,SAAWhB,EAASgB,QAClCP,SAAU6uB,EAAK7uB,UAAYT,EAASS,SACpCF,SAAU+uB,EAAK/uB,UAAYP,EAASO,SACpCC,UAAW8uB,EAAK9uB,WAAaR,EAASQ,UACtCM,YAAawuB,EAAKxuB,aAAed,EAASc,YAC1CixB,UAAWzC,EAAKyC,WAAa/xB,EAASU,WACtCK,mBAAoBuuB,EAAKvuB,oBAAsBf,EAASe,mBACxDV,OAAQivB,EAAKjvB,QAAUL,EAASK,OAChCF,OAAQmvB,EAAKnvB,QAAUH,EAASG,OAChCC,QAASkvB,EAAKlvB,SAAWJ,EAASI,QAClCwvB,YAAaD,GAAqBL,GAClChvB,SAAU+uB,GAAYC,GACtBzsB,OAAQ4sB,GAAaH,GACrBpJ,OAAQqJ,GAAiBD,GACzBmC,kBAAmB3B,GAAuBR,GAC1C9V,kBAAmBuW,GAAuBT,EAAMrX,IAEhD,uBAAwBqX,IACxB/V,EAAOiV,mBAAqBc,EAAKd,oBACjC,sBAAuBc,IACvB/V,EAAOgV,kBAAoBe,EAAKf,mBAChC,qBAAsBe,IACtB/V,EAAOrF,iBAAmBob,EAAKpb,kBAC/B,mBAAoBob,IACpB/V,EAAOyY,eAAiB1C,EAAK0C,gBAC7B,SAAU1C,IACV/V,EAAOiE,KAAO8R,EAAK9R,MAEhBjE,GA4TH3d,KAAK8lB,SAAWvoB,GAAQgpB,iBACxBvmB,KAAKq2B,eAAiB,IAAIziB,GAC1B5T,KAAKs2B,UAAYlwB,GAAQinB,UAAU,KACnCrtB,KAAK+U,SAAW,IAAIsc,GAAkBrxB,KAAKZ,IAAKY,KAAKs2B,UAAW,CAC5DlxB,QAASpF,KAAK2d,OAAOvY,QACrB8sB,SAAUrC,EAAO0G,oBACjB3nB,OAAQ5O,KAAK2d,OAAOyY,gBAAkB,CAAC,EACvC1E,MAAO,GACPD,MAAOL,GAAeS,KACtB1qB,QAAS/C,EAASC,UAElBrE,KAAK2d,OAAOqW,cACZh0B,KAAKw2B,eAAiBj5B,GAAQkpB,qBAAqBzmB,KAAK+U,SAAU,CAC9DzC,KAAMtS,KAAK2d,OAAOwY,UAClBxuB,KAAM,gBAAkBvB,GAAQ6V,kBAAkB7d,QAM1D4B,KAAKyZ,WAAalc,GAAQipB,wBAAwBxmB,KAAKZ,IAAK,CACxDklB,YAJc,SAAUxe,GACxB,OAAOM,GAAQkpB,mBAAmB7mB,EAAMkV,OAAQ7X,EAAS2sB,GAC7D,EAGI1d,SAAU/U,KAAK+U,SACf9P,gBAAiBjF,KAAK2d,OAAO1Y,gBAC7BC,YAAalF,KAAK2d,OAAOzY,YACzBC,mBAAoBnF,KAAK2d,OAAOxY,mBAChC8B,OAAQsH,QAAQvO,KAAK2d,OAAO1W,UAEhCjH,KAAKyZ,WAAWpa,KAAK,aAAa,WAC9BoJ,EAAMguB,eACFhuB,EAAM+tB,gBACN/tB,EAAM+tB,eAAe5vB,KAAK6B,EAAMgR,WAAWqK,aAEnD,IACA9jB,KAAKyZ,WAAWpa,KAAK,WAAW,SAAUkb,GACtC,IACImc,EAAqD,IADzCnc,EAAMA,MACGzM,QAAQ,oBACjC,GAAIyM,EAAMC,QAAS,CACf,IAAIA,EAAU/R,EAAM+R,QAAQD,EAAMC,SAC9BA,GACAA,EAAQsC,YAAYvC,EAE5B,CACKmc,GACDjuB,EAAM4tB,eAAehiB,KAAKkG,EAAMA,MAAOA,EAAM1Z,KAErD,IACAb,KAAKyZ,WAAWpa,KAAK,cAAc,WAC/BoJ,EAAMqd,SAASjJ,YACnB,IACA7c,KAAKyZ,WAAWpa,KAAK,gBAAgB,WACjCoJ,EAAMqd,SAASjJ,YACnB,IACA7c,KAAKyZ,WAAWpa,KAAK,SAAS,SAAUk2B,GACpCtlB,GAAON,KAAK4lB,EAChB,IACA1F,EAAO8G,UAAUvzB,KAAKpD,MACtBA,KAAK+U,SAAS2B,KAAK,CAAEigB,UAAW9G,EAAO8G,UAAUh2B,SACjDX,KAAKihB,KAAO,IAAIA,GAAKjhB,MACjB6vB,EAAO+G,SACP52B,KAAKmV,SAEb,CAwGA,OAvGA0a,EAAOG,MAAQ,WACXH,EAAO+G,SAAU,EACjB,IAAK,IAAI94B,EAAI,EAAGC,EAAI8xB,EAAO8G,UAAUh2B,OAAQ7C,EAAIC,EAAGD,IAChD+xB,EAAO8G,UAAU74B,GAAGqX,SAE5B,EACA0a,EAAO0G,kBAAoB,WACvB,OAAOtoB,EAAKK,EAAa,CAAEwE,GAAI1M,GAAQmpB,WAAWzc,KAAM,SAAU/T,GAC9D,OAAOA,EAAEgY,YAAY,CAAC,EAC1B,IACJ,EACA8Y,EAAOpwB,UAAU+a,QAAU,SAAUpc,GACjC,OAAO4B,KAAK8lB,SAASQ,KAAKloB,EAC9B,EACAyxB,EAAOpwB,UAAUo3B,YAAc,WAC3B,OAAO72B,KAAK8lB,SAASM,KACzB,EACAyJ,EAAOpwB,UAAU0V,QAAU,WAEvB,GADAnV,KAAKyZ,WAAWtE,UACZnV,KAAKw2B,iBACAx2B,KAAK82B,oBAAqB,CAC3B,IAAInU,EAAW3iB,KAAKyZ,WAAWqK,aAC3B0S,EAAiBx2B,KAAKw2B,eAC1Bx2B,KAAK82B,oBAAsB,IAAIxqB,EAAc,KAAO,WAChDkqB,EAAe5vB,KAAK+b,EACxB,GACJ,CAER,EACAkN,EAAOpwB,UAAUod,WAAa,WAC1B7c,KAAKyZ,WAAWoD,aACZ7c,KAAK82B,sBACL92B,KAAK82B,oBAAoBhrB,gBACzB9L,KAAK82B,oBAAsB,KAEnC,EACAjH,EAAOpwB,UAAUJ,KAAO,SAAU03B,EAAYnzB,EAAUwF,GAEpD,OADApJ,KAAKq2B,eAAeh3B,KAAK03B,EAAYnzB,EAAUwF,GACxCpJ,IACX,EACA6vB,EAAOpwB,UAAUyU,OAAS,SAAU6iB,EAAYnzB,EAAUwF,GAEtD,OADApJ,KAAKq2B,eAAeniB,OAAO6iB,EAAYnzB,EAAUwF,GAC1CpJ,IACX,EACA6vB,EAAOpwB,UAAUwU,YAAc,SAAUrQ,GAErC,OADA5D,KAAKq2B,eAAepiB,YAAYrQ,GACzB5D,IACX,EACA6vB,EAAOpwB,UAAU0U,cAAgB,SAAUvQ,GAEvC,OADA5D,KAAKq2B,eAAeliB,cAAcvQ,GAC3B5D,IACX,EACA6vB,EAAOpwB,UAAU2U,WAAa,SAAUxQ,GAEpC,OADA5D,KAAKq2B,eAAejiB,aACbpU,IACX,EACA6vB,EAAOpwB,UAAUg3B,aAAe,WAC5B,IAAI5Y,EACJ,IAAKA,KAAe7d,KAAK8lB,SAASA,SAC1B9lB,KAAK8lB,SAASA,SAASpmB,eAAeme,IACtC7d,KAAKod,UAAUS,EAG3B,EACAgS,EAAOpwB,UAAU2d,UAAY,SAAU4Z,GACnC,IAAIxc,EAAUxa,KAAK8lB,SAASzS,IAAI2jB,EAAch3B,MAQ9C,OAPIwa,EAAQ+B,qBAAuB/B,EAAQgC,sBACvChC,EAAQgD,wBAEFhD,EAAQ+B,qBACY,cAA1Bvc,KAAKyZ,WAAW3E,OAChB0F,EAAQ4C,YAEL5C,CACX,EACAqV,EAAOpwB,UAAUwd,YAAc,SAAU+Z,GACrC,IAAIxc,EAAUxa,KAAK8lB,SAASQ,KAAK0Q,GAC7Bxc,GAAWA,EAAQ+B,oBACnB/B,EAAQ+C,sBAGR/C,EAAUxa,KAAK8lB,SAAS7hB,OAAO+yB,KAChBxc,EAAQ8B,YACnB9B,EAAQyC,aAGpB,EACA4S,EAAOpwB,UAAU4b,WAAa,SAAU0b,EAAYl2B,EAAM2Z,GACtD,OAAOxa,KAAKyZ,WAAW4B,WAAW0b,EAAYl2B,EAAM2Z,EACxD,EACAqV,EAAOpwB,UAAUo0B,aAAe,WAC5B,OAAO7zB,KAAK2d,OAAO1W,MACvB,EACA4oB,EAAOpwB,UAAUm2B,OAAS,WACtB51B,KAAKihB,KAAK2U,QACd,EACA/F,EAAO8G,UAAY,GACnB9G,EAAO+G,SAAU,EACjB/G,EAAO7f,cAAe,EACtB6f,EAAOoH,QAAU7wB,GACjBypB,EAAO1rB,gBAAkBiC,GAAQjC,gBACjC0rB,EAAOxoB,sBAAwBjB,GAAQiB,sBACvCwoB,EAAOrf,eAAiBpK,GAAQoK,eACzBqf,CACX,CArLoB,GAsLa9f,GAAcxM,EAA6B,QAAI,GAMhF6C,GAAQupB,MAAMqG,GAGP,GAEP,EAr3JEn4B,EAAOD,QAAUL,MCTf25B,EAA2B,CAAC,EAGhC,SAASr3B,EAAoBlC,GAE5B,IAAIw5B,EAAeD,EAAyBv5B,GAC5C,QAAqBkR,IAAjBsoB,EACH,OAAOA,EAAav5B,QAGrB,IAAIC,EAASq5B,EAAyBv5B,GAAY,CAGjDC,QAAS,CAAC,GAOX,OAHAw5B,EAAoBz5B,GAAUE,EAAQA,EAAOD,QAASiC,GAG/ChC,EAAOD,OACf,oBCtBA,SAASy5B,EAAQC,GAGf,OAAOD,EAAU,mBAAqBz4B,QAAU,iBAAmBA,OAAO4hB,SAAW,SAAU8W,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB14B,QAAU04B,EAAIh3B,cAAgB1B,QAAU04B,IAAQ14B,OAAOa,UAAY,gBAAkB63B,CAC1H,EAAGD,EAAQC,EACb,CAEA,SAASC,EAAgBC,EAAU9G,GACjC,KAAM8G,aAAoB9G,GACxB,MAAM,IAAIhQ,UAAU,oCAExB,CAEA,SAAS+W,EAAkBpqB,EAAQqqB,GACjC,IAAK,IAAI55B,EAAI,EAAGA,EAAI45B,EAAM/2B,OAAQ7C,IAAK,CACrC,IAAI65B,EAAaD,EAAM55B,GACvB65B,EAAWl5B,WAAak5B,EAAWl5B,aAAc,EACjDk5B,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjDt5B,OAAOC,eAAe6O,EAAQsqB,EAAWv4B,IAAKu4B,EAChD,CACF,CAEA,SAASG,EAAapH,EAAaqH,EAAYC,GAM7C,OALID,GAAYN,EAAkB/G,EAAYjxB,UAAWs4B,GACrDC,GAAaP,EAAkB/G,EAAasH,GAChDz5B,OAAOC,eAAekyB,EAAa,YAAa,CAC9CmH,UAAU,IAELnH,CACT,CAEA,SAASuH,IAeP,OAdAA,EAAW15B,OAAO8e,QAAU,SAAUhQ,GACpC,IAAK,IAAIvP,EAAI,EAAGA,EAAIyE,UAAU5B,OAAQ7C,IAAK,CACzC,IAAIgR,EAASvM,UAAUzE,GAEvB,IAAK,IAAIsB,KAAO0P,EACVvQ,OAAOkB,UAAUC,eAAe1B,KAAK8Q,EAAQ1P,KAC/CiO,EAAOjO,GAAO0P,EAAO1P,GAG3B,CAEA,OAAOiO,CACT,EAEO4qB,EAAS31B,MAAMtC,KAAMuC,UAC9B,CAEA,SAAS21B,EAAUC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI1X,UAAU,sDAGtByX,EAAS14B,UAAYlB,OAAOY,OAAOi5B,GAAcA,EAAW34B,UAAW,CACrEa,YAAa,CACXxB,MAAOq5B,EACPN,UAAU,EACVD,cAAc,KAGlBr5B,OAAOC,eAAe25B,EAAU,YAAa,CAC3CN,UAAU,IAERO,GAAYC,EAAgBF,EAAUC,EAC5C,CAEA,SAASE,EAAgBh6B,GAIvB,OAHAg6B,EAAkB/5B,OAAO2B,eAAiB3B,OAAOg6B,eAAiB,SAAyBj6B,GACzF,OAAOA,EAAE6B,WAAa5B,OAAOg6B,eAAej6B,EAC9C,EACOg6B,EAAgBh6B,EACzB,CAEA,SAAS+5B,EAAgB/5B,EAAGqB,GAM1B,OALA04B,EAAkB95B,OAAO2B,gBAAkB,SAAyB5B,EAAGqB,GAErE,OADArB,EAAE6B,UAAYR,EACPrB,CACT,EAEO+5B,EAAgB/5B,EAAGqB,EAC5B,CAuBA,SAAS64B,EAA2BtyB,EAAMlI,GACxC,GAAIA,IAAyB,iBAATA,GAAqC,mBAATA,GAC9C,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAI0iB,UAAU,4DAGtB,OAfF,SAAgCxa,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIuyB,eAAe,6DAG3B,OAAOvyB,CACT,CASSwyB,CAAuBxyB,EAChC,CAEA,SAASyyB,EAAaC,GACpB,IAAIC,EAhCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1qB,QAAQ9O,UAAUkN,QAAQ3O,KAAK86B,QAAQC,UAAUxqB,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOjE,GACP,OAAO,CACT,CACF,CAqBkC4uB,GAEhC,OAAO,WACL,IACIl3B,EADAm3B,EAAQb,EAAgBM,GAG5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAYd,EAAgBt4B,MAAMM,YAEtC0B,EAAS82B,QAAQC,UAAUI,EAAO52B,UAAW62B,EAC/C,MACEp3B,EAASm3B,EAAM72B,MAAMtC,KAAMuC,WAG7B,OAAOi2B,EAA2Bx4B,KAAMgC,EAC1C,CACF,CAKA,IAAIoa,EAAuB,WACzB,SAASA,IACPmb,EAAgBv3B,KAAMoc,EACxB,CA+BA,OA7BA0b,EAAa1b,EAAS,CAAC,CACrBhd,IAAK,mBACLN,MAIA,SAA0Byb,EAAO3W,GAC/B,OAAO5D,KAAKq5B,OAAO,WAAa9e,EAAO3W,EACzC,GAKC,CACDxE,IAAK,eACLN,MAAO,SAAsB8E,GAC3B,OAAO5D,KAAKq5B,OAAO,mEAAoEz1B,EACzF,GAKC,CACDxE,IAAK,0BACLN,MAAO,SAAiCyb,EAAO3W,GAC7C,OAAO5D,KAAKs5B,cAAc,WAAa/e,EAAO3W,EAChD,KAGKwY,CACT,CAnC2B,GAwCvBmd,EAA8B,WAIhC,SAASA,EAAeC,GACtBjC,EAAgBv3B,KAAMu5B,GAEtBv5B,KAAKy5B,aAAaD,EACpB,CA4BA,OAtBA1B,EAAayB,EAAgB,CAAC,CAC5Bn6B,IAAK,SACLN,MAAO,SAAgByb,GACrB,MAAwB,MAApBA,EAAM1P,OAAO,IAAkC,OAApB0P,EAAM1P,OAAO,GACnC0P,EAAMmf,OAAO,IACX15B,KAAKw5B,YACdjf,EAAQva,KAAKw5B,UAAY,IAAMjf,GAG1BA,EAAMrT,QAAQ,MAAO,MAC9B,GAKC,CACD9H,IAAK,eACLN,MAAO,SAAsBA,GAC3BkB,KAAKw5B,UAAY16B,CACnB,KAGKy6B,CACT,CArCkC,GA2C9BI,EAA6B,SAAUC,GACzC1B,EAAUyB,EAAeC,GAEzB,IAAIv3B,EAASs2B,EAAagB,GAK1B,SAASA,EAActd,EAAQje,EAAM0H,GACnC,IAAI2C,EAYJ,OAVA8uB,EAAgBv3B,KAAM25B,IAEtBlxB,EAAQpG,EAAOrE,KAAKgC,OACd5B,KAAOA,EACbqK,EAAM4T,OAASA,EACf5T,EAAM3C,QAAUA,EAChB2C,EAAMoxB,eAAiB,IAAIN,EAAe9wB,EAAM3C,QAAQ0zB,WAExD/wB,EAAM2U,YAEC3U,CACT,CAqHA,OA/GAqvB,EAAa6B,EAAe,CAAC,CAC3Bv6B,IAAK,YACLN,MAAO,WACLkB,KAAK85B,aAAe95B,KAAKqc,OAAOe,UAAUpd,KAAK5B,KACjD,GAKC,CACDgB,IAAK,cACLN,MAAO,WACLkB,KAAKqc,OAAOY,YAAYjd,KAAK5B,KAC/B,GAKC,CACDgB,IAAK,SACLN,MAAO,SAAgByb,EAAO3W,GAE5B,OADA5D,KAAK+5B,GAAG/5B,KAAK65B,eAAeG,OAAOzf,GAAQ3W,GACpC5D,IACT,GAKC,CACDZ,IAAK,cACLN,MAAO,SAAqB8E,GAC1B,IAAIq2B,EAASj6B,KAYb,OAVAA,KAAK85B,aAAa7lB,aAAY,SAAUsG,EAAO1Z,GAC7C,IAAI0Z,EAAM2f,WAAW,WAArB,CAIA,IAAIV,EAAYS,EAAOn0B,QAAQ0zB,UAAUtyB,QAAQ,MAAO,MAEpDizB,EAAiB5f,EAAM2f,WAAWV,GAAajf,EAAM6f,UAAUZ,EAAU74B,OAAS,GAAK,IAAM4Z,EACjG3W,EAASu2B,EAAgBt5B,EALzB,CAMF,IACOb,IACT,GAKC,CACDZ,IAAK,gBACLN,MAAO,SAAuByb,EAAO3W,GAOnC,OANIA,EACF5D,KAAK85B,aAAa5lB,OAAOlU,KAAK65B,eAAeG,OAAOzf,GAAQ3W,GAE5D5D,KAAK85B,aAAa5lB,OAAOlU,KAAK65B,eAAeG,OAAOzf,IAG/Cva,IACT,GAKC,CACDZ,IAAK,qBACLN,MAAO,SAA4B8E,GAOjC,OANIA,EACF5D,KAAK85B,aAAa3lB,cAAcvQ,GAEhC5D,KAAK85B,aAAa3lB,gBAGbnU,IACT,GAKC,CACDZ,IAAK,aACLN,MAAO,SAAoB8E,GAIzB,OAHA5D,KAAK+5B,GAAG,iCAAiC,WACvCn2B,GACF,IACO5D,IACT,GAKC,CACDZ,IAAK,QACLN,MAAO,SAAe8E,GAIpB,OAHA5D,KAAK+5B,GAAG,6BAA6B,SAAU7wB,GAC7CtF,EAASsF,EACX,IACOlJ,IACT,GAKC,CACDZ,IAAK,KACLN,MAAO,SAAYyb,EAAO3W,GAExB,OADA5D,KAAK85B,aAAaz6B,KAAKkb,EAAO3W,GACvB5D,IACT,KAGK25B,CACT,CA5IiC,CA4I/Bvd,GAMEie,EAAoC,SAAUC,GAChDpC,EAAUmC,EAAsBC,GAEhC,IAAIj4B,EAASs2B,EAAa0B,GAE1B,SAASA,IAGP,OAFA9C,EAAgBv3B,KAAMq6B,GAEfh4B,EAAOC,MAAMtC,KAAMuC,UAC5B,CAcA,OAZAu1B,EAAauC,EAAsB,CAAC,CAClCj7B,IAAK,UACLN,MAIA,SAAiBkV,EAAWnT,GAE1B,OADAb,KAAKqc,OAAOyJ,SAASA,SAAS9lB,KAAK5B,MAAMwe,QAAQ,UAAU1P,OAAO8G,GAAYnT,GACvEb,IACT,KAGKq6B,CACT,CAxBwC,CAwBtCV,GAMEY,EAA6C,SAAUD,GACzDpC,EAAUqC,EAA+BD,GAEzC,IAAIj4B,EAASs2B,EAAa4B,GAE1B,SAASA,IAGP,OAFAhD,EAAgBv3B,KAAMu6B,GAEfl4B,EAAOC,MAAMtC,KAAMuC,UAC5B,CAcA,OAZAu1B,EAAayC,EAA+B,CAAC,CAC3Cn7B,IAAK,UACLN,MAIA,SAAiBkV,EAAWnT,GAE1B,OADAb,KAAKqc,OAAOyJ,SAASA,SAAS9lB,KAAK5B,MAAMwe,QAAQ,UAAU1P,OAAO8G,GAAYnT,GACvEb,IACT,KAGKu6B,CACT,CAxBiD,CAwB/CZ,GAMEa,EAAqC,SAAUF,GACjDpC,EAAUsC,EAAuBF,GAEjC,IAAIj4B,EAASs2B,EAAa6B,GAE1B,SAASA,IAGP,OAFAjD,EAAgBv3B,KAAMw6B,GAEfn4B,EAAOC,MAAMtC,KAAMuC,UAC5B,CAoDA,OAlDAu1B,EAAa0C,EAAuB,CAAC,CACnCp7B,IAAK,OACLN,MAIA,SAAc8E,GAMZ,OALA5D,KAAK+5B,GAAG,iCAAiC,SAAUl5B,GACjD+C,EAASrF,OAAO0P,KAAKpN,EAAKkd,SAAS5P,KAAI,SAAUssB,GAC/C,OAAO55B,EAAKkd,QAAQ0c,EACtB,IACF,IACOz6B,IACT,GAKC,CACDZ,IAAK,UACLN,MAAO,SAAiB8E,GAItB,OAHA5D,KAAK+5B,GAAG,uBAAuB,SAAU5b,GACvCva,EAASua,EAAOzH,KAClB,IACO1W,IACT,GAKC,CACDZ,IAAK,UACLN,MAAO,SAAiB8E,GAItB,OAHA5D,KAAK+5B,GAAG,yBAAyB,SAAU5b,GACzCva,EAASua,EAAOzH,KAClB,IACO1W,IACT,GAKC,CACDZ,IAAK,UACLN,MAAO,SAAiBkV,EAAWnT,GAEjC,OADAb,KAAKqc,OAAOyJ,SAASA,SAAS9lB,KAAK5B,MAAMwe,QAAQ,UAAU1P,OAAO8G,GAAYnT,GACvEb,IACT,KAGKw6B,CACT,CA9DyC,CA8DvCb,GAMEe,EAA+B,SAAUd,GAC3C1B,EAAUwC,EAAiBd,GAE3B,IAAIv3B,EAASs2B,EAAa+B,GAK1B,SAASA,EAAgBtlB,EAAQhX,EAAM0H,GACrC,IAAI2C,EAsBJ,OApBA8uB,EAAgBv3B,KAAM06B,IAEtBjyB,EAAQpG,EAAOrE,KAAKgC,OAKduxB,OAAS,CAAC,EAKhB9oB,EAAM6S,UAAY,CAAC,EACnB7S,EAAMrK,KAAOA,EACbqK,EAAM2M,OAASA,EACf3M,EAAM3C,QAAUA,EAChB2C,EAAMoxB,eAAiB,IAAIN,EAAe9wB,EAAM3C,QAAQ0zB,WAExD/wB,EAAM2U,YAEC3U,CACT,CAqIA,OA/HAqvB,EAAa4C,EAAiB,CAAC,CAC7Bt7B,IAAK,YACLN,MAAO,WACLkB,KAAKoV,OAAOf,KAAK,YAAa,CAC5BmG,QAASxa,KAAK5B,KACdue,KAAM3c,KAAK8F,QAAQ6W,MAAQ,CAAC,GAEhC,GAKC,CACDvd,IAAK,cACLN,MAAO,WACLkB,KAAKkU,SACLlU,KAAKoV,OAAOf,KAAK,cAAe,CAC9BmG,QAASxa,KAAK5B,KACdue,KAAM3c,KAAK8F,QAAQ6W,MAAQ,CAAC,GAEhC,GAKC,CACDvd,IAAK,SACLN,MAAO,SAAgByb,EAAO3W,GAE5B,OADA5D,KAAK+5B,GAAG/5B,KAAK65B,eAAeG,OAAOzf,GAAQ3W,GACpC5D,IACT,GAKC,CACDZ,IAAK,gBACLN,MAAO,SAAuByb,EAAO3W,GAEnC,OADA5D,KAAK26B,YAAY36B,KAAK65B,eAAeG,OAAOzf,GAAQ3W,GAC7C5D,IACT,GAKC,CACDZ,IAAK,aACLN,MAAO,SAAoB8E,GAIzB,OAHA5D,KAAK+5B,GAAG,WAAW,SAAU3kB,GAC3BxR,EAASwR,EACX,IACOpV,IACT,GAKC,CACDZ,IAAK,QACLN,MAAO,SAAe8E,GACpB,OAAO5D,IACT,GAKC,CACDZ,IAAK,KACLN,MAAO,SAAYyb,EAAO3W,GACxB,IAAIq2B,EAASj6B,KAiBb,OAfAA,KAAKsb,UAAUf,GAASva,KAAKsb,UAAUf,IAAU,GAE5Cva,KAAKuxB,OAAOhX,KACfva,KAAKuxB,OAAOhX,GAAS,SAAUC,EAAS3Z,GAClCo5B,EAAO77B,OAASoc,GAAWyf,EAAO3e,UAAUf,IAC9C0f,EAAO3e,UAAUf,GAAOoa,SAAQ,SAAUzL,GACxC,OAAOA,EAAGroB,EACZ,GAEJ,EAEAb,KAAKoV,OAAO2kB,GAAGxf,EAAOva,KAAKuxB,OAAOhX,KAGpCva,KAAKsb,UAAUf,GAAOnX,KAAKQ,GACpB5D,IACT,GAKC,CACDZ,IAAK,SACLN,MAAO,WACL,IAAI87B,EAAS56B,KAEbzB,OAAO0P,KAAKjO,KAAKuxB,QAAQoD,SAAQ,SAAUpa,GACzCqgB,EAAOD,YAAYpgB,EACrB,GACF,GAKC,CACDnb,IAAK,cACLN,MAAO,SAAqByb,EAAO3W,GACjC5D,KAAKsb,UAAUf,GAASva,KAAKsb,UAAUf,IAAU,GAE7C3W,IACF5D,KAAKsb,UAAUf,GAASva,KAAKsb,UAAUf,GAAOnM,QAAO,SAAU8a,GAC7D,OAAOA,IAAOtlB,CAChB,KAGGA,GAA6C,IAAjC5D,KAAKsb,UAAUf,GAAO5Z,SACjCX,KAAKuxB,OAAOhX,KACdva,KAAKoV,OAAOylB,eAAetgB,EAAOva,KAAKuxB,OAAOhX,WACvCva,KAAKuxB,OAAOhX,WAGdva,KAAKsb,UAAUf,GAE1B,KAGKmgB,CACT,CAtKmC,CAsKjCte,GAME0e,EAAsC,SAAUC,GAClD7C,EAAU4C,EAAwBC,GAElC,IAAI14B,EAASs2B,EAAamC,GAE1B,SAASA,IAGP,OAFAvD,EAAgBv3B,KAAM86B,GAEfz4B,EAAOC,MAAMtC,KAAMuC,UAC5B,CAkBA,OAhBAu1B,EAAagD,EAAwB,CAAC,CACpC17B,IAAK,UACLN,MAIA,SAAiBkV,EAAWnT,GAM1B,OALAb,KAAKoV,OAAOf,KAAK,eAAgB,CAC/BmG,QAASxa,KAAK5B,KACdmc,MAAO,UAAUrN,OAAO8G,GACxBnT,KAAMA,IAEDb,IACT,KAGK86B,CACT,CA5B0C,CA4BxCJ,GAMEM,EAAuC,SAAUC,GACnD/C,EAAU8C,EAAyBC,GAEnC,IAAI54B,EAASs2B,EAAaqC,GAE1B,SAASA,IAGP,OAFAzD,EAAgBv3B,KAAMg7B,GAEf34B,EAAOC,MAAMtC,KAAMuC,UAC5B,CA0CA,OAxCAu1B,EAAakD,EAAyB,CAAC,CACrC57B,IAAK,OACLN,MAIA,SAAc8E,GAMZ,OALA5D,KAAK+5B,GAAG,uBAAuB,SAAUhc,GACvCna,EAASma,EAAQ5P,KAAI,SAAUlQ,GAC7B,OAAOA,EAAE6gB,SACX,IACF,IACO9e,IACT,GAKC,CACDZ,IAAK,UACLN,MAAO,SAAiB8E,GAItB,OAHA5D,KAAK+5B,GAAG,oBAAoB,SAAU5b,GACpC,OAAOva,EAASua,EAAOW,UACzB,IACO9e,IACT,GAKC,CACDZ,IAAK,UACLN,MAAO,SAAiB8E,GAItB,OAHA5D,KAAK+5B,GAAG,oBAAoB,SAAU5b,GACpC,OAAOva,EAASua,EAAOW,UACzB,IACO9e,IACT,KAGKg7B,CACT,CApD2C,CAoDzCF,GAMEI,EAA2B,SAAUtB,GACvC1B,EAAUgD,EAAatB,GAEvB,IAAIv3B,EAASs2B,EAAauC,GAE1B,SAASA,IAGP,OAFA3D,EAAgBv3B,KAAMk7B,GAEf74B,EAAOC,MAAMtC,KAAMuC,UAC5B,CA0EA,OAxEAu1B,EAAaoD,EAAa,CAAC,CACzB97B,IAAK,YACLN,MAIA,WACA,GAKC,CACDM,IAAK,cACLN,MAAO,WACP,GAKC,CACDM,IAAK,SACLN,MAAO,SAAgByb,EAAO3W,GAC5B,OAAO5D,IACT,GAKC,CACDZ,IAAK,cACLN,MAAO,SAAqB8E,GAC1B,OAAO5D,IACT,GAKC,CACDZ,IAAK,gBACLN,MAAO,SAAuByb,EAAO3W,GACnC,OAAO5D,IACT,GAKC,CACDZ,IAAK,aACLN,MAAO,SAAoB8E,GACzB,OAAO5D,IACT,GAKC,CACDZ,IAAK,QACLN,MAAO,SAAe8E,GACpB,OAAO5D,IACT,GAKC,CACDZ,IAAK,KACLN,MAAO,SAAYyb,EAAO3W,GACxB,OAAO5D,IACT,KAGKk7B,CACT,CApF+B,CAoF7B9e,GAME+e,EAAkC,SAAUC,GAC9ClD,EAAUiD,EAAoBC,GAE9B,IAAI/4B,EAASs2B,EAAawC,GAE1B,SAASA,IAGP,OAFA5D,EAAgBv3B,KAAMm7B,GAEf94B,EAAOC,MAAMtC,KAAMuC,UAC5B,CAaA,OAXAu1B,EAAaqD,EAAoB,CAAC,CAChC/7B,IAAK,UACLN,MAIA,SAAiBkV,EAAWnT,GAC1B,OAAOb,IACT,KAGKm7B,CACT,CAvBsC,CAuBpCD,GAMEG,EAAmC,SAAUD,GAC/ClD,EAAUmD,EAAqBD,GAE/B,IAAI/4B,EAASs2B,EAAa0C,GAE1B,SAASA,IAGP,OAFA9D,EAAgBv3B,KAAMq7B,GAEfh5B,EAAOC,MAAMtC,KAAMuC,UAC5B,CAwCA,OAtCAu1B,EAAauD,EAAqB,CAAC,CACjCj8B,IAAK,OACLN,MAIA,SAAc8E,GACZ,OAAO5D,IACT,GAKC,CACDZ,IAAK,UACLN,MAAO,SAAiB8E,GACtB,OAAO5D,IACT,GAKC,CACDZ,IAAK,UACLN,MAAO,SAAiB8E,GACtB,OAAO5D,IACT,GAKC,CACDZ,IAAK,UACLN,MAAO,SAAiBkV,EAAWnT,GACjC,OAAOb,IACT,KAGKq7B,CACT,CAlDuC,CAkDrCH,GAEEI,EAAyB,WAI3B,SAASA,EAAUx1B,GACjByxB,EAAgBv3B,KAAMs7B,GAKtBt7B,KAAKu7B,gBAAkB,CACrB5e,KAAM,CACJ9S,QAAS,CAAC,GAEZ9E,aAAc,qBACdM,mBAAoB,CAClBC,SAAU,0BACVuE,QAAS,CAAC,GAEZ2xB,YAAa,SACbC,UAAW,KACXC,YAAa,KACbppB,KAAM,KACNlT,IAAK,KACLo6B,UAAW,cAEbx5B,KAAK27B,WAAW71B,GAChB9F,KAAKmV,SACP,CA+CA,OAzCA2iB,EAAawD,EAAW,CAAC,CACvBl8B,IAAK,aACLN,MAAO,SAAoBgH,GACzB9F,KAAK8F,QAAUmyB,EAASj4B,KAAKu7B,gBAAiBz1B,GAC9C,IAAI81B,EAAQ57B,KAAKy7B,YAcjB,OAZIG,IACF57B,KAAK8F,QAAQ6W,KAAK9S,QAAQ,gBAAkB+xB,EAC5C57B,KAAK8F,QAAQT,mBAAmBwE,QAAQ,gBAAkB+xB,IAG5DA,EAAQ57B,KAAK8F,QAAQ41B,eAGnB17B,KAAK8F,QAAQ6W,KAAK9S,QAAuB,cAAI,UAAY+xB,EACzD57B,KAAK8F,QAAQT,mBAAmBwE,QAAuB,cAAI,UAAY+xB,GAGlE91B,CACT,GAKC,CACD1G,IAAK,YACLN,MAAO,WACL,IAAI+8B,EAEJ,MAAsB,oBAAXr+B,QAA0BA,OAAgB,SAAKA,OAAgB,QAAEi+B,UACnEj+B,OAAgB,QAAEi+B,UAChBz7B,KAAK8F,QAAQ21B,UACfz7B,KAAK8F,QAAQ21B,UACS,oBAAbprB,UAA8D,mBAA3BA,SAASyrB,gBAAiCD,EAAWxrB,SAASyrB,cAAc,4BACxHD,EAASE,aAAa,WAGxB,IACT,KAGKT,CACT,CA5E6B,GAkFzBU,EAA+B,SAAUC,GAC3C/D,EAAU8D,EAAiBC,GAE3B,IAAI55B,EAASs2B,EAAaqD,GAE1B,SAASA,IACP,IAAIvzB,EAUJ,OARA8uB,EAAgBv3B,KAAMg8B,IAEtBvzB,EAAQpG,EAAOC,MAAMtC,KAAMuC,YAKrBujB,SAAW,CAAC,EACXrd,CACT,CAqIA,OA/HAqvB,EAAakE,EAAiB,CAAC,CAC7B58B,IAAK,UACLN,MAAO,gBAC8B,IAAxBkB,KAAK8F,QAAQo2B,OACtBl8B,KAAKqc,OAASrc,KAAK8F,QAAQo2B,OAClBl8B,KAAK8F,QAAQ+pB,OACtB7vB,KAAKqc,OAAS,IAAIrc,KAAK8F,QAAQ+pB,OAAO7vB,KAAK8F,QAAQ1G,IAAKY,KAAK8F,SAE7D9F,KAAKqc,OAAS,IAAIwT,OAAO7vB,KAAK8F,QAAQ1G,IAAKY,KAAK8F,QAEpD,GAKC,CACD1G,IAAK,SACLN,MAAO,WACLkB,KAAKqc,OAAOuZ,QACd,GAKC,CACDx2B,IAAK,SACLN,MAAO,SAAgBV,EAAMmc,EAAO3W,GAClC,OAAO5D,KAAKwa,QAAQpc,GAAMi7B,OAAO9e,EAAO3W,EAC1C,GAKC,CACDxE,IAAK,UACLN,MAAO,SAAiBV,GAKtB,OAJK4B,KAAK8lB,SAAS1nB,KACjB4B,KAAK8lB,SAAS1nB,GAAQ,IAAIu7B,EAAc35B,KAAKqc,OAAQje,EAAM4B,KAAK8F,UAG3D9F,KAAK8lB,SAAS1nB,EACvB,GAKC,CACDgB,IAAK,iBACLN,MAAO,SAAwBV,GAK7B,OAJK4B,KAAK8lB,SAAS,WAAa1nB,KAC9B4B,KAAK8lB,SAAS,WAAa1nB,GAAQ,IAAIi8B,EAAqBr6B,KAAKqc,OAAQ,WAAaje,EAAM4B,KAAK8F,UAG5F9F,KAAK8lB,SAAS,WAAa1nB,EACpC,GAKC,CACDgB,IAAK,0BACLN,MAAO,SAAiCV,GAKtC,OAJK4B,KAAK8lB,SAAS,qBAAuB1nB,KACxC4B,KAAK8lB,SAAS,qBAAuB1nB,GAAQ,IAAIm8B,EAA8Bv6B,KAAKqc,OAAQ,qBAAuBje,EAAM4B,KAAK8F,UAGzH9F,KAAK8lB,SAAS,qBAAuB1nB,EAC9C,GAKC,CACDgB,IAAK,kBACLN,MAAO,SAAyBV,GAK9B,OAJK4B,KAAK8lB,SAAS,YAAc1nB,KAC/B4B,KAAK8lB,SAAS,YAAc1nB,GAAQ,IAAIo8B,EAAsBx6B,KAAKqc,OAAQ,YAAcje,EAAM4B,KAAK8F,UAG/F9F,KAAK8lB,SAAS,YAAc1nB,EACrC,GAKC,CACDgB,IAAK,QACLN,MAAO,SAAeV,GACpB,IAAI67B,EAASj6B,KAEE,CAAC5B,EAAM,WAAaA,EAAM,qBAAuBA,EAAM,YAAcA,GAC3Eu2B,SAAQ,SAAUv2B,EAAM+9B,GAC/BlC,EAAOmC,aAAah+B,EACtB,GACF,GAKC,CACDgB,IAAK,eACLN,MAAO,SAAsBV,GACvB4B,KAAK8lB,SAAS1nB,KAChB4B,KAAK8lB,SAAS1nB,GAAM6e,qBACbjd,KAAK8lB,SAAS1nB,GAEzB,GAKC,CACDgB,IAAK,WACLN,MAAO,WACL,OAAOkB,KAAKqc,OAAO5C,WAAWqB,SAChC,GAKC,CACD1b,IAAK,aACLN,MAAO,WACLkB,KAAKqc,OAAOQ,YACd,KAGKmf,CACT,CAvJmC,CAuJjCV,GAMEe,EAAiC,SAAUJ,GAC7C/D,EAAUmE,EAAmBJ,GAE7B,IAAI55B,EAASs2B,EAAa0D,GAE1B,SAASA,IACP,IAAI5zB,EAUJ,OARA8uB,EAAgBv3B,KAAMq8B,IAEtB5zB,EAAQpG,EAAOC,MAAMtC,KAAMuC,YAKrBujB,SAAW,CAAC,EACXrd,CACT,CAmIA,OA7HAqvB,EAAauE,EAAmB,CAAC,CAC/Bj9B,IAAK,UACLN,MAAO,WACL,IAAIm7B,EAASj6B,KAETs8B,EAAKt8B,KAAKu8B,cAOd,OANAv8B,KAAKoV,OAASknB,EAAGt8B,KAAK8F,QAAQwM,KAAMtS,KAAK8F,SACzC9F,KAAKoV,OAAO2kB,GAAG,aAAa,WAC1Bx7B,OAAO8nB,OAAO4T,EAAOnU,UAAU6O,SAAQ,SAAUna,GAC/CA,EAAQ4C,WACV,GACF,IACOpd,KAAKoV,MACd,GAKC,CACDhW,IAAK,cACLN,MAAO,WACL,QAAmC,IAAxBkB,KAAK8F,QAAQo2B,OACtB,OAAOl8B,KAAK8F,QAAQo2B,OAGtB,GAAkB,oBAAPI,GACT,OAAOA,GAGT,MAAM,IAAIv6B,MAAM,wFAClB,GAKC,CACD3C,IAAK,SACLN,MAAO,SAAgBV,EAAMmc,EAAO3W,GAClC,OAAO5D,KAAKwa,QAAQpc,GAAMi7B,OAAO9e,EAAO3W,EAC1C,GAKC,CACDxE,IAAK,UACLN,MAAO,SAAiBV,GAKtB,OAJK4B,KAAK8lB,SAAS1nB,KACjB4B,KAAK8lB,SAAS1nB,GAAQ,IAAIs8B,EAAgB16B,KAAKoV,OAAQhX,EAAM4B,KAAK8F,UAG7D9F,KAAK8lB,SAAS1nB,EACvB,GAKC,CACDgB,IAAK,iBACLN,MAAO,SAAwBV,GAK7B,OAJK4B,KAAK8lB,SAAS,WAAa1nB,KAC9B4B,KAAK8lB,SAAS,WAAa1nB,GAAQ,IAAI08B,EAAuB96B,KAAKoV,OAAQ,WAAahX,EAAM4B,KAAK8F,UAG9F9F,KAAK8lB,SAAS,WAAa1nB,EACpC,GAKC,CACDgB,IAAK,kBACLN,MAAO,SAAyBV,GAK9B,OAJK4B,KAAK8lB,SAAS,YAAc1nB,KAC/B4B,KAAK8lB,SAAS,YAAc1nB,GAAQ,IAAI48B,EAAwBh7B,KAAKoV,OAAQ,YAAchX,EAAM4B,KAAK8F,UAGjG9F,KAAK8lB,SAAS,YAAc1nB,EACrC,GAKC,CACDgB,IAAK,QACLN,MAAO,SAAeV,GACpB,IAAIw8B,EAAS56B,KAEE,CAAC5B,EAAM,WAAaA,EAAM,YAAcA,GAC9Cu2B,SAAQ,SAAUv2B,GACzBw8B,EAAOwB,aAAah+B,EACtB,GACF,GAKC,CACDgB,IAAK,eACLN,MAAO,SAAsBV,GACvB4B,KAAK8lB,SAAS1nB,KAChB4B,KAAK8lB,SAAS1nB,GAAM6e,qBACbjd,KAAK8lB,SAAS1nB,GAEzB,GAKC,CACDgB,IAAK,WACLN,MAAO,WACL,OAAOkB,KAAKoV,OAAOtR,EACrB,GAKC,CACD1E,IAAK,aACLN,MAAO,WACLkB,KAAKoV,OAAOyH,YACd,KAGKwf,CACT,CArJqC,CAqJnCf,GAMEkB,EAA6B,SAAUP,GACzC/D,EAAUsE,EAAeP,GAEzB,IAAI55B,EAASs2B,EAAa6D,GAE1B,SAASA,IACP,IAAI/zB,EAUJ,OARA8uB,EAAgBv3B,KAAMw8B,IAEtB/zB,EAAQpG,EAAOC,MAAMtC,KAAMuC,YAKrBujB,SAAW,CAAC,EACXrd,CACT,CA0FA,OApFAqvB,EAAa0E,EAAe,CAAC,CAC3Bp9B,IAAK,UACLN,MAAO,WACP,GAKC,CACDM,IAAK,SACLN,MAAO,SAAgBV,EAAMmc,EAAO3W,GAClC,OAAO,IAAIs3B,CACb,GAKC,CACD97B,IAAK,UACLN,MAAO,SAAiBV,GACtB,OAAO,IAAI88B,CACb,GAKC,CACD97B,IAAK,iBACLN,MAAO,SAAwBV,GAC7B,OAAO,IAAI+8B,CACb,GAKC,CACD/7B,IAAK,0BACLN,MAAO,SAAiCV,GACtC,OAAO,IAAI+8B,CACb,GAKC,CACD/7B,IAAK,kBACLN,MAAO,SAAyBV,GAC9B,OAAO,IAAIi9B,CACb,GAKC,CACDj8B,IAAK,QACLN,MAAO,SAAeV,GACtB,GAKC,CACDgB,IAAK,eACLN,MAAO,SAAsBV,GAC7B,GAKC,CACDgB,IAAK,WACLN,MAAO,WACL,MAAO,gBACT,GAKC,CACDM,IAAK,aACLN,MAAO,WACP,KAGK09B,CACT,CA5GiC,CA4G/BlB,GAMEmB,EAAoB,WAItB,SAASA,EAAK32B,GACZyxB,EAAgBv3B,KAAMy8B,GAEtBz8B,KAAK8F,QAAUA,EACf9F,KAAKmV,UAEAnV,KAAK8F,QAAQ42B,qBAChB18B,KAAK28B,sBAET,CAyMA,OAnMA7E,EAAa2E,EAAM,CAAC,CAClBr9B,IAAK,UACLN,MAAO,SAAiB89B,GACtB,OAAO58B,KAAK68B,UAAUriB,QAAQoiB,EAChC,GAKC,CACDx9B,IAAK,UACLN,MAAO,WAC2B,UAA5BkB,KAAK8F,QAAQ01B,YACfx7B,KAAK68B,UAAY,IAAIb,EAAgBh8B,KAAK8F,SACL,aAA5B9F,KAAK8F,QAAQ01B,YACtBx7B,KAAK68B,UAAY,IAAIR,EAAkBr8B,KAAK8F,SACP,QAA5B9F,KAAK8F,QAAQ01B,YACtBx7B,KAAK68B,UAAY,IAAIL,EAAcx8B,KAAK8F,SACI,mBAA5B9F,KAAK8F,QAAQ01B,cAC7Bx7B,KAAK68B,UAAY,IAAI78B,KAAK8F,QAAQ01B,YAAYx7B,KAAK8F,SAEvD,GAKC,CACD1G,IAAK,aACLN,MAAO,WACLkB,KAAK68B,UAAUhgB,YACjB,GAKC,CACDzd,IAAK,OACLN,MAAO,SAAc0b,GACnB,OAAOxa,KAAK68B,UAAUC,gBAAgBtiB,EACxC,GAKC,CACDpb,IAAK,QACLN,MAAO,SAAe0b,GACpBxa,KAAK68B,UAAUE,MAAMviB,EACvB,GAKC,CACDpb,IAAK,eACLN,MAAO,SAAsB0b,GAC3Bxa,KAAK68B,UAAUT,aAAa5hB,EAC9B,GAKC,CACDpb,IAAK,mBACLN,MAAO,WACL,IAAK,IAAI0b,KAAWxa,KAAK68B,UAAU/W,SACjC9lB,KAAKo8B,aAAa5hB,EAEtB,GAKC,CACDpb,IAAK,SACLN,MAAO,SAAgB0b,EAASD,EAAO3W,GACrC,OAAO5D,KAAK68B,UAAUxD,OAAO7e,EAASD,EAAO3W,EAC/C,GAKC,CACDxE,IAAK,UACLN,MAAO,SAAkB0b,GACvB,OAAOxa,KAAK68B,UAAUG,eAAexiB,EACvC,GAKC,CACDpb,IAAK,mBACLN,MAAO,SAA0B0b,GAC/B,OAAOxa,KAAK68B,UAAUI,wBAAwBziB,EAChD,GAKC,CACDpb,IAAK,WACLN,MAAO,WACL,OAAOkB,KAAK68B,UAAUngB,UACxB,GAMC,CACDtd,IAAK,uBACLN,MAAO,WACc,mBAARo+B,KAAsBA,IAAIlqB,MACnChT,KAAKm9B,gCAGc,mBAAVC,OACTp9B,KAAKq9B,kCAGe,mBAAXC,QACTt9B,KAAKu9B,0BAG+D,YAAhD,oBAAVC,MAAwB,YAAcnG,EAAQmG,SACxDx9B,KAAKy9B,iCAET,GAKC,CACDr+B,IAAK,gCACLN,MAAO,WACL,IAAI2J,EAAQzI,KAEZk9B,IAAIlqB,KAAK0qB,aAAat6B,MAAK,SAAU+C,EAASwZ,GACxClX,EAAMiU,YACRvW,EAAQ0D,QAAQ4B,IAAI,cAAehD,EAAMiU,YAG3CiD,GACF,GACF,GAKC,CACDvgB,IAAK,kCACLN,MAAO,WACL,IAAIm7B,EAASj6B,KAEbo9B,MAAMM,aAAav3B,QAAQw3B,KAAI,SAAUhgB,GAKvC,OAJIsc,EAAOvd,aACTiB,EAAO9T,QAAQ,eAAiBowB,EAAOvd,YAGlCiB,CACT,GACF,GAKC,CACDve,IAAK,0BACLN,MAAO,WACL,IAAI87B,EAAS56B,UAEa,IAAfs9B,OAAOnN,MAChBmN,OAAOM,eAAc,SAAU93B,EAAS+3B,EAAiBr0B,GACnDoxB,EAAOle,YACTlT,EAAII,iBAAiB,cAAegxB,EAAOle,WAE/C,GAEJ,GAKC,CACDtd,IAAK,kCACLN,MAAO,WACL,IAAIg/B,EAAS99B,KAEbqQ,SAASgB,iBAAiB,8BAA8B,SAAUkJ,GAChEA,EAAMwjB,OAAOC,aAAan0B,QAAQ,eAAiBi0B,EAAOphB,UAC5D,GACF,KAGK+f,CACT,CAvNwB,GC95CxBj/B,OAAOqyB,OAASoO,EAAQ,MAExBzgC,OAAOi/B,KAAO,IAAIA,EAAK,CACnBjB,YAAa,SACbp8B,IAAK8+B,uBACL94B,QAAS84B,KACTpK,UAAU","sources":["webpack:///./node_modules/pusher-js/dist/web/pusher.js","webpack:///webpack/bootstrap","webpack:///./node_modules/laravel-echo/dist/echo.js","webpack:///./resources/js/echo.js"],"sourcesContent":["/*!\n * Pusher JavaScript Library v7.6.0\n * https://pusher.com/\n *\n * Copyright 2020, Pusher\n * Released under the MIT licence.\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Pusher\"] = factory();\n\telse\n\t\troot[\"Pusher\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 2);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package base64 implements Base64 encoding and decoding.\n */\n// Invalid character used in decoding to indicate\n// that the character to decode is out of range of\n// alphabet and cannot be decoded.\nvar INVALID_BYTE = 256;\n/**\n * Implements standard Base64 encoding.\n *\n * Operates in constant time.\n */\nvar Coder = /** @class */ (function () {\n // TODO(dchest): methods to encode chunk-by-chunk.\n function Coder(_paddingCharacter) {\n if (_paddingCharacter === void 0) { _paddingCharacter = \"=\"; }\n this._paddingCharacter = _paddingCharacter;\n }\n Coder.prototype.encodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 8 + 5) / 6 | 0;\n }\n return (length + 2) / 3 * 4 | 0;\n };\n Coder.prototype.encode = function (data) {\n var out = \"\";\n var i = 0;\n for (; i < data.length - 2; i += 3) {\n var c = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n out += this._encodeByte((c >>> 1 * 6) & 63);\n out += this._encodeByte((c >>> 0 * 6) & 63);\n }\n var left = data.length - i;\n if (left > 0) {\n var c = (data[i] << 16) | (left === 2 ? data[i + 1] << 8 : 0);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n if (left === 2) {\n out += this._encodeByte((c >>> 1 * 6) & 63);\n }\n else {\n out += this._paddingCharacter || \"\";\n }\n out += this._paddingCharacter || \"\";\n }\n return out;\n };\n Coder.prototype.maxDecodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 6 + 7) / 8 | 0;\n }\n return length / 4 * 3 | 0;\n };\n Coder.prototype.decodedLength = function (s) {\n return this.maxDecodedLength(s.length - this._getPaddingLength(s));\n };\n Coder.prototype.decode = function (s) {\n if (s.length === 0) {\n return new Uint8Array(0);\n }\n var paddingLength = this._getPaddingLength(s);\n var length = s.length - paddingLength;\n var out = new Uint8Array(this.maxDecodedLength(length));\n var op = 0;\n var i = 0;\n var haveBad = 0;\n var v0 = 0, v1 = 0, v2 = 0, v3 = 0;\n for (; i < length - 4; i += 4) {\n v0 = this._decodeChar(s.charCodeAt(i + 0));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n out[op++] = (v1 << 4) | (v2 >>> 2);\n out[op++] = (v2 << 6) | v3;\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n haveBad |= v2 & INVALID_BYTE;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (i < length - 1) {\n v0 = this._decodeChar(s.charCodeAt(i));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n }\n if (i < length - 2) {\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n out[op++] = (v1 << 4) | (v2 >>> 2);\n haveBad |= v2 & INVALID_BYTE;\n }\n if (i < length - 3) {\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v2 << 6) | v3;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (haveBad !== 0) {\n throw new Error(\"Base64Coder: incorrect characters for decoding\");\n }\n return out;\n };\n // Standard encoding have the following encoded/decoded ranges,\n // which we need to convert between.\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 + /\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 43 47\n //\n // Encode 6 bits in b into a new character.\n Coder.prototype._encodeByte = function (b) {\n // Encoding uses constant time operations as follows:\n //\n // 1. Define comparison of A with B using (A - B) >>> 8:\n // if A > B, then result is positive integer\n // if A <= B, then result is 0\n //\n // 2. Define selection of C or 0 using bitwise AND: X & C:\n // if X == 0, then result is 0\n // if X != 0, then result is C\n //\n // 3. Start with the smallest comparison (b >= 0), which is always\n // true, so set the result to the starting ASCII value (65).\n //\n // 4. Continue comparing b to higher ASCII values, and selecting\n // zero if comparison isn't true, otherwise selecting a value\n // to add to result, which:\n //\n // a) undoes the previous addition\n // b) provides new value to add\n //\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 43);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 43) - 63 + 47);\n return String.fromCharCode(result);\n };\n // Decode a character code into a byte.\n // Must return 256 if character is out of alphabet range.\n Coder.prototype._decodeChar = function (c) {\n // Decoding works similar to encoding: using the same comparison\n // function, but now it works on ranges: result is always incremented\n // by value, but this value becomes zero if the range is not\n // satisfied.\n //\n // Decoding starts with invalid value, 256, which is then\n // subtracted when the range is satisfied. If none of the ranges\n // apply, the function returns 256, which is then checked by\n // the caller to throw error.\n var result = INVALID_BYTE; // start with invalid character\n // c == 43 (c > 42 and c < 44)\n result += (((42 - c) & (c - 44)) >>> 8) & (-INVALID_BYTE + c - 43 + 62);\n // c == 47 (c > 46 and c < 48)\n result += (((46 - c) & (c - 48)) >>> 8) & (-INVALID_BYTE + c - 47 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n Coder.prototype._getPaddingLength = function (s) {\n var paddingLength = 0;\n if (this._paddingCharacter) {\n for (var i = s.length - 1; i >= 0; i--) {\n if (s[i] !== this._paddingCharacter) {\n break;\n }\n paddingLength++;\n }\n if (s.length < 4 || paddingLength > 2) {\n throw new Error(\"Base64Coder: incorrect padding\");\n }\n }\n return paddingLength;\n };\n return Coder;\n}());\nexports.Coder = Coder;\nvar stdCoder = new Coder();\nfunction encode(data) {\n return stdCoder.encode(data);\n}\nexports.encode = encode;\nfunction decode(s) {\n return stdCoder.decode(s);\n}\nexports.decode = decode;\n/**\n * Implements URL-safe Base64 encoding.\n * (Same as Base64, but '+' is replaced with '-', and '/' with '_').\n *\n * Operates in constant time.\n */\nvar URLSafeCoder = /** @class */ (function (_super) {\n __extends(URLSafeCoder, _super);\n function URLSafeCoder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // URL-safe encoding have the following encoded/decoded ranges:\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 - _\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 45 95\n //\n URLSafeCoder.prototype._encodeByte = function (b) {\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95);\n return String.fromCharCode(result);\n };\n URLSafeCoder.prototype._decodeChar = function (c) {\n var result = INVALID_BYTE;\n // c == 45 (c > 44 and c < 46)\n result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62);\n // c == 95 (c > 94 and c < 96)\n result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n return URLSafeCoder;\n}(Coder));\nexports.URLSafeCoder = URLSafeCoder;\nvar urlSafeCoder = new URLSafeCoder();\nfunction encodeURLSafe(data) {\n return urlSafeCoder.encode(data);\n}\nexports.encodeURLSafe = encodeURLSafe;\nfunction decodeURLSafe(s) {\n return urlSafeCoder.decode(s);\n}\nexports.decodeURLSafe = decodeURLSafe;\nexports.encodedLength = function (length) {\n return stdCoder.encodedLength(length);\n};\nexports.maxDecodedLength = function (length) {\n return stdCoder.maxDecodedLength(length);\n};\nexports.decodedLength = function (s) {\n return stdCoder.decodedLength(s);\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package utf8 implements UTF-8 encoding and decoding.\n */\nvar INVALID_UTF16 = \"utf8: invalid string\";\nvar INVALID_UTF8 = \"utf8: invalid source encoding\";\n/**\n * Encodes the given string into UTF-8 byte array.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encode(s) {\n // Calculate result length and allocate output array.\n // encodedLength() also validates string and throws errors,\n // so we don't need repeat validation here.\n var arr = new Uint8Array(encodedLength(s));\n var pos = 0;\n for (var i = 0; i < s.length; i++) {\n var c = s.charCodeAt(i);\n if (c < 0x80) {\n arr[pos++] = c;\n }\n else if (c < 0x800) {\n arr[pos++] = 0xc0 | c >> 6;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n else if (c < 0xd800) {\n arr[pos++] = 0xe0 | c >> 12;\n arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n else {\n i++; // get one more character\n c = (c & 0x3ff) << 10;\n c |= s.charCodeAt(i) & 0x3ff;\n c += 0x10000;\n arr[pos++] = 0xf0 | c >> 18;\n arr[pos++] = 0x80 | (c >> 12) & 0x3f;\n arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n }\n return arr;\n}\nexports.encode = encode;\n/**\n * Returns the number of bytes required to encode the given string into UTF-8.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encodedLength(s) {\n var result = 0;\n for (var i = 0; i < s.length; i++) {\n var c = s.charCodeAt(i);\n if (c < 0x80) {\n result += 1;\n }\n else if (c < 0x800) {\n result += 2;\n }\n else if (c < 0xd800) {\n result += 3;\n }\n else if (c <= 0xdfff) {\n if (i >= s.length - 1) {\n throw new Error(INVALID_UTF16);\n }\n i++; // \"eat\" next character\n result += 4;\n }\n else {\n throw new Error(INVALID_UTF16);\n }\n }\n return result;\n}\nexports.encodedLength = encodedLength;\n/**\n * Decodes the given byte array from UTF-8 into a string.\n * Throws if encoding is invalid.\n */\nfunction decode(arr) {\n var chars = [];\n for (var i = 0; i < arr.length; i++) {\n var b = arr[i];\n if (b & 0x80) {\n var min = void 0;\n if (b < 0xe0) {\n // Need 1 more byte.\n if (i >= arr.length) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n if ((n1 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x1f) << 6 | (n1 & 0x3f);\n min = 0x80;\n }\n else if (b < 0xf0) {\n // Need 2 more bytes.\n if (i >= arr.length - 1) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n var n2 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 12 | (n1 & 0x3f) << 6 | (n2 & 0x3f);\n min = 0x800;\n }\n else if (b < 0xf8) {\n // Need 3 more bytes.\n if (i >= arr.length - 2) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n var n2 = arr[++i];\n var n3 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80 || (n3 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 18 | (n1 & 0x3f) << 12 | (n2 & 0x3f) << 6 | (n3 & 0x3f);\n min = 0x10000;\n }\n else {\n throw new Error(INVALID_UTF8);\n }\n if (b < min || (b >= 0xd800 && b <= 0xdfff)) {\n throw new Error(INVALID_UTF8);\n }\n if (b >= 0x10000) {\n // Surrogate pair.\n if (b > 0x10ffff) {\n throw new Error(INVALID_UTF8);\n }\n b -= 0x10000;\n chars.push(String.fromCharCode(0xd800 | (b >> 10)));\n b = 0xdc00 | (b & 0x3ff);\n }\n }\n chars.push(String.fromCharCode(b));\n }\n return chars.join(\"\");\n}\nexports.decode = decode;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// required so we don't have to do require('pusher').default etc.\nmodule.exports = __webpack_require__(3).default;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/script_receiver_factory.ts\nvar ScriptReceiverFactory = (function () {\n function ScriptReceiverFactory(prefix, name) {\n this.lastId = 0;\n this.prefix = prefix;\n this.name = name;\n }\n ScriptReceiverFactory.prototype.create = function (callback) {\n this.lastId++;\n var number = this.lastId;\n var id = this.prefix + number;\n var name = this.name + '[' + number + ']';\n var called = false;\n var callbackWrapper = function () {\n if (!called) {\n callback.apply(null, arguments);\n called = true;\n }\n };\n this[number] = callbackWrapper;\n return { number: number, id: id, name: name, callback: callbackWrapper };\n };\n ScriptReceiverFactory.prototype.remove = function (receiver) {\n delete this[receiver.number];\n };\n return ScriptReceiverFactory;\n}());\n\nvar ScriptReceivers = new ScriptReceiverFactory('_pusher_script_', 'Pusher.ScriptReceivers');\n\n// CONCATENATED MODULE: ./src/core/defaults.ts\nvar Defaults = {\n VERSION: \"7.6.0\",\n PROTOCOL: 7,\n wsPort: 80,\n wssPort: 443,\n wsPath: '',\n httpHost: 'sockjs.pusher.com',\n httpPort: 80,\n httpsPort: 443,\n httpPath: '/pusher',\n stats_host: 'stats.pusher.com',\n authEndpoint: '/pusher/auth',\n authTransport: 'ajax',\n activityTimeout: 120000,\n pongTimeout: 30000,\n unavailableTimeout: 10000,\n cluster: 'mt1',\n userAuthentication: {\n endpoint: '/pusher/user-auth',\n transport: 'ajax'\n },\n channelAuthorization: {\n endpoint: '/pusher/auth',\n transport: 'ajax'\n },\n cdn_http: \"http://js.pusher.com\",\n cdn_https: \"https://js.pusher.com\",\n dependency_suffix: \"\"\n};\n/* harmony default export */ var defaults = (Defaults);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/dependency_loader.ts\n\n\nvar dependency_loader_DependencyLoader = (function () {\n function DependencyLoader(options) {\n this.options = options;\n this.receivers = options.receivers || ScriptReceivers;\n this.loading = {};\n }\n DependencyLoader.prototype.load = function (name, options, callback) {\n var self = this;\n if (self.loading[name] && self.loading[name].length > 0) {\n self.loading[name].push(callback);\n }\n else {\n self.loading[name] = [callback];\n var request = runtime.createScriptRequest(self.getPath(name, options));\n var receiver = self.receivers.create(function (error) {\n self.receivers.remove(receiver);\n if (self.loading[name]) {\n var callbacks = self.loading[name];\n delete self.loading[name];\n var successCallback = function (wasSuccessful) {\n if (!wasSuccessful) {\n request.cleanup();\n }\n };\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i](error, successCallback);\n }\n }\n });\n request.send(receiver);\n }\n };\n DependencyLoader.prototype.getRoot = function (options) {\n var cdn;\n var protocol = runtime.getDocument().location.protocol;\n if ((options && options.useTLS) || protocol === 'https:') {\n cdn = this.options.cdn_https;\n }\n else {\n cdn = this.options.cdn_http;\n }\n return cdn.replace(/\\/*$/, '') + '/' + this.options.version;\n };\n DependencyLoader.prototype.getPath = function (name, options) {\n return this.getRoot(options) + '/' + name + this.options.suffix + '.js';\n };\n return DependencyLoader;\n}());\n/* harmony default export */ var dependency_loader = (dependency_loader_DependencyLoader);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/dependencies.ts\n\n\n\nvar DependenciesReceivers = new ScriptReceiverFactory('_pusher_dependencies', 'Pusher.DependenciesReceivers');\nvar Dependencies = new dependency_loader({\n cdn_http: defaults.cdn_http,\n cdn_https: defaults.cdn_https,\n version: defaults.VERSION,\n suffix: defaults.dependency_suffix,\n receivers: DependenciesReceivers\n});\n\n// CONCATENATED MODULE: ./src/core/utils/url_store.ts\nvar urlStore = {\n baseUrl: 'https://pusher.com',\n urls: {\n authenticationEndpoint: {\n path: '/docs/channels/server_api/authenticating_users'\n },\n authorizationEndpoint: {\n path: '/docs/channels/server_api/authorizing-users/'\n },\n javascriptQuickStart: {\n path: '/docs/javascript_quick_start'\n },\n triggeringClientEvents: {\n path: '/docs/client_api_guide/client_events#trigger-events'\n },\n encryptedChannelSupport: {\n fullUrl: 'https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support'\n }\n }\n};\nvar buildLogSuffix = function (key) {\n var urlPrefix = 'See:';\n var urlObj = urlStore.urls[key];\n if (!urlObj)\n return '';\n var url;\n if (urlObj.fullUrl) {\n url = urlObj.fullUrl;\n }\n else if (urlObj.path) {\n url = urlStore.baseUrl + urlObj.path;\n }\n if (!url)\n return '';\n return urlPrefix + \" \" + url;\n};\n/* harmony default export */ var url_store = ({ buildLogSuffix: buildLogSuffix });\n\n// CONCATENATED MODULE: ./src/core/auth/options.ts\nvar AuthRequestType;\n(function (AuthRequestType) {\n AuthRequestType[\"UserAuthentication\"] = \"user-authentication\";\n AuthRequestType[\"ChannelAuthorization\"] = \"channel-authorization\";\n})(AuthRequestType || (AuthRequestType = {}));\n\n// CONCATENATED MODULE: ./src/core/errors.ts\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar BadEventName = (function (_super) {\n __extends(BadEventName, _super);\n function BadEventName(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return BadEventName;\n}(Error));\n\nvar BadChannelName = (function (_super) {\n __extends(BadChannelName, _super);\n function BadChannelName(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return BadChannelName;\n}(Error));\n\nvar RequestTimedOut = (function (_super) {\n __extends(RequestTimedOut, _super);\n function RequestTimedOut(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return RequestTimedOut;\n}(Error));\n\nvar TransportPriorityTooLow = (function (_super) {\n __extends(TransportPriorityTooLow, _super);\n function TransportPriorityTooLow(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return TransportPriorityTooLow;\n}(Error));\n\nvar TransportClosed = (function (_super) {\n __extends(TransportClosed, _super);\n function TransportClosed(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return TransportClosed;\n}(Error));\n\nvar UnsupportedFeature = (function (_super) {\n __extends(UnsupportedFeature, _super);\n function UnsupportedFeature(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return UnsupportedFeature;\n}(Error));\n\nvar UnsupportedTransport = (function (_super) {\n __extends(UnsupportedTransport, _super);\n function UnsupportedTransport(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return UnsupportedTransport;\n}(Error));\n\nvar UnsupportedStrategy = (function (_super) {\n __extends(UnsupportedStrategy, _super);\n function UnsupportedStrategy(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return UnsupportedStrategy;\n}(Error));\n\nvar HTTPAuthError = (function (_super) {\n __extends(HTTPAuthError, _super);\n function HTTPAuthError(status, msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n _this.status = status;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return HTTPAuthError;\n}(Error));\n\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/auth/xhr_auth.ts\n\n\n\n\nvar ajax = function (context, query, authOptions, authRequestType, callback) {\n var xhr = runtime.createXHR();\n xhr.open('POST', authOptions.endpoint, true);\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n for (var headerName in authOptions.headers) {\n xhr.setRequestHeader(headerName, authOptions.headers[headerName]);\n }\n if (authOptions.headersProvider != null) {\n var dynamicHeaders = authOptions.headersProvider();\n for (var headerName in dynamicHeaders) {\n xhr.setRequestHeader(headerName, dynamicHeaders[headerName]);\n }\n }\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n var data = void 0;\n var parsed = false;\n try {\n data = JSON.parse(xhr.responseText);\n parsed = true;\n }\n catch (e) {\n callback(new HTTPAuthError(200, \"JSON returned from \" + authRequestType.toString() + \" endpoint was invalid, yet status code was 200. Data was: \" + xhr.responseText), null);\n }\n if (parsed) {\n callback(null, data);\n }\n }\n else {\n var suffix = '';\n switch (authRequestType) {\n case AuthRequestType.UserAuthentication:\n suffix = url_store.buildLogSuffix('authenticationEndpoint');\n break;\n case AuthRequestType.ChannelAuthorization:\n suffix = \"Clients must be authorized to join private or presence channels. \" + url_store.buildLogSuffix('authorizationEndpoint');\n break;\n }\n callback(new HTTPAuthError(xhr.status, \"Unable to retrieve auth string from \" + authRequestType.toString() + \" endpoint - \" +\n (\"received status: \" + xhr.status + \" from \" + authOptions.endpoint + \". \" + suffix)), null);\n }\n }\n };\n xhr.send(query);\n return xhr;\n};\n/* harmony default export */ var xhr_auth = (ajax);\n\n// CONCATENATED MODULE: ./src/core/base64.ts\nfunction encode(s) {\n return btoa(utob(s));\n}\nvar fromCharCode = String.fromCharCode;\nvar b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nvar b64tab = {};\nfor (var base64_i = 0, l = b64chars.length; base64_i < l; base64_i++) {\n b64tab[b64chars.charAt(base64_i)] = base64_i;\n}\nvar cb_utob = function (c) {\n var cc = c.charCodeAt(0);\n return cc < 0x80\n ? c\n : cc < 0x800\n ? fromCharCode(0xc0 | (cc >>> 6)) + fromCharCode(0x80 | (cc & 0x3f))\n : fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) +\n fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) +\n fromCharCode(0x80 | (cc & 0x3f));\n};\nvar utob = function (u) {\n return u.replace(/[^\\x00-\\x7F]/g, cb_utob);\n};\nvar cb_encode = function (ccc) {\n var padlen = [0, 2, 1][ccc.length % 3];\n var ord = (ccc.charCodeAt(0) << 16) |\n ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) |\n (ccc.length > 2 ? ccc.charCodeAt(2) : 0);\n var chars = [\n b64chars.charAt(ord >>> 18),\n b64chars.charAt((ord >>> 12) & 63),\n padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),\n padlen >= 1 ? '=' : b64chars.charAt(ord & 63)\n ];\n return chars.join('');\n};\nvar btoa = window.btoa ||\n function (b) {\n return b.replace(/[\\s\\S]{1,3}/g, cb_encode);\n };\n\n// CONCATENATED MODULE: ./src/core/utils/timers/abstract_timer.ts\nvar Timer = (function () {\n function Timer(set, clear, delay, callback) {\n var _this = this;\n this.clear = clear;\n this.timer = set(function () {\n if (_this.timer) {\n _this.timer = callback(_this.timer);\n }\n }, delay);\n }\n Timer.prototype.isRunning = function () {\n return this.timer !== null;\n };\n Timer.prototype.ensureAborted = function () {\n if (this.timer) {\n this.clear(this.timer);\n this.timer = null;\n }\n };\n return Timer;\n}());\n/* harmony default export */ var abstract_timer = (Timer);\n\n// CONCATENATED MODULE: ./src/core/utils/timers/index.ts\nvar timers_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nfunction timers_clearTimeout(timer) {\n window.clearTimeout(timer);\n}\nfunction timers_clearInterval(timer) {\n window.clearInterval(timer);\n}\nvar OneOffTimer = (function (_super) {\n timers_extends(OneOffTimer, _super);\n function OneOffTimer(delay, callback) {\n return _super.call(this, setTimeout, timers_clearTimeout, delay, function (timer) {\n callback();\n return null;\n }) || this;\n }\n return OneOffTimer;\n}(abstract_timer));\n\nvar PeriodicTimer = (function (_super) {\n timers_extends(PeriodicTimer, _super);\n function PeriodicTimer(delay, callback) {\n return _super.call(this, setInterval, timers_clearInterval, delay, function (timer) {\n callback();\n return timer;\n }) || this;\n }\n return PeriodicTimer;\n}(abstract_timer));\n\n\n// CONCATENATED MODULE: ./src/core/util.ts\n\nvar Util = {\n now: function () {\n if (Date.now) {\n return Date.now();\n }\n else {\n return new Date().valueOf();\n }\n },\n defer: function (callback) {\n return new OneOffTimer(0, callback);\n },\n method: function (name) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var boundArguments = Array.prototype.slice.call(arguments, 1);\n return function (object) {\n return object[name].apply(object, boundArguments.concat(arguments));\n };\n }\n};\n/* harmony default export */ var util = (Util);\n\n// CONCATENATED MODULE: ./src/core/utils/collections.ts\n\n\nfunction extend(target) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < sources.length; i++) {\n var extensions = sources[i];\n for (var property in extensions) {\n if (extensions[property] &&\n extensions[property].constructor &&\n extensions[property].constructor === Object) {\n target[property] = extend(target[property] || {}, extensions[property]);\n }\n else {\n target[property] = extensions[property];\n }\n }\n }\n return target;\n}\nfunction stringify() {\n var m = ['Pusher'];\n for (var i = 0; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n m.push(arguments[i]);\n }\n else {\n m.push(safeJSONStringify(arguments[i]));\n }\n }\n return m.join(' : ');\n}\nfunction arrayIndexOf(array, item) {\n var nativeIndexOf = Array.prototype.indexOf;\n if (array === null) {\n return -1;\n }\n if (nativeIndexOf && array.indexOf === nativeIndexOf) {\n return array.indexOf(item);\n }\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] === item) {\n return i;\n }\n }\n return -1;\n}\nfunction objectApply(object, f) {\n for (var key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n f(object[key], key, object);\n }\n }\n}\nfunction keys(object) {\n var keys = [];\n objectApply(object, function (_, key) {\n keys.push(key);\n });\n return keys;\n}\nfunction values(object) {\n var values = [];\n objectApply(object, function (value) {\n values.push(value);\n });\n return values;\n}\nfunction apply(array, f, context) {\n for (var i = 0; i < array.length; i++) {\n f.call(context || window, array[i], i, array);\n }\n}\nfunction map(array, f) {\n var result = [];\n for (var i = 0; i < array.length; i++) {\n result.push(f(array[i], i, array, result));\n }\n return result;\n}\nfunction mapObject(object, f) {\n var result = {};\n objectApply(object, function (value, key) {\n result[key] = f(value);\n });\n return result;\n}\nfunction filter(array, test) {\n test =\n test ||\n function (value) {\n return !!value;\n };\n var result = [];\n for (var i = 0; i < array.length; i++) {\n if (test(array[i], i, array, result)) {\n result.push(array[i]);\n }\n }\n return result;\n}\nfunction filterObject(object, test) {\n var result = {};\n objectApply(object, function (value, key) {\n if ((test && test(value, key, object, result)) || Boolean(value)) {\n result[key] = value;\n }\n });\n return result;\n}\nfunction flatten(object) {\n var result = [];\n objectApply(object, function (value, key) {\n result.push([key, value]);\n });\n return result;\n}\nfunction any(array, test) {\n for (var i = 0; i < array.length; i++) {\n if (test(array[i], i, array)) {\n return true;\n }\n }\n return false;\n}\nfunction collections_all(array, test) {\n for (var i = 0; i < array.length; i++) {\n if (!test(array[i], i, array)) {\n return false;\n }\n }\n return true;\n}\nfunction encodeParamsObject(data) {\n return mapObject(data, function (value) {\n if (typeof value === 'object') {\n value = safeJSONStringify(value);\n }\n return encodeURIComponent(encode(value.toString()));\n });\n}\nfunction buildQueryString(data) {\n var params = filterObject(data, function (value) {\n return value !== undefined;\n });\n var query = map(flatten(encodeParamsObject(params)), util.method('join', '=')).join('&');\n return query;\n}\nfunction decycleObject(object) {\n var objects = [], paths = [];\n return (function derez(value, path) {\n var i, name, nu;\n switch (typeof value) {\n case 'object':\n if (!value) {\n return null;\n }\n for (i = 0; i < objects.length; i += 1) {\n if (objects[i] === value) {\n return { $ref: paths[i] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n nu = [];\n for (i = 0; i < value.length; i += 1) {\n nu[i] = derez(value[i], path + '[' + i + ']');\n }\n }\n else {\n nu = {};\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n nu[name] = derez(value[name], path + '[' + JSON.stringify(name) + ']');\n }\n }\n }\n return nu;\n case 'number':\n case 'string':\n case 'boolean':\n return value;\n }\n })(object, '$');\n}\nfunction safeJSONStringify(source) {\n try {\n return JSON.stringify(source);\n }\n catch (e) {\n return JSON.stringify(decycleObject(source));\n }\n}\n\n// CONCATENATED MODULE: ./src/core/logger.ts\n\n\nvar logger_Logger = (function () {\n function Logger() {\n this.globalLog = function (message) {\n if (window.console && window.console.log) {\n window.console.log(message);\n }\n };\n }\n Logger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this.log(this.globalLog, args);\n };\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this.log(this.globalLogWarn, args);\n };\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this.log(this.globalLogError, args);\n };\n Logger.prototype.globalLogWarn = function (message) {\n if (window.console && window.console.warn) {\n window.console.warn(message);\n }\n else {\n this.globalLog(message);\n }\n };\n Logger.prototype.globalLogError = function (message) {\n if (window.console && window.console.error) {\n window.console.error(message);\n }\n else {\n this.globalLogWarn(message);\n }\n };\n Logger.prototype.log = function (defaultLoggingFunction) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var message = stringify.apply(this, arguments);\n if (core_pusher.log) {\n core_pusher.log(message);\n }\n else if (core_pusher.logToConsole) {\n var log = defaultLoggingFunction.bind(this);\n log(message);\n }\n };\n return Logger;\n}());\n/* harmony default export */ var logger = (new logger_Logger());\n\n// CONCATENATED MODULE: ./src/runtimes/web/auth/jsonp_auth.ts\n\nvar jsonp = function (context, query, authOptions, authRequestType, callback) {\n if (authOptions.headers !== undefined ||\n authOptions.headersProvider != null) {\n logger.warn(\"To send headers with the \" + authRequestType.toString() + \" request, you must use AJAX, rather than JSONP.\");\n }\n var callbackName = context.nextAuthCallbackID.toString();\n context.nextAuthCallbackID++;\n var document = context.getDocument();\n var script = document.createElement('script');\n context.auth_callbacks[callbackName] = function (data) {\n callback(null, data);\n };\n var callback_name = \"Pusher.auth_callbacks['\" + callbackName + \"']\";\n script.src =\n authOptions.endpoint +\n '?callback=' +\n encodeURIComponent(callback_name) +\n '&' +\n query;\n var head = document.getElementsByTagName('head')[0] || document.documentElement;\n head.insertBefore(script, head.firstChild);\n};\n/* harmony default export */ var jsonp_auth = (jsonp);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/script_request.ts\nvar ScriptRequest = (function () {\n function ScriptRequest(src) {\n this.src = src;\n }\n ScriptRequest.prototype.send = function (receiver) {\n var self = this;\n var errorString = 'Error loading ' + self.src;\n self.script = document.createElement('script');\n self.script.id = receiver.id;\n self.script.src = self.src;\n self.script.type = 'text/javascript';\n self.script.charset = 'UTF-8';\n if (self.script.addEventListener) {\n self.script.onerror = function () {\n receiver.callback(errorString);\n };\n self.script.onload = function () {\n receiver.callback(null);\n };\n }\n else {\n self.script.onreadystatechange = function () {\n if (self.script.readyState === 'loaded' ||\n self.script.readyState === 'complete') {\n receiver.callback(null);\n }\n };\n }\n if (self.script.async === undefined &&\n document.attachEvent &&\n /opera/i.test(navigator.userAgent)) {\n self.errorScript = document.createElement('script');\n self.errorScript.id = receiver.id + '_error';\n self.errorScript.text = receiver.name + \"('\" + errorString + \"');\";\n self.script.async = self.errorScript.async = false;\n }\n else {\n self.script.async = true;\n }\n var head = document.getElementsByTagName('head')[0];\n head.insertBefore(self.script, head.firstChild);\n if (self.errorScript) {\n head.insertBefore(self.errorScript, self.script.nextSibling);\n }\n };\n ScriptRequest.prototype.cleanup = function () {\n if (this.script) {\n this.script.onload = this.script.onerror = null;\n this.script.onreadystatechange = null;\n }\n if (this.script && this.script.parentNode) {\n this.script.parentNode.removeChild(this.script);\n }\n if (this.errorScript && this.errorScript.parentNode) {\n this.errorScript.parentNode.removeChild(this.errorScript);\n }\n this.script = null;\n this.errorScript = null;\n };\n return ScriptRequest;\n}());\n/* harmony default export */ var script_request = (ScriptRequest);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/jsonp_request.ts\n\n\nvar jsonp_request_JSONPRequest = (function () {\n function JSONPRequest(url, data) {\n this.url = url;\n this.data = data;\n }\n JSONPRequest.prototype.send = function (receiver) {\n if (this.request) {\n return;\n }\n var query = buildQueryString(this.data);\n var url = this.url + '/' + receiver.number + '?' + query;\n this.request = runtime.createScriptRequest(url);\n this.request.send(receiver);\n };\n JSONPRequest.prototype.cleanup = function () {\n if (this.request) {\n this.request.cleanup();\n }\n };\n return JSONPRequest;\n}());\n/* harmony default export */ var jsonp_request = (jsonp_request_JSONPRequest);\n\n// CONCATENATED MODULE: ./src/runtimes/web/timeline/jsonp_timeline.ts\n\n\nvar getAgent = function (sender, useTLS) {\n return function (data, callback) {\n var scheme = 'http' + (useTLS ? 's' : '') + '://';\n var url = scheme + (sender.host || sender.options.host) + sender.options.path;\n var request = runtime.createJSONPRequest(url, data);\n var receiver = runtime.ScriptReceivers.create(function (error, result) {\n ScriptReceivers.remove(receiver);\n request.cleanup();\n if (result && result.host) {\n sender.host = result.host;\n }\n if (callback) {\n callback(error, result);\n }\n });\n request.send(receiver);\n };\n};\nvar jsonp_timeline_jsonp = {\n name: 'jsonp',\n getAgent: getAgent\n};\n/* harmony default export */ var jsonp_timeline = (jsonp_timeline_jsonp);\n\n// CONCATENATED MODULE: ./src/core/transports/url_schemes.ts\n\nfunction getGenericURL(baseScheme, params, path) {\n var scheme = baseScheme + (params.useTLS ? 's' : '');\n var host = params.useTLS ? params.hostTLS : params.hostNonTLS;\n return scheme + '://' + host + path;\n}\nfunction getGenericPath(key, queryString) {\n var path = '/app/' + key;\n var query = '?protocol=' +\n defaults.PROTOCOL +\n '&client=js' +\n '&version=' +\n defaults.VERSION +\n (queryString ? '&' + queryString : '');\n return path + query;\n}\nvar ws = {\n getInitial: function (key, params) {\n var path = (params.httpPath || '') + getGenericPath(key, 'flash=false');\n return getGenericURL('ws', params, path);\n }\n};\nvar http = {\n getInitial: function (key, params) {\n var path = (params.httpPath || '/pusher') + getGenericPath(key);\n return getGenericURL('http', params, path);\n }\n};\nvar sockjs = {\n getInitial: function (key, params) {\n return getGenericURL('http', params, params.httpPath || '/pusher');\n },\n getPath: function (key, params) {\n return getGenericPath(key);\n }\n};\n\n// CONCATENATED MODULE: ./src/core/events/callback_registry.ts\n\nvar callback_registry_CallbackRegistry = (function () {\n function CallbackRegistry() {\n this._callbacks = {};\n }\n CallbackRegistry.prototype.get = function (name) {\n return this._callbacks[prefix(name)];\n };\n CallbackRegistry.prototype.add = function (name, callback, context) {\n var prefixedEventName = prefix(name);\n this._callbacks[prefixedEventName] =\n this._callbacks[prefixedEventName] || [];\n this._callbacks[prefixedEventName].push({\n fn: callback,\n context: context\n });\n };\n CallbackRegistry.prototype.remove = function (name, callback, context) {\n if (!name && !callback && !context) {\n this._callbacks = {};\n return;\n }\n var names = name ? [prefix(name)] : keys(this._callbacks);\n if (callback || context) {\n this.removeCallback(names, callback, context);\n }\n else {\n this.removeAllCallbacks(names);\n }\n };\n CallbackRegistry.prototype.removeCallback = function (names, callback, context) {\n apply(names, function (name) {\n this._callbacks[name] = filter(this._callbacks[name] || [], function (binding) {\n return ((callback && callback !== binding.fn) ||\n (context && context !== binding.context));\n });\n if (this._callbacks[name].length === 0) {\n delete this._callbacks[name];\n }\n }, this);\n };\n CallbackRegistry.prototype.removeAllCallbacks = function (names) {\n apply(names, function (name) {\n delete this._callbacks[name];\n }, this);\n };\n return CallbackRegistry;\n}());\n/* harmony default export */ var callback_registry = (callback_registry_CallbackRegistry);\nfunction prefix(name) {\n return '_' + name;\n}\n\n// CONCATENATED MODULE: ./src/core/events/dispatcher.ts\n\n\nvar dispatcher_Dispatcher = (function () {\n function Dispatcher(failThrough) {\n this.callbacks = new callback_registry();\n this.global_callbacks = [];\n this.failThrough = failThrough;\n }\n Dispatcher.prototype.bind = function (eventName, callback, context) {\n this.callbacks.add(eventName, callback, context);\n return this;\n };\n Dispatcher.prototype.bind_global = function (callback) {\n this.global_callbacks.push(callback);\n return this;\n };\n Dispatcher.prototype.unbind = function (eventName, callback, context) {\n this.callbacks.remove(eventName, callback, context);\n return this;\n };\n Dispatcher.prototype.unbind_global = function (callback) {\n if (!callback) {\n this.global_callbacks = [];\n return this;\n }\n this.global_callbacks = filter(this.global_callbacks || [], function (c) { return c !== callback; });\n return this;\n };\n Dispatcher.prototype.unbind_all = function () {\n this.unbind();\n this.unbind_global();\n return this;\n };\n Dispatcher.prototype.emit = function (eventName, data, metadata) {\n for (var i = 0; i < this.global_callbacks.length; i++) {\n this.global_callbacks[i](eventName, data);\n }\n var callbacks = this.callbacks.get(eventName);\n var args = [];\n if (metadata) {\n args.push(data, metadata);\n }\n else if (data) {\n args.push(data);\n }\n if (callbacks && callbacks.length > 0) {\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].fn.apply(callbacks[i].context || window, args);\n }\n }\n else if (this.failThrough) {\n this.failThrough(eventName, data);\n }\n return this;\n };\n return Dispatcher;\n}());\n/* harmony default export */ var dispatcher = (dispatcher_Dispatcher);\n\n// CONCATENATED MODULE: ./src/core/transports/transport_connection.ts\nvar transport_connection_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\nvar transport_connection_TransportConnection = (function (_super) {\n transport_connection_extends(TransportConnection, _super);\n function TransportConnection(hooks, name, priority, key, options) {\n var _this = _super.call(this) || this;\n _this.initialize = runtime.transportConnectionInitializer;\n _this.hooks = hooks;\n _this.name = name;\n _this.priority = priority;\n _this.key = key;\n _this.options = options;\n _this.state = 'new';\n _this.timeline = options.timeline;\n _this.activityTimeout = options.activityTimeout;\n _this.id = _this.timeline.generateUniqueID();\n return _this;\n }\n TransportConnection.prototype.handlesActivityChecks = function () {\n return Boolean(this.hooks.handlesActivityChecks);\n };\n TransportConnection.prototype.supportsPing = function () {\n return Boolean(this.hooks.supportsPing);\n };\n TransportConnection.prototype.connect = function () {\n var _this = this;\n if (this.socket || this.state !== 'initialized') {\n return false;\n }\n var url = this.hooks.urls.getInitial(this.key, this.options);\n try {\n this.socket = this.hooks.getSocket(url, this.options);\n }\n catch (e) {\n util.defer(function () {\n _this.onError(e);\n _this.changeState('closed');\n });\n return false;\n }\n this.bindListeners();\n logger.debug('Connecting', { transport: this.name, url: url });\n this.changeState('connecting');\n return true;\n };\n TransportConnection.prototype.close = function () {\n if (this.socket) {\n this.socket.close();\n return true;\n }\n else {\n return false;\n }\n };\n TransportConnection.prototype.send = function (data) {\n var _this = this;\n if (this.state === 'open') {\n util.defer(function () {\n if (_this.socket) {\n _this.socket.send(data);\n }\n });\n return true;\n }\n else {\n return false;\n }\n };\n TransportConnection.prototype.ping = function () {\n if (this.state === 'open' && this.supportsPing()) {\n this.socket.ping();\n }\n };\n TransportConnection.prototype.onOpen = function () {\n if (this.hooks.beforeOpen) {\n this.hooks.beforeOpen(this.socket, this.hooks.urls.getPath(this.key, this.options));\n }\n this.changeState('open');\n this.socket.onopen = undefined;\n };\n TransportConnection.prototype.onError = function (error) {\n this.emit('error', { type: 'WebSocketError', error: error });\n this.timeline.error(this.buildTimelineMessage({ error: error.toString() }));\n };\n TransportConnection.prototype.onClose = function (closeEvent) {\n if (closeEvent) {\n this.changeState('closed', {\n code: closeEvent.code,\n reason: closeEvent.reason,\n wasClean: closeEvent.wasClean\n });\n }\n else {\n this.changeState('closed');\n }\n this.unbindListeners();\n this.socket = undefined;\n };\n TransportConnection.prototype.onMessage = function (message) {\n this.emit('message', message);\n };\n TransportConnection.prototype.onActivity = function () {\n this.emit('activity');\n };\n TransportConnection.prototype.bindListeners = function () {\n var _this = this;\n this.socket.onopen = function () {\n _this.onOpen();\n };\n this.socket.onerror = function (error) {\n _this.onError(error);\n };\n this.socket.onclose = function (closeEvent) {\n _this.onClose(closeEvent);\n };\n this.socket.onmessage = function (message) {\n _this.onMessage(message);\n };\n if (this.supportsPing()) {\n this.socket.onactivity = function () {\n _this.onActivity();\n };\n }\n };\n TransportConnection.prototype.unbindListeners = function () {\n if (this.socket) {\n this.socket.onopen = undefined;\n this.socket.onerror = undefined;\n this.socket.onclose = undefined;\n this.socket.onmessage = undefined;\n if (this.supportsPing()) {\n this.socket.onactivity = undefined;\n }\n }\n };\n TransportConnection.prototype.changeState = function (state, params) {\n this.state = state;\n this.timeline.info(this.buildTimelineMessage({\n state: state,\n params: params\n }));\n this.emit(state, params);\n };\n TransportConnection.prototype.buildTimelineMessage = function (message) {\n return extend({ cid: this.id }, message);\n };\n return TransportConnection;\n}(dispatcher));\n/* harmony default export */ var transport_connection = (transport_connection_TransportConnection);\n\n// CONCATENATED MODULE: ./src/core/transports/transport.ts\n\nvar transport_Transport = (function () {\n function Transport(hooks) {\n this.hooks = hooks;\n }\n Transport.prototype.isSupported = function (environment) {\n return this.hooks.isSupported(environment);\n };\n Transport.prototype.createConnection = function (name, priority, key, options) {\n return new transport_connection(this.hooks, name, priority, key, options);\n };\n return Transport;\n}());\n/* harmony default export */ var transports_transport = (transport_Transport);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/transports/transports.ts\n\n\n\n\nvar WSTransport = new transports_transport({\n urls: ws,\n handlesActivityChecks: false,\n supportsPing: false,\n isInitialized: function () {\n return Boolean(runtime.getWebSocketAPI());\n },\n isSupported: function () {\n return Boolean(runtime.getWebSocketAPI());\n },\n getSocket: function (url) {\n return runtime.createWebSocket(url);\n }\n});\nvar httpConfiguration = {\n urls: http,\n handlesActivityChecks: false,\n supportsPing: true,\n isInitialized: function () {\n return true;\n }\n};\nvar streamingConfiguration = extend({\n getSocket: function (url) {\n return runtime.HTTPFactory.createStreamingSocket(url);\n }\n}, httpConfiguration);\nvar pollingConfiguration = extend({\n getSocket: function (url) {\n return runtime.HTTPFactory.createPollingSocket(url);\n }\n}, httpConfiguration);\nvar xhrConfiguration = {\n isSupported: function () {\n return runtime.isXHRSupported();\n }\n};\nvar XHRStreamingTransport = new transports_transport((extend({}, streamingConfiguration, xhrConfiguration)));\nvar XHRPollingTransport = new transports_transport(extend({}, pollingConfiguration, xhrConfiguration));\nvar Transports = {\n ws: WSTransport,\n xhr_streaming: XHRStreamingTransport,\n xhr_polling: XHRPollingTransport\n};\n/* harmony default export */ var transports = (Transports);\n\n// CONCATENATED MODULE: ./src/runtimes/web/transports/transports.ts\n\n\n\n\n\n\nvar SockJSTransport = new transports_transport({\n file: 'sockjs',\n urls: sockjs,\n handlesActivityChecks: true,\n supportsPing: false,\n isSupported: function () {\n return true;\n },\n isInitialized: function () {\n return window.SockJS !== undefined;\n },\n getSocket: function (url, options) {\n return new window.SockJS(url, null, {\n js_path: Dependencies.getPath('sockjs', {\n useTLS: options.useTLS\n }),\n ignore_null_origin: options.ignoreNullOrigin\n });\n },\n beforeOpen: function (socket, path) {\n socket.send(JSON.stringify({\n path: path\n }));\n }\n});\nvar xdrConfiguration = {\n isSupported: function (environment) {\n var yes = runtime.isXDRSupported(environment.useTLS);\n return yes;\n }\n};\nvar XDRStreamingTransport = new transports_transport((extend({}, streamingConfiguration, xdrConfiguration)));\nvar XDRPollingTransport = new transports_transport(extend({}, pollingConfiguration, xdrConfiguration));\ntransports.xdr_streaming = XDRStreamingTransport;\ntransports.xdr_polling = XDRPollingTransport;\ntransports.sockjs = SockJSTransport;\n/* harmony default export */ var transports_transports = (transports);\n\n// CONCATENATED MODULE: ./src/runtimes/web/net_info.ts\nvar net_info_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nvar NetInfo = (function (_super) {\n net_info_extends(NetInfo, _super);\n function NetInfo() {\n var _this = _super.call(this) || this;\n var self = _this;\n if (window.addEventListener !== undefined) {\n window.addEventListener('online', function () {\n self.emit('online');\n }, false);\n window.addEventListener('offline', function () {\n self.emit('offline');\n }, false);\n }\n return _this;\n }\n NetInfo.prototype.isOnline = function () {\n if (window.navigator.onLine === undefined) {\n return true;\n }\n else {\n return window.navigator.onLine;\n }\n };\n return NetInfo;\n}(dispatcher));\n\nvar net_info_Network = new NetInfo();\n\n// CONCATENATED MODULE: ./src/core/transports/assistant_to_the_transport_manager.ts\n\n\nvar assistant_to_the_transport_manager_AssistantToTheTransportManager = (function () {\n function AssistantToTheTransportManager(manager, transport, options) {\n this.manager = manager;\n this.transport = transport;\n this.minPingDelay = options.minPingDelay;\n this.maxPingDelay = options.maxPingDelay;\n this.pingDelay = undefined;\n }\n AssistantToTheTransportManager.prototype.createConnection = function (name, priority, key, options) {\n var _this = this;\n options = extend({}, options, {\n activityTimeout: this.pingDelay\n });\n var connection = this.transport.createConnection(name, priority, key, options);\n var openTimestamp = null;\n var onOpen = function () {\n connection.unbind('open', onOpen);\n connection.bind('closed', onClosed);\n openTimestamp = util.now();\n };\n var onClosed = function (closeEvent) {\n connection.unbind('closed', onClosed);\n if (closeEvent.code === 1002 || closeEvent.code === 1003) {\n _this.manager.reportDeath();\n }\n else if (!closeEvent.wasClean && openTimestamp) {\n var lifespan = util.now() - openTimestamp;\n if (lifespan < 2 * _this.maxPingDelay) {\n _this.manager.reportDeath();\n _this.pingDelay = Math.max(lifespan / 2, _this.minPingDelay);\n }\n }\n };\n connection.bind('open', onOpen);\n return connection;\n };\n AssistantToTheTransportManager.prototype.isSupported = function (environment) {\n return this.manager.isAlive() && this.transport.isSupported(environment);\n };\n return AssistantToTheTransportManager;\n}());\n/* harmony default export */ var assistant_to_the_transport_manager = (assistant_to_the_transport_manager_AssistantToTheTransportManager);\n\n// CONCATENATED MODULE: ./src/core/connection/protocol/protocol.ts\nvar Protocol = {\n decodeMessage: function (messageEvent) {\n try {\n var messageData = JSON.parse(messageEvent.data);\n var pusherEventData = messageData.data;\n if (typeof pusherEventData === 'string') {\n try {\n pusherEventData = JSON.parse(messageData.data);\n }\n catch (e) { }\n }\n var pusherEvent = {\n event: messageData.event,\n channel: messageData.channel,\n data: pusherEventData\n };\n if (messageData.user_id) {\n pusherEvent.user_id = messageData.user_id;\n }\n return pusherEvent;\n }\n catch (e) {\n throw { type: 'MessageParseError', error: e, data: messageEvent.data };\n }\n },\n encodeMessage: function (event) {\n return JSON.stringify(event);\n },\n processHandshake: function (messageEvent) {\n var message = Protocol.decodeMessage(messageEvent);\n if (message.event === 'pusher:connection_established') {\n if (!message.data.activity_timeout) {\n throw 'No activity timeout specified in handshake';\n }\n return {\n action: 'connected',\n id: message.data.socket_id,\n activityTimeout: message.data.activity_timeout * 1000\n };\n }\n else if (message.event === 'pusher:error') {\n return {\n action: this.getCloseAction(message.data),\n error: this.getCloseError(message.data)\n };\n }\n else {\n throw 'Invalid handshake';\n }\n },\n getCloseAction: function (closeEvent) {\n if (closeEvent.code < 4000) {\n if (closeEvent.code >= 1002 && closeEvent.code <= 1004) {\n return 'backoff';\n }\n else {\n return null;\n }\n }\n else if (closeEvent.code === 4000) {\n return 'tls_only';\n }\n else if (closeEvent.code < 4100) {\n return 'refused';\n }\n else if (closeEvent.code < 4200) {\n return 'backoff';\n }\n else if (closeEvent.code < 4300) {\n return 'retry';\n }\n else {\n return 'refused';\n }\n },\n getCloseError: function (closeEvent) {\n if (closeEvent.code !== 1000 && closeEvent.code !== 1001) {\n return {\n type: 'PusherError',\n data: {\n code: closeEvent.code,\n message: closeEvent.reason || closeEvent.message\n }\n };\n }\n else {\n return null;\n }\n }\n};\n/* harmony default export */ var protocol_protocol = (Protocol);\n\n// CONCATENATED MODULE: ./src/core/connection/connection.ts\nvar connection_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\nvar connection_Connection = (function (_super) {\n connection_extends(Connection, _super);\n function Connection(id, transport) {\n var _this = _super.call(this) || this;\n _this.id = id;\n _this.transport = transport;\n _this.activityTimeout = transport.activityTimeout;\n _this.bindListeners();\n return _this;\n }\n Connection.prototype.handlesActivityChecks = function () {\n return this.transport.handlesActivityChecks();\n };\n Connection.prototype.send = function (data) {\n return this.transport.send(data);\n };\n Connection.prototype.send_event = function (name, data, channel) {\n var event = { event: name, data: data };\n if (channel) {\n event.channel = channel;\n }\n logger.debug('Event sent', event);\n return this.send(protocol_protocol.encodeMessage(event));\n };\n Connection.prototype.ping = function () {\n if (this.transport.supportsPing()) {\n this.transport.ping();\n }\n else {\n this.send_event('pusher:ping', {});\n }\n };\n Connection.prototype.close = function () {\n this.transport.close();\n };\n Connection.prototype.bindListeners = function () {\n var _this = this;\n var listeners = {\n message: function (messageEvent) {\n var pusherEvent;\n try {\n pusherEvent = protocol_protocol.decodeMessage(messageEvent);\n }\n catch (e) {\n _this.emit('error', {\n type: 'MessageParseError',\n error: e,\n data: messageEvent.data\n });\n }\n if (pusherEvent !== undefined) {\n logger.debug('Event recd', pusherEvent);\n switch (pusherEvent.event) {\n case 'pusher:error':\n _this.emit('error', {\n type: 'PusherError',\n data: pusherEvent.data\n });\n break;\n case 'pusher:ping':\n _this.emit('ping');\n break;\n case 'pusher:pong':\n _this.emit('pong');\n break;\n }\n _this.emit('message', pusherEvent);\n }\n },\n activity: function () {\n _this.emit('activity');\n },\n error: function (error) {\n _this.emit('error', error);\n },\n closed: function (closeEvent) {\n unbindListeners();\n if (closeEvent && closeEvent.code) {\n _this.handleCloseEvent(closeEvent);\n }\n _this.transport = null;\n _this.emit('closed');\n }\n };\n var unbindListeners = function () {\n objectApply(listeners, function (listener, event) {\n _this.transport.unbind(event, listener);\n });\n };\n objectApply(listeners, function (listener, event) {\n _this.transport.bind(event, listener);\n });\n };\n Connection.prototype.handleCloseEvent = function (closeEvent) {\n var action = protocol_protocol.getCloseAction(closeEvent);\n var error = protocol_protocol.getCloseError(closeEvent);\n if (error) {\n this.emit('error', error);\n }\n if (action) {\n this.emit(action, { action: action, error: error });\n }\n };\n return Connection;\n}(dispatcher));\n/* harmony default export */ var connection_connection = (connection_Connection);\n\n// CONCATENATED MODULE: ./src/core/connection/handshake/index.ts\n\n\n\nvar handshake_Handshake = (function () {\n function Handshake(transport, callback) {\n this.transport = transport;\n this.callback = callback;\n this.bindListeners();\n }\n Handshake.prototype.close = function () {\n this.unbindListeners();\n this.transport.close();\n };\n Handshake.prototype.bindListeners = function () {\n var _this = this;\n this.onMessage = function (m) {\n _this.unbindListeners();\n var result;\n try {\n result = protocol_protocol.processHandshake(m);\n }\n catch (e) {\n _this.finish('error', { error: e });\n _this.transport.close();\n return;\n }\n if (result.action === 'connected') {\n _this.finish('connected', {\n connection: new connection_connection(result.id, _this.transport),\n activityTimeout: result.activityTimeout\n });\n }\n else {\n _this.finish(result.action, { error: result.error });\n _this.transport.close();\n }\n };\n this.onClosed = function (closeEvent) {\n _this.unbindListeners();\n var action = protocol_protocol.getCloseAction(closeEvent) || 'backoff';\n var error = protocol_protocol.getCloseError(closeEvent);\n _this.finish(action, { error: error });\n };\n this.transport.bind('message', this.onMessage);\n this.transport.bind('closed', this.onClosed);\n };\n Handshake.prototype.unbindListeners = function () {\n this.transport.unbind('message', this.onMessage);\n this.transport.unbind('closed', this.onClosed);\n };\n Handshake.prototype.finish = function (action, params) {\n this.callback(extend({ transport: this.transport, action: action }, params));\n };\n return Handshake;\n}());\n/* harmony default export */ var connection_handshake = (handshake_Handshake);\n\n// CONCATENATED MODULE: ./src/core/timeline/timeline_sender.ts\n\nvar timeline_sender_TimelineSender = (function () {\n function TimelineSender(timeline, options) {\n this.timeline = timeline;\n this.options = options || {};\n }\n TimelineSender.prototype.send = function (useTLS, callback) {\n if (this.timeline.isEmpty()) {\n return;\n }\n this.timeline.send(runtime.TimelineTransport.getAgent(this, useTLS), callback);\n };\n return TimelineSender;\n}());\n/* harmony default export */ var timeline_sender = (timeline_sender_TimelineSender);\n\n// CONCATENATED MODULE: ./src/core/channels/channel.ts\nvar channel_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\nvar channel_Channel = (function (_super) {\n channel_extends(Channel, _super);\n function Channel(name, pusher) {\n var _this = _super.call(this, function (event, data) {\n logger.debug('No callbacks on ' + name + ' for ' + event);\n }) || this;\n _this.name = name;\n _this.pusher = pusher;\n _this.subscribed = false;\n _this.subscriptionPending = false;\n _this.subscriptionCancelled = false;\n return _this;\n }\n Channel.prototype.authorize = function (socketId, callback) {\n return callback(null, { auth: '' });\n };\n Channel.prototype.trigger = function (event, data) {\n if (event.indexOf('client-') !== 0) {\n throw new BadEventName(\"Event '\" + event + \"' does not start with 'client-'\");\n }\n if (!this.subscribed) {\n var suffix = url_store.buildLogSuffix('triggeringClientEvents');\n logger.warn(\"Client event triggered before channel 'subscription_succeeded' event . \" + suffix);\n }\n return this.pusher.send_event(event, data, this.name);\n };\n Channel.prototype.disconnect = function () {\n this.subscribed = false;\n this.subscriptionPending = false;\n };\n Channel.prototype.handleEvent = function (event) {\n var eventName = event.event;\n var data = event.data;\n if (eventName === 'pusher_internal:subscription_succeeded') {\n this.handleSubscriptionSucceededEvent(event);\n }\n else if (eventName === 'pusher_internal:subscription_count') {\n this.handleSubscriptionCountEvent(event);\n }\n else if (eventName.indexOf('pusher_internal:') !== 0) {\n var metadata = {};\n this.emit(eventName, data, metadata);\n }\n };\n Channel.prototype.handleSubscriptionSucceededEvent = function (event) {\n this.subscriptionPending = false;\n this.subscribed = true;\n if (this.subscriptionCancelled) {\n this.pusher.unsubscribe(this.name);\n }\n else {\n this.emit('pusher:subscription_succeeded', event.data);\n }\n };\n Channel.prototype.handleSubscriptionCountEvent = function (event) {\n if (event.data.subscription_count) {\n this.subscriptionCount = event.data.subscription_count;\n }\n this.emit('pusher:subscription_count', event.data);\n };\n Channel.prototype.subscribe = function () {\n var _this = this;\n if (this.subscribed) {\n return;\n }\n this.subscriptionPending = true;\n this.subscriptionCancelled = false;\n this.authorize(this.pusher.connection.socket_id, function (error, data) {\n if (error) {\n _this.subscriptionPending = false;\n logger.error(error.toString());\n _this.emit('pusher:subscription_error', Object.assign({}, {\n type: 'AuthError',\n error: error.message\n }, error instanceof HTTPAuthError ? { status: error.status } : {}));\n }\n else {\n _this.pusher.send_event('pusher:subscribe', {\n auth: data.auth,\n channel_data: data.channel_data,\n channel: _this.name\n });\n }\n });\n };\n Channel.prototype.unsubscribe = function () {\n this.subscribed = false;\n this.pusher.send_event('pusher:unsubscribe', {\n channel: this.name\n });\n };\n Channel.prototype.cancelSubscription = function () {\n this.subscriptionCancelled = true;\n };\n Channel.prototype.reinstateSubscription = function () {\n this.subscriptionCancelled = false;\n };\n return Channel;\n}(dispatcher));\n/* harmony default export */ var channels_channel = (channel_Channel);\n\n// CONCATENATED MODULE: ./src/core/channels/private_channel.ts\nvar private_channel_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nvar PrivateChannel = (function (_super) {\n private_channel_extends(PrivateChannel, _super);\n function PrivateChannel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PrivateChannel.prototype.authorize = function (socketId, callback) {\n return this.pusher.config.channelAuthorizer({\n channelName: this.name,\n socketId: socketId\n }, callback);\n };\n return PrivateChannel;\n}(channels_channel));\n/* harmony default export */ var private_channel = (PrivateChannel);\n\n// CONCATENATED MODULE: ./src/core/channels/members.ts\n\nvar members_Members = (function () {\n function Members() {\n this.reset();\n }\n Members.prototype.get = function (id) {\n if (Object.prototype.hasOwnProperty.call(this.members, id)) {\n return {\n id: id,\n info: this.members[id]\n };\n }\n else {\n return null;\n }\n };\n Members.prototype.each = function (callback) {\n var _this = this;\n objectApply(this.members, function (member, id) {\n callback(_this.get(id));\n });\n };\n Members.prototype.setMyID = function (id) {\n this.myID = id;\n };\n Members.prototype.onSubscription = function (subscriptionData) {\n this.members = subscriptionData.presence.hash;\n this.count = subscriptionData.presence.count;\n this.me = this.get(this.myID);\n };\n Members.prototype.addMember = function (memberData) {\n if (this.get(memberData.user_id) === null) {\n this.count++;\n }\n this.members[memberData.user_id] = memberData.user_info;\n return this.get(memberData.user_id);\n };\n Members.prototype.removeMember = function (memberData) {\n var member = this.get(memberData.user_id);\n if (member) {\n delete this.members[memberData.user_id];\n this.count--;\n }\n return member;\n };\n Members.prototype.reset = function () {\n this.members = {};\n this.count = 0;\n this.myID = null;\n this.me = null;\n };\n return Members;\n}());\n/* harmony default export */ var members = (members_Members);\n\n// CONCATENATED MODULE: ./src/core/channels/presence_channel.ts\nvar presence_channel_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\nvar presence_channel_PresenceChannel = (function (_super) {\n presence_channel_extends(PresenceChannel, _super);\n function PresenceChannel(name, pusher) {\n var _this = _super.call(this, name, pusher) || this;\n _this.members = new members();\n return _this;\n }\n PresenceChannel.prototype.authorize = function (socketId, callback) {\n var _this = this;\n _super.prototype.authorize.call(this, socketId, function (error, authData) { return __awaiter(_this, void 0, void 0, function () {\n var channelData, suffix;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!error) return [3, 3];\n authData = authData;\n if (!(authData.channel_data != null)) return [3, 1];\n channelData = JSON.parse(authData.channel_data);\n this.members.setMyID(channelData.user_id);\n return [3, 3];\n case 1: return [4, this.pusher.user.signinDonePromise];\n case 2:\n _a.sent();\n if (this.pusher.user.user_data != null) {\n this.members.setMyID(this.pusher.user.user_data.id);\n }\n else {\n suffix = url_store.buildLogSuffix('authorizationEndpoint');\n logger.error(\"Invalid auth response for channel '\" + this.name + \"', \" +\n (\"expected 'channel_data' field. \" + suffix + \", \") +\n \"or the user should be signed in.\");\n callback('Invalid auth response');\n return [2];\n }\n _a.label = 3;\n case 3:\n callback(error, authData);\n return [2];\n }\n });\n }); });\n };\n PresenceChannel.prototype.handleEvent = function (event) {\n var eventName = event.event;\n if (eventName.indexOf('pusher_internal:') === 0) {\n this.handleInternalEvent(event);\n }\n else {\n var data = event.data;\n var metadata = {};\n if (event.user_id) {\n metadata.user_id = event.user_id;\n }\n this.emit(eventName, data, metadata);\n }\n };\n PresenceChannel.prototype.handleInternalEvent = function (event) {\n var eventName = event.event;\n var data = event.data;\n switch (eventName) {\n case 'pusher_internal:subscription_succeeded':\n this.handleSubscriptionSucceededEvent(event);\n break;\n case 'pusher_internal:subscription_count':\n this.handleSubscriptionCountEvent(event);\n break;\n case 'pusher_internal:member_added':\n var addedMember = this.members.addMember(data);\n this.emit('pusher:member_added', addedMember);\n break;\n case 'pusher_internal:member_removed':\n var removedMember = this.members.removeMember(data);\n if (removedMember) {\n this.emit('pusher:member_removed', removedMember);\n }\n break;\n }\n };\n PresenceChannel.prototype.handleSubscriptionSucceededEvent = function (event) {\n this.subscriptionPending = false;\n this.subscribed = true;\n if (this.subscriptionCancelled) {\n this.pusher.unsubscribe(this.name);\n }\n else {\n this.members.onSubscription(event.data);\n this.emit('pusher:subscription_succeeded', this.members);\n }\n };\n PresenceChannel.prototype.disconnect = function () {\n this.members.reset();\n _super.prototype.disconnect.call(this);\n };\n return PresenceChannel;\n}(private_channel));\n/* harmony default export */ var presence_channel = (presence_channel_PresenceChannel);\n\n// EXTERNAL MODULE: ./node_modules/@stablelib/utf8/lib/utf8.js\nvar utf8 = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./node_modules/@stablelib/base64/lib/base64.js\nvar base64 = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./src/core/channels/encrypted_channel.ts\nvar encrypted_channel_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\nvar encrypted_channel_EncryptedChannel = (function (_super) {\n encrypted_channel_extends(EncryptedChannel, _super);\n function EncryptedChannel(name, pusher, nacl) {\n var _this = _super.call(this, name, pusher) || this;\n _this.key = null;\n _this.nacl = nacl;\n return _this;\n }\n EncryptedChannel.prototype.authorize = function (socketId, callback) {\n var _this = this;\n _super.prototype.authorize.call(this, socketId, function (error, authData) {\n if (error) {\n callback(error, authData);\n return;\n }\n var sharedSecret = authData['shared_secret'];\n if (!sharedSecret) {\n callback(new Error(\"No shared_secret key in auth payload for encrypted channel: \" + _this.name), null);\n return;\n }\n _this.key = Object(base64[\"decode\"])(sharedSecret);\n delete authData['shared_secret'];\n callback(null, authData);\n });\n };\n EncryptedChannel.prototype.trigger = function (event, data) {\n throw new UnsupportedFeature('Client events are not currently supported for encrypted channels');\n };\n EncryptedChannel.prototype.handleEvent = function (event) {\n var eventName = event.event;\n var data = event.data;\n if (eventName.indexOf('pusher_internal:') === 0 ||\n eventName.indexOf('pusher:') === 0) {\n _super.prototype.handleEvent.call(this, event);\n return;\n }\n this.handleEncryptedEvent(eventName, data);\n };\n EncryptedChannel.prototype.handleEncryptedEvent = function (event, data) {\n var _this = this;\n if (!this.key) {\n logger.debug('Received encrypted event before key has been retrieved from the authEndpoint');\n return;\n }\n if (!data.ciphertext || !data.nonce) {\n logger.error('Unexpected format for encrypted event, expected object with `ciphertext` and `nonce` fields, got: ' +\n data);\n return;\n }\n var cipherText = Object(base64[\"decode\"])(data.ciphertext);\n if (cipherText.length < this.nacl.secretbox.overheadLength) {\n logger.error(\"Expected encrypted event ciphertext length to be \" + this.nacl.secretbox.overheadLength + \", got: \" + cipherText.length);\n return;\n }\n var nonce = Object(base64[\"decode\"])(data.nonce);\n if (nonce.length < this.nacl.secretbox.nonceLength) {\n logger.error(\"Expected encrypted event nonce length to be \" + this.nacl.secretbox.nonceLength + \", got: \" + nonce.length);\n return;\n }\n var bytes = this.nacl.secretbox.open(cipherText, nonce, this.key);\n if (bytes === null) {\n logger.debug('Failed to decrypt an event, probably because it was encrypted with a different key. Fetching a new key from the authEndpoint...');\n this.authorize(this.pusher.connection.socket_id, function (error, authData) {\n if (error) {\n logger.error(\"Failed to make a request to the authEndpoint: \" + authData + \". Unable to fetch new key, so dropping encrypted event\");\n return;\n }\n bytes = _this.nacl.secretbox.open(cipherText, nonce, _this.key);\n if (bytes === null) {\n logger.error(\"Failed to decrypt event with new key. Dropping encrypted event\");\n return;\n }\n _this.emit(event, _this.getDataToEmit(bytes));\n return;\n });\n return;\n }\n this.emit(event, this.getDataToEmit(bytes));\n };\n EncryptedChannel.prototype.getDataToEmit = function (bytes) {\n var raw = Object(utf8[\"decode\"])(bytes);\n try {\n return JSON.parse(raw);\n }\n catch (_a) {\n return raw;\n }\n };\n return EncryptedChannel;\n}(private_channel));\n/* harmony default export */ var encrypted_channel = (encrypted_channel_EncryptedChannel);\n\n// CONCATENATED MODULE: ./src/core/connection/connection_manager.ts\nvar connection_manager_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\nvar connection_manager_ConnectionManager = (function (_super) {\n connection_manager_extends(ConnectionManager, _super);\n function ConnectionManager(key, options) {\n var _this = _super.call(this) || this;\n _this.state = 'initialized';\n _this.connection = null;\n _this.key = key;\n _this.options = options;\n _this.timeline = _this.options.timeline;\n _this.usingTLS = _this.options.useTLS;\n _this.errorCallbacks = _this.buildErrorCallbacks();\n _this.connectionCallbacks = _this.buildConnectionCallbacks(_this.errorCallbacks);\n _this.handshakeCallbacks = _this.buildHandshakeCallbacks(_this.errorCallbacks);\n var Network = runtime.getNetwork();\n Network.bind('online', function () {\n _this.timeline.info({ netinfo: 'online' });\n if (_this.state === 'connecting' || _this.state === 'unavailable') {\n _this.retryIn(0);\n }\n });\n Network.bind('offline', function () {\n _this.timeline.info({ netinfo: 'offline' });\n if (_this.connection) {\n _this.sendActivityCheck();\n }\n });\n _this.updateStrategy();\n return _this;\n }\n ConnectionManager.prototype.connect = function () {\n if (this.connection || this.runner) {\n return;\n }\n if (!this.strategy.isSupported()) {\n this.updateState('failed');\n return;\n }\n this.updateState('connecting');\n this.startConnecting();\n this.setUnavailableTimer();\n };\n ConnectionManager.prototype.send = function (data) {\n if (this.connection) {\n return this.connection.send(data);\n }\n else {\n return false;\n }\n };\n ConnectionManager.prototype.send_event = function (name, data, channel) {\n if (this.connection) {\n return this.connection.send_event(name, data, channel);\n }\n else {\n return false;\n }\n };\n ConnectionManager.prototype.disconnect = function () {\n this.disconnectInternally();\n this.updateState('disconnected');\n };\n ConnectionManager.prototype.isUsingTLS = function () {\n return this.usingTLS;\n };\n ConnectionManager.prototype.startConnecting = function () {\n var _this = this;\n var callback = function (error, handshake) {\n if (error) {\n _this.runner = _this.strategy.connect(0, callback);\n }\n else {\n if (handshake.action === 'error') {\n _this.emit('error', {\n type: 'HandshakeError',\n error: handshake.error\n });\n _this.timeline.error({ handshakeError: handshake.error });\n }\n else {\n _this.abortConnecting();\n _this.handshakeCallbacks[handshake.action](handshake);\n }\n }\n };\n this.runner = this.strategy.connect(0, callback);\n };\n ConnectionManager.prototype.abortConnecting = function () {\n if (this.runner) {\n this.runner.abort();\n this.runner = null;\n }\n };\n ConnectionManager.prototype.disconnectInternally = function () {\n this.abortConnecting();\n this.clearRetryTimer();\n this.clearUnavailableTimer();\n if (this.connection) {\n var connection = this.abandonConnection();\n connection.close();\n }\n };\n ConnectionManager.prototype.updateStrategy = function () {\n this.strategy = this.options.getStrategy({\n key: this.key,\n timeline: this.timeline,\n useTLS: this.usingTLS\n });\n };\n ConnectionManager.prototype.retryIn = function (delay) {\n var _this = this;\n this.timeline.info({ action: 'retry', delay: delay });\n if (delay > 0) {\n this.emit('connecting_in', Math.round(delay / 1000));\n }\n this.retryTimer = new OneOffTimer(delay || 0, function () {\n _this.disconnectInternally();\n _this.connect();\n });\n };\n ConnectionManager.prototype.clearRetryTimer = function () {\n if (this.retryTimer) {\n this.retryTimer.ensureAborted();\n this.retryTimer = null;\n }\n };\n ConnectionManager.prototype.setUnavailableTimer = function () {\n var _this = this;\n this.unavailableTimer = new OneOffTimer(this.options.unavailableTimeout, function () {\n _this.updateState('unavailable');\n });\n };\n ConnectionManager.prototype.clearUnavailableTimer = function () {\n if (this.unavailableTimer) {\n this.unavailableTimer.ensureAborted();\n }\n };\n ConnectionManager.prototype.sendActivityCheck = function () {\n var _this = this;\n this.stopActivityCheck();\n this.connection.ping();\n this.activityTimer = new OneOffTimer(this.options.pongTimeout, function () {\n _this.timeline.error({ pong_timed_out: _this.options.pongTimeout });\n _this.retryIn(0);\n });\n };\n ConnectionManager.prototype.resetActivityCheck = function () {\n var _this = this;\n this.stopActivityCheck();\n if (this.connection && !this.connection.handlesActivityChecks()) {\n this.activityTimer = new OneOffTimer(this.activityTimeout, function () {\n _this.sendActivityCheck();\n });\n }\n };\n ConnectionManager.prototype.stopActivityCheck = function () {\n if (this.activityTimer) {\n this.activityTimer.ensureAborted();\n }\n };\n ConnectionManager.prototype.buildConnectionCallbacks = function (errorCallbacks) {\n var _this = this;\n return extend({}, errorCallbacks, {\n message: function (message) {\n _this.resetActivityCheck();\n _this.emit('message', message);\n },\n ping: function () {\n _this.send_event('pusher:pong', {});\n },\n activity: function () {\n _this.resetActivityCheck();\n },\n error: function (error) {\n _this.emit('error', error);\n },\n closed: function () {\n _this.abandonConnection();\n if (_this.shouldRetry()) {\n _this.retryIn(1000);\n }\n }\n });\n };\n ConnectionManager.prototype.buildHandshakeCallbacks = function (errorCallbacks) {\n var _this = this;\n return extend({}, errorCallbacks, {\n connected: function (handshake) {\n _this.activityTimeout = Math.min(_this.options.activityTimeout, handshake.activityTimeout, handshake.connection.activityTimeout || Infinity);\n _this.clearUnavailableTimer();\n _this.setConnection(handshake.connection);\n _this.socket_id = _this.connection.id;\n _this.updateState('connected', { socket_id: _this.socket_id });\n }\n });\n };\n ConnectionManager.prototype.buildErrorCallbacks = function () {\n var _this = this;\n var withErrorEmitted = function (callback) {\n return function (result) {\n if (result.error) {\n _this.emit('error', { type: 'WebSocketError', error: result.error });\n }\n callback(result);\n };\n };\n return {\n tls_only: withErrorEmitted(function () {\n _this.usingTLS = true;\n _this.updateStrategy();\n _this.retryIn(0);\n }),\n refused: withErrorEmitted(function () {\n _this.disconnect();\n }),\n backoff: withErrorEmitted(function () {\n _this.retryIn(1000);\n }),\n retry: withErrorEmitted(function () {\n _this.retryIn(0);\n })\n };\n };\n ConnectionManager.prototype.setConnection = function (connection) {\n this.connection = connection;\n for (var event in this.connectionCallbacks) {\n this.connection.bind(event, this.connectionCallbacks[event]);\n }\n this.resetActivityCheck();\n };\n ConnectionManager.prototype.abandonConnection = function () {\n if (!this.connection) {\n return;\n }\n this.stopActivityCheck();\n for (var event in this.connectionCallbacks) {\n this.connection.unbind(event, this.connectionCallbacks[event]);\n }\n var connection = this.connection;\n this.connection = null;\n return connection;\n };\n ConnectionManager.prototype.updateState = function (newState, data) {\n var previousState = this.state;\n this.state = newState;\n if (previousState !== newState) {\n var newStateDescription = newState;\n if (newStateDescription === 'connected') {\n newStateDescription += ' with new socket ID ' + data.socket_id;\n }\n logger.debug('State changed', previousState + ' -> ' + newStateDescription);\n this.timeline.info({ state: newState, params: data });\n this.emit('state_change', { previous: previousState, current: newState });\n this.emit(newState, data);\n }\n };\n ConnectionManager.prototype.shouldRetry = function () {\n return this.state === 'connecting' || this.state === 'connected';\n };\n return ConnectionManager;\n}(dispatcher));\n/* harmony default export */ var connection_manager = (connection_manager_ConnectionManager);\n\n// CONCATENATED MODULE: ./src/core/channels/channels.ts\n\n\n\n\nvar channels_Channels = (function () {\n function Channels() {\n this.channels = {};\n }\n Channels.prototype.add = function (name, pusher) {\n if (!this.channels[name]) {\n this.channels[name] = createChannel(name, pusher);\n }\n return this.channels[name];\n };\n Channels.prototype.all = function () {\n return values(this.channels);\n };\n Channels.prototype.find = function (name) {\n return this.channels[name];\n };\n Channels.prototype.remove = function (name) {\n var channel = this.channels[name];\n delete this.channels[name];\n return channel;\n };\n Channels.prototype.disconnect = function () {\n objectApply(this.channels, function (channel) {\n channel.disconnect();\n });\n };\n return Channels;\n}());\n/* harmony default export */ var channels = (channels_Channels);\nfunction createChannel(name, pusher) {\n if (name.indexOf('private-encrypted-') === 0) {\n if (pusher.config.nacl) {\n return factory.createEncryptedChannel(name, pusher, pusher.config.nacl);\n }\n var errMsg = 'Tried to subscribe to a private-encrypted- channel but no nacl implementation available';\n var suffix = url_store.buildLogSuffix('encryptedChannelSupport');\n throw new UnsupportedFeature(errMsg + \". \" + suffix);\n }\n else if (name.indexOf('private-') === 0) {\n return factory.createPrivateChannel(name, pusher);\n }\n else if (name.indexOf('presence-') === 0) {\n return factory.createPresenceChannel(name, pusher);\n }\n else if (name.indexOf('#') === 0) {\n throw new BadChannelName('Cannot create a channel with name \"' + name + '\".');\n }\n else {\n return factory.createChannel(name, pusher);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/utils/factory.ts\n\n\n\n\n\n\n\n\n\nvar Factory = {\n createChannels: function () {\n return new channels();\n },\n createConnectionManager: function (key, options) {\n return new connection_manager(key, options);\n },\n createChannel: function (name, pusher) {\n return new channels_channel(name, pusher);\n },\n createPrivateChannel: function (name, pusher) {\n return new private_channel(name, pusher);\n },\n createPresenceChannel: function (name, pusher) {\n return new presence_channel(name, pusher);\n },\n createEncryptedChannel: function (name, pusher, nacl) {\n return new encrypted_channel(name, pusher, nacl);\n },\n createTimelineSender: function (timeline, options) {\n return new timeline_sender(timeline, options);\n },\n createHandshake: function (transport, callback) {\n return new connection_handshake(transport, callback);\n },\n createAssistantToTheTransportManager: function (manager, transport, options) {\n return new assistant_to_the_transport_manager(manager, transport, options);\n }\n};\n/* harmony default export */ var factory = (Factory);\n\n// CONCATENATED MODULE: ./src/core/transports/transport_manager.ts\n\nvar transport_manager_TransportManager = (function () {\n function TransportManager(options) {\n this.options = options || {};\n this.livesLeft = this.options.lives || Infinity;\n }\n TransportManager.prototype.getAssistant = function (transport) {\n return factory.createAssistantToTheTransportManager(this, transport, {\n minPingDelay: this.options.minPingDelay,\n maxPingDelay: this.options.maxPingDelay\n });\n };\n TransportManager.prototype.isAlive = function () {\n return this.livesLeft > 0;\n };\n TransportManager.prototype.reportDeath = function () {\n this.livesLeft -= 1;\n };\n return TransportManager;\n}());\n/* harmony default export */ var transport_manager = (transport_manager_TransportManager);\n\n// CONCATENATED MODULE: ./src/core/strategies/sequential_strategy.ts\n\n\n\nvar sequential_strategy_SequentialStrategy = (function () {\n function SequentialStrategy(strategies, options) {\n this.strategies = strategies;\n this.loop = Boolean(options.loop);\n this.failFast = Boolean(options.failFast);\n this.timeout = options.timeout;\n this.timeoutLimit = options.timeoutLimit;\n }\n SequentialStrategy.prototype.isSupported = function () {\n return any(this.strategies, util.method('isSupported'));\n };\n SequentialStrategy.prototype.connect = function (minPriority, callback) {\n var _this = this;\n var strategies = this.strategies;\n var current = 0;\n var timeout = this.timeout;\n var runner = null;\n var tryNextStrategy = function (error, handshake) {\n if (handshake) {\n callback(null, handshake);\n }\n else {\n current = current + 1;\n if (_this.loop) {\n current = current % strategies.length;\n }\n if (current < strategies.length) {\n if (timeout) {\n timeout = timeout * 2;\n if (_this.timeoutLimit) {\n timeout = Math.min(timeout, _this.timeoutLimit);\n }\n }\n runner = _this.tryStrategy(strategies[current], minPriority, { timeout: timeout, failFast: _this.failFast }, tryNextStrategy);\n }\n else {\n callback(true);\n }\n }\n };\n runner = this.tryStrategy(strategies[current], minPriority, { timeout: timeout, failFast: this.failFast }, tryNextStrategy);\n return {\n abort: function () {\n runner.abort();\n },\n forceMinPriority: function (p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n };\n SequentialStrategy.prototype.tryStrategy = function (strategy, minPriority, options, callback) {\n var timer = null;\n var runner = null;\n if (options.timeout > 0) {\n timer = new OneOffTimer(options.timeout, function () {\n runner.abort();\n callback(true);\n });\n }\n runner = strategy.connect(minPriority, function (error, handshake) {\n if (error && timer && timer.isRunning() && !options.failFast) {\n return;\n }\n if (timer) {\n timer.ensureAborted();\n }\n callback(error, handshake);\n });\n return {\n abort: function () {\n if (timer) {\n timer.ensureAborted();\n }\n runner.abort();\n },\n forceMinPriority: function (p) {\n runner.forceMinPriority(p);\n }\n };\n };\n return SequentialStrategy;\n}());\n/* harmony default export */ var sequential_strategy = (sequential_strategy_SequentialStrategy);\n\n// CONCATENATED MODULE: ./src/core/strategies/best_connected_ever_strategy.ts\n\n\nvar best_connected_ever_strategy_BestConnectedEverStrategy = (function () {\n function BestConnectedEverStrategy(strategies) {\n this.strategies = strategies;\n }\n BestConnectedEverStrategy.prototype.isSupported = function () {\n return any(this.strategies, util.method('isSupported'));\n };\n BestConnectedEverStrategy.prototype.connect = function (minPriority, callback) {\n return connect(this.strategies, minPriority, function (i, runners) {\n return function (error, handshake) {\n runners[i].error = error;\n if (error) {\n if (allRunnersFailed(runners)) {\n callback(true);\n }\n return;\n }\n apply(runners, function (runner) {\n runner.forceMinPriority(handshake.transport.priority);\n });\n callback(null, handshake);\n };\n });\n };\n return BestConnectedEverStrategy;\n}());\n/* harmony default export */ var best_connected_ever_strategy = (best_connected_ever_strategy_BestConnectedEverStrategy);\nfunction connect(strategies, minPriority, callbackBuilder) {\n var runners = map(strategies, function (strategy, i, _, rs) {\n return strategy.connect(minPriority, callbackBuilder(i, rs));\n });\n return {\n abort: function () {\n apply(runners, abortRunner);\n },\n forceMinPriority: function (p) {\n apply(runners, function (runner) {\n runner.forceMinPriority(p);\n });\n }\n };\n}\nfunction allRunnersFailed(runners) {\n return collections_all(runners, function (runner) {\n return Boolean(runner.error);\n });\n}\nfunction abortRunner(runner) {\n if (!runner.error && !runner.aborted) {\n runner.abort();\n runner.aborted = true;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/cached_strategy.ts\n\n\n\n\nvar cached_strategy_CachedStrategy = (function () {\n function CachedStrategy(strategy, transports, options) {\n this.strategy = strategy;\n this.transports = transports;\n this.ttl = options.ttl || 1800 * 1000;\n this.usingTLS = options.useTLS;\n this.timeline = options.timeline;\n }\n CachedStrategy.prototype.isSupported = function () {\n return this.strategy.isSupported();\n };\n CachedStrategy.prototype.connect = function (minPriority, callback) {\n var usingTLS = this.usingTLS;\n var info = fetchTransportCache(usingTLS);\n var strategies = [this.strategy];\n if (info && info.timestamp + this.ttl >= util.now()) {\n var transport = this.transports[info.transport];\n if (transport) {\n this.timeline.info({\n cached: true,\n transport: info.transport,\n latency: info.latency\n });\n strategies.push(new sequential_strategy([transport], {\n timeout: info.latency * 2 + 1000,\n failFast: true\n }));\n }\n }\n var startTimestamp = util.now();\n var runner = strategies\n .pop()\n .connect(minPriority, function cb(error, handshake) {\n if (error) {\n flushTransportCache(usingTLS);\n if (strategies.length > 0) {\n startTimestamp = util.now();\n runner = strategies.pop().connect(minPriority, cb);\n }\n else {\n callback(error);\n }\n }\n else {\n storeTransportCache(usingTLS, handshake.transport.name, util.now() - startTimestamp);\n callback(null, handshake);\n }\n });\n return {\n abort: function () {\n runner.abort();\n },\n forceMinPriority: function (p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n };\n return CachedStrategy;\n}());\n/* harmony default export */ var cached_strategy = (cached_strategy_CachedStrategy);\nfunction getTransportCacheKey(usingTLS) {\n return 'pusherTransport' + (usingTLS ? 'TLS' : 'NonTLS');\n}\nfunction fetchTransportCache(usingTLS) {\n var storage = runtime.getLocalStorage();\n if (storage) {\n try {\n var serializedCache = storage[getTransportCacheKey(usingTLS)];\n if (serializedCache) {\n return JSON.parse(serializedCache);\n }\n }\n catch (e) {\n flushTransportCache(usingTLS);\n }\n }\n return null;\n}\nfunction storeTransportCache(usingTLS, transport, latency) {\n var storage = runtime.getLocalStorage();\n if (storage) {\n try {\n storage[getTransportCacheKey(usingTLS)] = safeJSONStringify({\n timestamp: util.now(),\n transport: transport,\n latency: latency\n });\n }\n catch (e) {\n }\n }\n}\nfunction flushTransportCache(usingTLS) {\n var storage = runtime.getLocalStorage();\n if (storage) {\n try {\n delete storage[getTransportCacheKey(usingTLS)];\n }\n catch (e) {\n }\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/delayed_strategy.ts\n\nvar delayed_strategy_DelayedStrategy = (function () {\n function DelayedStrategy(strategy, _a) {\n var number = _a.delay;\n this.strategy = strategy;\n this.options = { delay: number };\n }\n DelayedStrategy.prototype.isSupported = function () {\n return this.strategy.isSupported();\n };\n DelayedStrategy.prototype.connect = function (minPriority, callback) {\n var strategy = this.strategy;\n var runner;\n var timer = new OneOffTimer(this.options.delay, function () {\n runner = strategy.connect(minPriority, callback);\n });\n return {\n abort: function () {\n timer.ensureAborted();\n if (runner) {\n runner.abort();\n }\n },\n forceMinPriority: function (p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n };\n return DelayedStrategy;\n}());\n/* harmony default export */ var delayed_strategy = (delayed_strategy_DelayedStrategy);\n\n// CONCATENATED MODULE: ./src/core/strategies/if_strategy.ts\nvar IfStrategy = (function () {\n function IfStrategy(test, trueBranch, falseBranch) {\n this.test = test;\n this.trueBranch = trueBranch;\n this.falseBranch = falseBranch;\n }\n IfStrategy.prototype.isSupported = function () {\n var branch = this.test() ? this.trueBranch : this.falseBranch;\n return branch.isSupported();\n };\n IfStrategy.prototype.connect = function (minPriority, callback) {\n var branch = this.test() ? this.trueBranch : this.falseBranch;\n return branch.connect(minPriority, callback);\n };\n return IfStrategy;\n}());\n/* harmony default export */ var if_strategy = (IfStrategy);\n\n// CONCATENATED MODULE: ./src/core/strategies/first_connected_strategy.ts\nvar FirstConnectedStrategy = (function () {\n function FirstConnectedStrategy(strategy) {\n this.strategy = strategy;\n }\n FirstConnectedStrategy.prototype.isSupported = function () {\n return this.strategy.isSupported();\n };\n FirstConnectedStrategy.prototype.connect = function (minPriority, callback) {\n var runner = this.strategy.connect(minPriority, function (error, handshake) {\n if (handshake) {\n runner.abort();\n }\n callback(error, handshake);\n });\n return runner;\n };\n return FirstConnectedStrategy;\n}());\n/* harmony default export */ var first_connected_strategy = (FirstConnectedStrategy);\n\n// CONCATENATED MODULE: ./src/runtimes/web/default_strategy.ts\n\n\n\n\n\n\n\nfunction testSupportsStrategy(strategy) {\n return function () {\n return strategy.isSupported();\n };\n}\nvar getDefaultStrategy = function (config, baseOptions, defineTransport) {\n var definedTransports = {};\n function defineTransportStrategy(name, type, priority, options, manager) {\n var transport = defineTransport(config, name, type, priority, options, manager);\n definedTransports[name] = transport;\n return transport;\n }\n var ws_options = Object.assign({}, baseOptions, {\n hostNonTLS: config.wsHost + ':' + config.wsPort,\n hostTLS: config.wsHost + ':' + config.wssPort,\n httpPath: config.wsPath\n });\n var wss_options = Object.assign({}, ws_options, {\n useTLS: true\n });\n var sockjs_options = Object.assign({}, baseOptions, {\n hostNonTLS: config.httpHost + ':' + config.httpPort,\n hostTLS: config.httpHost + ':' + config.httpsPort,\n httpPath: config.httpPath\n });\n var timeouts = {\n loop: true,\n timeout: 15000,\n timeoutLimit: 60000\n };\n var ws_manager = new transport_manager({\n lives: 2,\n minPingDelay: 10000,\n maxPingDelay: config.activityTimeout\n });\n var streaming_manager = new transport_manager({\n lives: 2,\n minPingDelay: 10000,\n maxPingDelay: config.activityTimeout\n });\n var ws_transport = defineTransportStrategy('ws', 'ws', 3, ws_options, ws_manager);\n var wss_transport = defineTransportStrategy('wss', 'ws', 3, wss_options, ws_manager);\n var sockjs_transport = defineTransportStrategy('sockjs', 'sockjs', 1, sockjs_options);\n var xhr_streaming_transport = defineTransportStrategy('xhr_streaming', 'xhr_streaming', 1, sockjs_options, streaming_manager);\n var xdr_streaming_transport = defineTransportStrategy('xdr_streaming', 'xdr_streaming', 1, sockjs_options, streaming_manager);\n var xhr_polling_transport = defineTransportStrategy('xhr_polling', 'xhr_polling', 1, sockjs_options);\n var xdr_polling_transport = defineTransportStrategy('xdr_polling', 'xdr_polling', 1, sockjs_options);\n var ws_loop = new sequential_strategy([ws_transport], timeouts);\n var wss_loop = new sequential_strategy([wss_transport], timeouts);\n var sockjs_loop = new sequential_strategy([sockjs_transport], timeouts);\n var streaming_loop = new sequential_strategy([\n new if_strategy(testSupportsStrategy(xhr_streaming_transport), xhr_streaming_transport, xdr_streaming_transport)\n ], timeouts);\n var polling_loop = new sequential_strategy([\n new if_strategy(testSupportsStrategy(xhr_polling_transport), xhr_polling_transport, xdr_polling_transport)\n ], timeouts);\n var http_loop = new sequential_strategy([\n new if_strategy(testSupportsStrategy(streaming_loop), new best_connected_ever_strategy([\n streaming_loop,\n new delayed_strategy(polling_loop, { delay: 4000 })\n ]), polling_loop)\n ], timeouts);\n var http_fallback_loop = new if_strategy(testSupportsStrategy(http_loop), http_loop, sockjs_loop);\n var wsStrategy;\n if (baseOptions.useTLS) {\n wsStrategy = new best_connected_ever_strategy([\n ws_loop,\n new delayed_strategy(http_fallback_loop, { delay: 2000 })\n ]);\n }\n else {\n wsStrategy = new best_connected_ever_strategy([\n ws_loop,\n new delayed_strategy(wss_loop, { delay: 2000 }),\n new delayed_strategy(http_fallback_loop, { delay: 5000 })\n ]);\n }\n return new cached_strategy(new first_connected_strategy(new if_strategy(testSupportsStrategy(ws_transport), wsStrategy, http_fallback_loop)), definedTransports, {\n ttl: 1800000,\n timeline: baseOptions.timeline,\n useTLS: baseOptions.useTLS\n });\n};\n/* harmony default export */ var default_strategy = (getDefaultStrategy);\n\n// CONCATENATED MODULE: ./src/runtimes/web/transports/transport_connection_initializer.ts\n\n/* harmony default export */ var transport_connection_initializer = (function () {\n var self = this;\n self.timeline.info(self.buildTimelineMessage({\n transport: self.name + (self.options.useTLS ? 's' : '')\n }));\n if (self.hooks.isInitialized()) {\n self.changeState('initialized');\n }\n else if (self.hooks.file) {\n self.changeState('initializing');\n Dependencies.load(self.hooks.file, { useTLS: self.options.useTLS }, function (error, callback) {\n if (self.hooks.isInitialized()) {\n self.changeState('initialized');\n callback(true);\n }\n else {\n if (error) {\n self.onError(error);\n }\n self.onClose();\n callback(false);\n }\n });\n }\n else {\n self.onClose();\n }\n});\n\n// CONCATENATED MODULE: ./src/runtimes/web/http/http_xdomain_request.ts\n\nvar http_xdomain_request_hooks = {\n getRequest: function (socket) {\n var xdr = new window.XDomainRequest();\n xdr.ontimeout = function () {\n socket.emit('error', new RequestTimedOut());\n socket.close();\n };\n xdr.onerror = function (e) {\n socket.emit('error', e);\n socket.close();\n };\n xdr.onprogress = function () {\n if (xdr.responseText && xdr.responseText.length > 0) {\n socket.onChunk(200, xdr.responseText);\n }\n };\n xdr.onload = function () {\n if (xdr.responseText && xdr.responseText.length > 0) {\n socket.onChunk(200, xdr.responseText);\n }\n socket.emit('finished', 200);\n socket.close();\n };\n return xdr;\n },\n abortRequest: function (xdr) {\n xdr.ontimeout = xdr.onerror = xdr.onprogress = xdr.onload = null;\n xdr.abort();\n }\n};\n/* harmony default export */ var http_xdomain_request = (http_xdomain_request_hooks);\n\n// CONCATENATED MODULE: ./src/core/http/http_request.ts\nvar http_request_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\nvar MAX_BUFFER_LENGTH = 256 * 1024;\nvar http_request_HTTPRequest = (function (_super) {\n http_request_extends(HTTPRequest, _super);\n function HTTPRequest(hooks, method, url) {\n var _this = _super.call(this) || this;\n _this.hooks = hooks;\n _this.method = method;\n _this.url = url;\n return _this;\n }\n HTTPRequest.prototype.start = function (payload) {\n var _this = this;\n this.position = 0;\n this.xhr = this.hooks.getRequest(this);\n this.unloader = function () {\n _this.close();\n };\n runtime.addUnloadListener(this.unloader);\n this.xhr.open(this.method, this.url, true);\n if (this.xhr.setRequestHeader) {\n this.xhr.setRequestHeader('Content-Type', 'application/json');\n }\n this.xhr.send(payload);\n };\n HTTPRequest.prototype.close = function () {\n if (this.unloader) {\n runtime.removeUnloadListener(this.unloader);\n this.unloader = null;\n }\n if (this.xhr) {\n this.hooks.abortRequest(this.xhr);\n this.xhr = null;\n }\n };\n HTTPRequest.prototype.onChunk = function (status, data) {\n while (true) {\n var chunk = this.advanceBuffer(data);\n if (chunk) {\n this.emit('chunk', { status: status, data: chunk });\n }\n else {\n break;\n }\n }\n if (this.isBufferTooLong(data)) {\n this.emit('buffer_too_long');\n }\n };\n HTTPRequest.prototype.advanceBuffer = function (buffer) {\n var unreadData = buffer.slice(this.position);\n var endOfLinePosition = unreadData.indexOf('\\n');\n if (endOfLinePosition !== -1) {\n this.position += endOfLinePosition + 1;\n return unreadData.slice(0, endOfLinePosition);\n }\n else {\n return null;\n }\n };\n HTTPRequest.prototype.isBufferTooLong = function (buffer) {\n return this.position === buffer.length && buffer.length > MAX_BUFFER_LENGTH;\n };\n return HTTPRequest;\n}(dispatcher));\n/* harmony default export */ var http_request = (http_request_HTTPRequest);\n\n// CONCATENATED MODULE: ./src/core/http/state.ts\nvar State;\n(function (State) {\n State[State[\"CONNECTING\"] = 0] = \"CONNECTING\";\n State[State[\"OPEN\"] = 1] = \"OPEN\";\n State[State[\"CLOSED\"] = 3] = \"CLOSED\";\n})(State || (State = {}));\n/* harmony default export */ var state = (State);\n\n// CONCATENATED MODULE: ./src/core/http/http_socket.ts\n\n\n\nvar autoIncrement = 1;\nvar http_socket_HTTPSocket = (function () {\n function HTTPSocket(hooks, url) {\n this.hooks = hooks;\n this.session = randomNumber(1000) + '/' + randomString(8);\n this.location = getLocation(url);\n this.readyState = state.CONNECTING;\n this.openStream();\n }\n HTTPSocket.prototype.send = function (payload) {\n return this.sendRaw(JSON.stringify([payload]));\n };\n HTTPSocket.prototype.ping = function () {\n this.hooks.sendHeartbeat(this);\n };\n HTTPSocket.prototype.close = function (code, reason) {\n this.onClose(code, reason, true);\n };\n HTTPSocket.prototype.sendRaw = function (payload) {\n if (this.readyState === state.OPEN) {\n try {\n runtime.createSocketRequest('POST', getUniqueURL(getSendURL(this.location, this.session))).start(payload);\n return true;\n }\n catch (e) {\n return false;\n }\n }\n else {\n return false;\n }\n };\n HTTPSocket.prototype.reconnect = function () {\n this.closeStream();\n this.openStream();\n };\n HTTPSocket.prototype.onClose = function (code, reason, wasClean) {\n this.closeStream();\n this.readyState = state.CLOSED;\n if (this.onclose) {\n this.onclose({\n code: code,\n reason: reason,\n wasClean: wasClean\n });\n }\n };\n HTTPSocket.prototype.onChunk = function (chunk) {\n if (chunk.status !== 200) {\n return;\n }\n if (this.readyState === state.OPEN) {\n this.onActivity();\n }\n var payload;\n var type = chunk.data.slice(0, 1);\n switch (type) {\n case 'o':\n payload = JSON.parse(chunk.data.slice(1) || '{}');\n this.onOpen(payload);\n break;\n case 'a':\n payload = JSON.parse(chunk.data.slice(1) || '[]');\n for (var i = 0; i < payload.length; i++) {\n this.onEvent(payload[i]);\n }\n break;\n case 'm':\n payload = JSON.parse(chunk.data.slice(1) || 'null');\n this.onEvent(payload);\n break;\n case 'h':\n this.hooks.onHeartbeat(this);\n break;\n case 'c':\n payload = JSON.parse(chunk.data.slice(1) || '[]');\n this.onClose(payload[0], payload[1], true);\n break;\n }\n };\n HTTPSocket.prototype.onOpen = function (options) {\n if (this.readyState === state.CONNECTING) {\n if (options && options.hostname) {\n this.location.base = replaceHost(this.location.base, options.hostname);\n }\n this.readyState = state.OPEN;\n if (this.onopen) {\n this.onopen();\n }\n }\n else {\n this.onClose(1006, 'Server lost session', true);\n }\n };\n HTTPSocket.prototype.onEvent = function (event) {\n if (this.readyState === state.OPEN && this.onmessage) {\n this.onmessage({ data: event });\n }\n };\n HTTPSocket.prototype.onActivity = function () {\n if (this.onactivity) {\n this.onactivity();\n }\n };\n HTTPSocket.prototype.onError = function (error) {\n if (this.onerror) {\n this.onerror(error);\n }\n };\n HTTPSocket.prototype.openStream = function () {\n var _this = this;\n this.stream = runtime.createSocketRequest('POST', getUniqueURL(this.hooks.getReceiveURL(this.location, this.session)));\n this.stream.bind('chunk', function (chunk) {\n _this.onChunk(chunk);\n });\n this.stream.bind('finished', function (status) {\n _this.hooks.onFinished(_this, status);\n });\n this.stream.bind('buffer_too_long', function () {\n _this.reconnect();\n });\n try {\n this.stream.start();\n }\n catch (error) {\n util.defer(function () {\n _this.onError(error);\n _this.onClose(1006, 'Could not start streaming', false);\n });\n }\n };\n HTTPSocket.prototype.closeStream = function () {\n if (this.stream) {\n this.stream.unbind_all();\n this.stream.close();\n this.stream = null;\n }\n };\n return HTTPSocket;\n}());\nfunction getLocation(url) {\n var parts = /([^\\?]*)\\/*(\\??.*)/.exec(url);\n return {\n base: parts[1],\n queryString: parts[2]\n };\n}\nfunction getSendURL(url, session) {\n return url.base + '/' + session + '/xhr_send';\n}\nfunction getUniqueURL(url) {\n var separator = url.indexOf('?') === -1 ? '?' : '&';\n return url + separator + 't=' + +new Date() + '&n=' + autoIncrement++;\n}\nfunction replaceHost(url, hostname) {\n var urlParts = /(https?:\\/\\/)([^\\/:]+)((\\/|:)?.*)/.exec(url);\n return urlParts[1] + hostname + urlParts[3];\n}\nfunction randomNumber(max) {\n return runtime.randomInt(max);\n}\nfunction randomString(length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(randomNumber(32).toString(32));\n }\n return result.join('');\n}\n/* harmony default export */ var http_socket = (http_socket_HTTPSocket);\n\n// CONCATENATED MODULE: ./src/core/http/http_streaming_socket.ts\nvar http_streaming_socket_hooks = {\n getReceiveURL: function (url, session) {\n return url.base + '/' + session + '/xhr_streaming' + url.queryString;\n },\n onHeartbeat: function (socket) {\n socket.sendRaw('[]');\n },\n sendHeartbeat: function (socket) {\n socket.sendRaw('[]');\n },\n onFinished: function (socket, status) {\n socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n }\n};\n/* harmony default export */ var http_streaming_socket = (http_streaming_socket_hooks);\n\n// CONCATENATED MODULE: ./src/core/http/http_polling_socket.ts\nvar http_polling_socket_hooks = {\n getReceiveURL: function (url, session) {\n return url.base + '/' + session + '/xhr' + url.queryString;\n },\n onHeartbeat: function () {\n },\n sendHeartbeat: function (socket) {\n socket.sendRaw('[]');\n },\n onFinished: function (socket, status) {\n if (status === 200) {\n socket.reconnect();\n }\n else {\n socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n }\n }\n};\n/* harmony default export */ var http_polling_socket = (http_polling_socket_hooks);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http_xhr_request.ts\n\nvar http_xhr_request_hooks = {\n getRequest: function (socket) {\n var Constructor = runtime.getXHRAPI();\n var xhr = new Constructor();\n xhr.onreadystatechange = xhr.onprogress = function () {\n switch (xhr.readyState) {\n case 3:\n if (xhr.responseText && xhr.responseText.length > 0) {\n socket.onChunk(xhr.status, xhr.responseText);\n }\n break;\n case 4:\n if (xhr.responseText && xhr.responseText.length > 0) {\n socket.onChunk(xhr.status, xhr.responseText);\n }\n socket.emit('finished', xhr.status);\n socket.close();\n break;\n }\n };\n return xhr;\n },\n abortRequest: function (xhr) {\n xhr.onreadystatechange = null;\n xhr.abort();\n }\n};\n/* harmony default export */ var http_xhr_request = (http_xhr_request_hooks);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http.ts\n\n\n\n\n\nvar HTTP = {\n createStreamingSocket: function (url) {\n return this.createSocket(http_streaming_socket, url);\n },\n createPollingSocket: function (url) {\n return this.createSocket(http_polling_socket, url);\n },\n createSocket: function (hooks, url) {\n return new http_socket(hooks, url);\n },\n createXHR: function (method, url) {\n return this.createRequest(http_xhr_request, method, url);\n },\n createRequest: function (hooks, method, url) {\n return new http_request(hooks, method, url);\n }\n};\n/* harmony default export */ var http_http = (HTTP);\n\n// CONCATENATED MODULE: ./src/runtimes/web/http/http.ts\n\n\nhttp_http.createXDR = function (method, url) {\n return this.createRequest(http_xdomain_request, method, url);\n};\n/* harmony default export */ var web_http_http = (http_http);\n\n// CONCATENATED MODULE: ./src/runtimes/web/runtime.ts\n\n\n\n\n\n\n\n\n\n\n\n\nvar Runtime = {\n nextAuthCallbackID: 1,\n auth_callbacks: {},\n ScriptReceivers: ScriptReceivers,\n DependenciesReceivers: DependenciesReceivers,\n getDefaultStrategy: default_strategy,\n Transports: transports_transports,\n transportConnectionInitializer: transport_connection_initializer,\n HTTPFactory: web_http_http,\n TimelineTransport: jsonp_timeline,\n getXHRAPI: function () {\n return window.XMLHttpRequest;\n },\n getWebSocketAPI: function () {\n return window.WebSocket || window.MozWebSocket;\n },\n setup: function (PusherClass) {\n var _this = this;\n window.Pusher = PusherClass;\n var initializeOnDocumentBody = function () {\n _this.onDocumentBody(PusherClass.ready);\n };\n if (!window.JSON) {\n Dependencies.load('json2', {}, initializeOnDocumentBody);\n }\n else {\n initializeOnDocumentBody();\n }\n },\n getDocument: function () {\n return document;\n },\n getProtocol: function () {\n return this.getDocument().location.protocol;\n },\n getAuthorizers: function () {\n return { ajax: xhr_auth, jsonp: jsonp_auth };\n },\n onDocumentBody: function (callback) {\n var _this = this;\n if (document.body) {\n callback();\n }\n else {\n setTimeout(function () {\n _this.onDocumentBody(callback);\n }, 0);\n }\n },\n createJSONPRequest: function (url, data) {\n return new jsonp_request(url, data);\n },\n createScriptRequest: function (src) {\n return new script_request(src);\n },\n getLocalStorage: function () {\n try {\n return window.localStorage;\n }\n catch (e) {\n return undefined;\n }\n },\n createXHR: function () {\n if (this.getXHRAPI()) {\n return this.createXMLHttpRequest();\n }\n else {\n return this.createMicrosoftXHR();\n }\n },\n createXMLHttpRequest: function () {\n var Constructor = this.getXHRAPI();\n return new Constructor();\n },\n createMicrosoftXHR: function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n getNetwork: function () {\n return net_info_Network;\n },\n createWebSocket: function (url) {\n var Constructor = this.getWebSocketAPI();\n return new Constructor(url);\n },\n createSocketRequest: function (method, url) {\n if (this.isXHRSupported()) {\n return this.HTTPFactory.createXHR(method, url);\n }\n else if (this.isXDRSupported(url.indexOf('https:') === 0)) {\n return this.HTTPFactory.createXDR(method, url);\n }\n else {\n throw 'Cross-origin HTTP requests are not supported';\n }\n },\n isXHRSupported: function () {\n var Constructor = this.getXHRAPI();\n return (Boolean(Constructor) && new Constructor().withCredentials !== undefined);\n },\n isXDRSupported: function (useTLS) {\n var protocol = useTLS ? 'https:' : 'http:';\n var documentProtocol = this.getProtocol();\n return (Boolean(window['XDomainRequest']) && documentProtocol === protocol);\n },\n addUnloadListener: function (listener) {\n if (window.addEventListener !== undefined) {\n window.addEventListener('unload', listener, false);\n }\n else if (window.attachEvent !== undefined) {\n window.attachEvent('onunload', listener);\n }\n },\n removeUnloadListener: function (listener) {\n if (window.addEventListener !== undefined) {\n window.removeEventListener('unload', listener, false);\n }\n else if (window.detachEvent !== undefined) {\n window.detachEvent('onunload', listener);\n }\n },\n randomInt: function (max) {\n var random = function () {\n var crypto = window.crypto || window['msCrypto'];\n var random = crypto.getRandomValues(new Uint32Array(1))[0];\n return random / Math.pow(2, 32);\n };\n return Math.floor(random() * max);\n }\n};\n/* harmony default export */ var runtime = (Runtime);\n\n// CONCATENATED MODULE: ./src/core/timeline/level.ts\nvar TimelineLevel;\n(function (TimelineLevel) {\n TimelineLevel[TimelineLevel[\"ERROR\"] = 3] = \"ERROR\";\n TimelineLevel[TimelineLevel[\"INFO\"] = 6] = \"INFO\";\n TimelineLevel[TimelineLevel[\"DEBUG\"] = 7] = \"DEBUG\";\n})(TimelineLevel || (TimelineLevel = {}));\n/* harmony default export */ var timeline_level = (TimelineLevel);\n\n// CONCATENATED MODULE: ./src/core/timeline/timeline.ts\n\n\n\nvar timeline_Timeline = (function () {\n function Timeline(key, session, options) {\n this.key = key;\n this.session = session;\n this.events = [];\n this.options = options || {};\n this.sent = 0;\n this.uniqueID = 0;\n }\n Timeline.prototype.log = function (level, event) {\n if (level <= this.options.level) {\n this.events.push(extend({}, event, { timestamp: util.now() }));\n if (this.options.limit && this.events.length > this.options.limit) {\n this.events.shift();\n }\n }\n };\n Timeline.prototype.error = function (event) {\n this.log(timeline_level.ERROR, event);\n };\n Timeline.prototype.info = function (event) {\n this.log(timeline_level.INFO, event);\n };\n Timeline.prototype.debug = function (event) {\n this.log(timeline_level.DEBUG, event);\n };\n Timeline.prototype.isEmpty = function () {\n return this.events.length === 0;\n };\n Timeline.prototype.send = function (sendfn, callback) {\n var _this = this;\n var data = extend({\n session: this.session,\n bundle: this.sent + 1,\n key: this.key,\n lib: 'js',\n version: this.options.version,\n cluster: this.options.cluster,\n features: this.options.features,\n timeline: this.events\n }, this.options.params);\n this.events = [];\n sendfn(data, function (error, result) {\n if (!error) {\n _this.sent++;\n }\n if (callback) {\n callback(error, result);\n }\n });\n return true;\n };\n Timeline.prototype.generateUniqueID = function () {\n this.uniqueID++;\n return this.uniqueID;\n };\n return Timeline;\n}());\n/* harmony default export */ var timeline_timeline = (timeline_Timeline);\n\n// CONCATENATED MODULE: ./src/core/strategies/transport_strategy.ts\n\n\n\n\nvar transport_strategy_TransportStrategy = (function () {\n function TransportStrategy(name, priority, transport, options) {\n this.name = name;\n this.priority = priority;\n this.transport = transport;\n this.options = options || {};\n }\n TransportStrategy.prototype.isSupported = function () {\n return this.transport.isSupported({\n useTLS: this.options.useTLS\n });\n };\n TransportStrategy.prototype.connect = function (minPriority, callback) {\n var _this = this;\n if (!this.isSupported()) {\n return failAttempt(new UnsupportedStrategy(), callback);\n }\n else if (this.priority < minPriority) {\n return failAttempt(new TransportPriorityTooLow(), callback);\n }\n var connected = false;\n var transport = this.transport.createConnection(this.name, this.priority, this.options.key, this.options);\n var handshake = null;\n var onInitialized = function () {\n transport.unbind('initialized', onInitialized);\n transport.connect();\n };\n var onOpen = function () {\n handshake = factory.createHandshake(transport, function (result) {\n connected = true;\n unbindListeners();\n callback(null, result);\n });\n };\n var onError = function (error) {\n unbindListeners();\n callback(error);\n };\n var onClosed = function () {\n unbindListeners();\n var serializedTransport;\n serializedTransport = safeJSONStringify(transport);\n callback(new TransportClosed(serializedTransport));\n };\n var unbindListeners = function () {\n transport.unbind('initialized', onInitialized);\n transport.unbind('open', onOpen);\n transport.unbind('error', onError);\n transport.unbind('closed', onClosed);\n };\n transport.bind('initialized', onInitialized);\n transport.bind('open', onOpen);\n transport.bind('error', onError);\n transport.bind('closed', onClosed);\n transport.initialize();\n return {\n abort: function () {\n if (connected) {\n return;\n }\n unbindListeners();\n if (handshake) {\n handshake.close();\n }\n else {\n transport.close();\n }\n },\n forceMinPriority: function (p) {\n if (connected) {\n return;\n }\n if (_this.priority < p) {\n if (handshake) {\n handshake.close();\n }\n else {\n transport.close();\n }\n }\n }\n };\n };\n return TransportStrategy;\n}());\n/* harmony default export */ var transport_strategy = (transport_strategy_TransportStrategy);\nfunction failAttempt(error, callback) {\n util.defer(function () {\n callback(error);\n });\n return {\n abort: function () { },\n forceMinPriority: function () { }\n };\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/strategy_builder.ts\n\n\n\n\n\nvar strategy_builder_Transports = runtime.Transports;\nvar strategy_builder_defineTransport = function (config, name, type, priority, options, manager) {\n var transportClass = strategy_builder_Transports[type];\n if (!transportClass) {\n throw new UnsupportedTransport(type);\n }\n var enabled = (!config.enabledTransports ||\n arrayIndexOf(config.enabledTransports, name) !== -1) &&\n (!config.disabledTransports ||\n arrayIndexOf(config.disabledTransports, name) === -1);\n var transport;\n if (enabled) {\n options = Object.assign({ ignoreNullOrigin: config.ignoreNullOrigin }, options);\n transport = new transport_strategy(name, priority, manager ? manager.getAssistant(transportClass) : transportClass, options);\n }\n else {\n transport = strategy_builder_UnsupportedStrategy;\n }\n return transport;\n};\nvar strategy_builder_UnsupportedStrategy = {\n isSupported: function () {\n return false;\n },\n connect: function (_, callback) {\n var deferred = util.defer(function () {\n callback(new UnsupportedStrategy());\n });\n return {\n abort: function () {\n deferred.ensureAborted();\n },\n forceMinPriority: function () { }\n };\n }\n};\n\n// CONCATENATED MODULE: ./src/core/auth/user_authenticator.ts\n\n\nvar composeChannelQuery = function (params, authOptions) {\n var query = 'socket_id=' + encodeURIComponent(params.socketId);\n for (var key in authOptions.params) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(authOptions.params[key]);\n }\n if (authOptions.paramsProvider != null) {\n var dynamicParams = authOptions.paramsProvider();\n for (var key in dynamicParams) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(dynamicParams[key]);\n }\n }\n return query;\n};\nvar UserAuthenticator = function (authOptions) {\n if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n throw \"'\" + authOptions.transport + \"' is not a recognized auth transport\";\n }\n return function (params, callback) {\n var query = composeChannelQuery(params, authOptions);\n runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.UserAuthentication, callback);\n };\n};\n/* harmony default export */ var user_authenticator = (UserAuthenticator);\n\n// CONCATENATED MODULE: ./src/core/auth/channel_authorizer.ts\n\n\nvar channel_authorizer_composeChannelQuery = function (params, authOptions) {\n var query = 'socket_id=' + encodeURIComponent(params.socketId);\n query += '&channel_name=' + encodeURIComponent(params.channelName);\n for (var key in authOptions.params) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(authOptions.params[key]);\n }\n if (authOptions.paramsProvider != null) {\n var dynamicParams = authOptions.paramsProvider();\n for (var key in dynamicParams) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(dynamicParams[key]);\n }\n }\n return query;\n};\nvar ChannelAuthorizer = function (authOptions) {\n if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n throw \"'\" + authOptions.transport + \"' is not a recognized auth transport\";\n }\n return function (params, callback) {\n var query = channel_authorizer_composeChannelQuery(params, authOptions);\n runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.ChannelAuthorization, callback);\n };\n};\n/* harmony default export */ var channel_authorizer = (ChannelAuthorizer);\n\n// CONCATENATED MODULE: ./src/core/auth/deprecated_channel_authorizer.ts\nvar ChannelAuthorizerProxy = function (pusher, authOptions, channelAuthorizerGenerator) {\n var deprecatedAuthorizerOptions = {\n authTransport: authOptions.transport,\n authEndpoint: authOptions.endpoint,\n auth: {\n params: authOptions.params,\n headers: authOptions.headers\n }\n };\n return function (params, callback) {\n var channel = pusher.channel(params.channelName);\n var channelAuthorizer = channelAuthorizerGenerator(channel, deprecatedAuthorizerOptions);\n channelAuthorizer.authorize(params.socketId, callback);\n };\n};\n\n// CONCATENATED MODULE: ./src/core/config.ts\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\nfunction getConfig(opts, pusher) {\n var config = {\n activityTimeout: opts.activityTimeout || defaults.activityTimeout,\n cluster: opts.cluster || defaults.cluster,\n httpPath: opts.httpPath || defaults.httpPath,\n httpPort: opts.httpPort || defaults.httpPort,\n httpsPort: opts.httpsPort || defaults.httpsPort,\n pongTimeout: opts.pongTimeout || defaults.pongTimeout,\n statsHost: opts.statsHost || defaults.stats_host,\n unavailableTimeout: opts.unavailableTimeout || defaults.unavailableTimeout,\n wsPath: opts.wsPath || defaults.wsPath,\n wsPort: opts.wsPort || defaults.wsPort,\n wssPort: opts.wssPort || defaults.wssPort,\n enableStats: getEnableStatsConfig(opts),\n httpHost: getHttpHost(opts),\n useTLS: shouldUseTLS(opts),\n wsHost: getWebsocketHost(opts),\n userAuthenticator: buildUserAuthenticator(opts),\n channelAuthorizer: buildChannelAuthorizer(opts, pusher)\n };\n if ('disabledTransports' in opts)\n config.disabledTransports = opts.disabledTransports;\n if ('enabledTransports' in opts)\n config.enabledTransports = opts.enabledTransports;\n if ('ignoreNullOrigin' in opts)\n config.ignoreNullOrigin = opts.ignoreNullOrigin;\n if ('timelineParams' in opts)\n config.timelineParams = opts.timelineParams;\n if ('nacl' in opts) {\n config.nacl = opts.nacl;\n }\n return config;\n}\nfunction getHttpHost(opts) {\n if (opts.httpHost) {\n return opts.httpHost;\n }\n if (opts.cluster) {\n return \"sockjs-\" + opts.cluster + \".pusher.com\";\n }\n return defaults.httpHost;\n}\nfunction getWebsocketHost(opts) {\n if (opts.wsHost) {\n return opts.wsHost;\n }\n if (opts.cluster) {\n return getWebsocketHostFromCluster(opts.cluster);\n }\n return getWebsocketHostFromCluster(defaults.cluster);\n}\nfunction getWebsocketHostFromCluster(cluster) {\n return \"ws-\" + cluster + \".pusher.com\";\n}\nfunction shouldUseTLS(opts) {\n if (runtime.getProtocol() === 'https:') {\n return true;\n }\n else if (opts.forceTLS === false) {\n return false;\n }\n return true;\n}\nfunction getEnableStatsConfig(opts) {\n if ('enableStats' in opts) {\n return opts.enableStats;\n }\n if ('disableStats' in opts) {\n return !opts.disableStats;\n }\n return false;\n}\nfunction buildUserAuthenticator(opts) {\n var userAuthentication = __assign(__assign({}, defaults.userAuthentication), opts.userAuthentication);\n if ('customHandler' in userAuthentication &&\n userAuthentication['customHandler'] != null) {\n return userAuthentication['customHandler'];\n }\n return user_authenticator(userAuthentication);\n}\nfunction buildChannelAuth(opts, pusher) {\n var channelAuthorization;\n if ('channelAuthorization' in opts) {\n channelAuthorization = __assign(__assign({}, defaults.channelAuthorization), opts.channelAuthorization);\n }\n else {\n channelAuthorization = {\n transport: opts.authTransport || defaults.authTransport,\n endpoint: opts.authEndpoint || defaults.authEndpoint\n };\n if ('auth' in opts) {\n if ('params' in opts.auth)\n channelAuthorization.params = opts.auth.params;\n if ('headers' in opts.auth)\n channelAuthorization.headers = opts.auth.headers;\n }\n if ('authorizer' in opts)\n channelAuthorization.customHandler = ChannelAuthorizerProxy(pusher, channelAuthorization, opts.authorizer);\n }\n return channelAuthorization;\n}\nfunction buildChannelAuthorizer(opts, pusher) {\n var channelAuthorization = buildChannelAuth(opts, pusher);\n if ('customHandler' in channelAuthorization &&\n channelAuthorization['customHandler'] != null) {\n return channelAuthorization['customHandler'];\n }\n return channel_authorizer(channelAuthorization);\n}\n\n// CONCATENATED MODULE: ./src/core/watchlist.ts\nvar watchlist_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\nvar watchlist_WatchlistFacade = (function (_super) {\n watchlist_extends(WatchlistFacade, _super);\n function WatchlistFacade(pusher) {\n var _this = _super.call(this, function (eventName, data) {\n logger.debug(\"No callbacks on watchlist events for \" + eventName);\n }) || this;\n _this.pusher = pusher;\n _this.bindWatchlistInternalEvent();\n return _this;\n }\n WatchlistFacade.prototype.handleEvent = function (pusherEvent) {\n var _this = this;\n pusherEvent.data.events.forEach(function (watchlistEvent) {\n _this.emit(watchlistEvent.name, watchlistEvent);\n });\n };\n WatchlistFacade.prototype.bindWatchlistInternalEvent = function () {\n var _this = this;\n this.pusher.connection.bind('message', function (pusherEvent) {\n var eventName = pusherEvent.event;\n if (eventName === 'pusher_internal:watchlist_events') {\n _this.handleEvent(pusherEvent);\n }\n });\n };\n return WatchlistFacade;\n}(dispatcher));\n/* harmony default export */ var watchlist = (watchlist_WatchlistFacade);\n\n// CONCATENATED MODULE: ./src/core/utils/flat_promise.ts\nfunction flatPromise() {\n var resolve, reject;\n var promise = new Promise(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n return { promise: promise, resolve: resolve, reject: reject };\n}\n/* harmony default export */ var flat_promise = (flatPromise);\n\n// CONCATENATED MODULE: ./src/core/user.ts\nvar user_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\nvar user_UserFacade = (function (_super) {\n user_extends(UserFacade, _super);\n function UserFacade(pusher) {\n var _this = _super.call(this, function (eventName, data) {\n logger.debug('No callbacks on user for ' + eventName);\n }) || this;\n _this.signin_requested = false;\n _this.user_data = null;\n _this.serverToUserChannel = null;\n _this.signinDonePromise = null;\n _this._signinDoneResolve = null;\n _this._onAuthorize = function (err, authData) {\n if (err) {\n logger.warn(\"Error during signin: \" + err);\n _this._cleanup();\n return;\n }\n _this.pusher.send_event('pusher:signin', {\n auth: authData.auth,\n user_data: authData.user_data\n });\n };\n _this.pusher = pusher;\n _this.pusher.connection.bind('state_change', function (_a) {\n var previous = _a.previous, current = _a.current;\n if (previous !== 'connected' && current === 'connected') {\n _this._signin();\n }\n if (previous === 'connected' && current !== 'connected') {\n _this._cleanup();\n _this._newSigninPromiseIfNeeded();\n }\n });\n _this.watchlist = new watchlist(pusher);\n _this.pusher.connection.bind('message', function (event) {\n var eventName = event.event;\n if (eventName === 'pusher:signin_success') {\n _this._onSigninSuccess(event.data);\n }\n if (_this.serverToUserChannel &&\n _this.serverToUserChannel.name === event.channel) {\n _this.serverToUserChannel.handleEvent(event);\n }\n });\n return _this;\n }\n UserFacade.prototype.signin = function () {\n if (this.signin_requested) {\n return;\n }\n this.signin_requested = true;\n this._signin();\n };\n UserFacade.prototype._signin = function () {\n if (!this.signin_requested) {\n return;\n }\n this._newSigninPromiseIfNeeded();\n if (this.pusher.connection.state !== 'connected') {\n return;\n }\n this.pusher.config.userAuthenticator({\n socketId: this.pusher.connection.socket_id\n }, this._onAuthorize);\n };\n UserFacade.prototype._onSigninSuccess = function (data) {\n try {\n this.user_data = JSON.parse(data.user_data);\n }\n catch (e) {\n logger.error(\"Failed parsing user data after signin: \" + data.user_data);\n this._cleanup();\n return;\n }\n if (typeof this.user_data.id !== 'string' || this.user_data.id === '') {\n logger.error(\"user_data doesn't contain an id. user_data: \" + this.user_data);\n this._cleanup();\n return;\n }\n this._signinDoneResolve();\n this._subscribeChannels();\n };\n UserFacade.prototype._subscribeChannels = function () {\n var _this = this;\n var ensure_subscribed = function (channel) {\n if (channel.subscriptionPending && channel.subscriptionCancelled) {\n channel.reinstateSubscription();\n }\n else if (!channel.subscriptionPending &&\n _this.pusher.connection.state === 'connected') {\n channel.subscribe();\n }\n };\n this.serverToUserChannel = new channels_channel(\"#server-to-user-\" + this.user_data.id, this.pusher);\n this.serverToUserChannel.bind_global(function (eventName, data) {\n if (eventName.indexOf('pusher_internal:') === 0 ||\n eventName.indexOf('pusher:') === 0) {\n return;\n }\n _this.emit(eventName, data);\n });\n ensure_subscribed(this.serverToUserChannel);\n };\n UserFacade.prototype._cleanup = function () {\n this.user_data = null;\n if (this.serverToUserChannel) {\n this.serverToUserChannel.unbind_all();\n this.serverToUserChannel.disconnect();\n this.serverToUserChannel = null;\n }\n if (this.signin_requested) {\n this._signinDoneResolve();\n }\n };\n UserFacade.prototype._newSigninPromiseIfNeeded = function () {\n if (!this.signin_requested) {\n return;\n }\n if (this.signinDonePromise && !this.signinDonePromise.done) {\n return;\n }\n var _a = flat_promise(), promise = _a.promise, resolve = _a.resolve, _ = _a.reject;\n promise.done = false;\n var setDone = function () {\n promise.done = true;\n };\n promise.then(setDone)[\"catch\"](setDone);\n this.signinDonePromise = promise;\n this._signinDoneResolve = resolve;\n };\n return UserFacade;\n}(dispatcher));\n/* harmony default export */ var user = (user_UserFacade);\n\n// CONCATENATED MODULE: ./src/core/pusher.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar pusher_Pusher = (function () {\n function Pusher(app_key, options) {\n var _this = this;\n checkAppKey(app_key);\n options = options || {};\n if (!options.cluster && !(options.wsHost || options.httpHost)) {\n var suffix = url_store.buildLogSuffix('javascriptQuickStart');\n logger.warn(\"You should always specify a cluster when connecting. \" + suffix);\n }\n if ('disableStats' in options) {\n logger.warn('The disableStats option is deprecated in favor of enableStats');\n }\n this.key = app_key;\n this.config = getConfig(options, this);\n this.channels = factory.createChannels();\n this.global_emitter = new dispatcher();\n this.sessionID = runtime.randomInt(1000000000);\n this.timeline = new timeline_timeline(this.key, this.sessionID, {\n cluster: this.config.cluster,\n features: Pusher.getClientFeatures(),\n params: this.config.timelineParams || {},\n limit: 50,\n level: timeline_level.INFO,\n version: defaults.VERSION\n });\n if (this.config.enableStats) {\n this.timelineSender = factory.createTimelineSender(this.timeline, {\n host: this.config.statsHost,\n path: '/timeline/v2/' + runtime.TimelineTransport.name\n });\n }\n var getStrategy = function (options) {\n return runtime.getDefaultStrategy(_this.config, options, strategy_builder_defineTransport);\n };\n this.connection = factory.createConnectionManager(this.key, {\n getStrategy: getStrategy,\n timeline: this.timeline,\n activityTimeout: this.config.activityTimeout,\n pongTimeout: this.config.pongTimeout,\n unavailableTimeout: this.config.unavailableTimeout,\n useTLS: Boolean(this.config.useTLS)\n });\n this.connection.bind('connected', function () {\n _this.subscribeAll();\n if (_this.timelineSender) {\n _this.timelineSender.send(_this.connection.isUsingTLS());\n }\n });\n this.connection.bind('message', function (event) {\n var eventName = event.event;\n var internal = eventName.indexOf('pusher_internal:') === 0;\n if (event.channel) {\n var channel = _this.channel(event.channel);\n if (channel) {\n channel.handleEvent(event);\n }\n }\n if (!internal) {\n _this.global_emitter.emit(event.event, event.data);\n }\n });\n this.connection.bind('connecting', function () {\n _this.channels.disconnect();\n });\n this.connection.bind('disconnected', function () {\n _this.channels.disconnect();\n });\n this.connection.bind('error', function (err) {\n logger.warn(err);\n });\n Pusher.instances.push(this);\n this.timeline.info({ instances: Pusher.instances.length });\n this.user = new user(this);\n if (Pusher.isReady) {\n this.connect();\n }\n }\n Pusher.ready = function () {\n Pusher.isReady = true;\n for (var i = 0, l = Pusher.instances.length; i < l; i++) {\n Pusher.instances[i].connect();\n }\n };\n Pusher.getClientFeatures = function () {\n return keys(filterObject({ ws: runtime.Transports.ws }, function (t) {\n return t.isSupported({});\n }));\n };\n Pusher.prototype.channel = function (name) {\n return this.channels.find(name);\n };\n Pusher.prototype.allChannels = function () {\n return this.channels.all();\n };\n Pusher.prototype.connect = function () {\n this.connection.connect();\n if (this.timelineSender) {\n if (!this.timelineSenderTimer) {\n var usingTLS = this.connection.isUsingTLS();\n var timelineSender = this.timelineSender;\n this.timelineSenderTimer = new PeriodicTimer(60000, function () {\n timelineSender.send(usingTLS);\n });\n }\n }\n };\n Pusher.prototype.disconnect = function () {\n this.connection.disconnect();\n if (this.timelineSenderTimer) {\n this.timelineSenderTimer.ensureAborted();\n this.timelineSenderTimer = null;\n }\n };\n Pusher.prototype.bind = function (event_name, callback, context) {\n this.global_emitter.bind(event_name, callback, context);\n return this;\n };\n Pusher.prototype.unbind = function (event_name, callback, context) {\n this.global_emitter.unbind(event_name, callback, context);\n return this;\n };\n Pusher.prototype.bind_global = function (callback) {\n this.global_emitter.bind_global(callback);\n return this;\n };\n Pusher.prototype.unbind_global = function (callback) {\n this.global_emitter.unbind_global(callback);\n return this;\n };\n Pusher.prototype.unbind_all = function (callback) {\n this.global_emitter.unbind_all();\n return this;\n };\n Pusher.prototype.subscribeAll = function () {\n var channelName;\n for (channelName in this.channels.channels) {\n if (this.channels.channels.hasOwnProperty(channelName)) {\n this.subscribe(channelName);\n }\n }\n };\n Pusher.prototype.subscribe = function (channel_name) {\n var channel = this.channels.add(channel_name, this);\n if (channel.subscriptionPending && channel.subscriptionCancelled) {\n channel.reinstateSubscription();\n }\n else if (!channel.subscriptionPending &&\n this.connection.state === 'connected') {\n channel.subscribe();\n }\n return channel;\n };\n Pusher.prototype.unsubscribe = function (channel_name) {\n var channel = this.channels.find(channel_name);\n if (channel && channel.subscriptionPending) {\n channel.cancelSubscription();\n }\n else {\n channel = this.channels.remove(channel_name);\n if (channel && channel.subscribed) {\n channel.unsubscribe();\n }\n }\n };\n Pusher.prototype.send_event = function (event_name, data, channel) {\n return this.connection.send_event(event_name, data, channel);\n };\n Pusher.prototype.shouldUseTLS = function () {\n return this.config.useTLS;\n };\n Pusher.prototype.signin = function () {\n this.user.signin();\n };\n Pusher.instances = [];\n Pusher.isReady = false;\n Pusher.logToConsole = false;\n Pusher.Runtime = runtime;\n Pusher.ScriptReceivers = runtime.ScriptReceivers;\n Pusher.DependenciesReceivers = runtime.DependenciesReceivers;\n Pusher.auth_callbacks = runtime.auth_callbacks;\n return Pusher;\n}());\n/* harmony default export */ var core_pusher = __webpack_exports__[\"default\"] = (pusher_Pusher);\nfunction checkAppKey(key) {\n if (key === null || key === undefined) {\n throw 'You must pass your app key when you instantiate Pusher.';\n }\n}\nruntime.setup(pusher_Pusher);\n\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pusher.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\n/**\r\n * This class represents a basic channel.\r\n */\nvar Channel = /*#__PURE__*/function () {\n function Channel() {\n _classCallCheck(this, Channel);\n }\n\n _createClass(Channel, [{\n key: \"listenForWhisper\",\n value:\n /**\r\n * Listen for a whisper event on the channel instance.\r\n */\n function listenForWhisper(event, callback) {\n return this.listen('.client-' + event, callback);\n }\n /**\r\n * Listen for an event on the channel instance.\r\n */\n\n }, {\n key: \"notification\",\n value: function notification(callback) {\n return this.listen('.Illuminate\\\\Notifications\\\\Events\\\\BroadcastNotificationCreated', callback);\n }\n /**\r\n * Stop listening for a whisper event on the channel instance.\r\n */\n\n }, {\n key: \"stopListeningForWhisper\",\n value: function stopListeningForWhisper(event, callback) {\n return this.stopListening('.client-' + event, callback);\n }\n }]);\n\n return Channel;\n}();\n\n/**\r\n * Event name formatter\r\n */\nvar EventFormatter = /*#__PURE__*/function () {\n /**\r\n * Create a new class instance.\r\n */\n function EventFormatter(namespace) {\n _classCallCheck(this, EventFormatter);\n\n this.setNamespace(namespace);\n }\n /**\r\n * Format the given event name.\r\n */\n\n\n _createClass(EventFormatter, [{\n key: \"format\",\n value: function format(event) {\n if (event.charAt(0) === '.' || event.charAt(0) === '\\\\') {\n return event.substr(1);\n } else if (this.namespace) {\n event = this.namespace + '.' + event;\n }\n\n return event.replace(/\\./g, '\\\\');\n }\n /**\r\n * Set the event namespace.\r\n */\n\n }, {\n key: \"setNamespace\",\n value: function setNamespace(value) {\n this.namespace = value;\n }\n }]);\n\n return EventFormatter;\n}();\n\n/**\r\n * This class represents a Pusher channel.\r\n */\n\nvar PusherChannel = /*#__PURE__*/function (_Channel) {\n _inherits(PusherChannel, _Channel);\n\n var _super = _createSuper(PusherChannel);\n\n /**\r\n * Create a new class instance.\r\n */\n function PusherChannel(pusher, name, options) {\n var _this;\n\n _classCallCheck(this, PusherChannel);\n\n _this = _super.call(this);\n _this.name = name;\n _this.pusher = pusher;\n _this.options = options;\n _this.eventFormatter = new EventFormatter(_this.options.namespace);\n\n _this.subscribe();\n\n return _this;\n }\n /**\r\n * Subscribe to a Pusher channel.\r\n */\n\n\n _createClass(PusherChannel, [{\n key: \"subscribe\",\n value: function subscribe() {\n this.subscription = this.pusher.subscribe(this.name);\n }\n /**\r\n * Unsubscribe from a Pusher channel.\r\n */\n\n }, {\n key: \"unsubscribe\",\n value: function unsubscribe() {\n this.pusher.unsubscribe(this.name);\n }\n /**\r\n * Listen for an event on the channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(event, callback) {\n this.on(this.eventFormatter.format(event), callback);\n return this;\n }\n /**\r\n * Listen for all events on the channel instance.\r\n */\n\n }, {\n key: \"listenToAll\",\n value: function listenToAll(callback) {\n var _this2 = this;\n\n this.subscription.bind_global(function (event, data) {\n if (event.startsWith('pusher:')) {\n return;\n }\n\n var namespace = _this2.options.namespace.replace(/\\./g, '\\\\');\n\n var formattedEvent = event.startsWith(namespace) ? event.substring(namespace.length + 1) : '.' + event;\n callback(formattedEvent, data);\n });\n return this;\n }\n /**\r\n * Stop listening for an event on the channel instance.\r\n */\n\n }, {\n key: \"stopListening\",\n value: function stopListening(event, callback) {\n if (callback) {\n this.subscription.unbind(this.eventFormatter.format(event), callback);\n } else {\n this.subscription.unbind(this.eventFormatter.format(event));\n }\n\n return this;\n }\n /**\r\n * Stop listening for all events on the channel instance.\r\n */\n\n }, {\n key: \"stopListeningToAll\",\n value: function stopListeningToAll(callback) {\n if (callback) {\n this.subscription.unbind_global(callback);\n } else {\n this.subscription.unbind_global();\n }\n\n return this;\n }\n /**\r\n * Register a callback to be called anytime a subscription succeeds.\r\n */\n\n }, {\n key: \"subscribed\",\n value: function subscribed(callback) {\n this.on('pusher:subscription_succeeded', function () {\n callback();\n });\n return this;\n }\n /**\r\n * Register a callback to be called anytime a subscription error occurs.\r\n */\n\n }, {\n key: \"error\",\n value: function error(callback) {\n this.on('pusher:subscription_error', function (status) {\n callback(status);\n });\n return this;\n }\n /**\r\n * Bind a channel to an event.\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, callback) {\n this.subscription.bind(event, callback);\n return this;\n }\n }]);\n\n return PusherChannel;\n}(Channel);\n\n/**\r\n * This class represents a Pusher private channel.\r\n */\n\nvar PusherPrivateChannel = /*#__PURE__*/function (_PusherChannel) {\n _inherits(PusherPrivateChannel, _PusherChannel);\n\n var _super = _createSuper(PusherPrivateChannel);\n\n function PusherPrivateChannel() {\n _classCallCheck(this, PusherPrivateChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PusherPrivateChannel, [{\n key: \"whisper\",\n value:\n /**\r\n * Trigger client event on the channel.\r\n */\n function whisper(eventName, data) {\n this.pusher.channels.channels[this.name].trigger(\"client-\".concat(eventName), data);\n return this;\n }\n }]);\n\n return PusherPrivateChannel;\n}(PusherChannel);\n\n/**\r\n * This class represents a Pusher private channel.\r\n */\n\nvar PusherEncryptedPrivateChannel = /*#__PURE__*/function (_PusherChannel) {\n _inherits(PusherEncryptedPrivateChannel, _PusherChannel);\n\n var _super = _createSuper(PusherEncryptedPrivateChannel);\n\n function PusherEncryptedPrivateChannel() {\n _classCallCheck(this, PusherEncryptedPrivateChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PusherEncryptedPrivateChannel, [{\n key: \"whisper\",\n value:\n /**\r\n * Trigger client event on the channel.\r\n */\n function whisper(eventName, data) {\n this.pusher.channels.channels[this.name].trigger(\"client-\".concat(eventName), data);\n return this;\n }\n }]);\n\n return PusherEncryptedPrivateChannel;\n}(PusherChannel);\n\n/**\r\n * This class represents a Pusher presence channel.\r\n */\n\nvar PusherPresenceChannel = /*#__PURE__*/function (_PusherChannel) {\n _inherits(PusherPresenceChannel, _PusherChannel);\n\n var _super = _createSuper(PusherPresenceChannel);\n\n function PusherPresenceChannel() {\n _classCallCheck(this, PusherPresenceChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PusherPresenceChannel, [{\n key: \"here\",\n value:\n /**\r\n * Register a callback to be called anytime the member list changes.\r\n */\n function here(callback) {\n this.on('pusher:subscription_succeeded', function (data) {\n callback(Object.keys(data.members).map(function (k) {\n return data.members[k];\n }));\n });\n return this;\n }\n /**\r\n * Listen for someone joining the channel.\r\n */\n\n }, {\n key: \"joining\",\n value: function joining(callback) {\n this.on('pusher:member_added', function (member) {\n callback(member.info);\n });\n return this;\n }\n /**\r\n * Listen for someone leaving the channel.\r\n */\n\n }, {\n key: \"leaving\",\n value: function leaving(callback) {\n this.on('pusher:member_removed', function (member) {\n callback(member.info);\n });\n return this;\n }\n /**\r\n * Trigger client event on the channel.\r\n */\n\n }, {\n key: \"whisper\",\n value: function whisper(eventName, data) {\n this.pusher.channels.channels[this.name].trigger(\"client-\".concat(eventName), data);\n return this;\n }\n }]);\n\n return PusherPresenceChannel;\n}(PusherChannel);\n\n/**\r\n * This class represents a Socket.io channel.\r\n */\n\nvar SocketIoChannel = /*#__PURE__*/function (_Channel) {\n _inherits(SocketIoChannel, _Channel);\n\n var _super = _createSuper(SocketIoChannel);\n\n /**\r\n * Create a new class instance.\r\n */\n function SocketIoChannel(socket, name, options) {\n var _this;\n\n _classCallCheck(this, SocketIoChannel);\n\n _this = _super.call(this);\n /**\r\n * The event callbacks applied to the socket.\r\n */\n\n _this.events = {};\n /**\r\n * User supplied callbacks for events on this channel.\r\n */\n\n _this.listeners = {};\n _this.name = name;\n _this.socket = socket;\n _this.options = options;\n _this.eventFormatter = new EventFormatter(_this.options.namespace);\n\n _this.subscribe();\n\n return _this;\n }\n /**\r\n * Subscribe to a Socket.io channel.\r\n */\n\n\n _createClass(SocketIoChannel, [{\n key: \"subscribe\",\n value: function subscribe() {\n this.socket.emit('subscribe', {\n channel: this.name,\n auth: this.options.auth || {}\n });\n }\n /**\r\n * Unsubscribe from channel and ubind event callbacks.\r\n */\n\n }, {\n key: \"unsubscribe\",\n value: function unsubscribe() {\n this.unbind();\n this.socket.emit('unsubscribe', {\n channel: this.name,\n auth: this.options.auth || {}\n });\n }\n /**\r\n * Listen for an event on the channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(event, callback) {\n this.on(this.eventFormatter.format(event), callback);\n return this;\n }\n /**\r\n * Stop listening for an event on the channel instance.\r\n */\n\n }, {\n key: \"stopListening\",\n value: function stopListening(event, callback) {\n this.unbindEvent(this.eventFormatter.format(event), callback);\n return this;\n }\n /**\r\n * Register a callback to be called anytime a subscription succeeds.\r\n */\n\n }, {\n key: \"subscribed\",\n value: function subscribed(callback) {\n this.on('connect', function (socket) {\n callback(socket);\n });\n return this;\n }\n /**\r\n * Register a callback to be called anytime an error occurs.\r\n */\n\n }, {\n key: \"error\",\n value: function error(callback) {\n return this;\n }\n /**\r\n * Bind the channel's socket to an event and store the callback.\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, callback) {\n var _this2 = this;\n\n this.listeners[event] = this.listeners[event] || [];\n\n if (!this.events[event]) {\n this.events[event] = function (channel, data) {\n if (_this2.name === channel && _this2.listeners[event]) {\n _this2.listeners[event].forEach(function (cb) {\n return cb(data);\n });\n }\n };\n\n this.socket.on(event, this.events[event]);\n }\n\n this.listeners[event].push(callback);\n return this;\n }\n /**\r\n * Unbind the channel's socket from all stored event callbacks.\r\n */\n\n }, {\n key: \"unbind\",\n value: function unbind() {\n var _this3 = this;\n\n Object.keys(this.events).forEach(function (event) {\n _this3.unbindEvent(event);\n });\n }\n /**\r\n * Unbind the listeners for the given event.\r\n */\n\n }, {\n key: \"unbindEvent\",\n value: function unbindEvent(event, callback) {\n this.listeners[event] = this.listeners[event] || [];\n\n if (callback) {\n this.listeners[event] = this.listeners[event].filter(function (cb) {\n return cb !== callback;\n });\n }\n\n if (!callback || this.listeners[event].length === 0) {\n if (this.events[event]) {\n this.socket.removeListener(event, this.events[event]);\n delete this.events[event];\n }\n\n delete this.listeners[event];\n }\n }\n }]);\n\n return SocketIoChannel;\n}(Channel);\n\n/**\r\n * This class represents a Socket.io private channel.\r\n */\n\nvar SocketIoPrivateChannel = /*#__PURE__*/function (_SocketIoChannel) {\n _inherits(SocketIoPrivateChannel, _SocketIoChannel);\n\n var _super = _createSuper(SocketIoPrivateChannel);\n\n function SocketIoPrivateChannel() {\n _classCallCheck(this, SocketIoPrivateChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(SocketIoPrivateChannel, [{\n key: \"whisper\",\n value:\n /**\r\n * Trigger client event on the channel.\r\n */\n function whisper(eventName, data) {\n this.socket.emit('client event', {\n channel: this.name,\n event: \"client-\".concat(eventName),\n data: data\n });\n return this;\n }\n }]);\n\n return SocketIoPrivateChannel;\n}(SocketIoChannel);\n\n/**\r\n * This class represents a Socket.io presence channel.\r\n */\n\nvar SocketIoPresenceChannel = /*#__PURE__*/function (_SocketIoPrivateChann) {\n _inherits(SocketIoPresenceChannel, _SocketIoPrivateChann);\n\n var _super = _createSuper(SocketIoPresenceChannel);\n\n function SocketIoPresenceChannel() {\n _classCallCheck(this, SocketIoPresenceChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(SocketIoPresenceChannel, [{\n key: \"here\",\n value:\n /**\r\n * Register a callback to be called anytime the member list changes.\r\n */\n function here(callback) {\n this.on('presence:subscribed', function (members) {\n callback(members.map(function (m) {\n return m.user_info;\n }));\n });\n return this;\n }\n /**\r\n * Listen for someone joining the channel.\r\n */\n\n }, {\n key: \"joining\",\n value: function joining(callback) {\n this.on('presence:joining', function (member) {\n return callback(member.user_info);\n });\n return this;\n }\n /**\r\n * Listen for someone leaving the channel.\r\n */\n\n }, {\n key: \"leaving\",\n value: function leaving(callback) {\n this.on('presence:leaving', function (member) {\n return callback(member.user_info);\n });\n return this;\n }\n }]);\n\n return SocketIoPresenceChannel;\n}(SocketIoPrivateChannel);\n\n/**\r\n * This class represents a null channel.\r\n */\n\nvar NullChannel = /*#__PURE__*/function (_Channel) {\n _inherits(NullChannel, _Channel);\n\n var _super = _createSuper(NullChannel);\n\n function NullChannel() {\n _classCallCheck(this, NullChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(NullChannel, [{\n key: \"subscribe\",\n value:\n /**\r\n * Subscribe to a channel.\r\n */\n function subscribe() {//\n }\n /**\r\n * Unsubscribe from a channel.\r\n */\n\n }, {\n key: \"unsubscribe\",\n value: function unsubscribe() {//\n }\n /**\r\n * Listen for an event on the channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(event, callback) {\n return this;\n }\n /**\r\n * Listen for all events on the channel instance.\r\n */\n\n }, {\n key: \"listenToAll\",\n value: function listenToAll(callback) {\n return this;\n }\n /**\r\n * Stop listening for an event on the channel instance.\r\n */\n\n }, {\n key: \"stopListening\",\n value: function stopListening(event, callback) {\n return this;\n }\n /**\r\n * Register a callback to be called anytime a subscription succeeds.\r\n */\n\n }, {\n key: \"subscribed\",\n value: function subscribed(callback) {\n return this;\n }\n /**\r\n * Register a callback to be called anytime an error occurs.\r\n */\n\n }, {\n key: \"error\",\n value: function error(callback) {\n return this;\n }\n /**\r\n * Bind a channel to an event.\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, callback) {\n return this;\n }\n }]);\n\n return NullChannel;\n}(Channel);\n\n/**\r\n * This class represents a null private channel.\r\n */\n\nvar NullPrivateChannel = /*#__PURE__*/function (_NullChannel) {\n _inherits(NullPrivateChannel, _NullChannel);\n\n var _super = _createSuper(NullPrivateChannel);\n\n function NullPrivateChannel() {\n _classCallCheck(this, NullPrivateChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(NullPrivateChannel, [{\n key: \"whisper\",\n value:\n /**\r\n * Trigger client event on the channel.\r\n */\n function whisper(eventName, data) {\n return this;\n }\n }]);\n\n return NullPrivateChannel;\n}(NullChannel);\n\n/**\r\n * This class represents a null presence channel.\r\n */\n\nvar NullPresenceChannel = /*#__PURE__*/function (_NullChannel) {\n _inherits(NullPresenceChannel, _NullChannel);\n\n var _super = _createSuper(NullPresenceChannel);\n\n function NullPresenceChannel() {\n _classCallCheck(this, NullPresenceChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(NullPresenceChannel, [{\n key: \"here\",\n value:\n /**\r\n * Register a callback to be called anytime the member list changes.\r\n */\n function here(callback) {\n return this;\n }\n /**\r\n * Listen for someone joining the channel.\r\n */\n\n }, {\n key: \"joining\",\n value: function joining(callback) {\n return this;\n }\n /**\r\n * Listen for someone leaving the channel.\r\n */\n\n }, {\n key: \"leaving\",\n value: function leaving(callback) {\n return this;\n }\n /**\r\n * Trigger client event on the channel.\r\n */\n\n }, {\n key: \"whisper\",\n value: function whisper(eventName, data) {\n return this;\n }\n }]);\n\n return NullPresenceChannel;\n}(NullChannel);\n\nvar Connector = /*#__PURE__*/function () {\n /**\r\n * Create a new class instance.\r\n */\n function Connector(options) {\n _classCallCheck(this, Connector);\n\n /**\r\n * Default connector options.\r\n */\n this._defaultOptions = {\n auth: {\n headers: {}\n },\n authEndpoint: '/broadcasting/auth',\n userAuthentication: {\n endpoint: '/broadcasting/user-auth',\n headers: {}\n },\n broadcaster: 'pusher',\n csrfToken: null,\n bearerToken: null,\n host: null,\n key: null,\n namespace: 'App.Events'\n };\n this.setOptions(options);\n this.connect();\n }\n /**\r\n * Merge the custom options with the defaults.\r\n */\n\n\n _createClass(Connector, [{\n key: \"setOptions\",\n value: function setOptions(options) {\n this.options = _extends(this._defaultOptions, options);\n var token = this.csrfToken();\n\n if (token) {\n this.options.auth.headers['X-CSRF-TOKEN'] = token;\n this.options.userAuthentication.headers['X-CSRF-TOKEN'] = token;\n }\n\n token = this.options.bearerToken;\n\n if (token) {\n this.options.auth.headers['Authorization'] = 'Bearer ' + token;\n this.options.userAuthentication.headers['Authorization'] = 'Bearer ' + token;\n }\n\n return options;\n }\n /**\r\n * Extract the CSRF token from the page.\r\n */\n\n }, {\n key: \"csrfToken\",\n value: function csrfToken() {\n var selector;\n\n if (typeof window !== 'undefined' && window['Laravel'] && window['Laravel'].csrfToken) {\n return window['Laravel'].csrfToken;\n } else if (this.options.csrfToken) {\n return this.options.csrfToken;\n } else if (typeof document !== 'undefined' && typeof document.querySelector === 'function' && (selector = document.querySelector('meta[name=\"csrf-token\"]'))) {\n return selector.getAttribute('content');\n }\n\n return null;\n }\n }]);\n\n return Connector;\n}();\n\n/**\r\n * This class creates a connector to Pusher.\r\n */\n\nvar PusherConnector = /*#__PURE__*/function (_Connector) {\n _inherits(PusherConnector, _Connector);\n\n var _super = _createSuper(PusherConnector);\n\n function PusherConnector() {\n var _this;\n\n _classCallCheck(this, PusherConnector);\n\n _this = _super.apply(this, arguments);\n /**\r\n * All of the subscribed channel names.\r\n */\n\n _this.channels = {};\n return _this;\n }\n /**\r\n * Create a fresh Pusher connection.\r\n */\n\n\n _createClass(PusherConnector, [{\n key: \"connect\",\n value: function connect() {\n if (typeof this.options.client !== 'undefined') {\n this.pusher = this.options.client;\n } else if (this.options.Pusher) {\n this.pusher = new this.options.Pusher(this.options.key, this.options);\n } else {\n this.pusher = new Pusher(this.options.key, this.options);\n }\n }\n /**\r\n * Sign in the user via Pusher user authentication (https://pusher.com/docs/channels/using_channels/user-authentication/).\r\n */\n\n }, {\n key: \"signin\",\n value: function signin() {\n this.pusher.signin();\n }\n /**\r\n * Listen for an event on a channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(name, event, callback) {\n return this.channel(name).listen(event, callback);\n }\n /**\r\n * Get a channel instance by name.\r\n */\n\n }, {\n key: \"channel\",\n value: function channel(name) {\n if (!this.channels[name]) {\n this.channels[name] = new PusherChannel(this.pusher, name, this.options);\n }\n\n return this.channels[name];\n }\n /**\r\n * Get a private channel instance by name.\r\n */\n\n }, {\n key: \"privateChannel\",\n value: function privateChannel(name) {\n if (!this.channels['private-' + name]) {\n this.channels['private-' + name] = new PusherPrivateChannel(this.pusher, 'private-' + name, this.options);\n }\n\n return this.channels['private-' + name];\n }\n /**\r\n * Get a private encrypted channel instance by name.\r\n */\n\n }, {\n key: \"encryptedPrivateChannel\",\n value: function encryptedPrivateChannel(name) {\n if (!this.channels['private-encrypted-' + name]) {\n this.channels['private-encrypted-' + name] = new PusherEncryptedPrivateChannel(this.pusher, 'private-encrypted-' + name, this.options);\n }\n\n return this.channels['private-encrypted-' + name];\n }\n /**\r\n * Get a presence channel instance by name.\r\n */\n\n }, {\n key: \"presenceChannel\",\n value: function presenceChannel(name) {\n if (!this.channels['presence-' + name]) {\n this.channels['presence-' + name] = new PusherPresenceChannel(this.pusher, 'presence-' + name, this.options);\n }\n\n return this.channels['presence-' + name];\n }\n /**\r\n * Leave the given channel, as well as its private and presence variants.\r\n */\n\n }, {\n key: \"leave\",\n value: function leave(name) {\n var _this2 = this;\n\n var channels = [name, 'private-' + name, 'private-encrypted-' + name, 'presence-' + name];\n channels.forEach(function (name, index) {\n _this2.leaveChannel(name);\n });\n }\n /**\r\n * Leave the given channel.\r\n */\n\n }, {\n key: \"leaveChannel\",\n value: function leaveChannel(name) {\n if (this.channels[name]) {\n this.channels[name].unsubscribe();\n delete this.channels[name];\n }\n }\n /**\r\n * Get the socket ID for the connection.\r\n */\n\n }, {\n key: \"socketId\",\n value: function socketId() {\n return this.pusher.connection.socket_id;\n }\n /**\r\n * Disconnect Pusher connection.\r\n */\n\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n this.pusher.disconnect();\n }\n }]);\n\n return PusherConnector;\n}(Connector);\n\n/**\r\n * This class creates a connnector to a Socket.io server.\r\n */\n\nvar SocketIoConnector = /*#__PURE__*/function (_Connector) {\n _inherits(SocketIoConnector, _Connector);\n\n var _super = _createSuper(SocketIoConnector);\n\n function SocketIoConnector() {\n var _this;\n\n _classCallCheck(this, SocketIoConnector);\n\n _this = _super.apply(this, arguments);\n /**\r\n * All of the subscribed channel names.\r\n */\n\n _this.channels = {};\n return _this;\n }\n /**\r\n * Create a fresh Socket.io connection.\r\n */\n\n\n _createClass(SocketIoConnector, [{\n key: \"connect\",\n value: function connect() {\n var _this2 = this;\n\n var io = this.getSocketIO();\n this.socket = io(this.options.host, this.options);\n this.socket.on('reconnect', function () {\n Object.values(_this2.channels).forEach(function (channel) {\n channel.subscribe();\n });\n });\n return this.socket;\n }\n /**\r\n * Get socket.io module from global scope or options.\r\n */\n\n }, {\n key: \"getSocketIO\",\n value: function getSocketIO() {\n if (typeof this.options.client !== 'undefined') {\n return this.options.client;\n }\n\n if (typeof io !== 'undefined') {\n return io;\n }\n\n throw new Error('Socket.io client not found. Should be globally available or passed via options.client');\n }\n /**\r\n * Listen for an event on a channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(name, event, callback) {\n return this.channel(name).listen(event, callback);\n }\n /**\r\n * Get a channel instance by name.\r\n */\n\n }, {\n key: \"channel\",\n value: function channel(name) {\n if (!this.channels[name]) {\n this.channels[name] = new SocketIoChannel(this.socket, name, this.options);\n }\n\n return this.channels[name];\n }\n /**\r\n * Get a private channel instance by name.\r\n */\n\n }, {\n key: \"privateChannel\",\n value: function privateChannel(name) {\n if (!this.channels['private-' + name]) {\n this.channels['private-' + name] = new SocketIoPrivateChannel(this.socket, 'private-' + name, this.options);\n }\n\n return this.channels['private-' + name];\n }\n /**\r\n * Get a presence channel instance by name.\r\n */\n\n }, {\n key: \"presenceChannel\",\n value: function presenceChannel(name) {\n if (!this.channels['presence-' + name]) {\n this.channels['presence-' + name] = new SocketIoPresenceChannel(this.socket, 'presence-' + name, this.options);\n }\n\n return this.channels['presence-' + name];\n }\n /**\r\n * Leave the given channel, as well as its private and presence variants.\r\n */\n\n }, {\n key: \"leave\",\n value: function leave(name) {\n var _this3 = this;\n\n var channels = [name, 'private-' + name, 'presence-' + name];\n channels.forEach(function (name) {\n _this3.leaveChannel(name);\n });\n }\n /**\r\n * Leave the given channel.\r\n */\n\n }, {\n key: \"leaveChannel\",\n value: function leaveChannel(name) {\n if (this.channels[name]) {\n this.channels[name].unsubscribe();\n delete this.channels[name];\n }\n }\n /**\r\n * Get the socket ID for the connection.\r\n */\n\n }, {\n key: \"socketId\",\n value: function socketId() {\n return this.socket.id;\n }\n /**\r\n * Disconnect Socketio connection.\r\n */\n\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n this.socket.disconnect();\n }\n }]);\n\n return SocketIoConnector;\n}(Connector);\n\n/**\r\n * This class creates a null connector.\r\n */\n\nvar NullConnector = /*#__PURE__*/function (_Connector) {\n _inherits(NullConnector, _Connector);\n\n var _super = _createSuper(NullConnector);\n\n function NullConnector() {\n var _this;\n\n _classCallCheck(this, NullConnector);\n\n _this = _super.apply(this, arguments);\n /**\r\n * All of the subscribed channel names.\r\n */\n\n _this.channels = {};\n return _this;\n }\n /**\r\n * Create a fresh connection.\r\n */\n\n\n _createClass(NullConnector, [{\n key: \"connect\",\n value: function connect() {//\n }\n /**\r\n * Listen for an event on a channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(name, event, callback) {\n return new NullChannel();\n }\n /**\r\n * Get a channel instance by name.\r\n */\n\n }, {\n key: \"channel\",\n value: function channel(name) {\n return new NullChannel();\n }\n /**\r\n * Get a private channel instance by name.\r\n */\n\n }, {\n key: \"privateChannel\",\n value: function privateChannel(name) {\n return new NullPrivateChannel();\n }\n /**\r\n * Get a private encrypted channel instance by name.\r\n */\n\n }, {\n key: \"encryptedPrivateChannel\",\n value: function encryptedPrivateChannel(name) {\n return new NullPrivateChannel();\n }\n /**\r\n * Get a presence channel instance by name.\r\n */\n\n }, {\n key: \"presenceChannel\",\n value: function presenceChannel(name) {\n return new NullPresenceChannel();\n }\n /**\r\n * Leave the given channel, as well as its private and presence variants.\r\n */\n\n }, {\n key: \"leave\",\n value: function leave(name) {//\n }\n /**\r\n * Leave the given channel.\r\n */\n\n }, {\n key: \"leaveChannel\",\n value: function leaveChannel(name) {//\n }\n /**\r\n * Get the socket ID for the connection.\r\n */\n\n }, {\n key: \"socketId\",\n value: function socketId() {\n return 'fake-socket-id';\n }\n /**\r\n * Disconnect the connection.\r\n */\n\n }, {\n key: \"disconnect\",\n value: function disconnect() {//\n }\n }]);\n\n return NullConnector;\n}(Connector);\n\n/**\r\n * This class is the primary API for interacting with broadcasting.\r\n */\n\nvar Echo = /*#__PURE__*/function () {\n /**\r\n * Create a new class instance.\r\n */\n function Echo(options) {\n _classCallCheck(this, Echo);\n\n this.options = options;\n this.connect();\n\n if (!this.options.withoutInterceptors) {\n this.registerInterceptors();\n }\n }\n /**\r\n * Get a channel instance by name.\r\n */\n\n\n _createClass(Echo, [{\n key: \"channel\",\n value: function channel(_channel) {\n return this.connector.channel(_channel);\n }\n /**\r\n * Create a new connection.\r\n */\n\n }, {\n key: \"connect\",\n value: function connect() {\n if (this.options.broadcaster == 'pusher') {\n this.connector = new PusherConnector(this.options);\n } else if (this.options.broadcaster == 'socket.io') {\n this.connector = new SocketIoConnector(this.options);\n } else if (this.options.broadcaster == 'null') {\n this.connector = new NullConnector(this.options);\n } else if (typeof this.options.broadcaster == 'function') {\n this.connector = new this.options.broadcaster(this.options);\n }\n }\n /**\r\n * Disconnect from the Echo server.\r\n */\n\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n this.connector.disconnect();\n }\n /**\r\n * Get a presence channel instance by name.\r\n */\n\n }, {\n key: \"join\",\n value: function join(channel) {\n return this.connector.presenceChannel(channel);\n }\n /**\r\n * Leave the given channel, as well as its private and presence variants.\r\n */\n\n }, {\n key: \"leave\",\n value: function leave(channel) {\n this.connector.leave(channel);\n }\n /**\r\n * Leave the given channel.\r\n */\n\n }, {\n key: \"leaveChannel\",\n value: function leaveChannel(channel) {\n this.connector.leaveChannel(channel);\n }\n /**\r\n * Leave all channels.\r\n */\n\n }, {\n key: \"leaveAllChannels\",\n value: function leaveAllChannels() {\n for (var channel in this.connector.channels) {\n this.leaveChannel(channel);\n }\n }\n /**\r\n * Listen for an event on a channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(channel, event, callback) {\n return this.connector.listen(channel, event, callback);\n }\n /**\r\n * Get a private channel instance by name.\r\n */\n\n }, {\n key: \"private\",\n value: function _private(channel) {\n return this.connector.privateChannel(channel);\n }\n /**\r\n * Get a private encrypted channel instance by name.\r\n */\n\n }, {\n key: \"encryptedPrivate\",\n value: function encryptedPrivate(channel) {\n return this.connector.encryptedPrivateChannel(channel);\n }\n /**\r\n * Get the Socket ID for the connection.\r\n */\n\n }, {\n key: \"socketId\",\n value: function socketId() {\n return this.connector.socketId();\n }\n /**\r\n * Register 3rd party request interceptiors. These are used to automatically\r\n * send a connections socket id to a Laravel app with a X-Socket-Id header.\r\n */\n\n }, {\n key: \"registerInterceptors\",\n value: function registerInterceptors() {\n if (typeof Vue === 'function' && Vue.http) {\n this.registerVueRequestInterceptor();\n }\n\n if (typeof axios === 'function') {\n this.registerAxiosRequestInterceptor();\n }\n\n if (typeof jQuery === 'function') {\n this.registerjQueryAjaxSetup();\n }\n\n if ((typeof Turbo === \"undefined\" ? \"undefined\" : _typeof(Turbo)) === 'object') {\n this.registerTurboRequestInterceptor();\n }\n }\n /**\r\n * Register a Vue HTTP interceptor to add the X-Socket-ID header.\r\n */\n\n }, {\n key: \"registerVueRequestInterceptor\",\n value: function registerVueRequestInterceptor() {\n var _this = this;\n\n Vue.http.interceptors.push(function (request, next) {\n if (_this.socketId()) {\n request.headers.set('X-Socket-ID', _this.socketId());\n }\n\n next();\n });\n }\n /**\r\n * Register an Axios HTTP interceptor to add the X-Socket-ID header.\r\n */\n\n }, {\n key: \"registerAxiosRequestInterceptor\",\n value: function registerAxiosRequestInterceptor() {\n var _this2 = this;\n\n axios.interceptors.request.use(function (config) {\n if (_this2.socketId()) {\n config.headers['X-Socket-Id'] = _this2.socketId();\n }\n\n return config;\n });\n }\n /**\r\n * Register jQuery AjaxPrefilter to add the X-Socket-ID header.\r\n */\n\n }, {\n key: \"registerjQueryAjaxSetup\",\n value: function registerjQueryAjaxSetup() {\n var _this3 = this;\n\n if (typeof jQuery.ajax != 'undefined') {\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (_this3.socketId()) {\n xhr.setRequestHeader('X-Socket-Id', _this3.socketId());\n }\n });\n }\n }\n /**\r\n * Register the Turbo Request interceptor to add the X-Socket-ID header.\r\n */\n\n }, {\n key: \"registerTurboRequestInterceptor\",\n value: function registerTurboRequestInterceptor() {\n var _this4 = this;\n\n document.addEventListener('turbo:before-fetch-request', function (event) {\n event.detail.fetchOptions.headers['X-Socket-Id'] = _this4.socketId();\n });\n }\n }]);\n\n return Echo;\n}();\n\nexport { Channel, Echo as default };\n","import Echo from \"laravel-echo\";\n\nwindow.Pusher = require(\"pusher-js\");\n\nwindow.Echo = new Echo({\n broadcaster: \"pusher\",\n key: process.env.MIX_PUSHER_APP_KEY,\n cluster: process.env.MIX_PUSHER_APP_CLUSTER,\n forceTLS: true,\n});\n\n// forceTLS: false,\n// wsHost: window.location.hostname,\n// wsPort: 6001,\n// wssPort: 6001,\n// disableStats: true,\n"],"names":["factory","window","modules","installedModules","moduleId","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_require__","extendStatics","__extends","this","b","setPrototypeOf","__proto__","Array","__","constructor","INVALID_BYTE","Coder","_paddingCharacter","encodedLength","length","encode","data","out","_encodeByte","left","maxDecodedLength","decodedLength","_getPaddingLength","decode","Uint8Array","paddingLength","op","haveBad","v0","v1","v2","v3","_decodeChar","charCodeAt","Error","result","String","fromCharCode","stdCoder","URLSafeCoder","_super","apply","arguments","urlSafeCoder","encodeURLSafe","decodeURLSafe","INVALID_UTF16","INVALID_UTF8","arr","pos","chars","min","n1","n2","n3","push","join","default","__webpack_exports__","AuthRequestType","ScriptReceiverFactory","prefix","lastId","callback","number","id","called","callbackWrapper","remove","receiver","ScriptReceivers","defaults","VERSION","PROTOCOL","wsPort","wssPort","wsPath","httpHost","httpPort","httpsPort","httpPath","stats_host","authEndpoint","authTransport","activityTimeout","pongTimeout","unavailableTimeout","cluster","userAuthentication","endpoint","transport","channelAuthorization","cdn_http","cdn_https","dependency_suffix","dependency_loader","DependencyLoader","options","receivers","loading","load","self","request","runtime","createScriptRequest","getPath","error","callbacks","successCallback","wasSuccessful","cleanup","send","getRoot","protocol","getDocument","location","useTLS","replace","version","suffix","DependenciesReceivers","Dependencies","urlStore","baseUrl","urls","authenticationEndpoint","path","authorizationEndpoint","javascriptQuickStart","triggeringClientEvents","encryptedChannelSupport","fullUrl","url_store","buildLogSuffix","url","urlObj","urlPrefix","BadEventName","msg","_newTarget","_this","BadChannelName","RequestTimedOut","TransportPriorityTooLow","TransportClosed","UnsupportedFeature","UnsupportedTransport","UnsupportedStrategy","HTTPAuthError","status","xhr_auth","context","query","authOptions","authRequestType","xhr","createXHR","headerName","open","setRequestHeader","headers","headersProvider","dynamicHeaders","onreadystatechange","readyState","parsed","JSON","parse","responseText","e","toString","UserAuthentication","ChannelAuthorization","b64chars","b64tab","base64_i","charAt","cb_utob","cc","utob","u","cb_encode","ccc","padlen","ord","btoa","abstract_timer","Timer","set","clear","delay","timer","isRunning","ensureAborted","timers_extends","timers_clearTimeout","clearTimeout","timers_clearInterval","clearInterval","OneOffTimer","setTimeout","PeriodicTimer","setInterval","Util","now","Date","valueOf","defer","method","args","_i","boundArguments","slice","concat","util","extend","target","sources","extensions","stringify","safeJSONStringify","arrayIndexOf","array","item","nativeIndexOf","indexOf","objectApply","f","keys","_","map","filter","test","filterObject","Boolean","any","encodeParamsObject","encodeURIComponent","buildQueryString","params","undefined","source","objects","paths","derez","nu","$ref","logger_Logger","Logger","globalLog","message","console","log","debug","warn","globalLogWarn","globalLogError","defaultLoggingFunction","core_pusher","logToConsole","logger","jsonp_auth","callbackName","nextAuthCallbackID","document","script","createElement","auth_callbacks","callback_name","src","head","getElementsByTagName","documentElement","insertBefore","firstChild","script_request","ScriptRequest","errorString","type","charset","addEventListener","onerror","onload","async","attachEvent","navigator","userAgent","errorScript","text","nextSibling","parentNode","removeChild","jsonp_request","JSONPRequest","jsonp_timeline","getAgent","sender","host","createJSONPRequest","getGenericURL","baseScheme","hostTLS","hostNonTLS","getGenericPath","queryString","ws","getInitial","http","sockjs","callback_registry","CallbackRegistry","_callbacks","add","prefixedEventName","fn","names","removeCallback","removeAllCallbacks","binding","dispatcher","Dispatcher","failThrough","global_callbacks","eventName","bind_global","unbind","unbind_global","unbind_all","emit","metadata","transport_connection_extends","transport_connection_TransportConnection","TransportConnection","hooks","priority","initialize","transportConnectionInitializer","state","timeline","generateUniqueID","handlesActivityChecks","supportsPing","connect","socket","getSocket","onError","changeState","bindListeners","close","ping","onOpen","beforeOpen","onopen","buildTimelineMessage","onClose","closeEvent","code","reason","wasClean","unbindListeners","onMessage","onActivity","onclose","onmessage","onactivity","info","cid","transport_connection","transports_transport","Transport","isSupported","environment","createConnection","WSTransport","isInitialized","getWebSocketAPI","createWebSocket","httpConfiguration","streamingConfiguration","HTTPFactory","createStreamingSocket","pollingConfiguration","createPollingSocket","xhrConfiguration","isXHRSupported","transports","xhr_streaming","xhr_polling","SockJSTransport","file","SockJS","js_path","ignore_null_origin","ignoreNullOrigin","xdrConfiguration","isXDRSupported","XDRStreamingTransport","XDRPollingTransport","xdr_streaming","xdr_polling","transports_transports","net_info_extends","net_info_Network","NetInfo","isOnline","onLine","assistant_to_the_transport_manager","AssistantToTheTransportManager","manager","minPingDelay","maxPingDelay","pingDelay","connection","openTimestamp","onClosed","reportDeath","lifespan","Math","max","isAlive","Protocol","decodeMessage","messageEvent","messageData","pusherEventData","pusherEvent","event","channel","user_id","encodeMessage","processHandshake","activity_timeout","action","socket_id","getCloseAction","getCloseError","protocol_protocol","connection_extends","connection_connection","Connection","send_event","listeners","activity","closed","handleCloseEvent","listener","connection_handshake","Handshake","finish","timeline_sender","TimelineSender","isEmpty","TimelineTransport","channel_extends","channels_channel","Channel","pusher","subscribed","subscriptionPending","subscriptionCancelled","authorize","socketId","auth","trigger","disconnect","handleEvent","handleSubscriptionSucceededEvent","handleSubscriptionCountEvent","unsubscribe","subscription_count","subscriptionCount","subscribe","assign","channel_data","cancelSubscription","reinstateSubscription","private_channel_extends","PrivateChannel","config","channelAuthorizer","channelName","private_channel","members","Members","reset","each","member","setMyID","myID","onSubscription","subscriptionData","presence","hash","count","me","addMember","memberData","user_info","removeMember","presence_channel_extends","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","done","then","__generator","body","y","g","label","sent","trys","ops","verb","iterator","v","TypeError","pop","presence_channel","PresenceChannel","authData","channelData","_a","user","signinDonePromise","user_data","handleInternalEvent","addedMember","removedMember","utf8","base64","encrypted_channel_extends","encrypted_channel","EncryptedChannel","nacl","sharedSecret","handleEncryptedEvent","ciphertext","nonce","cipherText","secretbox","overheadLength","nonceLength","bytes","getDataToEmit","raw","connection_manager_extends","connection_manager","ConnectionManager","usingTLS","errorCallbacks","buildErrorCallbacks","connectionCallbacks","buildConnectionCallbacks","handshakeCallbacks","buildHandshakeCallbacks","Network","getNetwork","netinfo","retryIn","sendActivityCheck","updateStrategy","runner","strategy","updateState","startConnecting","setUnavailableTimer","disconnectInternally","isUsingTLS","handshake","handshakeError","abortConnecting","abort","clearRetryTimer","clearUnavailableTimer","abandonConnection","getStrategy","round","retryTimer","unavailableTimer","stopActivityCheck","activityTimer","pong_timed_out","resetActivityCheck","shouldRetry","connected","Infinity","setConnection","withErrorEmitted","tls_only","refused","backoff","retry","newState","previousState","newStateDescription","previous","current","channels_Channels","Channels","channels","createEncryptedChannel","errMsg","createPrivateChannel","createPresenceChannel","createChannel","all","values","find","createChannels","createConnectionManager","createTimelineSender","createHandshake","createAssistantToTheTransportManager","transport_manager","TransportManager","livesLeft","lives","getAssistant","sequential_strategy","SequentialStrategy","strategies","loop","failFast","timeout","timeoutLimit","minPriority","tryNextStrategy","tryStrategy","forceMinPriority","best_connected_ever_strategy","BestConnectedEverStrategy","callbackBuilder","runners","rs","abortRunner","collections_all","allRunnersFailed","aborted","cached_strategy_CachedStrategy","CachedStrategy","ttl","storage","getLocalStorage","serializedCache","getTransportCacheKey","flushTransportCache","fetchTransportCache","timestamp","cached","latency","startTimestamp","cb","storeTransportCache","cached_strategy","delayed_strategy","DelayedStrategy","if_strategy","IfStrategy","trueBranch","falseBranch","first_connected_strategy","FirstConnectedStrategy","testSupportsStrategy","State","default_strategy","baseOptions","defineTransport","definedTransports","defineTransportStrategy","wsStrategy","ws_options","wsHost","wss_options","sockjs_options","timeouts","ws_manager","streaming_manager","ws_transport","wss_transport","sockjs_transport","xhr_streaming_transport","xdr_streaming_transport","xhr_polling_transport","xdr_polling_transport","ws_loop","wss_loop","sockjs_loop","streaming_loop","polling_loop","http_loop","http_fallback_loop","http_xdomain_request","getRequest","xdr","XDomainRequest","ontimeout","onprogress","onChunk","abortRequest","http_request_extends","http_request","HTTPRequest","start","payload","position","unloader","addUnloadListener","removeUnloadListener","chunk","advanceBuffer","isBufferTooLong","buffer","unreadData","endOfLinePosition","autoIncrement","getUniqueURL","separator","randomNumber","randomInt","TimelineLevel","http_socket","HTTPSocket","session","randomString","parts","exec","base","getLocation","CONNECTING","openStream","sendRaw","sendHeartbeat","OPEN","createSocketRequest","reconnect","closeStream","CLOSED","onEvent","onHeartbeat","hostname","urlParts","stream","getReceiveURL","onFinished","http_streaming_socket","http_polling_socket","http_xhr_request","getXHRAPI","http_http","createSocket","createRequest","getDefaultStrategy","Transports","XMLHttpRequest","WebSocket","MozWebSocket","setup","PusherClass","Pusher","initializeOnDocumentBody","onDocumentBody","ready","getProtocol","getAuthorizers","ajax","jsonp","localStorage","createXMLHttpRequest","createMicrosoftXHR","ActiveXObject","createXDR","Constructor","withCredentials","documentProtocol","removeEventListener","detachEvent","floor","crypto","getRandomValues","Uint32Array","pow","timeline_level","timeline_timeline","Timeline","events","uniqueID","level","limit","shift","ERROR","INFO","DEBUG","sendfn","bundle","lib","features","transport_strategy","TransportStrategy","failAttempt","onInitialized","serializedTransport","strategy_builder_Transports","strategy_builder_defineTransport","transportClass","enabledTransports","disabledTransports","strategy_builder_UnsupportedStrategy","deferred","user_authenticator","paramsProvider","dynamicParams","composeChannelQuery","channel_authorizer","channel_authorizer_composeChannelQuery","ChannelAuthorizerProxy","channelAuthorizerGenerator","deprecatedAuthorizerOptions","__assign","getHttpHost","opts","getWebsocketHost","getWebsocketHostFromCluster","shouldUseTLS","forceTLS","getEnableStatsConfig","enableStats","disableStats","buildUserAuthenticator","buildChannelAuthorizer","customHandler","authorizer","buildChannelAuth","watchlist_extends","watchlist","WatchlistFacade","bindWatchlistInternalEvent","forEach","watchlistEvent","flat_promise","promise","res","rej","user_extends","UserFacade","signin_requested","serverToUserChannel","_signinDoneResolve","_onAuthorize","err","_cleanup","_signin","_newSigninPromiseIfNeeded","_onSigninSuccess","signin","userAuthenticator","_subscribeChannels","setDone","pusher_Pusher","app_key","checkAppKey","statsHost","timelineParams","global_emitter","sessionID","getClientFeatures","timelineSender","subscribeAll","internal","instances","isReady","allChannels","timelineSenderTimer","event_name","channel_name","Runtime","__webpack_module_cache__","cachedModule","__webpack_modules__","_typeof","obj","_classCallCheck","instance","_defineProperties","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","_extends","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","getPrototypeOf","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","listen","stopListening","EventFormatter","namespace","setNamespace","substr","PusherChannel","_Channel","eventFormatter","subscription","on","format","_this2","startsWith","formattedEvent","substring","PusherPrivateChannel","_PusherChannel","PusherEncryptedPrivateChannel","PusherPresenceChannel","k","SocketIoChannel","unbindEvent","_this3","removeListener","SocketIoPrivateChannel","_SocketIoChannel","SocketIoPresenceChannel","_SocketIoPrivateChann","NullChannel","NullPrivateChannel","_NullChannel","NullPresenceChannel","Connector","_defaultOptions","broadcaster","csrfToken","bearerToken","setOptions","token","selector","querySelector","getAttribute","PusherConnector","_Connector","client","index","leaveChannel","SocketIoConnector","io","getSocketIO","NullConnector","Echo","withoutInterceptors","registerInterceptors","_channel","connector","presenceChannel","leave","privateChannel","encryptedPrivateChannel","Vue","registerVueRequestInterceptor","axios","registerAxiosRequestInterceptor","jQuery","registerjQueryAjaxSetup","Turbo","registerTurboRequestInterceptor","interceptors","use","ajaxPrefilter","originalOptions","_this4","detail","fetchOptions","require","process"],"sourceRoot":""}