{"version":3,"file":"566-5b7cc8c206.js","mappings":"mGAaA,SAASA,EAAkBC,EAAQC,GACjC,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CACrC,IAAIE,EAAaH,EAAMC,GACvBE,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDC,OAAOC,eAAeT,GAkEFU,EAlEyBN,EAAWO,IAmEtDA,SACkB,iBADlBA,EAXN,SAAsBC,EAAOC,GAC3B,GAAqB,iBAAVD,GAAgC,OAAVA,EAAgB,OAAOA,EACxD,IAAIE,EAAOF,EAAMG,OAAOC,aACxB,QAAaC,IAATH,EAAoB,CACtB,IAAII,EAAMJ,EAAKK,KAAKP,EAAOC,GAAQ,WACnC,GAAmB,iBAARK,EAAkB,OAAOA,EACpC,MAAM,IAAIE,UAAU,+CACtB,CACA,OAAiB,WAATP,EAAoBQ,OAASC,QAAQV,EAC/C,CAEYW,CAAab,EAAK,WACKC,EAAMU,OAAOV,IApEkBP,EAChE,CAiEF,IAAwBM,EAClBC,CAjEN,CASA,SAASa,IAYP,OAXAA,EAAWhB,OAAOiB,OAASjB,OAAOiB,OAAOC,OAAS,SAAU1B,GAC1D,IAAK,IAAIE,EAAI,EAAGA,EAAIyB,UAAUxB,OAAQD,IAAK,CACzC,IAAI0B,EAASD,UAAUzB,GACvB,IAAK,IAAIS,KAAOiB,EACVpB,OAAOqB,UAAUC,eAAeX,KAAKS,EAAQjB,KAC/CX,EAAOW,GAAOiB,EAAOjB,GAG3B,CACA,OAAOX,CACT,EACOwB,EAASO,MAAMC,KAAML,UAC9B,CASA,SAASM,EAAkBC,EAAKC,IACnB,MAAPA,GAAeA,EAAMD,EAAI/B,UAAQgC,EAAMD,EAAI/B,QAC/C,IAAK,IAAID,EAAI,EAAGkC,EAAO,IAAIC,MAAMF,GAAMjC,EAAIiC,EAAKjC,IAAKkC,EAAKlC,GAAKgC,EAAIhC,GACnE,OAAOkC,CACT,CACA,SAASE,EAAgCC,EAAGC,GAC1C,IAAIC,EAAuB,oBAAX1B,QAA0BwB,EAAExB,OAAO2B,WAAaH,EAAE,cAClE,GAAIE,EAAI,OAAQA,EAAKA,EAAGtB,KAAKoB,IAAII,KAAKjB,KAAKe,GAC3C,GAAIJ,MAAMO,QAAQL,KAAOE,EAhB3B,SAAqCF,EAAGM,GACtC,GAAKN,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAON,EAAkBM,EAAGM,GACvD,IAAIC,EAAItC,OAAOqB,UAAUkB,SAAS5B,KAAKoB,GAAGS,MAAM,GAAI,GAEpD,MADU,WAANF,GAAkBP,EAAEU,cAAaH,EAAIP,EAAEU,YAAYC,MAC7C,QAANJ,GAAqB,QAANA,EAAoBT,MAAMc,KAAKZ,GACxC,cAANO,GAAqB,2CAA2CM,KAAKN,GAAWb,EAAkBM,EAAGM,QAAzG,CALc,CAMhB,CASgCQ,CAA4Bd,KAAOC,GAAkBD,GAAyB,iBAAbA,EAAEpC,OAAqB,CAChHsC,IAAIF,EAAIE,GACZ,IAAIvC,EAAI,EACR,OAAO,WACL,OAAIA,GAAKqC,EAAEpC,OAAe,CACxBmD,MAAM,GAED,CACLA,MAAM,EACNC,MAAOhB,EAAErC,KAEb,CACF,CACA,MAAM,IAAIkB,UAAU,wIACtB,CAgBA,SAASoC,IACP,MAAO,CACLC,OAAO,EACPC,QAAS,KACTC,QAAQ,EACRC,WAAY,KACZC,KAAK,EACLC,WAAW,EACXC,aAAc,GACdC,UAAW,KACXC,MAAO,KACPC,WAAY,YACZC,QAAQ,EACRC,UAAU,EACVC,SAAU,KACVC,UAAU,EACVC,UAAW,KACXC,QAAQ,EACRC,aAAa,EACbC,UAAW,KACXC,WAAY,KACZC,OAAO,EAEX,CACAC,EAAQC,SAvBC,CACLrB,OAAO,EACPC,QAAS,KACTC,QAAQ,EACRC,WAAY,KACZC,KAAK,EACLC,WAAW,EACXC,aAAc,GACdC,UAAW,KACXC,MAAO,KACPC,WAAY,YACZC,QAAQ,EACRC,UAAU,EACVC,SAAU,KACVC,UAAU,EACVC,UAAW,KACXC,QAAQ,EACRC,aAAa,EACbC,UAAW,KACXC,WAAY,KACZC,OAAO,GAWX,IAAIG,EAAa,UACbC,EAAgB,IAAIC,OAAOF,EAAWnD,OAAQ,KAC9CsD,EAAqB,oDACrBC,EAAwB,IAAIF,OAAOC,EAAmBtD,OAAQ,KAC9DwD,EAAqB,CACvB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SAEHC,EAAuB,SAA8BC,GACvD,OAAOF,EAAmBE,EAC5B,EACA,SAASC,EAAOC,EAAMC,GACpB,GAAIA,GACF,GAAIV,EAAW3B,KAAKoC,GAClB,OAAOA,EAAKE,QAAQV,EAAeK,QAGrC,GAAIH,EAAmB9B,KAAKoC,GAC1B,OAAOA,EAAKE,QAAQP,EAAuBE,GAG/C,OAAOG,CACT,CACA,IAAIG,EAAe,6CAKnB,SAASC,EAASJ,GAEhB,OAAOA,EAAKE,QAAQC,GAAc,SAAUE,EAAG/C,GAE7C,MAAU,WADVA,EAAIA,EAAEgD,eACoB,IACN,MAAhBhD,EAAEiD,OAAO,GACY,MAAhBjD,EAAEiD,OAAO,GAAa1E,OAAO2E,aAAaC,SAASnD,EAAEoD,UAAU,GAAI,KAAO7E,OAAO2E,cAAclD,EAAEoD,UAAU,IAE7G,EACT,GACF,CACA,IAAIC,EAAQ,eAMZ,SAASC,EAAKC,EAAOC,GACnBD,EAAyB,iBAAVA,EAAqBA,EAAQA,EAAMzE,OAClD0E,EAAMA,GAAO,GACb,IAAIC,EAAM,CACRb,QAAS,SAAiBxC,EAAMsD,GAI9B,OAFAA,GADAA,EAAMA,EAAI5E,QAAU4E,GACVd,QAAQS,EAAO,MACzBE,EAAQA,EAAMX,QAAQxC,EAAMsD,GACrBD,CACT,EACAE,SAAU,WACR,OAAO,IAAIxB,OAAOoB,EAAOC,EAC3B,GAEF,OAAOC,CACT,CACA,IAAIG,EAAsB,UACtBC,EAAuB,gCAO3B,SAASC,EAAStC,EAAUuC,EAAMC,GAChC,GAAIxC,EAAU,CACZ,IAAIyC,EACJ,IACEA,EAAOC,mBAAmBpB,EAASkB,IAAOpB,QAAQgB,EAAqB,IAAIZ,aAC7E,CAAE,MAAOmB,GACP,OAAO,IACT,CACA,GAAoC,IAAhCF,EAAKG,QAAQ,gBAAsD,IAA9BH,EAAKG,QAAQ,cAAgD,IAA1BH,EAAKG,QAAQ,SACvF,OAAO,IAEX,CACIL,IAASF,EAAqBvD,KAAK0D,KACrCA,EAkBJ,SAAoBD,EAAMC,GACnBK,EAAS,IAAMN,KAIdO,EAAWhE,KAAKyD,GAClBM,EAAS,IAAMN,GAAQA,EAAO,IAE9BM,EAAS,IAAMN,GAAQQ,EAAMR,EAAM,KAAK,IAG5CA,EAAOM,EAAS,IAAMN,GACtB,IAAIS,GAAsC,IAAvBT,EAAKK,QAAQ,KAChC,MAA6B,OAAzBJ,EAAKZ,UAAU,EAAG,GAChBoB,EACKR,EAEFD,EAAKnB,QAAQ6B,EAAU,MAAQT,EACV,MAAnBA,EAAKf,OAAO,GACjBuB,EACKR,EAEFD,EAAKnB,QAAQ8B,EAAQ,MAAQV,EAE7BD,EAAOC,CAElB,CA5CWW,CAAWZ,EAAMC,IAE1B,IACEA,EAAOY,UAAUZ,GAAMpB,QAAQ,OAAQ,IACzC,CAAE,MAAOuB,GACP,OAAO,IACT,CACA,OAAOH,CACT,CACA,IAAIK,EAAW,CAAC,EACZC,EAAa,mBACbG,EAAW,oBACXC,EAAS,4BAiCb,IAAIG,EAAW,CACbC,KAAM,WAAqB,GAE7B,SAASC,EAAWC,EAAUC,GAG5B,IAeEC,EAfQF,EAASpC,QAAQ,OAAO,SAAUuC,EAAOC,EAAQC,GAGvD,IAFA,IAAIC,GAAU,EACZC,EAAOH,IACAG,GAAQ,GAAmB,OAAdF,EAAIE,IACxBD,GAAWA,EAEb,OAAIA,EAGK,IAGA,IAEX,IACYE,MAAM,OAChBpI,EAAI,EASR,GANK8H,EAAM,GAAGO,QACZP,EAAMQ,QAEJR,EAAM7H,OAAS,IAAM6H,EAAMA,EAAM7H,OAAS,GAAGoI,QAC/CP,EAAMS,MAEJT,EAAM7H,OAAS4H,EACjBC,EAAMU,OAAOX,QAEb,KAAOC,EAAM7H,OAAS4H,GACpBC,EAAMW,KAAK,IAGf,KAAOzI,EAAI8H,EAAM7H,OAAQD,IAEvB8H,EAAM9H,GAAK8H,EAAM9H,GAAGqI,OAAO7C,QAAQ,QAAS,KAE9C,OAAOsC,CACT,CAUA,SAASX,EAAMc,EAAKS,EAAGC,GACrB,IAAIC,EAAIX,EAAIhI,OACZ,GAAU,IAAN2I,EACF,MAAO,GAOT,IAHA,IAAIC,EAAU,EAGPA,EAAUD,GAAG,CAClB,IAAIE,EAAWb,EAAIpC,OAAO+C,EAAIC,EAAU,GACxC,GAAIC,IAAaJ,GAAMC,EAEhB,IAAIG,IAAaJ,IAAKC,EAG3B,MAFAE,GAGF,MALEA,GAMJ,CACA,OAAOZ,EAAInF,MAAM,EAAG8F,EAAIC,EAC1B,CAiCA,SAASE,EAAaC,EAASnB,GAC7B,GAAIA,EAAQ,EACV,MAAO,GAGT,IADA,IAAIoB,EAAS,GACNpB,EAAQ,GACD,EAARA,IACFoB,GAAUD,GAEZnB,IAAU,EACVmB,GAAWA,EAEb,OAAOC,EAASD,CAClB,CAEA,SAASE,EAAWC,EAAKC,EAAMC,EAAKC,GAClC,IAAI1C,EAAOwC,EAAKxC,KACZ2C,EAAQH,EAAKG,MAAQlE,EAAO+D,EAAKG,OAAS,KAC1CC,EAAOL,EAAI,GAAG3D,QAAQ,cAAe,MACzC,GAAyB,MAArB2D,EAAI,GAAGtD,OAAO,GAAY,CAC5ByD,EAAMG,MAAMC,QAAS,EACrB,IAAIC,EAAQ,CACVC,KAAM,OACNP,IAAKA,EACLzC,KAAMA,EACN2C,MAAOA,EACPC,KAAMA,EACNK,OAAQP,EAAMQ,aAAaN,IAG7B,OADAF,EAAMG,MAAMC,QAAS,EACdC,CACT,CACA,MAAO,CACLC,KAAM,QACNP,IAAKA,EACLzC,KAAMA,EACN2C,MAAOA,EACPC,KAAMnE,EAAOmE,GAEjB,CAuBA,IAAIO,EAAyB,WAC3B,SAASA,EAAUC,GACjBlI,KAAKkI,QAAUA,GAAWrF,EAAQC,QACpC,CACA,IAAIqF,EAASF,EAAUpI,UA8pBvB,OA7pBAsI,EAAOC,MAAQ,SAAeC,GAC5B,IAAIhB,EAAMrH,KAAKsI,MAAMC,MAAMC,QAAQ5C,KAAKyC,GACxC,GAAIhB,GAAOA,EAAI,GAAGlJ,OAAS,EACzB,MAAO,CACL2J,KAAM,QACNP,IAAKF,EAAI,GAGf,EACAc,EAAOM,KAAO,SAAcJ,GAC1B,IAAIhB,EAAMrH,KAAKsI,MAAMC,MAAME,KAAK7C,KAAKyC,GACrC,GAAIhB,EAAK,CACP,IAAIK,EAAOL,EAAI,GAAG3D,QAAQ,YAAa,IACvC,MAAO,CACLoE,KAAM,OACNP,IAAKF,EAAI,GACTqB,eAAgB,WAChBhB,KAAO1H,KAAKkI,QAAQ9F,SAA+BsF,EAApBrC,EAAMqC,EAAM,MAE/C,CACF,EACAS,EAAOQ,OAAS,SAAgBN,GAC9B,IAAIhB,EAAMrH,KAAKsI,MAAMC,MAAMI,OAAO/C,KAAKyC,GACvC,GAAIhB,EAAK,CACP,IAAIE,EAAMF,EAAI,GACVK,EApDV,SAAgCH,EAAKG,GACnC,IAAIkB,EAAoBrB,EAAItB,MAAM,iBAClC,GAA0B,OAAtB2C,EACF,OAAOlB,EAET,IAAImB,EAAeD,EAAkB,GACrC,OAAOlB,EAAKpB,MAAM,MAAMwC,KAAI,SAAUC,GACpC,IAAIC,EAAoBD,EAAK9C,MAAM,QACnC,OAA0B,OAAtB+C,EACKD,EAEUC,EAAkB,GACpB7K,QAAU0K,EAAa1K,OAC/B4K,EAAK/H,MAAM6H,EAAa1K,QAE1B4K,CACT,IAAGE,KAAK,KACV,CAmCiBC,CAAuB3B,EAAKF,EAAI,IAAM,IACjD,MAAO,CACLS,KAAM,OACNP,IAAKA,EACL4B,KAAM9B,EAAI,GAAKA,EAAI,GAAGd,OAAO7C,QAAQ1D,KAAKsI,MAAMc,OAAOC,SAAU,MAAQhC,EAAI,GAC7EK,KAAMA,EAEV,CACF,EACAS,EAAOmB,QAAU,SAAiBjB,GAChC,IAAIhB,EAAMrH,KAAKsI,MAAMC,MAAMe,QAAQ1D,KAAKyC,GACxC,GAAIhB,EAAK,CACP,IAAIK,EAAOL,EAAI,GAAGd,OAGlB,GAAI,KAAKnF,KAAKsG,GAAO,CACnB,IAAI6B,EAAUlE,EAAMqC,EAAM,KACtB1H,KAAKkI,QAAQ9F,SACfsF,EAAO6B,EAAQhD,OACLgD,IAAW,KAAKnI,KAAKmI,KAE/B7B,EAAO6B,EAAQhD,OAEnB,CACA,MAAO,CACLuB,KAAM,UACNP,IAAKF,EAAI,GACTmC,MAAOnC,EAAI,GAAGlJ,OACduJ,KAAMA,EACNK,OAAQ/H,KAAKwH,MAAM4B,OAAO1B,GAE9B,CACF,EACAS,EAAOsB,GAAK,SAAYpB,GACtB,IAAIhB,EAAMrH,KAAKsI,MAAMC,MAAMkB,GAAG7D,KAAKyC,GACnC,GAAIhB,EACF,MAAO,CACLS,KAAM,KACNP,IAAKF,EAAI,GAGf,EACAc,EAAOuB,WAAa,SAAoBrB,GACtC,IAAIhB,EAAMrH,KAAKsI,MAAMC,MAAMmB,WAAW9D,KAAKyC,GAC3C,GAAIhB,EAAK,CACP,IAAIK,EAAOL,EAAI,GAAG3D,QAAQ,eAAgB,IACtCiG,EAAM3J,KAAKwH,MAAMG,MAAMgC,IAC3B3J,KAAKwH,MAAMG,MAAMgC,KAAM,EACvB,IAAI5B,EAAS/H,KAAKwH,MAAMoC,YAAYlC,GAEpC,OADA1H,KAAKwH,MAAMG,MAAMgC,IAAMA,EAChB,CACL7B,KAAM,aACNP,IAAKF,EAAI,GACTU,OAAQA,EACRL,KAAMA,EAEV,CACF,EACAS,EAAO0B,KAAO,SAAcxB,GAC1B,IAAIhB,EAAMrH,KAAKsI,MAAMC,MAAMsB,KAAKjE,KAAKyC,GACrC,GAAIhB,EAAK,CACP,IAAIE,EAAKuC,EAAQC,EAAWC,EAAQ9L,EAAG+L,EAAWC,EAAmBC,EAAMC,EAAUC,EAASC,EAAcC,EACxGC,EAAOnD,EAAI,GAAGd,OACdkE,EAAYD,EAAKrM,OAAS,EAC1B0L,EAAO,CACT/B,KAAM,OACNP,IAAK,GACLmD,QAASD,EACTE,MAAOF,GAAaD,EAAKxJ,MAAM,GAAI,GAAK,GACxC4J,OAAO,EACPC,MAAO,IAETL,EAAOC,EAAY,aAAeD,EAAKxJ,OAAO,GAAK,KAAOwJ,EACtDxK,KAAKkI,QAAQ9F,WACfoI,EAAOC,EAAYD,EAAO,SAO5B,IAHA,IAAIM,EAAY,IAAI7H,OAAO,WAAauH,EAAO,iCAGxCnC,IACLkC,GAAW,EACLlD,EAAMyD,EAAUlF,KAAKyC,MAGvBrI,KAAKsI,MAAMC,MAAMkB,GAAGrI,KAAKiH,IALnB,CA+BV,GAtBAd,EAAMF,EAAI,GACVgB,EAAMA,EAAInE,UAAUqD,EAAIpJ,QACxBgM,EAAO9C,EAAI,GAAGf,MAAM,KAAM,GAAG,GAAG5C,QAAQ,QAAQ,SAAUqH,GACxD,MAAO,IAAIC,OAAO,EAAID,EAAE5M,OAC1B,IACAiM,EAAW/B,EAAI/B,MAAM,KAAM,GAAG,GAC1BtG,KAAKkI,QAAQ9F,UACf4H,EAAS,EACTM,EAAeH,EAAKc,aAGpBjB,GADAA,EAAS3C,EAAI,GAAG6D,OAAO,SACL,EAAI,EAAIlB,EAC1BM,EAAeH,EAAKnJ,MAAMgJ,GAC1BA,GAAU3C,EAAI,GAAGlJ,QAEnB8L,GAAY,GACPE,GAAQ,OAAO/I,KAAKgJ,KAEvB7C,GAAO6C,EAAW,KAClB/B,EAAMA,EAAInE,UAAUkG,EAASjM,OAAS,GACtCoM,GAAW,IAERA,EAOH,IANA,IAAIY,EAAkB,IAAIlI,OAAO,QAAUmI,KAAKC,IAAI,EAAGrB,EAAS,GAAK,uDACjEsB,EAAU,IAAIrI,OAAO,QAAUmI,KAAKC,IAAI,EAAGrB,EAAS,GAAK,sDACzDuB,EAAmB,IAAItI,OAAO,QAAUmI,KAAKC,IAAI,EAAGrB,EAAS,GAAK,gBAClEwB,EAAoB,IAAIvI,OAAO,QAAUmI,KAAKC,IAAI,EAAGrB,EAAS,GAAK,MAGhE3B,IAEL+B,EADAC,EAAUhC,EAAI/B,MAAM,KAAM,GAAG,GAIzBtG,KAAKkI,QAAQ9F,WACfgI,EAAWA,EAAS1G,QAAQ,0BAA2B,QAIrD6H,EAAiBnK,KAAKgJ,MAKtBoB,EAAkBpK,KAAKgJ,KAKvBe,EAAgB/J,KAAKgJ,KAKrBkB,EAAQlK,KAAKiH,IAzBP,CA4BV,GAAI+B,EAASc,OAAO,SAAWlB,IAAWI,EAAS7D,OAEjD+D,GAAgB,KAAOF,EAASpJ,MAAMgJ,OACjC,CAEL,GAAIC,EACF,MAIF,GAAIE,EAAKe,OAAO,SAAW,EAEzB,MAEF,GAAIK,EAAiBnK,KAAK+I,GACxB,MAEF,GAAIqB,EAAkBpK,KAAK+I,GACzB,MAEF,GAAImB,EAAQlK,KAAK+I,GACf,MAEFG,GAAgB,KAAOF,CACzB,CACKH,GAAcG,EAAS7D,SAE1B0D,GAAY,GAEd1C,GAAO8C,EAAU,KACjBhC,EAAMA,EAAInE,UAAUmG,EAAQlM,OAAS,GACrCgM,EAAOC,EAASpJ,MAAMgJ,EACxB,CAEGH,EAAKe,QAEJV,EACFL,EAAKe,OAAQ,EACJ,YAAYxJ,KAAKmG,KAC1B2C,GAAoB,IAKpBlK,KAAKkI,QAAQrG,MACfiI,EAAS,cAAclE,KAAK0E,MAE1BP,EAA0B,SAAdD,EAAO,GACnBQ,EAAeA,EAAa5G,QAAQ,eAAgB,KAGxDmG,EAAKgB,MAAMlE,KAAK,CACdmB,KAAM,YACNP,IAAKA,EACLkE,OAAQ3B,EACR4B,QAAS3B,EACTa,OAAO,EACPlD,KAAM4C,IAERT,EAAKtC,KAAOA,CACd,CAGAsC,EAAKgB,MAAMhB,EAAKgB,MAAM1M,OAAS,GAAGoJ,IAAMA,EAAIoE,YAC5C9B,EAAKgB,MAAMhB,EAAKgB,MAAM1M,OAAS,GAAGuJ,KAAO4C,EAAaqB,YACtD9B,EAAKtC,IAAMsC,EAAKtC,IAAIoE,YACpB,IAAI7E,EAAI+C,EAAKgB,MAAM1M,OAGnB,IAAKD,EAAI,EAAGA,EAAI4I,EAAG5I,IAGjB,GAFA8B,KAAKwH,MAAMG,MAAMgC,KAAM,EACvBE,EAAKgB,MAAM3M,GAAG6J,OAAS/H,KAAKwH,MAAMoC,YAAYC,EAAKgB,MAAM3M,GAAGwJ,KAAM,KAC7DmC,EAAKe,MAAO,CAEf,IAAIgB,EAAU/B,EAAKgB,MAAM3M,GAAG6J,OAAO8D,QAAO,SAAUd,GAClD,MAAkB,UAAXA,EAAEjD,IACX,IACIgE,EAAwBF,EAAQzN,OAAS,GAAKyN,EAAQG,MAAK,SAAUhB,GACvE,MAAO,SAAS3J,KAAK2J,EAAExD,IACzB,IACAsC,EAAKe,MAAQkB,CACf,CAIF,GAAIjC,EAAKe,MACP,IAAK1M,EAAI,EAAGA,EAAI4I,EAAG5I,IACjB2L,EAAKgB,MAAM3M,GAAG0M,OAAQ,EAG1B,OAAOf,CACT,CACF,EACA1B,EAAO3E,KAAO,SAAc6E,GAC1B,IAAIhB,EAAMrH,KAAKsI,MAAMC,MAAM/E,KAAKoC,KAAKyC,GACrC,GAAIhB,EAAK,CACP,IAAIQ,EAAQ,CACVC,KAAM,OACNP,IAAKF,EAAI,GACT2E,KAAMhM,KAAKkI,QAAQ3F,YAAyB,QAAX8E,EAAI,IAA2B,WAAXA,EAAI,IAA8B,UAAXA,EAAI,IAChFK,KAAML,EAAI,IAEZ,GAAIrH,KAAKkI,QAAQ5F,SAAU,CACzB,IAAIoF,EAAO1H,KAAKkI,QAAQ3F,UAAYvC,KAAKkI,QAAQ3F,UAAU8E,EAAI,IAAM9D,EAAO8D,EAAI,IAChFQ,EAAMC,KAAO,YACbD,EAAMH,KAAOA,EACbG,EAAME,OAAS/H,KAAKwH,MAAM4B,OAAO1B,EACnC,CACA,OAAOG,CACT,CACF,EACAM,EAAO8D,IAAM,SAAa5D,GACxB,IAAIhB,EAAMrH,KAAKsI,MAAMC,MAAM0D,IAAIrG,KAAKyC,GACpC,GAAIhB,EAAK,CACP,IAAI6E,EAAM7E,EAAI,GAAGvD,cAAcJ,QAAQ,OAAQ,KAC3CoB,EAAOuC,EAAI,GAAKA,EAAI,GAAG3D,QAAQ,WAAY,MAAMA,QAAQ1D,KAAKsI,MAAMc,OAAOC,SAAU,MAAQ,GAC7F5B,EAAQJ,EAAI,GAAKA,EAAI,GAAGnD,UAAU,EAAGmD,EAAI,GAAGlJ,OAAS,GAAGuF,QAAQ1D,KAAKsI,MAAMc,OAAOC,SAAU,MAAQhC,EAAI,GAC5G,MAAO,CACLS,KAAM,MACNoE,IAAKA,EACL3E,IAAKF,EAAI,GACTvC,KAAMA,EACN2C,MAAOA,EAEX,CACF,EACAU,EAAOgE,MAAQ,SAAe9D,GAC5B,IAAIhB,EAAMrH,KAAKsI,MAAMC,MAAM4D,MAAMvG,KAAKyC,GACtC,GAAIhB,EAAK,CACP,IAAI+E,EAAO,CACTtE,KAAM,QACNuE,OAAQxG,EAAWwB,EAAI,IAAIyB,KAAI,SAAUlC,GACvC,MAAO,CACLc,KAAMd,EAEV,IACA0F,MAAOjF,EAAI,GAAG3D,QAAQ,aAAc,IAAI4C,MAAM,UAC9CiG,KAAMlF,EAAI,IAAMA,EAAI,GAAGd,OAASc,EAAI,GAAG3D,QAAQ,YAAa,IAAI4C,MAAM,MAAQ,IAEhF,GAAI8F,EAAKC,OAAOlO,SAAWiO,EAAKE,MAAMnO,OAAQ,CAC5CiO,EAAK7E,IAAMF,EAAI,GACf,IACInJ,EAAGsO,EAAGC,EAAGC,EADT5F,EAAIsF,EAAKE,MAAMnO,OAEnB,IAAKD,EAAI,EAAGA,EAAI4I,EAAG5I,IACb,YAAYkD,KAAKgL,EAAKE,MAAMpO,IAC9BkO,EAAKE,MAAMpO,GAAK,QACP,aAAakD,KAAKgL,EAAKE,MAAMpO,IACtCkO,EAAKE,MAAMpO,GAAK,SACP,YAAYkD,KAAKgL,EAAKE,MAAMpO,IACrCkO,EAAKE,MAAMpO,GAAK,OAEhBkO,EAAKE,MAAMpO,GAAK,KAIpB,IADA4I,EAAIsF,EAAKG,KAAKpO,OACTD,EAAI,EAAGA,EAAI4I,EAAG5I,IACjBkO,EAAKG,KAAKrO,GAAK2H,EAAWuG,EAAKG,KAAKrO,GAAIkO,EAAKC,OAAOlO,QAAQ2K,KAAI,SAAUlC,GACxE,MAAO,CACLc,KAAMd,EAEV,IAOF,IADAE,EAAIsF,EAAKC,OAAOlO,OACXqO,EAAI,EAAGA,EAAI1F,EAAG0F,IACjBJ,EAAKC,OAAOG,GAAGzE,OAAS/H,KAAKwH,MAAM4B,OAAOgD,EAAKC,OAAOG,GAAG9E,MAK3D,IADAZ,EAAIsF,EAAKG,KAAKpO,OACTqO,EAAI,EAAGA,EAAI1F,EAAG0F,IAEjB,IADAE,EAAMN,EAAKG,KAAKC,GACXC,EAAI,EAAGA,EAAIC,EAAIvO,OAAQsO,IAC1BC,EAAID,GAAG1E,OAAS/H,KAAKwH,MAAM4B,OAAOsD,EAAID,GAAG/E,MAG7C,OAAO0E,CACT,CACF,CACF,EACAjE,EAAOwE,SAAW,SAAkBtE,GAClC,IAAIhB,EAAMrH,KAAKsI,MAAMC,MAAMoE,SAAS/G,KAAKyC,GACzC,GAAIhB,EACF,MAAO,CACLS,KAAM,UACNP,IAAKF,EAAI,GACTmC,MAA4B,MAArBnC,EAAI,GAAGtD,OAAO,GAAa,EAAI,EACtC2D,KAAML,EAAI,GACVU,OAAQ/H,KAAKwH,MAAM4B,OAAO/B,EAAI,IAGpC,EACAc,EAAOyE,UAAY,SAAmBvE,GACpC,IAAIhB,EAAMrH,KAAKsI,MAAMC,MAAMqE,UAAUhH,KAAKyC,GAC1C,GAAIhB,EAAK,CACP,IAAIK,EAA4C,OAArCL,EAAI,GAAGtD,OAAOsD,EAAI,GAAGlJ,OAAS,GAAckJ,EAAI,GAAGrG,MAAM,GAAI,GAAKqG,EAAI,GACjF,MAAO,CACLS,KAAM,YACNP,IAAKF,EAAI,GACTK,KAAMA,EACNK,OAAQ/H,KAAKwH,MAAM4B,OAAO1B,GAE9B,CACF,EACAS,EAAOT,KAAO,SAAcW,GAC1B,IAAIhB,EAAMrH,KAAKsI,MAAMC,MAAMb,KAAK9B,KAAKyC,GACrC,GAAIhB,EACF,MAAO,CACLS,KAAM,OACNP,IAAKF,EAAI,GACTK,KAAML,EAAI,GACVU,OAAQ/H,KAAKwH,MAAM4B,OAAO/B,EAAI,IAGpC,EACAc,EAAO5E,OAAS,SAAkB8E,GAChC,IAAIhB,EAAMrH,KAAKsI,MAAMc,OAAO7F,OAAOqC,KAAKyC,GACxC,GAAIhB,EACF,MAAO,CACLS,KAAM,SACNP,IAAKF,EAAI,GACTK,KAAMnE,EAAO8D,EAAI,IAGvB,EACAc,EAAO+D,IAAM,SAAa7D,GACxB,IAAIhB,EAAMrH,KAAKsI,MAAMc,OAAO8C,IAAItG,KAAKyC,GACrC,GAAIhB,EAWF,OAVKrH,KAAKwH,MAAMG,MAAMC,QAAU,QAAQxG,KAAKiG,EAAI,IAC/CrH,KAAKwH,MAAMG,MAAMC,QAAS,EACjB5H,KAAKwH,MAAMG,MAAMC,QAAU,UAAUxG,KAAKiG,EAAI,MACvDrH,KAAKwH,MAAMG,MAAMC,QAAS,IAEvB5H,KAAKwH,MAAMG,MAAMkF,YAAc,iCAAiCzL,KAAKiG,EAAI,IAC5ErH,KAAKwH,MAAMG,MAAMkF,YAAa,EACrB7M,KAAKwH,MAAMG,MAAMkF,YAAc,mCAAmCzL,KAAKiG,EAAI,MACpFrH,KAAKwH,MAAMG,MAAMkF,YAAa,GAEzB,CACL/E,KAAM9H,KAAKkI,QAAQ5F,SAAW,OAAS,OACvCiF,IAAKF,EAAI,GACTO,OAAQ5H,KAAKwH,MAAMG,MAAMC,OACzBiF,WAAY7M,KAAKwH,MAAMG,MAAMkF,WAC7BnF,KAAM1H,KAAKkI,QAAQ5F,SAAWtC,KAAKkI,QAAQ3F,UAAYvC,KAAKkI,QAAQ3F,UAAU8E,EAAI,IAAM9D,EAAO8D,EAAI,IAAMA,EAAI,GAGnH,EACAc,EAAOb,KAAO,SAAce,GAC1B,IAAIhB,EAAMrH,KAAKsI,MAAMc,OAAO9B,KAAK1B,KAAKyC,GACtC,GAAIhB,EAAK,CACP,IAAIyF,EAAazF,EAAI,GAAGd,OACxB,IAAKvG,KAAKkI,QAAQ9F,UAAY,KAAKhB,KAAK0L,GAAa,CAEnD,IAAK,KAAK1L,KAAK0L,GACb,OAIF,IAAIC,EAAa1H,EAAMyH,EAAW9L,MAAM,GAAI,GAAI,MAChD,IAAK8L,EAAW3O,OAAS4O,EAAW5O,QAAU,GAAM,EAClD,MAEJ,KAAO,CAEL,IAAI6O,EA1hBZ,SAA4B7G,EAAK8G,GAC/B,IAA2B,IAAvB9G,EAAIjB,QAAQ+H,EAAE,IAChB,OAAQ,EAKV,IAHA,IAAInG,EAAIX,EAAIhI,OACR+O,EAAQ,EACVhP,EAAI,EACCA,EAAI4I,EAAG5I,IACZ,GAAe,OAAXiI,EAAIjI,GACNA,SACK,GAAIiI,EAAIjI,KAAO+O,EAAE,GACtBC,SACK,GAAI/G,EAAIjI,KAAO+O,EAAE,MACtBC,EACY,EACV,OAAOhP,EAIb,OAAQ,CACV,CAsgB6BiP,CAAmB9F,EAAI,GAAI,MAChD,GAAI2F,GAAkB,EAAG,CACvB,IACII,GADgC,IAAxB/F,EAAI,GAAGnC,QAAQ,KAAa,EAAI,GACtBmC,EAAI,GAAGlJ,OAAS6O,EACtC3F,EAAI,GAAKA,EAAI,GAAGnD,UAAU,EAAG8I,GAC7B3F,EAAI,GAAKA,EAAI,GAAGnD,UAAU,EAAGkJ,GAAS7G,OACtCc,EAAI,GAAK,EACX,CACF,CACA,IAAIvC,EAAOuC,EAAI,GACXI,EAAQ,GACZ,GAAIzH,KAAKkI,QAAQ9F,SAAU,CAEzB,IAAIkF,EAAO,gCAAgC1B,KAAKd,GAC5CwC,IACFxC,EAAOwC,EAAK,GACZG,EAAQH,EAAK,GAEjB,MACEG,EAAQJ,EAAI,GAAKA,EAAI,GAAGrG,MAAM,GAAI,GAAK,GAWzC,OATA8D,EAAOA,EAAKyB,OACR,KAAKnF,KAAK0D,KAGVA,EAFE9E,KAAKkI,QAAQ9F,WAAa,KAAKhB,KAAK0L,GAE/BhI,EAAK9D,MAAM,GAEX8D,EAAK9D,MAAM,GAAI,IAGnBoG,EAAWC,EAAK,CACrBvC,KAAMA,EAAOA,EAAKpB,QAAQ1D,KAAKsI,MAAMc,OAAOC,SAAU,MAAQvE,EAC9D2C,MAAOA,EAAQA,EAAM/D,QAAQ1D,KAAKsI,MAAMc,OAAOC,SAAU,MAAQ5B,GAChEJ,EAAI,GAAIrH,KAAKwH,MAClB,CACF,EACAW,EAAOkF,QAAU,SAAiBhF,EAAKiF,GACrC,IAAIjG,EACJ,IAAKA,EAAMrH,KAAKsI,MAAMc,OAAOiE,QAAQzH,KAAKyC,MAAUhB,EAAMrH,KAAKsI,MAAMc,OAAOmE,OAAO3H,KAAKyC,IAAO,CAC7F,IAAIf,GAAQD,EAAI,IAAMA,EAAI,IAAI3D,QAAQ,OAAQ,KAE9C,KADA4D,EAAOgG,EAAMhG,EAAKxD,gBACP,CACT,IAAI4D,EAAOL,EAAI,GAAGtD,OAAO,GACzB,MAAO,CACL+D,KAAM,OACNP,IAAKG,EACLA,KAAMA,EAEV,CACA,OAAON,EAAWC,EAAKC,EAAMD,EAAI,GAAIrH,KAAKwH,MAC5C,CACF,EACAW,EAAOqF,SAAW,SAAkBnF,EAAKoF,EAAWC,QACjC,IAAbA,IACFA,EAAW,IAEb,IAAIzH,EAAQjG,KAAKsI,MAAMc,OAAOoE,SAASG,OAAO/H,KAAKyC,GACnD,GAAKpC,KAGDA,EAAM,KAAMyH,EAASzH,MAAM,o0RAA/B,CACA,IAAI2H,EAAW3H,EAAM,IAAMA,EAAM,IAAM,GACvC,IAAK2H,GAAYA,IAA0B,KAAbF,GAAmB1N,KAAKsI,MAAMc,OAAOyE,YAAYjI,KAAK8H,IAAY,CAC9F,IACII,EACFC,EAFEC,EAAU/H,EAAM,GAAG9H,OAAS,EAG9B8P,EAAaD,EACbE,EAAgB,EACdC,EAAyB,MAAhBlI,EAAM,GAAG,GAAajG,KAAKsI,MAAMc,OAAOoE,SAASY,UAAYpO,KAAKsI,MAAMc,OAAOoE,SAASa,UAKrG,IAJAF,EAAOG,UAAY,EAGnBb,EAAYA,EAAUzM,OAAO,EAAIqH,EAAIlK,OAAS6P,GACH,OAAnC/H,EAAQkI,EAAOvI,KAAK6H,KAE1B,GADAK,EAAS7H,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAMA,EAAM,GAI3E,GADA8H,EAAUD,EAAO3P,OACb8H,EAAM,IAAMA,EAAM,GAEpBgI,GAAcF,OAET,MAAI9H,EAAM,IAAMA,EAAM,KAEvB+H,EAAU,KAAQA,EAAUD,GAAW,GAO7C,MADAE,GAAcF,GACG,GAAjB,CAGAA,EAAU3C,KAAKC,IAAI0C,EAASA,EAAUE,EAAaC,GACnD,IAAI3G,EAAMc,EAAIrH,MAAM,EAAGgN,EAAU/H,EAAMsI,OAAStI,EAAM,GAAG9H,OAAS2P,EAAO3P,QAAU4P,GAGnF,GAAI3C,KAAKC,IAAI2C,EAASD,GAAW,EAAG,CAClC,IAAIS,EAAQjH,EAAIvG,MAAM,GAAI,GAC1B,MAAO,CACL8G,KAAM,KACNP,IAAKA,EACLG,KAAM8G,EACNzG,OAAQ/H,KAAKwH,MAAMQ,aAAawG,GAEpC,CAGA,IAAI9G,EAAOH,EAAIvG,MAAM,GAAI,GACzB,MAAO,CACL8G,KAAM,SACNP,IAAKA,EACLG,KAAMA,EACNK,OAAQ/H,KAAKwH,MAAMQ,aAAaN,GAvBN,OANxBwG,GAAiBH,CAgCzB,CAzDy2R,CA0D32R,EACA5F,EAAOsG,SAAW,SAAkBpG,GAClC,IAAIhB,EAAMrH,KAAKsI,MAAMc,OAAOX,KAAK7C,KAAKyC,GACtC,GAAIhB,EAAK,CACP,IAAIK,EAAOL,EAAI,GAAG3D,QAAQ,MAAO,KAC7BgL,EAAmB,OAAOtN,KAAKsG,GAC/BiH,EAA0B,KAAKvN,KAAKsG,IAAS,KAAKtG,KAAKsG,GAK3D,OAJIgH,GAAoBC,IACtBjH,EAAOA,EAAKxD,UAAU,EAAGwD,EAAKvJ,OAAS,IAEzCuJ,EAAOnE,EAAOmE,GAAM,GACb,CACLI,KAAM,WACNP,IAAKF,EAAI,GACTK,KAAMA,EAEV,CACF,EACAS,EAAOyG,GAAK,SAAYvG,GACtB,IAAIhB,EAAMrH,KAAKsI,MAAMc,OAAOwF,GAAGhJ,KAAKyC,GACpC,GAAIhB,EACF,MAAO,CACLS,KAAM,KACNP,IAAKF,EAAI,GAGf,EACAc,EAAO0G,IAAM,SAAaxG,GACxB,IAAIhB,EAAMrH,KAAKsI,MAAMc,OAAOyF,IAAIjJ,KAAKyC,GACrC,GAAIhB,EACF,MAAO,CACLS,KAAM,MACNP,IAAKF,EAAI,GACTK,KAAML,EAAI,GACVU,OAAQ/H,KAAKwH,MAAMQ,aAAaX,EAAI,IAG1C,EACAc,EAAO2G,SAAW,SAAkBzG,EAAKlG,GACvC,IAEMuF,EAAM5C,EAFRuC,EAAMrH,KAAKsI,MAAMc,OAAO0F,SAASlJ,KAAKyC,GAC1C,GAAIhB,EASF,OALEvC,EAFa,MAAXuC,EAAI,GAEC,WADPK,EAAOnE,EAAOvD,KAAKkI,QAAQ/F,OAASA,EAAOkF,EAAI,IAAMA,EAAI,KAGzDK,EAAOnE,EAAO8D,EAAI,IAGb,CACLS,KAAM,OACNP,IAAKF,EAAI,GACTK,KAAMA,EACN5C,KAAMA,EACNiD,OAAQ,CAAC,CACPD,KAAM,OACNP,IAAKG,EACLA,KAAMA,IAId,EACAS,EAAO4G,IAAM,SAAa1G,EAAKlG,GAC7B,IAAIkF,EACJ,GAAIA,EAAMrH,KAAKsI,MAAMc,OAAO2F,IAAInJ,KAAKyC,GAAM,CACzC,IAAIX,EAAM5C,EACV,GAAe,MAAXuC,EAAI,GAENvC,EAAO,WADP4C,EAAOnE,EAAOvD,KAAKkI,QAAQ/F,OAASA,EAAOkF,EAAI,IAAMA,EAAI,SAEpD,CAEL,IAAI2H,EACJ,GACEA,EAAc3H,EAAI,GAClBA,EAAI,GAAKrH,KAAKsI,MAAMc,OAAO6F,WAAWrJ,KAAKyB,EAAI,IAAI,SAC5C2H,IAAgB3H,EAAI,IAC7BK,EAAOnE,EAAO8D,EAAI,IAEhBvC,EADa,SAAXuC,EAAI,GACC,UAAYA,EAAI,GAEhBA,EAAI,EAEf,CACA,MAAO,CACLS,KAAM,OACNP,IAAKF,EAAI,GACTK,KAAMA,EACN5C,KAAMA,EACNiD,OAAQ,CAAC,CACPD,KAAM,OACNP,IAAKG,EACLA,KAAMA,IAGZ,CACF,EACAS,EAAO+G,WAAa,SAAoB7G,EAAK5F,GAC3C,IAEMiF,EAFFL,EAAMrH,KAAKsI,MAAMc,OAAO1B,KAAK9B,KAAKyC,GACtC,GAAIhB,EAOF,OAJEK,EADE1H,KAAKwH,MAAMG,MAAMkF,WACZ7M,KAAKkI,QAAQ5F,SAAWtC,KAAKkI,QAAQ3F,UAAYvC,KAAKkI,QAAQ3F,UAAU8E,EAAI,IAAM9D,EAAO8D,EAAI,IAAMA,EAAI,GAEvG9D,EAAOvD,KAAKkI,QAAQzF,YAAcA,EAAY4E,EAAI,IAAMA,EAAI,IAE9D,CACLS,KAAM,OACNP,IAAKF,EAAI,GACTK,KAAMA,EAGZ,EACOO,CACT,CAnqB6B,GAwqBzBM,EAAQ,CACVC,QAAS,mBACTC,KAAM,uCACNE,OAAQ,8GACRc,GAAI,qEACJH,QAAS,uCACTI,WAAY,0CACZG,KAAM,uCACNrG,KAAM,mdAUNyI,IAAK,kGACLE,MAAOxG,EACPgH,SAAU,gDAGVwC,WAAY,uFACZzH,KAAM,UAERa,OAAe,8BACfA,OAAe,gEACfA,EAAM0D,IAAM7H,EAAKmE,EAAM0D,KAAKvI,QAAQ,QAAS6E,EAAM6G,QAAQ1L,QAAQ,QAAS6E,EAAM8G,QAAQ5K,WAC1F8D,EAAM+G,OAAS,wBACf/G,EAAMgH,cAAgBnL,EAAK,iBAAiBV,QAAQ,OAAQ6E,EAAM+G,QAAQ7K,WAC1E8D,EAAMsB,KAAOzF,EAAKmE,EAAMsB,MAAMnG,QAAQ,QAAS6E,EAAM+G,QAAQ5L,QAAQ,KAAM,mEAAmEA,QAAQ,MAAO,UAAY6E,EAAM0D,IAAIrM,OAAS,KAAK6E,WACjM8D,EAAMiH,KAAO,gWACbjH,EAAMkH,SAAW,+BACjBlH,EAAM/E,KAAOY,EAAKmE,EAAM/E,KAAM,KAAKE,QAAQ,UAAW6E,EAAMkH,UAAU/L,QAAQ,MAAO6E,EAAMiH,MAAM9L,QAAQ,YAAa,4EAA4Ee,WAClM8D,EAAMqE,UAAYxI,EAAKmE,EAAM4G,YAAYzL,QAAQ,KAAM6E,EAAMkB,IAAI/F,QAAQ,UAAW,iBAAiBA,QAAQ,YAAa,IACzHA,QAAQ,SAAU,IAAIA,QAAQ,aAAc,WAAWA,QAAQ,SAAU,kDAAkDA,QAAQ,OAAQ,0BAC3IA,QAAQ,OAAQ,+DAA+DA,QAAQ,MAAO6E,EAAMiH,MACpG/K,WACD8D,EAAMmB,WAAatF,EAAKmE,EAAMmB,YAAYhG,QAAQ,YAAa6E,EAAMqE,WAAWnI,WAMhF8D,EAAMmH,OAASlQ,EAAS,CAAC,EAAG+I,GAM5BA,EAAM1G,IAAMrC,EAAS,CAAC,EAAG+I,EAAMmH,OAAQ,CACrCvD,MAAO,qKAKT5D,EAAM1G,IAAIsK,MAAQ/H,EAAKmE,EAAM1G,IAAIsK,OAAOzI,QAAQ,KAAM6E,EAAMkB,IAAI/F,QAAQ,UAAW,iBAAiBA,QAAQ,aAAc,WAAWA,QAAQ,OAAQ,cAAcA,QAAQ,SAAU,kDAAkDA,QAAQ,OAAQ,0BACtPA,QAAQ,OAAQ,+DAA+DA,QAAQ,MAAO6E,EAAMiH,MACpG/K,WACD8D,EAAM1G,IAAI+K,UAAYxI,EAAKmE,EAAM4G,YAAYzL,QAAQ,KAAM6E,EAAMkB,IAAI/F,QAAQ,UAAW,iBAAiBA,QAAQ,YAAa,IAC7HA,QAAQ,QAAS6E,EAAM1G,IAAIsK,OAC3BzI,QAAQ,aAAc,WAAWA,QAAQ,SAAU,kDAAkDA,QAAQ,OAAQ,0BACrHA,QAAQ,OAAQ,+DAA+DA,QAAQ,MAAO6E,EAAMiH,MACpG/K,WAKD8D,EAAMnG,SAAW5C,EAAS,CAAC,EAAG+I,EAAMmH,OAAQ,CAC1ClM,KAAMY,EAAK,8IAC+DV,QAAQ,UAAW6E,EAAMkH,UAAU/L,QAAQ,OAAQ,qKAAoLe,WACjTwH,IAAK,oEACL3C,QAAS,yBACTX,OAAQhD,EAERgH,SAAU,mCACVC,UAAWxI,EAAKmE,EAAMmH,OAAOP,YAAYzL,QAAQ,KAAM6E,EAAMkB,IAAI/F,QAAQ,UAAW,mBAAmBA,QAAQ,WAAY6E,EAAMoE,UAAUjJ,QAAQ,aAAc,WAAWA,QAAQ,UAAW,IAAIA,QAAQ,QAAS,IAAIA,QAAQ,QAAS,IAAIe,aAM/O,IAAI2E,EAAS,CACX7F,OAAQ,8CACRuL,SAAU,sCACVC,IAAKpJ,EACLuG,IAAK,2JAML5E,KAAM,gDACN+F,QAAS,0BACTE,OAAQ,wBACRoC,cAAe,wBACfnC,SAAU,CACRG,OAAQ,2DAGRS,UAAW,6RACXC,UAAW,kPAGb5F,KAAM,sCACNmG,GAAI,wBACJC,IAAKlJ,EACL+B,KAAM,8EACNmG,YAAa,sBAoFf,SAASpL,EAAYiF,GACnB,OAAOA,EAENhE,QAAQ,OAAQ,KAEhBA,QAAQ,MAAO,KAEfA,QAAQ,0BAA2B,OAEnCA,QAAQ,KAAM,KAEdA,QAAQ,+BAAgC,OAExCA,QAAQ,KAAM,KAEdA,QAAQ,SAAU,IACrB,CAMA,SAASvB,EAAOuF,GACd,IACExJ,EACAoF,EAFEsM,EAAM,GAGN9I,EAAIY,EAAKvJ,OACb,IAAKD,EAAI,EAAGA,EAAI4I,EAAG5I,IACjBoF,EAAKoE,EAAKmI,WAAW3R,GACjBkN,KAAK0E,SAAW,KAClBxM,EAAK,IAAMA,EAAGvC,SAAS,KAEzB6O,GAAO,KAAOtM,EAAK,IAErB,OAAOsM,CACT,CAlHAxG,EAAO2G,aAAe,uCACtB3G,EAAOyE,YAAczJ,EAAKgF,EAAOyE,aAAanK,QAAQ,eAAgB0F,EAAO2G,cAActL,WAG3F2E,EAAO4G,UAAY,4CAGnB5G,EAAO6G,YAAc,8BACrB7G,EAAOqG,SAAWrL,EAAKmE,EAAMkH,UAAU/L,QAAQ,eAAa,UAAOe,WACnE2E,EAAOoE,SAASG,OAASvJ,EAAKgF,EAAOoE,SAASG,QAAQjK,QAAQ,SAAU0F,EAAO2G,cAActL,WAC7F2E,EAAOoE,SAASY,UAAYhK,EAAKgF,EAAOoE,SAASY,UAAW,KAAK1K,QAAQ,SAAU0F,EAAO2G,cAActL,WACxG2E,EAAOoE,SAASa,UAAYjK,EAAKgF,EAAOoE,SAASa,UAAW,KAAK3K,QAAQ,SAAU0F,EAAO2G,cAActL,WACxG2E,EAAOC,SAAW,8CAClBD,EAAO8G,QAAU,+BACjB9G,EAAO+G,OAAS,+IAChB/G,EAAO0F,SAAW1K,EAAKgF,EAAO0F,UAAUpL,QAAQ,SAAU0F,EAAO8G,SAASxM,QAAQ,QAAS0F,EAAO+G,QAAQ1L,WAC1G2E,EAAOgH,WAAa,8EACpBhH,EAAO8C,IAAM9H,EAAKgF,EAAO8C,KAAKxI,QAAQ,UAAW0F,EAAOqG,UAAU/L,QAAQ,YAAa0F,EAAOgH,YAAY3L,WAC1G2E,EAAOgG,OAAS,sDAChBhG,EAAOiH,MAAQ,uCACfjH,EAAOiG,OAAS,8DAChBjG,EAAO9B,KAAOlD,EAAKgF,EAAO9B,MAAM5D,QAAQ,QAAS0F,EAAOgG,QAAQ1L,QAAQ,OAAQ0F,EAAOiH,OAAO3M,QAAQ,QAAS0F,EAAOiG,QAAQ5K,WAC9H2E,EAAOiE,QAAUjJ,EAAKgF,EAAOiE,SAAS3J,QAAQ,QAAS0F,EAAOgG,QAAQ1L,QAAQ,MAAO6E,EAAM6G,QAAQ3K,WACnG2E,EAAOmE,OAASnJ,EAAKgF,EAAOmE,QAAQ7J,QAAQ,MAAO6E,EAAM6G,QAAQ3K,WACjE2E,EAAOuG,cAAgBvL,EAAKgF,EAAOuG,cAAe,KAAKjM,QAAQ,UAAW0F,EAAOiE,SAAS3J,QAAQ,SAAU0F,EAAOmE,QAAQ9I,WAM3H2E,EAAOsG,OAASlQ,EAAS,CAAC,EAAG4J,GAM7BA,EAAOhH,SAAW5C,EAAS,CAAC,EAAG4J,EAAOsG,OAAQ,CAC5CY,OAAQ,CACN3F,MAAO,WACP4F,OAAQ,iEACRC,OAAQ,cACRC,OAAQ,YAEVC,GAAI,CACF/F,MAAO,QACP4F,OAAQ,6DACRC,OAAQ,YACRC,OAAQ,WAEVnJ,KAAMlD,EAAK,2BAA2BV,QAAQ,QAAS0F,EAAOgG,QAAQ3K,WACtE4I,QAASjJ,EAAK,iCAAiCV,QAAQ,QAAS0F,EAAOgG,QAAQ3K,aAOjF2E,EAAOvH,IAAMrC,EAAS,CAAC,EAAG4J,EAAOsG,OAAQ,CACvCnM,OAAQa,EAAKgF,EAAO7F,QAAQG,QAAQ,KAAM,QAAQe,WAClDkM,gBAAiB,4EACjB5B,IAAK,mEACLE,WAAY,6EACZJ,IAAK,+CACLnH,KAAM,+NAER0B,EAAOvH,IAAIkN,IAAM3K,EAAKgF,EAAOvH,IAAIkN,IAAK,KAAKrL,QAAQ,QAAS0F,EAAOvH,IAAI8O,iBAAiBlM,WAKxF2E,EAAOzH,OAASnC,EAAS,CAAC,EAAG4J,EAAOvH,IAAK,CACvC+M,GAAIxK,EAAKgF,EAAOwF,IAAIlL,QAAQ,OAAQ,KAAKe,WACzCiD,KAAMtD,EAAKgF,EAAOvH,IAAI6F,MAAMhE,QAAQ,OAAQ,iBAAiBA,QAAQ,UAAW,KAAKe,aA+CvF,IAAImM,EAAqB,WACvB,SAASA,EAAM1I,GACblI,KAAK+H,OAAS,GACd/H,KAAK+H,OAAOuF,MAAQ9O,OAAOqS,OAAO,MAClC7Q,KAAKkI,QAAUA,GAAWrF,EAAQC,SAClC9C,KAAKkI,QAAQxF,UAAY1C,KAAKkI,QAAQxF,WAAa,IAAIuF,EACvDjI,KAAK0C,UAAY1C,KAAKkI,QAAQxF,UAC9B1C,KAAK0C,UAAUwF,QAAUlI,KAAKkI,QAC9BlI,KAAK0C,UAAU8E,MAAQxH,KACvBA,KAAK8Q,YAAc,GACnB9Q,KAAK2H,MAAQ,CACXC,QAAQ,EACRiF,YAAY,EACZlD,KAAK,GAEP,IAAIrB,EAAQ,CACVC,MAAOA,EAAMmH,OACbtG,OAAQA,EAAOsG,QAEb1P,KAAKkI,QAAQ9F,UACfkG,EAAMC,MAAQA,EAAMnG,SACpBkG,EAAMc,OAASA,EAAOhH,UACbpC,KAAKkI,QAAQrG,MACtByG,EAAMC,MAAQA,EAAM1G,IAChB7B,KAAKkI,QAAQvG,OACf2G,EAAMc,OAASA,EAAOzH,OAEtB2G,EAAMc,OAASA,EAAOvH,KAG1B7B,KAAK0C,UAAU4F,MAAQA,CACzB,CAQAsI,EAAMG,IAAM,SAAa1I,EAAKH,GAE5B,OADY,IAAI0I,EAAM1I,GACT6I,IAAI1I,EACnB,EAKAuI,EAAMI,UAAY,SAAmB3I,EAAKH,GAExC,OADY,IAAI0I,EAAM1I,GACTF,aAAaK,EAC5B,EAKA,IAv1CoB4I,EAAaC,EAAYC,EAu1CzChJ,EAASyI,EAAM/Q,UA4ZnB,OA3ZAsI,EAAO4I,IAAM,SAAa1I,GAGxB,IAAI1H,EACJ,IAHA0H,EAAMA,EAAI3E,QAAQ,WAAY,MAC9B1D,KAAK4J,YAAYvB,EAAKrI,KAAK+H,QAEpBpH,EAAOX,KAAK8Q,YAAYtK,SAC7BxG,KAAKgI,aAAarH,EAAK0H,IAAK1H,EAAKoH,QAEnC,OAAO/H,KAAK+H,MACd,EAKAI,EAAOyB,YAAc,SAAqBvB,EAAKN,GAC7C,IAWIF,EAAOuJ,EAAWC,EAAQC,EAX1BC,EAAQvR,KAYZ,SAXe,IAAX+H,IACFA,EAAS,IAGTM,EADErI,KAAKkI,QAAQ9F,SACTiG,EAAI3E,QAAQ,MAAO,QAAQA,QAAQ,SAAU,IAE7C2E,EAAI3E,QAAQ,gBAAgB,SAAUG,EAAG2N,EAASC,GACtD,OAAOD,EAAU,OAAOxG,OAAOyG,EAAKtT,OACtC,IAGKkK,GACL,KAAIrI,KAAKkI,QAAQtG,YAAc5B,KAAKkI,QAAQtG,WAAW2G,OAASvI,KAAKkI,QAAQtG,WAAW2G,MAAMwD,MAAK,SAAU2F,GAC3G,SAAI7J,EAAQ6J,EAAavS,KAAK,CAC5BqI,MAAO+J,GACNlJ,EAAKN,MACNM,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,IACL,EAGX,KAKA,GAAIA,EAAQ7H,KAAK0C,UAAU0F,MAAMC,GAC/BA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QACL,IAArB0J,EAAMN,IAAIpJ,QAAgB4J,EAAO5J,OAAS,EAG5C4J,EAAOA,EAAO5J,OAAS,GAAGoJ,KAAO,KAEjCQ,EAAOpB,KAAKkB,QAMhB,GAAIA,EAAQ7H,KAAK0C,UAAU+F,KAAKJ,GAC9BA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,UAC9BiT,EAAYrJ,EAAOA,EAAO5J,OAAS,KAEE,cAAnBiT,EAAUtJ,MAA2C,SAAnBsJ,EAAUtJ,KAK5DC,EAAOpB,KAAKkB,IAJZuJ,EAAU7J,KAAO,KAAOM,EAAMN,IAC9B6J,EAAU1J,MAAQ,KAAOG,EAAMH,KAC/B1H,KAAK8Q,YAAY9Q,KAAK8Q,YAAY3S,OAAS,GAAGkK,IAAM+I,EAAU1J,WAQlE,GAAIG,EAAQ7H,KAAK0C,UAAUiG,OAAON,GAChCA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAIA,EAAQ7H,KAAK0C,UAAU4G,QAAQjB,GACjCA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAIA,EAAQ7H,KAAK0C,UAAU+G,GAAGpB,GAC5BA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAIA,EAAQ7H,KAAK0C,UAAUgH,WAAWrB,GACpCA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAIA,EAAQ7H,KAAK0C,UAAUmH,KAAKxB,GAC9BA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAIA,EAAQ7H,KAAK0C,UAAUc,KAAK6E,GAC9BA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAIA,EAAQ7H,KAAK0C,UAAUuJ,IAAI5D,GAC7BA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,UAC9BiT,EAAYrJ,EAAOA,EAAO5J,OAAS,KACE,cAAnBiT,EAAUtJ,MAA2C,SAAnBsJ,EAAUtJ,KAIlD9H,KAAK+H,OAAOuF,MAAMzF,EAAMqE,OAClClM,KAAK+H,OAAOuF,MAAMzF,EAAMqE,KAAO,CAC7BpH,KAAM+C,EAAM/C,KACZ2C,MAAOI,EAAMJ,SANf2J,EAAU7J,KAAO,KAAOM,EAAMN,IAC9B6J,EAAU1J,MAAQ,KAAOG,EAAMN,IAC/BvH,KAAK8Q,YAAY9Q,KAAK8Q,YAAY3S,OAAS,GAAGkK,IAAM+I,EAAU1J,WAWlE,GAAIG,EAAQ7H,KAAK0C,UAAUyJ,MAAM9D,GAC/BA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAIA,EAAQ7H,KAAK0C,UAAUiK,SAAStE,GAClCA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAyBd,GAnBAwJ,EAAShJ,EACLrI,KAAKkI,QAAQtG,YAAc5B,KAAKkI,QAAQtG,WAAW+P,YACrD,WACE,IAAIC,EAAaC,IACbC,EAAUzJ,EAAIrH,MAAM,GACpB+Q,OAAY,EAChBR,EAAMrJ,QAAQtG,WAAW+P,WAAWK,SAAQ,SAAUC,GAI3B,iBAHzBF,EAAYE,EAAc9S,KAAK,CAC7BqI,MAAOxH,MACN8R,KACkCC,GAAa,IAChDH,EAAaxG,KAAKC,IAAIuG,EAAYG,GAEtC,IACIH,EAAaC,KAAYD,GAAc,IACzCP,EAAShJ,EAAInE,UAAU,EAAG0N,EAAa,GAE1C,CAfD,GAiBE5R,KAAK2H,MAAMgC,MAAQ9B,EAAQ7H,KAAK0C,UAAUkK,UAAUyE,IACtDD,EAAYrJ,EAAOA,EAAO5J,OAAS,GAC/BmT,GAA2C,cAAnBF,EAAUtJ,MACpCsJ,EAAU7J,KAAO,KAAOM,EAAMN,IAC9B6J,EAAU1J,MAAQ,KAAOG,EAAMH,KAC/B1H,KAAK8Q,YAAYrK,MACjBzG,KAAK8Q,YAAY9Q,KAAK8Q,YAAY3S,OAAS,GAAGkK,IAAM+I,EAAU1J,MAE9DK,EAAOpB,KAAKkB,GAEdyJ,EAAuBD,EAAOlT,SAAWkK,EAAIlK,OAC7CkK,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,aAKhC,GAAI0J,EAAQ7H,KAAK0C,UAAUgF,KAAKW,GAC9BA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,SAC9BiT,EAAYrJ,EAAOA,EAAO5J,OAAS,KACC,SAAnBiT,EAAUtJ,MACzBsJ,EAAU7J,KAAO,KAAOM,EAAMN,IAC9B6J,EAAU1J,MAAQ,KAAOG,EAAMH,KAC/B1H,KAAK8Q,YAAYrK,MACjBzG,KAAK8Q,YAAY9Q,KAAK8Q,YAAY3S,OAAS,GAAGkK,IAAM+I,EAAU1J,MAE9DK,EAAOpB,KAAKkB,QAIhB,GAAIQ,EAAK,CACP,IAAI6J,EAAS,0BAA4B7J,EAAIwH,WAAW,GACxD,GAAI7P,KAAKkI,QAAQ1F,OAAQ,CACvB2P,EAAQC,MAAMF,GACd,KACF,CACE,MAAM,IAAIG,MAAMH,EAEpB,CAGF,OADAlS,KAAK2H,MAAMgC,KAAM,EACV5B,CACT,EACAI,EAAOiB,OAAS,SAAgBf,EAAKN,GAQnC,YAPe,IAAXA,IACFA,EAAS,IAEX/H,KAAK8Q,YAAYnK,KAAK,CACpB0B,IAAKA,EACLN,OAAQA,IAEHA,CACT,EAKAI,EAAOH,aAAe,SAAsBK,EAAKN,GAC/C,IAIIF,EAAOuJ,EAAWC,EAJlBiB,EAAStS,UACE,IAAX+H,IACFA,EAAS,IAKX,IACI9B,EACAsM,EAAc7E,EAFdD,EAAYpF,EAKhB,GAAIrI,KAAK+H,OAAOuF,MAAO,CACrB,IAAIA,EAAQ9O,OAAOgU,KAAKxS,KAAK+H,OAAOuF,OACpC,GAAIA,EAAMnP,OAAS,EACjB,KAA8E,OAAtE8H,EAAQjG,KAAK0C,UAAU4F,MAAMc,OAAOuG,cAAc/J,KAAK6H,KACzDH,EAAMmF,SAASxM,EAAM,GAAGjF,MAAMiF,EAAM,GAAGyM,YAAY,KAAO,GAAI,MAChEjF,EAAYA,EAAUzM,MAAM,EAAGiF,EAAMsI,OAAS,IAAMtH,EAAa,IAAKhB,EAAM,GAAG9H,OAAS,GAAK,IAAMsP,EAAUzM,MAAMhB,KAAK0C,UAAU4F,MAAMc,OAAOuG,cAAcrB,WAIrK,CAEA,KAA0E,OAAlErI,EAAQjG,KAAK0C,UAAU4F,MAAMc,OAAO4G,UAAUpK,KAAK6H,KACzDA,EAAYA,EAAUzM,MAAM,EAAGiF,EAAMsI,OAAS,IAAMtH,EAAa,IAAKhB,EAAM,GAAG9H,OAAS,GAAK,IAAMsP,EAAUzM,MAAMhB,KAAK0C,UAAU4F,MAAMc,OAAO4G,UAAU1B,WAI3J,KAA4E,OAApErI,EAAQjG,KAAK0C,UAAU4F,MAAMc,OAAO6G,YAAYrK,KAAK6H,KAC3DA,EAAYA,EAAUzM,MAAM,EAAGiF,EAAMsI,MAAQtI,EAAM,GAAG9H,OAAS,GAAK,KAAOsP,EAAUzM,MAAMhB,KAAK0C,UAAU4F,MAAMc,OAAO6G,YAAY3B,WACnItO,KAAK0C,UAAU4F,MAAMc,OAAO6G,YAAY3B,YAE1C,KAAOjG,GAOL,GANKkK,IACH7E,EAAW,IAEb6E,GAAe,IAGXvS,KAAKkI,QAAQtG,YAAc5B,KAAKkI,QAAQtG,WAAWwH,QAAUpJ,KAAKkI,QAAQtG,WAAWwH,OAAO2C,MAAK,SAAU2F,GAC7G,SAAI7J,EAAQ6J,EAAavS,KAAK,CAC5BqI,MAAO8K,GACNjK,EAAKN,MACNM,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,IACL,EAGX,KAKA,GAAIA,EAAQ7H,KAAK0C,UAAUa,OAAO8E,GAChCA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAIA,EAAQ7H,KAAK0C,UAAUwJ,IAAI7D,GAC7BA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,SAC9BiT,EAAYrJ,EAAOA,EAAO5J,OAAS,KACH,SAAf0J,EAAMC,MAAsC,SAAnBsJ,EAAUtJ,MAClDsJ,EAAU7J,KAAOM,EAAMN,IACvB6J,EAAU1J,MAAQG,EAAMH,MAExBK,EAAOpB,KAAKkB,QAMhB,GAAIA,EAAQ7H,KAAK0C,UAAU4E,KAAKe,GAC9BA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAIA,EAAQ7H,KAAK0C,UAAU2K,QAAQhF,EAAKrI,KAAK+H,OAAOuF,OAClDjF,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,SAC9BiT,EAAYrJ,EAAOA,EAAO5J,OAAS,KACH,SAAf0J,EAAMC,MAAsC,SAAnBsJ,EAAUtJ,MAClDsJ,EAAU7J,KAAOM,EAAMN,IACvB6J,EAAU1J,MAAQG,EAAMH,MAExBK,EAAOpB,KAAKkB,QAMhB,GAAIA,EAAQ7H,KAAK0C,UAAU8K,SAASnF,EAAKoF,EAAWC,GAClDrF,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAIA,EAAQ7H,KAAK0C,UAAU+L,SAASpG,GAClCA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAIA,EAAQ7H,KAAK0C,UAAUkM,GAAGvG,GAC5BA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAIA,EAAQ7H,KAAK0C,UAAUmM,IAAIxG,GAC7BA,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAIA,EAAQ7H,KAAK0C,UAAUoM,SAASzG,EAAKlG,GACvCkG,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,QAKd,GAAK7H,KAAK2H,MAAMC,UAAWC,EAAQ7H,KAAK0C,UAAUqM,IAAI1G,EAAKlG,KA2B3D,GAnBAkP,EAAShJ,EACLrI,KAAKkI,QAAQtG,YAAc5B,KAAKkI,QAAQtG,WAAW+Q,aACrD,WACE,IAAIf,EAAaC,IACbC,EAAUzJ,EAAIrH,MAAM,GACpB+Q,OAAY,EAChBO,EAAOpK,QAAQtG,WAAW+Q,YAAYX,SAAQ,SAAUC,GAI7B,iBAHzBF,EAAYE,EAAc9S,KAAK,CAC7BqI,MAAOxH,MACN8R,KACkCC,GAAa,IAChDH,EAAaxG,KAAKC,IAAIuG,EAAYG,GAEtC,IACIH,EAAaC,KAAYD,GAAc,IACzCP,EAAShJ,EAAInE,UAAU,EAAG0N,EAAa,GAE1C,CAfD,GAiBE/J,EAAQ7H,KAAK0C,UAAUwM,WAAWmC,EAAQ5O,GAC5C4F,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QACF,MAAxB0J,EAAMN,IAAIvG,OAAO,KAEnB0M,EAAW7F,EAAMN,IAAIvG,OAAO,IAE9BuR,GAAe,GACfnB,EAAYrJ,EAAOA,EAAO5J,OAAS,KACC,SAAnBiT,EAAUtJ,MACzBsJ,EAAU7J,KAAOM,EAAMN,IACvB6J,EAAU1J,MAAQG,EAAMH,MAExBK,EAAOpB,KAAKkB,QAIhB,GAAIQ,EAAK,CACP,IAAI6J,EAAS,0BAA4B7J,EAAIwH,WAAW,GACxD,GAAI7P,KAAKkI,QAAQ1F,OAAQ,CACvB2P,EAAQC,MAAMF,GACd,KACF,CACE,MAAM,IAAIG,MAAMH,EAEpB,OAlDE7J,EAAMA,EAAInE,UAAU2D,EAAMN,IAAIpJ,QAC9B4J,EAAOpB,KAAKkB,GAmDhB,OAAOE,CACT,EAzuDoBkJ,EA0uDPL,EA1uDgCO,EA0uDnB,CAAC,CACzBxS,IAAK,QACLiU,IAAK,WACH,MAAO,CACLrK,MAAOA,EACPa,OAAQA,EAEZ,KAjvD+B8H,EA0uDb,OAzuDJnT,EAAkBkT,EAAYpR,UAAWqR,GACrDC,GAAapT,EAAkBkT,EAAaE,GAChD3S,OAAOC,eAAewS,EAAa,YAAa,CAC9C1S,UAAU,IA+uDLqS,CACT,CApdyB,GAydrBiC,EAAwB,WAC1B,SAASA,EAAS3K,GAChBlI,KAAKkI,QAAUA,GAAWrF,EAAQC,QACpC,CACA,IAAIqF,EAAS0K,EAAShT,UA+JtB,OA9JAsI,EAAOM,KAAO,SAAcqK,EAAOC,EAAY3M,GAC7C,IAAI+C,GAAQ4J,GAAc,IAAI9M,MAAM,OAAO,GAC3C,GAAIjG,KAAKkI,QAAQlG,UAAW,CAC1B,IAAI4N,EAAM5P,KAAKkI,QAAQlG,UAAU8Q,EAAO3J,GAC7B,MAAPyG,GAAeA,IAAQkD,IACzB1M,GAAU,EACV0M,EAAQlD,EAEZ,CAEA,OADAkD,EAAQA,EAAMpP,QAAQ,MAAO,IAAM,KAC9ByF,EAGE,qBAAuBnJ,KAAKkI,QAAQhG,WAAaqB,EAAO4F,GAAQ,MAAQ/C,EAAU0M,EAAQvP,EAAOuP,GAAO,IAAS,kBAF/G,eAAiB1M,EAAU0M,EAAQvP,EAAOuP,GAAO,IAAS,iBAGrE,EAKA3K,EAAOuB,WAAa,SAAoBsJ,GACtC,MAAO,iBAAmBA,EAAQ,iBACpC,EACA7K,EAAO3E,KAAO,SAAcyP,GAC1B,OAAOA,CACT,EAQA9K,EAAOmB,QAAU,SAAiB5B,EAAMwF,EAAO3F,EAAK2L,GAClD,OAAIlT,KAAKkI,QAAQpG,UAER,KAAOoL,EAAQ,SADblN,KAAKkI,QAAQnG,aAAemR,EAAQC,KAAK5L,IACZ,KAAQG,EAAO,MAAQwF,EAAQ,MAIhE,KAAOA,EAAQ,IAAMxF,EAAO,MAAQwF,EAAQ,KACrD,EACA/E,EAAOsB,GAAK,WACV,OAAOzJ,KAAKkI,QAAQtF,MAAQ,UAAY,QAC1C,EACAuF,EAAO0B,KAAO,SAAcuJ,EAAM1I,EAASC,GACzC,IAAI7C,EAAO4C,EAAU,KAAO,KAE5B,MAAO,IAAM5C,GADA4C,GAAqB,IAAVC,EAAc,WAAaA,EAAQ,IAAM,IAClC,MAAQyI,EAAO,KAAOtL,EAAO,KAC9D,EAKAK,EAAOkL,SAAW,SAAkB3L,GAClC,MAAO,OAASA,EAAO,SACzB,EACAS,EAAOmL,SAAW,SAAkB5H,GAClC,MAAO,WAAaA,EAAU,cAAgB,IAAM,+BAAiC1L,KAAKkI,QAAQtF,MAAQ,KAAO,IAAM,IACzH,EAKAuF,EAAOyE,UAAY,SAAmBlF,GACpC,MAAO,MAAQA,EAAO,QACxB,EAMAS,EAAOgE,MAAQ,SAAeE,EAAQ+G,GAEpC,OADIA,IAAMA,EAAO,UAAYA,EAAO,YAC7B,qBAA4B/G,EAAS,aAAe+G,EAAO,YACpE,EAKAjL,EAAOoL,SAAW,SAAkBC,GAClC,MAAO,SAAWA,EAAU,SAC9B,EACArL,EAAOsL,UAAY,SAAmBD,EAASE,GAC7C,IAAI5L,EAAO4L,EAAMrH,OAAS,KAAO,KAEjC,OADUqH,EAAMpH,MAAQ,IAAMxE,EAAO,WAAc4L,EAAMpH,MAAQ,KAAQ,IAAMxE,EAAO,KACzE0L,EAAW,KAAO1L,EAAO,KACxC,EAMAK,EAAOmI,OAAS,SAAgB5I,GAC9B,MAAO,WAAaA,EAAO,WAC7B,EAKAS,EAAOuI,GAAK,SAAYhJ,GACtB,MAAO,OAASA,EAAO,OACzB,EAKAS,EAAOsG,SAAW,SAAkB/G,GAClC,MAAO,SAAWA,EAAO,SAC3B,EACAS,EAAOyG,GAAK,WACV,OAAO5O,KAAKkI,QAAQtF,MAAQ,QAAU,MACxC,EAKAuF,EAAO0G,IAAM,SAAanH,GACxB,MAAO,QAAUA,EAAO,QAC1B,EAOAS,EAAOb,KAAO,SAAcxC,EAAM2C,EAAOC,GAEvC,GAAa,QADb5C,EAAOF,EAAS5E,KAAKkI,QAAQ5F,SAAUtC,KAAKkI,QAAQxG,QAASoD,IAE3D,OAAO4C,EAET,IAAIkI,EAAM,YAAc9K,EAAO,IAK/B,OAJI2C,IACFmI,GAAO,WAAanI,EAAQ,KAE9BmI,GAAO,IAAMlI,EAAO,MAEtB,EAOAS,EAAOwL,MAAQ,SAAe7O,EAAM2C,EAAOC,GAEzC,GAAa,QADb5C,EAAOF,EAAS5E,KAAKkI,QAAQ5F,SAAUtC,KAAKkI,QAAQxG,QAASoD,IAE3D,OAAO4C,EAET,IAAIkI,EAAM,aAAgB9K,EAAO,UAAc4C,EAAO,IAKtD,OAJID,IACFmI,GAAO,WAAcnI,EAAQ,KAE/BmI,GAAO5P,KAAKkI,QAAQtF,MAAQ,KAAO,GAErC,EACAuF,EAAOT,KAAO,SAAc8G,GAC1B,OAAOA,CACT,EACOqE,CACT,CApK4B,GA0KxBe,EAA4B,WAC9B,SAASA,IAAgB,CACzB,IAAIzL,EAASyL,EAAa/T,UA6B1B,OA3BAsI,EAAOmI,OAAS,SAAgB5I,GAC9B,OAAOA,CACT,EACAS,EAAOuI,GAAK,SAAYhJ,GACtB,OAAOA,CACT,EACAS,EAAOsG,SAAW,SAAkB/G,GAClC,OAAOA,CACT,EACAS,EAAO0G,IAAM,SAAanH,GACxB,OAAOA,CACT,EACAS,EAAO3E,KAAO,SAAckE,GAC1B,OAAOA,CACT,EACAS,EAAOT,KAAO,SAAc8G,GAC1B,OAAOA,CACT,EACArG,EAAOb,KAAO,SAAcxC,EAAM2C,EAAOC,GACvC,MAAO,GAAKA,CACd,EACAS,EAAOwL,MAAQ,SAAe7O,EAAM2C,EAAOC,GACzC,MAAO,GAAKA,CACd,EACAS,EAAOyG,GAAK,WACV,MAAO,EACT,EACOgF,CACT,CAhCgC,GAqC5BC,EAAuB,WACzB,SAASA,IACP7T,KAAK8T,KAAO,CAAC,CACf,CAKA,IAAI3L,EAAS0L,EAAQhU,UA4CrB,OA3CAsI,EAAO4L,UAAY,SAAmBxS,GACpC,OAAOA,EAAMuC,cAAcyC,OAE1B7C,QAAQ,kBAAmB,IAE3BA,QAAQ,gEAAiE,IAAIA,QAAQ,MAAO,IAC/F,EAOAyE,EAAO6L,gBAAkB,SAAyBC,EAAcC,GAC9D,IAAIf,EAAOc,EACPE,EAAuB,EAC3B,GAAInU,KAAK8T,KAAKhU,eAAeqT,GAAO,CAClCgB,EAAuBnU,KAAK8T,KAAKG,GACjC,GAEEd,EAAOc,EAAe,OADtBE,QAEOnU,KAAK8T,KAAKhU,eAAeqT,GACpC,CAKA,OAJKe,IACHlU,KAAK8T,KAAKG,GAAgBE,EAC1BnU,KAAK8T,KAAKX,GAAQ,GAEbA,CACT,EAQAhL,EAAOgL,KAAO,SAAc5R,EAAO2G,QACjB,IAAZA,IACFA,EAAU,CAAC,GAEb,IAAIiL,EAAOnT,KAAK+T,UAAUxS,GAC1B,OAAOvB,KAAKgU,gBAAgBb,EAAMjL,EAAQkM,OAC5C,EACOP,CACT,CArD2B,GA0DvBQ,EAAsB,WACxB,SAASA,EAAOnM,GACdlI,KAAKkI,QAAUA,GAAWrF,EAAQC,SAClC9C,KAAKkI,QAAQ7F,SAAWrC,KAAKkI,QAAQ7F,UAAY,IAAIwQ,EACrD7S,KAAKqC,SAAWrC,KAAKkI,QAAQ7F,SAC7BrC,KAAKqC,SAAS6F,QAAUlI,KAAKkI,QAC7BlI,KAAKsU,aAAe,IAAIV,EACxB5T,KAAKkT,QAAU,IAAIW,CACrB,CAKAQ,EAAOE,MAAQ,SAAexM,EAAQG,GAEpC,OADa,IAAImM,EAAOnM,GACVqM,MAAMxM,EACtB,EAKAsM,EAAOG,YAAc,SAAqBzM,EAAQG,GAEhD,OADa,IAAImM,EAAOnM,GACVsM,YAAYzM,EAC5B,EAKA,IAAII,EAASkM,EAAOxU,UAgQpB,OA/PAsI,EAAOoM,MAAQ,SAAexM,EAAQ4B,QACxB,IAARA,IACFA,GAAM,GAER,IACEzL,EACAsO,EACAC,EACAgI,EACAC,EACAhI,EACAiI,EACAtI,EACA+G,EACAvL,EACA6C,EACAC,EACAC,EACAgK,EACAxI,EACAV,EACAD,EACA6H,EACAuB,EAnBEjF,EAAM,GAoBN9I,EAAIiB,EAAO5J,OACf,IAAKD,EAAI,EAAGA,EAAI4I,EAAG5I,IAIjB,GAHA2J,EAAQE,EAAO7J,KAGX8B,KAAKkI,QAAQtG,YAAc5B,KAAKkI,QAAQtG,WAAWkT,WAAa9U,KAAKkI,QAAQtG,WAAWkT,UAAUjN,EAAMC,SAI9F,KAHZ+M,EAAM7U,KAAKkI,QAAQtG,WAAWkT,UAAUjN,EAAMC,MAAM3I,KAAK,CACvD4V,OAAQ/U,MACP6H,KACmB,CAAC,QAAS,KAAM,UAAW,OAAQ,QAAS,aAAc,OAAQ,OAAQ,YAAa,QAAQ4K,SAAS5K,EAAMC,MAKtI,OAAQD,EAAMC,MACZ,IAAK,QAED,SAEJ,IAAK,KAED8H,GAAO5P,KAAKqC,SAASoH,KACrB,SAEJ,IAAK,UAEDmG,GAAO5P,KAAKqC,SAASiH,QAAQtJ,KAAKwU,YAAY3M,EAAME,QAASF,EAAM2B,MAAO5F,EAAS5D,KAAKwU,YAAY3M,EAAME,OAAQ/H,KAAKsU,eAAgBtU,KAAKkT,SAC5I,SAEJ,IAAK,OAEDtD,GAAO5P,KAAKqC,SAASoG,KAAKZ,EAAMH,KAAMG,EAAMsB,KAAMtB,EAAMzB,SACxD,SAEJ,IAAK,QAOD,IALAiG,EAAS,GAGTsI,EAAO,GACPF,EAAK5M,EAAMwE,OAAOlO,OACbqO,EAAI,EAAGA,EAAIiI,EAAIjI,IAClBmI,GAAQ3U,KAAKqC,SAASoR,UAAUzT,KAAKwU,YAAY3M,EAAMwE,OAAOG,GAAGzE,QAAS,CACxEsE,QAAQ,EACRC,MAAOzE,EAAMyE,MAAME,KAMvB,IAHAH,GAAUrM,KAAKqC,SAASkR,SAASoB,GACjCvB,EAAO,GACPqB,EAAK5M,EAAM0E,KAAKpO,OACXqO,EAAI,EAAGA,EAAIiI,EAAIjI,IAAK,CAIvB,IAFAmI,EAAO,GACPD,GAFAhI,EAAM7E,EAAM0E,KAAKC,IAERrO,OACJsO,EAAI,EAAGA,EAAIiI,EAAIjI,IAClBkI,GAAQ3U,KAAKqC,SAASoR,UAAUzT,KAAKwU,YAAY9H,EAAID,GAAG1E,QAAS,CAC/DsE,QAAQ,EACRC,MAAOzE,EAAMyE,MAAMG,KAGvB2G,GAAQpT,KAAKqC,SAASkR,SAASoB,EACjC,CACA/E,GAAO5P,KAAKqC,SAAS8J,MAAME,EAAQ+G,GACnC,SAEJ,IAAK,aAEDA,EAAOpT,KAAKuU,MAAM1M,EAAME,QACxB6H,GAAO5P,KAAKqC,SAASqH,WAAW0J,GAChC,SAEJ,IAAK,OAOD,IALA1I,EAAU7C,EAAM6C,QAChBC,EAAQ9C,EAAM8C,MACdC,EAAQ/C,EAAM+C,MACd6J,EAAK5M,EAAMgD,MAAM1M,OACjBiV,EAAO,GACF5G,EAAI,EAAGA,EAAIiI,EAAIjI,IAElBd,GADAU,EAAOvE,EAAMgD,MAAM2B,IACJd,QACfD,EAAOW,EAAKX,KACZmJ,EAAW,GACPxI,EAAKX,OACP6H,EAAWtT,KAAKqC,SAASiR,SAAS5H,GAC9Bd,EACEwB,EAAKrE,OAAO5J,OAAS,GAA6B,cAAxBiO,EAAKrE,OAAO,GAAGD,MAC3CsE,EAAKrE,OAAO,GAAGL,KAAO4L,EAAW,IAAMlH,EAAKrE,OAAO,GAAGL,KAClD0E,EAAKrE,OAAO,GAAGA,QAAUqE,EAAKrE,OAAO,GAAGA,OAAO5J,OAAS,GAAuC,SAAlCiO,EAAKrE,OAAO,GAAGA,OAAO,GAAGD,OACxFsE,EAAKrE,OAAO,GAAGA,OAAO,GAAGL,KAAO4L,EAAW,IAAMlH,EAAKrE,OAAO,GAAGA,OAAO,GAAGL,OAG5E0E,EAAKrE,OAAOiN,QAAQ,CAClBlN,KAAM,OACNJ,KAAM4L,IAIVsB,GAAYtB,GAGhBsB,GAAY5U,KAAKuU,MAAMnI,EAAKrE,OAAQ6C,GACpCwI,GAAQpT,KAAKqC,SAASgR,SAASuB,EAAUnJ,EAAMC,GAEjDkE,GAAO5P,KAAKqC,SAASwH,KAAKuJ,EAAM1I,EAASC,GACzC,SAEJ,IAAK,OAGDiF,GAAO5P,KAAKqC,SAASmB,KAAKqE,EAAMH,MAChC,SAEJ,IAAK,YAEDkI,GAAO5P,KAAKqC,SAASuK,UAAU5M,KAAKwU,YAAY3M,EAAME,SACtD,SAEJ,IAAK,OAGD,IADAqL,EAAOvL,EAAME,OAAS/H,KAAKwU,YAAY3M,EAAME,QAAUF,EAAMH,KACtDxJ,EAAI,EAAI4I,GAA4B,SAAvBiB,EAAO7J,EAAI,GAAG4J,MAEhCsL,GAAQ,OADRvL,EAAQE,IAAS7J,IACK6J,OAAS/H,KAAKwU,YAAY3M,EAAME,QAAUF,EAAMH,MAExEkI,GAAOjG,EAAM3J,KAAKqC,SAASuK,UAAUwG,GAAQA,EAC7C,SAEJ,QAEI,IAAIlB,EAAS,eAAiBrK,EAAMC,KAAO,wBAC3C,GAAI9H,KAAKkI,QAAQ1F,OAEf,YADA2P,EAAQC,MAAMF,GAGd,MAAM,IAAIG,MAAMH,QA7HpBtC,GAAOiF,GAAO,GAkIpB,OAAOjF,CACT,EAKAzH,EAAOqM,YAAc,SAAqBzM,EAAQ1F,GAChDA,EAAWA,GAAYrC,KAAKqC,SAC5B,IACEnE,EACA2J,EACAgN,EAHEjF,EAAM,GAIN9I,EAAIiB,EAAO5J,OACf,IAAKD,EAAI,EAAGA,EAAI4I,EAAG5I,IAIjB,GAHA2J,EAAQE,EAAO7J,KAGX8B,KAAKkI,QAAQtG,YAAc5B,KAAKkI,QAAQtG,WAAWkT,WAAa9U,KAAKkI,QAAQtG,WAAWkT,UAAUjN,EAAMC,SAI9F,KAHZ+M,EAAM7U,KAAKkI,QAAQtG,WAAWkT,UAAUjN,EAAMC,MAAM3I,KAAK,CACvD4V,OAAQ/U,MACP6H,KACmB,CAAC,SAAU,OAAQ,OAAQ,QAAS,SAAU,KAAM,WAAY,KAAM,MAAO,QAAQ4K,SAAS5K,EAAMC,MAK5H,OAAQD,EAAMC,MACZ,IAAK,SA6CL,IAAK,OAED8H,GAAOvN,EAASqF,KAAKG,EAAMH,MAC3B,MA3CJ,IAAK,OAEDkI,GAAOvN,EAASmB,KAAKqE,EAAMH,MAC3B,MAEJ,IAAK,OAEDkI,GAAOvN,EAASiF,KAAKO,EAAM/C,KAAM+C,EAAMJ,MAAOzH,KAAKwU,YAAY3M,EAAME,OAAQ1F,IAC7E,MAEJ,IAAK,QAEDuN,GAAOvN,EAASsR,MAAM9L,EAAM/C,KAAM+C,EAAMJ,MAAOI,EAAMH,MACrD,MAEJ,IAAK,SAEDkI,GAAOvN,EAASiO,OAAOtQ,KAAKwU,YAAY3M,EAAME,OAAQ1F,IACtD,MAEJ,IAAK,KAEDuN,GAAOvN,EAASqO,GAAG1Q,KAAKwU,YAAY3M,EAAME,OAAQ1F,IAClD,MAEJ,IAAK,WAEDuN,GAAOvN,EAASoM,SAAS5G,EAAMH,MAC/B,MAEJ,IAAK,KAEDkI,GAAOvN,EAASuM,KAChB,MAEJ,IAAK,MAEDgB,GAAOvN,EAASwM,IAAI7O,KAAKwU,YAAY3M,EAAME,OAAQ1F,IACnD,MAOJ,QAEI,IAAI6P,EAAS,eAAiBrK,EAAMC,KAAO,wBAC3C,GAAI9H,KAAKkI,QAAQ1F,OAEf,YADA2P,EAAQC,MAAMF,GAGd,MAAM,IAAIG,MAAMH,QA9DpBtC,GAAOiF,GAAO,GAmEpB,OAAOjF,CACT,EACOyE,CACT,CA9R0B,GAgStBY,EAAqB,WACvB,SAASA,EAAM/M,GACblI,KAAKkI,QAAUA,GAAWrF,EAAQC,QACpC,CACA,IAAIqF,EAAS8M,EAAMpV,UAcnB,OAVAsI,EAAO+M,WAAa,SAAoBC,GACtC,OAAOA,CACT,EAKAhN,EAAOiN,YAAc,SAAqB5R,GACxC,OAAOA,CACT,EACOyR,CACT,CAnByB,GA8CzB,SAASI,EAAc7N,EAAOuN,GAC5B,OAAO,SAAU1M,EAAK/D,EAAKgR,GACN,mBAARhR,IACTgR,EAAWhR,EACXA,EAAM,MAER,IAAIiR,EAAU/V,EAAS,CAAC,EAAG8E,GAEvBkR,EAhCR,SAAiBhT,EAAQf,EAAO6T,GAC9B,OAAO,SAAUrQ,GAEf,GADAA,EAAEwQ,SAAW,8DACTjT,EAAQ,CACV,IAAIkT,EAAM,iCAAmCnS,EAAO0B,EAAEwQ,QAAU,IAAI,GAAQ,SAC5E,OAAIhU,EACKkU,QAAQC,QAAQF,GAErBJ,OACFA,EAAS,KAAMI,GAGVA,CACT,CACA,GAAIjU,EACF,OAAOkU,QAAQE,OAAO5Q,GAExB,IAAIqQ,EAIJ,MAAMrQ,EAHJqQ,EAASrQ,EAIb,CACF,CASqB6Q,EADjBxR,EAAM9E,EAAS,CAAC,EAAGuW,EAAOjT,SAAUyS,IACP/S,OAAQ8B,EAAI7C,MAAO6T,GAGhD,GAAI,MAAOjN,EACT,OAAOmN,EAAW,IAAInD,MAAM,mDAE9B,GAAmB,iBAARhK,EACT,OAAOmN,EAAW,IAAInD,MAAM,wCAA0C7T,OAAOqB,UAAUkB,SAAS5B,KAAKkJ,GAAO,sBAM9G,GA/hEJ,SAAkC/D,GAC5BA,GAAOA,EAAIhC,WAAagC,EAAI9B,QAC9B2P,EAAQ6D,KAAK,0MAEjB,CAuhEIC,CAAyB3R,GACrBA,EAAIrC,QACNqC,EAAIrC,MAAMiG,QAAU5D,GAElBgR,EAAU,CACZ,IACIvN,EADA/F,EAAYsC,EAAItC,UAEpB,IACMsC,EAAIrC,QACNoG,EAAM/D,EAAIrC,MAAMiT,WAAW7M,IAE7BN,EAASP,EAAMa,EAAK/D,EACtB,CAAE,MAAOW,GACP,OAAOuQ,EAAWvQ,EACpB,CACA,IAAI3D,EAAO,SAAc4U,GACvB,IAAItG,EACJ,IAAKsG,EACH,IACM5R,EAAI3B,YACNoT,EAAOpT,WAAWoF,EAAQzD,EAAI3B,YAEhCiN,EAAMmF,EAAOhN,EAAQzD,GACjBA,EAAIrC,QACN2N,EAAMtL,EAAIrC,MAAMmT,YAAYxF,GAEhC,CAAE,MAAO3K,GACPiR,EAAMjR,CACR,CAGF,OADAX,EAAItC,UAAYA,EACTkU,EAAMV,EAAWU,GAAOZ,EAAS,KAAM1F,EAChD,EACA,IAAK5N,GAAaA,EAAU7D,OAAS,EACnC,OAAOmD,IAGT,UADOgD,EAAItC,WACN+F,EAAO5J,OAAQ,OAAOmD,IAC3B,IAAI6U,EAAU,EAwBd,OAvBAJ,EAAOpT,WAAWoF,GAAQ,SAAUF,GACf,SAAfA,EAAMC,OACRqO,IACAC,YAAW,WACTpU,EAAU6F,EAAMH,KAAMG,EAAMsB,MAAM,SAAU+M,EAAKzN,GAC/C,GAAIyN,EACF,OAAO5U,EAAK4U,GAEF,MAARzN,GAAgBA,IAASZ,EAAMH,OACjCG,EAAMH,KAAOe,EACbZ,EAAMzB,SAAU,GAGF,MADhB+P,GAEE7U,GAEJ,GACF,GAAG,GAEP,SACgB,IAAZ6U,GACF7U,IAGJ,CACA,GAAIgD,EAAI7C,MACN,OAAOkU,QAAQC,QAAQtR,EAAIrC,MAAQqC,EAAIrC,MAAMiT,WAAW7M,GAAOA,GAAKgO,MAAK,SAAUhO,GACjF,OAAOb,EAAMa,EAAK/D,EACpB,IAAG+R,MAAK,SAAUtO,GAChB,OAAOzD,EAAI3B,WAAagT,QAAQW,IAAIP,EAAOpT,WAAWoF,EAAQzD,EAAI3B,aAAa0T,MAAK,WAClF,OAAOtO,CACT,IAAKA,CACP,IAAGsO,MAAK,SAAUtO,GAChB,OAAOgN,EAAOhN,EAAQzD,EACxB,IAAG+R,MAAK,SAAU7S,GAChB,OAAOc,EAAIrC,MAAQqC,EAAIrC,MAAMmT,YAAY5R,GAAQA,CACnD,IAAU,MAAEgS,GAEd,IACMlR,EAAIrC,QACNoG,EAAM/D,EAAIrC,MAAMiT,WAAW7M,IAE7B,IAAIkO,EAAU/O,EAAMa,EAAK/D,GACrBA,EAAI3B,YACNoT,EAAOpT,WAAW4T,EAASjS,EAAI3B,YAEjC,IAAIa,EAAOuR,EAAOwB,EAASjS,GAI3B,OAHIA,EAAIrC,QACNuB,EAAOc,EAAIrC,MAAMmT,YAAY5R,IAExBA,CACT,CAAE,MAAOyB,GACP,OAAOuQ,EAAWvQ,EACpB,CACF,CACF,CAKA,SAAS8Q,EAAO1N,EAAK/D,EAAKgR,GACxB,OAAOD,EAAczE,EAAMG,IAAKsD,EAAOE,MAAhCc,CAAuChN,EAAK/D,EAAKgR,EAC1D,CAhJAL,EAAMuB,iBAAmB,IAAIC,IAAI,CAAC,aAAc,gBAsJhDV,EAAO7N,QAAU6N,EAAOW,WAAa,SAAUpS,GA/2E/C,IAAwBqS,EAk3EtB,OAFAZ,EAAOjT,SAAWtD,EAAS,CAAC,EAAGuW,EAAOjT,SAAUwB,GAh3E1BqS,EAi3EPZ,EAAOjT,SAh3EtBD,EAAQC,SAAW6T,EAi3EZZ,CACT,EACAA,EAAOvU,YAAcA,EACrBuU,EAAOjT,SAAWD,EAAQC,SAM1BiT,EAAOa,IAAM,WAKX,IAJA,IAAIhV,EAAamU,EAAOjT,SAASlB,YAAc,CAC7CkT,UAAW,CAAC,EACZ+B,YAAa,CAAC,GAEPC,EAAOnX,UAAUxB,OAAQ4Y,EAAO,IAAI1W,MAAMyW,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQrX,UAAUqX,GAEzBD,EAAK/E,SAAQ,SAAUiF,GAErB,IAAIC,EAAO1X,EAAS,CAAC,EAAGyX,GAsJxB,GAnJAC,EAAKzV,MAAQsU,EAAOjT,SAASrB,OAASyV,EAAKzV,QAAS,EAGhDwV,EAAKrV,aACPqV,EAAKrV,WAAWoQ,SAAQ,SAAUmF,GAChC,IAAKA,EAAIjW,KACP,MAAM,IAAImR,MAAM,2BAElB,GAAI8E,EAAI9U,SAAU,CAEhB,IAAI+U,EAAexV,EAAWkT,UAAUqC,EAAIjW,MAG1CU,EAAWkT,UAAUqC,EAAIjW,MAFvBkW,EAE+B,WAC/B,IAAK,IAAIC,EAAQ1X,UAAUxB,OAAQ4Y,EAAO,IAAI1W,MAAMgX,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFP,EAAKO,GAAS3X,UAAU2X,GAE1B,IAAIzC,EAAMsC,EAAI9U,SAAStC,MAAMC,KAAM+W,GAInC,OAHY,IAARlC,IACFA,EAAMuC,EAAarX,MAAMC,KAAM+W,IAE1BlC,CACT,EAEiCsC,EAAI9U,QAEzC,CACA,GAAI8U,EAAIzU,UAAW,CAEjB,IAAKyU,EAAIjK,OAAuB,UAAdiK,EAAIjK,OAAmC,WAAdiK,EAAIjK,MAC7C,MAAM,IAAImF,MAAM,+CAEdzQ,EAAWuV,EAAIjK,OACjBtL,EAAWuV,EAAIjK,OAAO8H,QAAQmC,EAAIzU,WAElCd,EAAWuV,EAAIjK,OAAS,CAACiK,EAAIzU,WAE3ByU,EAAIxM,QAEY,UAAdwM,EAAIjK,MACFtL,EAAW+P,WACb/P,EAAW+P,WAAWhL,KAAKwQ,EAAIxM,OAE/B/I,EAAW+P,WAAa,CAACwF,EAAIxM,OAER,WAAdwM,EAAIjK,QACTtL,EAAW+Q,YACb/Q,EAAW+Q,YAAYhM,KAAKwQ,EAAIxM,OAEhC/I,EAAW+Q,YAAc,CAACwE,EAAIxM,QAItC,CACIwM,EAAIN,cAENjV,EAAWiV,YAAYM,EAAIjW,MAAQiW,EAAIN,YAE3C,IACAK,EAAKtV,WAAaA,GAIhBqV,EAAK5U,UACP,WACE,IAAIA,EAAW0T,EAAOjT,SAAST,UAAY,IAAIwQ,EAC3C0E,EAAQ,SAAeC,GACzB,IAAIJ,EAAe/U,EAASmV,GAE5BnV,EAASmV,GAAQ,WACf,IAAK,IAAIC,EAAQ9X,UAAUxB,OAAQ4Y,EAAO,IAAI1W,MAAMoX,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFX,EAAKW,GAAS/X,UAAU+X,GAE1B,IAAI7C,EAAMoC,EAAK5U,SAASmV,GAAMzX,MAAMsC,EAAU0U,GAI9C,OAHY,IAARlC,IACFA,EAAMuC,EAAarX,MAAMsC,EAAU0U,IAE9BlC,CACT,CACF,EACA,IAAK,IAAI2C,KAAQP,EAAK5U,SACpBkV,EAAMC,GAERN,EAAK7U,SAAWA,CACjB,CApBD,GAsBE4U,EAAKvU,WACP,WACE,IAAIA,EAAYqT,EAAOjT,SAASJ,WAAa,IAAIuF,EAC7C0P,EAAS,SAAgBH,GAC3B,IAAII,EAAgBlV,EAAU8U,GAE9B9U,EAAU8U,GAAQ,WAChB,IAAK,IAAIK,EAAQlY,UAAUxB,OAAQ4Y,EAAO,IAAI1W,MAAMwX,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFf,EAAKe,GAASnY,UAAUmY,GAE1B,IAAIjD,EAAMoC,EAAKvU,UAAU8U,GAAMzX,MAAM2C,EAAWqU,GAIhD,OAHY,IAARlC,IACFA,EAAM+C,EAAc7X,MAAM2C,EAAWqU,IAEhClC,CACT,CACF,EACA,IAAK,IAAI2C,KAAQP,EAAKvU,UACpBiV,EAAOH,GAETN,EAAKxU,UAAYA,CAClB,CApBD,GAwBEuU,EAAKhV,OACP,WACE,IAAIA,EAAQ8T,EAAOjT,SAASb,OAAS,IAAIgT,EACrC8C,EAAS,SAAgBP,GAC3B,IAAIQ,EAAW/V,EAAMuV,GACjBvC,EAAMuB,iBAAiByB,IAAIT,GAC7BvV,EAAMuV,GAAQ,SAAU9Y,GACtB,GAAIqX,EAAOjT,SAASrB,MAClB,OAAOkU,QAAQC,QAAQqB,EAAKhV,MAAMuV,GAAMrY,KAAK8C,EAAOvD,IAAM2X,MAAK,SAAUxB,GACvE,OAAOmD,EAAS7Y,KAAK8C,EAAO4S,EAC9B,IAEF,IAAIA,EAAMoC,EAAKhV,MAAMuV,GAAMrY,KAAK8C,EAAOvD,GACvC,OAAOsZ,EAAS7Y,KAAK8C,EAAO4S,EAC9B,EAEA5S,EAAMuV,GAAQ,WACZ,IAAK,IAAIU,EAAQvY,UAAUxB,OAAQ4Y,EAAO,IAAI1W,MAAM6X,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFpB,EAAKoB,GAASxY,UAAUwY,GAE1B,IAAItD,EAAMoC,EAAKhV,MAAMuV,GAAMzX,MAAMkC,EAAO8U,GAIxC,OAHY,IAARlC,IACFA,EAAMmD,EAASjY,MAAMkC,EAAO8U,IAEvBlC,CACT,CAEJ,EACA,IAAK,IAAI2C,KAAQP,EAAKhV,MACpB8V,EAAOP,GAETN,EAAKjV,MAAQA,CACd,CA/BD,GAmCEgV,EAAKtU,WAAY,CACnB,IAAIyV,EAAcrC,EAAOjT,SAASH,WAClCuU,EAAKvU,WAAa,SAAUkF,GAC1B,IAAIwQ,EAAS,GAKb,OAJAA,EAAO1R,KAAKsQ,EAAKtU,WAAWxD,KAAKa,KAAM6H,IACnCuQ,IACFC,EAASA,EAAOC,OAAOF,EAAYjZ,KAAKa,KAAM6H,KAEzCwQ,CACT,CACF,CACAtC,EAAOW,WAAWQ,EACpB,GACF,EAMAnB,EAAOpT,WAAa,SAAUoF,EAAQuN,GAuCpC,IAtCA,IAsC8DiD,EAtC1DF,EAAS,GACTG,EAAS,WACX,IAAI3Q,EAAQ0Q,EAAMhX,MAElB,OADA8W,EAASA,EAAOC,OAAOhD,EAASnW,KAAK4W,EAAQlO,IACrCA,EAAMC,MACZ,IAAK,QAED,IAAK,IAAgE2Q,EAA5DC,EAAapY,EAAgCuH,EAAMwE,UAAmBoM,EAASC,KAAcpX,MAAO,CAC3G,IAAIqT,EAAO8D,EAAOlX,MAClB8W,EAASA,EAAOC,OAAOvC,EAAOpT,WAAWgS,EAAK5M,OAAQuN,GACxD,CACA,IAAK,IAA8DqD,EAA1DC,EAAatY,EAAgCuH,EAAM0E,QAAiBoM,EAASC,KAActX,MAElG,IADA,IAC4DuX,EAAnDC,EAAaxY,EADZqY,EAAOpX,SACqDsX,EAASC,KAAcxX,MAAO,CAClG,IAAIyX,EAAQF,EAAOtX,MACnB8W,EAASA,EAAOC,OAAOvC,EAAOpT,WAAWoW,EAAMhR,OAAQuN,GACzD,CAEF,MAEJ,IAAK,OAED+C,EAASA,EAAOC,OAAOvC,EAAOpT,WAAWkF,EAAMgD,MAAOyK,IACtD,MAEJ,QAEQS,EAAOjT,SAASlB,YAAcmU,EAAOjT,SAASlB,WAAWiV,aAAed,EAAOjT,SAASlB,WAAWiV,YAAYhP,EAAMC,MAEvHiO,EAAOjT,SAASlB,WAAWiV,YAAYhP,EAAMC,MAAMkK,SAAQ,SAAU6E,GACnEwB,EAASA,EAAOC,OAAOvC,EAAOpT,WAAWkF,EAAMgP,GAAcvB,GAC/D,IACSzN,EAAME,SACfsQ,EAASA,EAAOC,OAAOvC,EAAOpT,WAAWkF,EAAME,OAAQuN,KAIjE,EACS0D,EAAY1Y,EAAgCyH,KAAkBwQ,EAAQS,KAAa1X,MAC1FkX,IAEF,OAAOH,CACT,EAMAtC,EAAOvB,YAAca,EAAczE,EAAMI,UAAWqD,EAAOG,aAK3DuB,EAAO1B,OAASA,EAChB0B,EAAOhB,OAASV,EAAOE,MACvBwB,EAAOlD,SAAWA,EAClBkD,EAAOnC,aAAeA,EACtBmC,EAAOnF,MAAQA,EACfmF,EAAOvO,MAAQoJ,EAAMG,IACrBgF,EAAO9N,UAAYA,EACnB8N,EAAOlC,QAAUA,EACjBkC,EAAOd,MAAQA,EACfc,EAAOxB,MAAQwB,EACf,IAAI7N,EAAU6N,EAAO7N,QACjBwO,EAAaX,EAAOW,WACpBE,EAAMb,EAAOa,IACbjU,EAAaoT,EAAOpT,WACpB6R,EAAcuB,EAAOvB,YACrBD,EAAQwB,EACRhB,EAASV,EAAOE,MAChB/M,EAAQoJ,EAAMG,IAElBlO,EAAQoS,MAAQA,EAChBpS,EAAQ+N,MAAQA,EAChB/N,EAAQwR,OAASA,EACjBxR,EAAQgQ,SAAWA,EACnBhQ,EAAQgR,QAAUA,EAClBhR,EAAQ+Q,aAAeA,EACvB/Q,EAAQoF,UAAYA,EACpBpF,EAAQrB,YAAcA,EACtBqB,EAAQ2E,MAAQA,EAChB3E,EAAQkT,OAASA,EACjBlT,EAAQqF,QAAUA,EAClBrF,EAAQ0R,MAAQA,EAChB1R,EAAQ2R,YAAcA,EACtB3R,EAAQkS,OAASA,EACjBlS,EAAQ6T,WAAaA,EACrB7T,EAAQ+T,IAAMA,EACd/T,EAAQF,WAAaA,C,gBCxvFrBnE,OAAOC,eAAeoE,EAAS,aAA/B,CAA+CtB,OAAO,IAOtD,MAAM0X,UAAmB5G,OAKzB,MAAM6G,UAA6BD,EACjC,WAAAhY,CAAYkY,GACVC,MAAM,qBAAqBD,EAAOE,cACpC,EAMF,MAAMC,UAA6BL,EACjC,WAAAhY,CAAYkY,GACVC,MAAM,qBAAqBD,EAAOE,cACpC,EAMF,MAAME,UAA6BN,EACjC,WAAAhY,CAAYkY,GACVC,MAAM,qBAAqBD,EAAOE,cACpC,EAMF,MAAMG,UAAsCP,GAK5C,MAAMQ,UAAyBR,EAC7B,WAAAhY,CAAYyY,GACVN,MAAM,gBAAgBM,IACxB,EAMF,MAAMC,UAA6BV,GAKnC,MAAMW,UAA4BX,EAChC,WAAAhY,GACEmY,MAAM,4BACR,EAOF,MAAMtY,EAAI,UACR+Y,EAAI,QACJ/S,EAAI,OACAgT,EAAa,CACjBC,KAAMjZ,EACNkZ,MAAOlZ,EACPmZ,IAAKnZ,GAEDoZ,EAAW,CACfH,KAAMjZ,EACNkZ,MAAOH,EACPI,IAAKnZ,GAEDqZ,EAAwB,CAC5BJ,KAAMjZ,EACNkZ,MAAOH,EACPI,IAAKnZ,EACLsZ,QAASP,GAELQ,EAAY,CAChBN,KAAMjZ,EACNkZ,MAAOlT,EACPmT,IAAKnZ,GAEDwZ,EAAY,CAChBP,KAAMjZ,EACNkZ,MAAOlT,EACPmT,IAAKnZ,EACLsZ,QAAStT,GAELyT,EAAc,CAClBC,KAAM1Z,EACN2Z,OAAQ3Z,GAEJ4Z,EAAoB,CACxBF,KAAM1Z,EACN2Z,OAAQ3Z,EACR6Z,OAAQ7Z,GAEJ8Z,EAAyB,CAC7BJ,KAAM1Z,EACN2Z,OAAQ3Z,EACR6Z,OAAQ7Z,EACR+Z,aAAchB,GAEViB,EAAwB,CAC5BN,KAAM1Z,EACN2Z,OAAQ3Z,EACR6Z,OAAQ7Z,EACR+Z,aAAc/T,GAEViU,EAAiB,CACrBP,KAAM1Z,EACN2Z,OAAQ3Z,EACRka,UAAW,OAEPC,EAAuB,CAC3BT,KAAM1Z,EACN2Z,OAAQ3Z,EACR6Z,OAAQ7Z,EACRka,UAAW,OAEPE,EAA4B,CAChCV,KAAM1Z,EACN2Z,OAAQ3Z,EACR6Z,OAAQ7Z,EACRka,UAAW,MACXH,aAAchB,GAEVsB,EAA2B,CAC/BX,KAAM1Z,EACN2Z,OAAQ3Z,EACR6Z,OAAQ7Z,EACRka,UAAW,MACXH,aAAc/T,GAEVsU,EAAiB,CACrBrB,KAAMjZ,EACNkZ,MAAOlZ,EACPmZ,IAAKnZ,EACL0Z,KAAM1Z,EACN2Z,OAAQ3Z,GAEJua,EAA8B,CAClCtB,KAAMjZ,EACNkZ,MAAOlZ,EACPmZ,IAAKnZ,EACL0Z,KAAM1Z,EACN2Z,OAAQ3Z,EACR6Z,OAAQ7Z,GAEJwa,EAAe,CACnBvB,KAAMjZ,EACNkZ,MAAOH,EACPI,IAAKnZ,EACL0Z,KAAM1Z,EACN2Z,OAAQ3Z,GAEJya,EAA4B,CAChCxB,KAAMjZ,EACNkZ,MAAOH,EACPI,IAAKnZ,EACL0Z,KAAM1Z,EACN2Z,OAAQ3Z,EACR6Z,OAAQ7Z,GAEJ0a,EAA4B,CAChCzB,KAAMjZ,EACNkZ,MAAOH,EACPI,IAAKnZ,EACLsZ,QAASP,EACTW,KAAM1Z,EACN2Z,OAAQ3Z,GAEJ2a,EAAgB,CACpB1B,KAAMjZ,EACNkZ,MAAOlT,EACPmT,IAAKnZ,EACL0Z,KAAM1Z,EACN2Z,OAAQ3Z,EACR+Z,aAAchB,GAEV6B,EAA6B,CACjC3B,KAAMjZ,EACNkZ,MAAOlT,EACPmT,IAAKnZ,EACL0Z,KAAM1Z,EACN2Z,OAAQ3Z,EACR6Z,OAAQ7Z,EACR+Z,aAAchB,GAEV8B,EAAgB,CACpB5B,KAAMjZ,EACNkZ,MAAOlT,EACPmT,IAAKnZ,EACLsZ,QAAStT,EACT0T,KAAM1Z,EACN2Z,OAAQ3Z,EACR+Z,aAAc/T,GAEV8U,EAA6B,CACjC7B,KAAMjZ,EACNkZ,MAAOlT,EACPmT,IAAKnZ,EACLsZ,QAAStT,EACT0T,KAAM1Z,EACN2Z,OAAQ3Z,EACR6Z,OAAQ7Z,EACR+Z,aAAc/T,GAMhB,MAAM+U,EAMJ,QAAI/T,GACF,MAAM,IAAI8R,CACZ,CAOA,QAAI1Y,GACF,MAAM,IAAI0Y,CACZ,CAQA,YAAIkC,GACF,OAAO9b,KAAKkB,IACd,CAOA,eAAI6a,GACF,MAAM,IAAInC,CACZ,CAWA,UAAAoC,CAAWC,EAAI/E,GACb,MAAM,IAAI0C,CACZ,CAUA,YAAAsC,CAAaD,EAAIE,GACf,MAAM,IAAIvC,CACZ,CAQA,MAAA1T,CAAO+V,GACL,MAAM,IAAIrC,CACZ,CAQA,MAAAwC,CAAOC,GACL,MAAM,IAAIzC,CACZ,CAOA,WAAI0C,GACF,MAAM,IAAI1C,CACZ,EAGF,IAAI2C,EAAc,KAMlB,MAAMC,UAAmBX,EAKvB,mBAAWY,GAIT,OAHoB,OAAhBF,IACFA,EAAc,IAAIC,GAEbD,CACT,CAGA,QAAIzU,GACF,MAAO,QACT,CAGA,QAAI5G,GACF,OAAO,IAAIwb,KAAKC,gBAAiBC,kBAAkBC,QACrD,CAGA,eAAId,GACF,OAAO,CACT,CAGA,UAAAC,CAAWC,GAAI,OACbE,EAAM,OACNW,IAEA,OAAOC,GAAcd,EAAIE,EAAQW,EACnC,CAGA,YAAAZ,CAAaD,EAAIE,GACf,OAAOD,GAAalc,KAAKkG,OAAO+V,GAAKE,EACvC,CAGA,MAAAjW,CAAO+V,GACL,OAAQ,IAAIe,KAAKf,GAAIgB,mBACvB,CAGA,MAAAb,CAAOC,GACL,MAA0B,WAAnBA,EAAUvU,IACnB,CAGA,WAAIwU,GACF,OAAO,CACT,EAGF,IAAIY,EAAW,CAAC,EAiBhB,MAAMC,EAAY,CAChBpD,KAAM,EACNC,MAAO,EACPC,IAAK,EACLmD,IAAK,EACL5C,KAAM,EACNC,OAAQ,EACRE,OAAQ,GAyBV,IAAI0C,EAAgB,CAAC,EAKrB,MAAMC,UAAiBzB,EAKrB,aAAOhL,CAAO3P,GAIZ,OAHKmc,EAAcnc,KACjBmc,EAAcnc,GAAQ,IAAIoc,EAASpc,IAE9Bmc,EAAcnc,EACvB,CAMA,iBAAOqc,GACLF,EAAgB,CAAC,EACjBH,EAAW,CAAC,CACd,CAUA,uBAAOM,CAAiB3D,GACtB,OAAO7Z,KAAKyd,YAAY5D,EAC1B,CAUA,kBAAO4D,CAAYC,GACjB,IAAKA,EACH,OAAO,EAET,IAIE,OAHA,IAAIhB,KAAKC,eAAe,QAAS,CAC/BE,SAAUa,IACTvB,UACI,CACT,CAAE,MAAOlX,GACP,OAAO,CACT,CACF,CACA,WAAAhE,CAAYC,GACVkY,QAEApZ,KAAK2d,SAAWzc,EAEhBlB,KAAK4d,MAAQN,EAASG,YAAYvc,EACpC,CAOA,QAAI4G,GACF,MAAO,MACT,CAOA,QAAI5G,GACF,OAAOlB,KAAK2d,QACd,CAQA,eAAI5B,GACF,OAAO,CACT,CAWA,UAAAC,CAAWC,GAAI,OACbE,EAAM,OACNW,IAEA,OAAOC,GAAcd,EAAIE,EAAQW,EAAQ9c,KAAKkB,KAChD,CAUA,YAAAgb,CAAaD,EAAIE,GACf,OAAOD,GAAalc,KAAKkG,OAAO+V,GAAKE,EACvC,CAQA,MAAAjW,CAAO+V,GACL,MAAM4B,EAAO,IAAIb,KAAKf,GACtB,GAAI6B,MAAMD,GAAO,OAAOE,IACxB,MAAMC,GApLON,EAoLO1d,KAAKkB,KAnLtBgc,EAASQ,KACZR,EAASQ,GAAQ,IAAIhB,KAAKC,eAAe,QAAS,CAChDsB,QAAQ,EACRpB,SAAUa,EACV3D,KAAM,UACNC,MAAO,UACPC,IAAK,UACLO,KAAM,UACNC,OAAQ,UACRE,OAAQ,UACRyC,IAAK,WAGFF,EAASQ,IAdlB,IAAiBA,EAqLb,IAAK3D,EAAMC,EAAOC,EAAKiE,EAAQ1D,EAAMC,EAAQE,GAAUqD,EAAIG,cAtJ/D,SAAqBH,EAAKH,GACxB,MAAMO,EAAYJ,EAAIG,cAAcN,GAC9BQ,EAAS,GACf,IAAK,IAAIngB,EAAI,EAAGA,EAAIkgB,EAAUjgB,OAAQD,IAAK,CACzC,MAAM,KACJ4J,EAAI,MACJvG,GACE6c,EAAUlgB,GACRogB,EAAMnB,EAAUrV,GACT,QAATA,EACFuW,EAAOC,GAAO/c,EACJgd,GAAYD,KACtBD,EAAOC,GAAOra,SAAS1C,EAAO,IAElC,CACA,OAAO8c,CACT,CAsI+EG,CAAYR,EAAKH,GA5JhG,SAAqBG,EAAKH,GACxB,MAAMO,EAAYJ,EAAI7B,OAAO0B,GAAMna,QAAQ,UAAW,IACpD+a,EAAS,kDAAkD7Y,KAAKwY,IAC/D,CAAEM,EAAQC,EAAMC,EAAOC,EAASC,EAAOC,EAASC,GAAWP,EAC9D,MAAO,CAACG,EAAOF,EAAQC,EAAME,EAASC,EAAOC,EAASC,EACxD,CAuJwGC,CAAYjB,EAAKH,GACtG,OAAXK,IACFnE,EAAyB,EAAjB3O,KAAK8T,IAAInF,IAcnB,IAAIoF,GAAQtB,EACZ,MAAMuB,EAAOD,EAAO,IAEpB,OADAA,GAAQC,GAAQ,EAAIA,EAAO,IAAOA,GAXpBC,GAAa,CACzBtF,OACAC,QACAC,MACAO,KAL4B,KAATA,EAAc,EAAIA,EAMrCC,SACAE,SACA2E,YAAa,IAKCH,GAAQ,GAC1B,CAQA,MAAA/C,CAAOC,GACL,MAA0B,SAAnBA,EAAUvU,MAAmBuU,EAAUnb,OAASlB,KAAKkB,IAC9D,CAOA,WAAIob,GACF,OAAOtc,KAAK4d,KACd,EAKF,IAAI2B,EAAc,CAAC,EAUnB,IAAIC,EAAc,CAAC,EACnB,SAASC,EAAaC,EAAWxI,EAAO,CAAC,GACvC,MAAMvY,EAAMghB,KAAKC,UAAU,CAACF,EAAWxI,IACvC,IAAI8G,EAAMwB,EAAY7gB,GAKtB,OAJKqf,IACHA,EAAM,IAAItB,KAAKC,eAAe+C,EAAWxI,GACzCsI,EAAY7gB,GAAOqf,GAEdA,CACT,CACA,IAAI6B,EAAe,CAAC,EAUpB,IAAIC,EAAe,CAAC,EAcpB,IAAIC,EAAiB,KASrB,IAAIC,EAAgB,CAAC,EAgFrB,SAASC,EAAUC,EAAK/hB,EAAQgiB,EAAWC,GACzC,MAAMC,EAAOH,EAAII,cACjB,MAAa,UAATD,EACK,KACW,OAATA,EACFF,EAAUhiB,GAEViiB,EAAOjiB,EAElB,CAaA,MAAMoiB,EACJ,WAAAtf,CAAYuf,EAAMC,EAAavJ,GAC7BlX,KAAK0gB,MAAQxJ,EAAKwJ,OAAS,EAC3B1gB,KAAK2gB,MAAQzJ,EAAKyJ,QAAS,EAC3B,MAAM,MACJD,EAAK,MACLC,KACGC,GACD1J,EACJ,IAAKuJ,GAAejiB,OAAOgU,KAAKoO,GAAWziB,OAAS,EAAG,CACrD,MAAM0iB,EAAW,CACfC,aAAa,KACV5J,GAEDA,EAAKwJ,MAAQ,IAAGG,EAASE,qBAAuB7J,EAAKwJ,OACzD1gB,KAAKghB,IArJX,SAAsBtB,EAAWxI,EAAO,CAAC,GACvC,MAAMvY,EAAMghB,KAAKC,UAAU,CAACF,EAAWxI,IACvC,IAAI8J,EAAMnB,EAAalhB,GAKvB,OAJKqiB,IACHA,EAAM,IAAItE,KAAKuE,aAAavB,EAAWxI,GACvC2I,EAAalhB,GAAOqiB,GAEfA,CACT,CA6IiBE,CAAaV,EAAMK,EAChC,CACF,CACA,MAAA1E,CAAOje,GACL,GAAI8B,KAAKghB,IAAK,CACZ,MAAMG,EAAQnhB,KAAK2gB,MAAQvV,KAAKuV,MAAMziB,GAAKA,EAC3C,OAAO8B,KAAKghB,IAAI7E,OAAOgF,EACzB,CAGE,OAAOC,GADOphB,KAAK2gB,MAAQvV,KAAKuV,MAAMziB,GAAKmjB,GAAQnjB,EAAG,GAC/B8B,KAAK0gB,MAEhC,EAOF,MAAMY,EACJ,WAAArgB,CAAYsgB,EAAIf,EAAMtJ,GAGpB,IAAIsK,EACJ,GAHAxhB,KAAKkX,KAAOA,EACZlX,KAAKyhB,kBAAexiB,EAEhBe,KAAKkX,KAAK2F,SAEZ7c,KAAKuhB,GAAKA,OACL,GAAqB,UAAjBA,EAAG7D,KAAK5V,KAAkB,CAOnC,MAAM4Z,EAAkBH,EAAGrb,OAAS,IAAjB,EACbyb,EAAUD,GAAa,EAAI,WAAWA,IAAc,UAAUA,IAClD,IAAdH,EAAGrb,QAAgBoX,EAASzM,OAAO8Q,GAAS/D,OAC9C4D,EAAIG,EACJ3hB,KAAKuhB,GAAKA,IAIVC,EAAI,MACJxhB,KAAKuhB,GAAmB,IAAdA,EAAGrb,OAAeqb,EAAKA,EAAGK,QAAQ,OAAOC,KAAK,CACtDC,QAASP,EAAGrb,SAEdlG,KAAKyhB,aAAeF,EAAG7D,KAE3B,KAA4B,WAAjB6D,EAAG7D,KAAK5V,KACjB9H,KAAKuhB,GAAKA,EACgB,SAAjBA,EAAG7D,KAAK5V,MACjB9H,KAAKuhB,GAAKA,EACVC,EAAID,EAAG7D,KAAKxc,OAIZsgB,EAAI,MACJxhB,KAAKuhB,GAAKA,EAAGK,QAAQ,OAAOC,KAAK,CAC/BC,QAASP,EAAGrb,SAEdlG,KAAKyhB,aAAeF,EAAG7D,MAEzB,MAAMmD,EAAW,IACZ7gB,KAAKkX,MAEV2J,EAAShE,SAAWgE,EAAShE,UAAY2E,EACzCxhB,KAAKge,IAAMyB,EAAae,EAAMK,EAChC,CACA,MAAA1E,GACE,OAAInc,KAAKyhB,aAGAzhB,KAAKme,gBAAgBrV,KAAI,EAC9BvH,WACIA,IAAO0H,KAAK,IAEbjJ,KAAKge,IAAI7B,OAAOnc,KAAKuhB,GAAGQ,WACjC,CACA,aAAA5D,GACE,MAAM6D,EAAQhiB,KAAKge,IAAIG,cAAcne,KAAKuhB,GAAGQ,YAC7C,OAAI/hB,KAAKyhB,aACAO,EAAMlZ,KAAImZ,IACf,GAAkB,iBAAdA,EAAKna,KAAyB,CAChC,MAAMkU,EAAahc,KAAKyhB,aAAazF,WAAWhc,KAAKuhB,GAAGtF,GAAI,CAC1Da,OAAQ9c,KAAKuhB,GAAGzE,OAChBX,OAAQnc,KAAKkX,KAAK2D,eAEpB,MAAO,IACFoH,EACH1gB,MAAOya,EAEX,CACE,OAAOiG,CACT,IAGGD,CACT,CACA,eAAApF,GACE,OAAO5c,KAAKge,IAAIpB,iBAClB,EAMF,MAAMsF,EACJ,WAAAjhB,CAAYuf,EAAM2B,EAAWjL,GAC3BlX,KAAKkX,KAAO,CACVkL,MAAO,UACJlL,IAEAiL,GAAaE,OAChBriB,KAAKsiB,IA5PX,SAAsB5C,EAAWxI,EAAO,CAAC,GACvC,MAAM,KACJrS,KACG0d,GACDrL,EACEvY,EAAMghB,KAAKC,UAAU,CAACF,EAAW6C,IACvC,IAAIvB,EAAMlB,EAAanhB,GAKvB,OAJKqiB,IACHA,EAAM,IAAItE,KAAK8F,mBAAmB9C,EAAWxI,GAC7C4I,EAAanhB,GAAOqiB,GAEfA,CACT,CAgPiByB,CAAajC,EAAMtJ,GAElC,CACA,MAAAiF,CAAOpW,EAAO2T,GACZ,OAAI1Z,KAAKsiB,IACAtiB,KAAKsiB,IAAInG,OAAOpW,EAAO2T,GA4tCpC,SAA4BA,EAAM3T,EAAO2c,EAAU,SAAUC,GAAS,GACpE,MAAMC,EAAQ,CACZC,MAAO,CAAC,OAAQ,OAChBC,SAAU,CAAC,UAAW,QACtBC,OAAQ,CAAC,QAAS,OAClBC,MAAO,CAAC,OAAQ,OAChBC,KAAM,CAAC,MAAO,MAAO,QACrBC,MAAO,CAAC,OAAQ,OAChBpB,QAAS,CAAC,SAAU,QACpBqB,QAAS,CAAC,SAAU,SAEhBC,GAA8D,IAAnD,CAAC,QAAS,UAAW,WAAWle,QAAQwU,GACzD,GAAgB,SAAZgJ,GAAsBU,EAAU,CAClC,MAAMC,EAAiB,SAAT3J,EACd,OAAQ3T,GACN,KAAK,EACH,OAAOsd,EAAQ,WAAa,QAAQT,EAAMlJ,GAAM,KAClD,KAAM,EACJ,OAAO2J,EAAQ,YAAc,QAAQT,EAAMlJ,GAAM,KACnD,KAAK,EACH,OAAO2J,EAAQ,QAAU,QAAQT,EAAMlJ,GAAM,KAEnD,CAEA,MAAM4J,EAAW9kB,OAAO+kB,GAAGxd,GAAQ,IAAMA,EAAQ,EAC/Cyd,EAAWpY,KAAK8T,IAAInZ,GACpB0d,EAAwB,IAAbD,EACXE,EAAWd,EAAMlJ,GACjBiK,EAAUhB,EAASc,EAAWC,EAAS,GAAKA,EAAS,IAAMA,EAAS,GAAKD,EAAWb,EAAMlJ,GAAM,GAAKA,EACvG,OAAO4J,EAAW,GAAGE,KAAYG,QAAgB,MAAMH,KAAYG,GACrE,CAxvCaC,CAAmBlK,EAAM3T,EAAO/F,KAAKkX,KAAKwL,QAA6B,SAApB1iB,KAAKkX,KAAKkL,MAExE,CACA,aAAAjE,CAAcpY,EAAO2T,GACnB,OAAI1Z,KAAKsiB,IACAtiB,KAAKsiB,IAAInE,cAAcpY,EAAO2T,GAE9B,EAEX,EAEF,MAAMmK,EAAuB,CAC3BC,SAAU,EACVC,YAAa,EACbC,QAAS,CAAC,EAAG,IAOf,MAAMC,GACJ,eAAOC,CAAShN,GACd,OAAO+M,GAAOpT,OAAOqG,EAAK4F,OAAQ5F,EAAKiN,gBAAiBjN,EAAKkN,eAAgBlN,EAAKmN,aAAcnN,EAAKoN,YACvG,CACA,aAAOzT,CAAOiM,EAAQqH,EAAiBC,EAAgBC,EAAcC,GAAc,GACjF,MAAMC,EAAkBzH,GAAU0H,GAASC,cAErCC,EAAUH,IAAoBD,EAAc,QAhRhDvE,IAGFA,GAAiB,IAAIrD,KAAKC,gBAAiBC,kBAAkBE,OACtDiD,IA6QD4E,EAAmBR,GAAmBK,GAASI,uBAC/CC,EAAkBT,GAAkBI,GAASM,sBAC7CC,EAAgBC,GAAqBX,IAAiBG,GAASS,oBACrE,OAAO,IAAIhB,GAAOS,EAASC,EAAkBE,EAAiBE,EAAeR,EAC/E,CACA,iBAAOhH,GACLwC,EAAiB,KACjBP,EAAc,CAAC,EACfK,EAAe,CAAC,EAChBC,EAAe,CAAC,CAClB,CACA,iBAAOoF,EAAW,OAChBpI,EAAM,gBACNqH,EAAe,eACfC,EAAc,aACdC,GACE,CAAC,GACH,OAAOJ,GAAOpT,OAAOiM,EAAQqH,EAAiBC,EAAgBC,EAChE,CACA,WAAApjB,CAAY6b,EAAQqI,EAAWf,EAAgBC,EAAcE,GAC3D,MAAOa,EAAcC,EAAuBC,GAnRhD,SAA2BC,GAYzB,MAAMC,EAASD,EAAUrgB,QAAQ,QACjB,IAAZsgB,IACFD,EAAYA,EAAUrhB,UAAU,EAAGshB,IAErC,MAAMC,EAASF,EAAUrgB,QAAQ,OACjC,IAAgB,IAAZugB,EACF,MAAO,CAACF,GACH,CACL,IAAIrd,EACAwd,EACJ,IACExd,EAAUuX,EAAa8F,GAAW3I,kBAClC8I,EAAcH,CAChB,CAAE,MAAOtgB,GACP,MAAM0gB,EAAUJ,EAAUrhB,UAAU,EAAGuhB,GACvCvd,EAAUuX,EAAakG,GAAS/I,kBAChC8I,EAAcC,CAChB,CACA,MAAM,gBACJxB,EAAe,SACfyB,GACE1d,EACJ,MAAO,CAACwd,EAAavB,EAAiByB,EACxC,CACF,CA+OwEC,CAAkB/I,GACtF9c,KAAK8c,OAASsI,EACdplB,KAAKmkB,gBAAkBgB,GAAaE,GAAyB,KAC7DrlB,KAAKokB,eAAiBA,GAAkBkB,GAAwB,KAChEtlB,KAAKqkB,aAAeA,EACpBrkB,KAAKwgB,KAnPT,SAA0B+E,EAAWpB,EAAiBC,GACpD,OAAIA,GAAkBD,GACfoB,EAAU9S,SAAS,SACtB8S,GAAa,MAEXnB,IACFmB,GAAa,OAAOnB,KAElBD,IACFoB,GAAa,OAAOpB,KAEfoB,GAEAA,CAEX,CAoOgBO,CAAiB9lB,KAAK8c,OAAQ9c,KAAKmkB,gBAAiBnkB,KAAKokB,gBACrEpkB,KAAK+lB,cAAgB,CACnB5J,OAAQ,CAAC,EACT6J,WAAY,CAAC,GAEfhmB,KAAKimB,YAAc,CACjB9J,OAAQ,CAAC,EACT6J,WAAY,CAAC,GAEfhmB,KAAKkmB,cAAgB,KACrBlmB,KAAKmmB,SAAW,CAAC,EACjBnmB,KAAKukB,gBAAkBA,EACvBvkB,KAAKomB,kBAAoB,IAC3B,CACA,eAAIC,GAvNN,IAA6BnG,EA2NzB,OAH8B,MAA1BlgB,KAAKomB,oBACPpmB,KAAKomB,qBAzNkBlG,EAyNsBlgB,MAxNzCmkB,iBAA2C,SAAxBjE,EAAIiE,mBAGE,SAAxBjE,EAAIiE,kBAA+BjE,EAAIpD,QAAUoD,EAAIpD,OAAOwJ,WAAW,OAAiF,SAAxE,IAAI5J,KAAKC,eAAeuD,EAAIM,MAAM5D,kBAAkBuH,kBAuNpInkB,KAAKomB,iBACd,CACA,WAAA9F,GACE,MAAMiG,EAAevmB,KAAKmiB,YACpBqE,IAA2C,OAAzBxmB,KAAKmkB,iBAAqD,SAAzBnkB,KAAKmkB,iBAAwD,OAAxBnkB,KAAKokB,gBAAmD,YAAxBpkB,KAAKokB,gBACnI,OAAOmC,GAAgBC,EAAiB,KAAO,MACjD,CACA,KAAAC,CAAMC,GACJ,OAAKA,GAAoD,IAA5CloB,OAAOmoB,oBAAoBD,GAAMvoB,OAGrC8lB,GAAOpT,OAAO6V,EAAK5J,QAAU9c,KAAKukB,gBAAiBmC,EAAKvC,iBAAmBnkB,KAAKmkB,gBAAiBuC,EAAKtC,gBAAkBpkB,KAAKokB,eAAgBY,GAAqB0B,EAAKrC,eAAiBrkB,KAAKqkB,aAAcqC,EAAKpC,cAAe,GAF/NtkB,IAIX,CACA,aAAA4mB,CAAcF,EAAO,CAAC,GACpB,OAAO1mB,KAAKymB,MAAM,IACbC,EACHpC,aAAa,GAEjB,CACA,iBAAAuC,CAAkBH,EAAO,CAAC,GACxB,OAAO1mB,KAAKymB,MAAM,IACbC,EACHpC,aAAa,GAEjB,CACA,MAAAvB,CAAO5kB,EAAQge,GAAS,GACtB,OAAO8D,EAAUjgB,KAAM7B,EAAQ4kB,IAAQ,KACrC,MAAMvC,EAAOrE,EAAS,CAClBnC,MAAO7b,EACP8b,IAAK,WACH,CACFD,MAAO7b,GAET2oB,EAAY3K,EAAS,SAAW,aAIlC,OAHKnc,KAAKimB,YAAYa,GAAW3oB,KAC/B6B,KAAKimB,YAAYa,GAAW3oB,GAzRpC,SAAmB4oB,GACjB,MAAMC,EAAK,GACX,IAAK,IAAI9oB,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAC5B,MAAMqjB,EAAK0F,GAASC,IAAI,KAAMhpB,EAAG,GACjC8oB,EAAGrgB,KAAKogB,EAAExF,GACZ,CACA,OAAOyF,CACT,CAkR8CG,EAAU5F,GAAMvhB,KAAKonB,QAAQ7F,EAAIf,EAAM,YAExExgB,KAAKimB,YAAYa,GAAW3oB,EAAO,GAE9C,CACA,QAAAkpB,CAASlpB,EAAQge,GAAS,GACxB,OAAO8D,EAAUjgB,KAAM7B,EAAQkpB,IAAU,KACvC,MAAM7G,EAAOrE,EAAS,CAClB/B,QAASjc,EACT4b,KAAM,UACNC,MAAO,OACPC,IAAK,WACH,CACFG,QAASjc,GAEX2oB,EAAY3K,EAAS,SAAW,aAIlC,OAHKnc,KAAK+lB,cAAce,GAAW3oB,KACjC6B,KAAK+lB,cAAce,GAAW3oB,GAlStC,SAAqB4oB,GACnB,MAAMC,EAAK,GACX,IAAK,IAAI9oB,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,MAAMqjB,EAAK0F,GAASC,IAAI,KAAM,GAAI,GAAKhpB,GACvC8oB,EAAGrgB,KAAKogB,EAAExF,GACZ,CACA,OAAOyF,CACT,CA2RgDM,EAAY/F,GAAMvhB,KAAKonB,QAAQ7F,EAAIf,EAAM,cAE5ExgB,KAAK+lB,cAAce,GAAW3oB,EAAO,GAEhD,CACA,SAAAopB,GACE,OAAOtH,EAAUjgB,UAAMf,GAAW,IAAMsoB,KAAW,KAGjD,IAAKvnB,KAAKkmB,cAAe,CACvB,MAAM1F,EAAO,CACXhG,KAAM,UACNQ,UAAW,OAEbhb,KAAKkmB,cAAgB,CAACe,GAASC,IAAI,KAAM,GAAI,GAAI,GAAID,GAASC,IAAI,KAAM,GAAI,GAAI,KAAKpe,KAAIyY,GAAMvhB,KAAKonB,QAAQ7F,EAAIf,EAAM,cACxH,CACA,OAAOxgB,KAAKkmB,aAAa,GAE7B,CACA,IAAAsB,CAAKrpB,GACH,OAAO8hB,EAAUjgB,KAAM7B,EAAQqpB,IAAM,KACnC,MAAMhH,EAAO,CACXpD,IAAKjf,GAQP,OAHK6B,KAAKmmB,SAAShoB,KACjB6B,KAAKmmB,SAAShoB,GAAU,CAAC8oB,GAASC,KAAK,GAAI,EAAG,GAAID,GAASC,IAAI,KAAM,EAAG,IAAIpe,KAAIyY,GAAMvhB,KAAKonB,QAAQ7F,EAAIf,EAAM,UAExGxgB,KAAKmmB,SAAShoB,EAAO,GAEhC,CACA,OAAAipB,CAAQ7F,EAAIV,EAAU4G,GACpB,MAEEC,EAFS1nB,KAAK2nB,YAAYpG,EAAIV,GACjB1C,gBACMyJ,MAAKC,GAAKA,EAAE/f,KAAKhE,gBAAkB2jB,IACxD,OAAOC,EAAWA,EAASnmB,MAAQ,IACrC,CACA,eAAAumB,CAAgB5Q,EAAO,CAAC,GAGtB,OAAO,IAAIqJ,EAAoBvgB,KAAKwgB,KAAMtJ,EAAKuJ,aAAezgB,KAAKqmB,YAAanP,EAClF,CACA,WAAAyQ,CAAYpG,EAAIV,EAAW,CAAC,GAC1B,OAAO,IAAIS,EAAkBC,EAAIvhB,KAAKwgB,KAAMK,EAC9C,CACA,YAAAkH,CAAa7Q,EAAO,CAAC,GACnB,OAAO,IAAIgL,EAAiBliB,KAAKwgB,KAAMxgB,KAAKmiB,YAAajL,EAC3D,CACA,aAAA8Q,CAAc9Q,EAAO,CAAC,GACpB,OAjdJ,SAAqBwI,EAAWxI,EAAO,CAAC,GACtC,MAAMvY,EAAMghB,KAAKC,UAAU,CAACF,EAAWxI,IACvC,IAAI8G,EAAMuB,EAAY5gB,GAKtB,OAJKqf,IACHA,EAAM,IAAItB,KAAKuL,WAAWvI,EAAWxI,GACrCqI,EAAY5gB,GAAOqf,GAEdA,CACT,CAycWkK,CAAYloB,KAAKwgB,KAAMtJ,EAChC,CACA,SAAAiL,GACE,MAAuB,OAAhBniB,KAAK8c,QAAiD,UAA9B9c,KAAK8c,OAAOhZ,eAA6B,IAAI4Y,KAAKC,eAAe3c,KAAKwgB,MAAM5D,kBAAkBE,OAAOwJ,WAAW,QACjJ,CACA,eAAA6B,GACE,OAAInoB,KAAKqkB,aACArkB,KAAKqkB,aACF+D,KApahB,SAA2B1I,GACzB,IAAI2I,EAAOrI,EAAcN,GACzB,IAAK2I,EAAM,CACT,MAAMvL,EAAS,IAAIJ,KAAKuH,OAAOvE,GAE/B2I,EAAO,gBAAiBvL,EAASA,EAAOwL,cAAgBxL,EAAOyL,SAC/DvI,EAAcN,GAAa2I,CAC7B,CACA,OAAOA,CACT,CA8ZaG,CAAkBxoB,KAAK8c,QAFvB+G,CAIX,CACA,cAAA4E,GACE,OAAOzoB,KAAKmoB,kBAAkBrE,QAChC,CACA,qBAAA4E,GACE,OAAO1oB,KAAKmoB,kBAAkBpE,WAChC,CACA,cAAA4E,GACE,OAAO3oB,KAAKmoB,kBAAkBnE,OAChC,CACA,MAAA5H,CAAOwM,GACL,OAAO5oB,KAAK8c,SAAW8L,EAAM9L,QAAU9c,KAAKmkB,kBAAoByE,EAAMzE,iBAAmBnkB,KAAKokB,iBAAmBwE,EAAMxE,cACzH,CACA,QAAArjB,GACE,MAAO,UAAUf,KAAK8c,WAAW9c,KAAKmkB,oBAAoBnkB,KAAKokB,iBACjE,EAGF,IAAIyE,GAAY,KAMhB,MAAMC,WAAwBjN,EAK5B,sBAAWkN,GAIT,OAHkB,OAAdF,KACFA,GAAY,IAAIC,GAAgB,IAE3BD,EACT,CAOA,eAAOpM,CAASvW,GACd,OAAkB,IAAXA,EAAe4iB,GAAgBC,YAAc,IAAID,GAAgB5iB,EAC1E,CAUA,qBAAO8iB,CAAenP,GACpB,GAAIA,EAAG,CACL,MAAMoP,EAAIpP,EAAE5T,MAAM,yCAClB,GAAIgjB,EACF,OAAO,IAAIH,GAAgBI,GAAaD,EAAE,GAAIA,EAAE,IAEpD,CACA,OAAO,IACT,CACA,WAAAhoB,CAAYiF,GACVkT,QAEApZ,KAAKmhB,MAAQjb,CACf,CAOA,QAAI4B,GACF,MAAO,OACT,CAQA,QAAI5G,GACF,OAAsB,IAAflB,KAAKmhB,MAAc,MAAQ,MAAMjF,GAAalc,KAAKmhB,MAAO,WACnE,CAQA,YAAIrF,GACF,OAAmB,IAAf9b,KAAKmhB,MACA,UAEA,UAAUjF,IAAclc,KAAKmhB,MAAO,WAE/C,CAQA,UAAAnF,GACE,OAAOhc,KAAKkB,IACd,CAUA,YAAAgb,CAAaD,EAAIE,GACf,OAAOD,GAAalc,KAAKmhB,MAAOhF,EAClC,CAQA,eAAIJ,GACF,OAAO,CACT,CASA,MAAA7V,GACE,OAAOlG,KAAKmhB,KACd,CAQA,MAAA/E,CAAOC,GACL,MAA0B,UAAnBA,EAAUvU,MAAoBuU,EAAU8E,QAAUnhB,KAAKmhB,KAChE,CAQA,WAAI7E,GACF,OAAO,CACT,EAOF,MAAM6M,WAAoBtN,EACxB,WAAA5a,CAAY0c,GACVvE,QAEApZ,KAAK2d,SAAWA,CAClB,CAGA,QAAI7V,GACF,MAAO,SACT,CAGA,QAAI5G,GACF,OAAOlB,KAAK2d,QACd,CAGA,eAAI5B,GACF,OAAO,CACT,CAGA,UAAAC,GACE,OAAO,IACT,CAGA,YAAAE,GACE,MAAO,EACT,CAGA,MAAAhW,GACE,OAAO6X,GACT,CAGA,MAAA3B,GACE,OAAO,CACT,CAGA,WAAIE,GACF,OAAO,CACT,EAMF,SAAS8M,GAAcxqB,EAAOyqB,GAC5B,GAAI9K,GAAY3f,IAAoB,OAAVA,EACxB,OAAOyqB,EACF,GAAIzqB,aAAiBid,EAC1B,OAAOjd,EACF,GAggBa,iBAhgBAA,EAAQ,CAC1B,MAAM0qB,EAAU1qB,EAAMkF,cACtB,MAAgB,YAAZwlB,EAA8BD,EAAiC,UAAZC,GAAmC,WAAZA,EAA6B9M,EAAWC,SAA8B,QAAZ6M,GAAiC,QAAZA,EAA0BR,GAAgBC,YAAwBD,GAAgBE,eAAeM,IAAYhM,EAASzM,OAAOjS,EAC5R,CAAO,OAAI2qB,GAAS3qB,GACXkqB,GAAgBrM,SAAS7d,GACN,iBAAVA,GAAsB,WAAYA,GAAiC,mBAAjBA,EAAMsH,OAGjEtH,EAEA,IAAIuqB,GAAYvqB,EAE3B,CAEA,MAAM4qB,GAAmB,CACvBC,KAAM,QACNC,QAAS,QACTC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,SAAU,QACVC,KAAM,QACNC,QAAS,wBACTC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,QAAS,QACTC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,OAEFC,GAAwB,CAC5BrB,KAAM,CAAC,KAAM,MACbC,QAAS,CAAC,KAAM,MAChBC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,SAAU,CAAC,MAAO,OAClBC,KAAM,CAAC,KAAM,MACbE,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,QAAS,CAAC,KAAM,MAChBC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,OAETG,GAAevB,GAAiBQ,QAAQtmB,QAAQ,WAAY,IAAI4C,MAAM,IAyB5E,IAAI0kB,GAAkB,CAAC,EAIvB,SAASC,IAAW,gBAClB9G,GACC+G,EAAS,IACV,MAAMC,EAAKhH,GAAmB,OAO9B,OANK6G,GAAgBG,KACnBH,GAAgBG,GAAM,CAAC,GAEpBH,GAAgBG,GAAID,KACvBF,GAAgBG,GAAID,GAAU,IAAIjoB,OAAO,GAAGumB,GAAiB2B,KAAMD,MAE9DF,GAAgBG,GAAID,EAC7B,CAEA,IAMEE,GANEC,GAAM,IAAMrO,KAAKqO,MACnBhC,GAAc,SACd5E,GAAgB,KAChBG,GAAyB,KACzBE,GAAwB,KACxBwG,GAAqB,GAErBrG,GAAsB,KAKxB,MAAMT,GAKJ,cAAW6G,GACT,OAAOA,EACT,CASA,cAAWA,CAAIvqB,GACbuqB,GAAMvqB,CACR,CAOA,sBAAWuoB,CAAY3L,GACrB2L,GAAc3L,CAChB,CAOA,sBAAW2L,GACT,OAAOD,GAAcC,GAAa7M,EAAWC,SAC/C,CAMA,wBAAWgI,GACT,OAAOA,EACT,CAMA,wBAAWA,CAAc3H,GACvB2H,GAAgB3H,CAClB,CAMA,iCAAW8H,GACT,OAAOA,EACT,CAMA,iCAAWA,CAAuBT,GAChCS,GAAyBT,CAC3B,CAMA,gCAAWW,GACT,OAAOA,EACT,CAMA,gCAAWA,CAAsBV,GAC/BU,GAAwBV,CAC1B,CAYA,8BAAWa,GACT,OAAOA,EACT,CASA,8BAAWA,CAAoBZ,GAC7BY,GAAsBD,GAAqBX,EAC7C,CAMA,6BAAWiH,GACT,OAAOA,EACT,CAWA,6BAAWA,CAAmBC,GAC5BD,GAAqBC,EAAa,GACpC,CAMA,yBAAWH,GACT,OAAOA,EACT,CAMA,yBAAWA,CAAergB,GACxBqgB,GAAiBrgB,CACnB,CAMA,kBAAOygB,GACLvH,GAAO1G,aACPD,EAASC,aACT0J,GAAS1J,aAtLXyN,GAAkB,CAAC,CAwLnB,EAGF,MAAMS,GACJ,WAAAxqB,CAAYkY,EAAQuS,GAClB1rB,KAAKmZ,OAASA,EACdnZ,KAAK0rB,YAAcA,CACrB,CACA,SAAArS,GACE,OAAIrZ,KAAK0rB,YACA,GAAG1rB,KAAKmZ,WAAWnZ,KAAK0rB,cAExB1rB,KAAKmZ,MAEhB,EAGF,MAAMwS,GAAgB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACvEC,GAAa,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClE,SAASC,GAAenS,EAAMnY,GAC5B,OAAO,IAAIkqB,GAAQ,oBAAqB,iBAAiBlqB,qBAAyBA,WAAemY,sBACnG,CACA,SAASoS,GAAU/R,EAAMC,EAAOC,GAC9B,MAAM8R,EAAI,IAAI/O,KAAKA,KAAKgP,IAAIjS,EAAMC,EAAQ,EAAGC,IACzCF,EAAO,KAAOA,GAAQ,GACxBgS,EAAEE,eAAeF,EAAEG,iBAAmB,MAExC,MAAMC,EAAKJ,EAAEK,YACb,OAAc,IAAPD,EAAW,EAAIA,CACxB,CACA,SAASE,GAAetS,EAAMC,EAAOC,GACnC,OAAOA,GAAOqS,GAAWvS,GAAQ6R,GAAaD,IAAe3R,EAAQ,EACvE,CACA,SAASuS,GAAiBxS,EAAMyS,GAC9B,MAAMrgB,EAAQmgB,GAAWvS,GAAQ6R,GAAaD,GAC5Cc,EAAStgB,EAAMugB,WAAUxuB,GAAKA,EAAIsuB,IAEpC,MAAO,CACLxS,MAAOyS,EAAS,EAChBxS,IAHMuS,EAAUrgB,EAAMsgB,GAK1B,CACA,SAASE,GAAkBC,EAAYC,GACrC,OAAQD,EAAaC,EAAc,GAAK,EAAI,CAC9C,CAMA,SAASC,GAAgBC,EAASC,EAAqB,EAAGH,EAAc,GACtE,MAAM,KACF9S,EAAI,MACJC,EAAK,IACLC,GACE8S,EACJP,EAAUH,GAAetS,EAAMC,EAAOC,GACtCG,EAAUuS,GAAkBb,GAAU/R,EAAMC,EAAOC,GAAM4S,GAC3D,IACEI,EADEC,EAAa9hB,KAAKuV,OAAO6L,EAAUpS,EAAU,GAAK4S,GAAsB,GAW5E,OATIE,EAAa,GACfD,EAAWlT,EAAO,EAClBmT,EAAaC,GAAgBF,EAAUD,EAAoBH,IAClDK,EAAaC,GAAgBpT,EAAMiT,EAAoBH,IAChEI,EAAWlT,EAAO,EAClBmT,EAAa,GAEbD,EAAWlT,EAEN,CACLkT,WACAC,aACA9S,aACGgT,GAAWL,GAElB,CACA,SAASM,GAAgBC,EAAUN,EAAqB,EAAGH,EAAc,GACvE,MAAM,SACFI,EAAQ,WACRC,EAAU,QACV9S,GACEkT,EACJC,EAAgBZ,GAAkBb,GAAUmB,EAAU,EAAGD,GAAqBH,GAC9EW,EAAaC,GAAWR,GAC1B,IACElT,EADEyS,EAAuB,EAAbU,EAAiB9S,EAAUmT,EAAgB,EAAIP,EAEzDR,EAAU,GACZzS,EAAOkT,EAAW,EAClBT,GAAWiB,GAAW1T,IACbyS,EAAUgB,GACnBzT,EAAOkT,EAAW,EAClBT,GAAWiB,GAAWR,IAEtBlT,EAAOkT,EAET,MAAM,MACJjT,EAAK,IACLC,GACEsS,GAAiBxS,EAAMyS,GAC3B,MAAO,CACLzS,OACAC,QACAC,SACGmT,GAAWE,GAElB,CACA,SAASI,GAAmBC,GAC1B,MAAM,KACJ5T,EAAI,MACJC,EAAK,IACLC,GACE0T,EAEJ,MAAO,CACL5T,OACAyS,QAHcH,GAAetS,EAAMC,EAAOC,MAIvCmT,GAAWO,GAElB,CACA,SAASC,GAAmBC,GAC1B,MAAM,KACJ9T,EAAI,QACJyS,GACEqB,GACE,MACJ7T,EAAK,IACLC,GACEsS,GAAiBxS,EAAMyS,GAC3B,MAAO,CACLzS,OACAC,QACAC,SACGmT,GAAWS,GAElB,CAQA,SAASC,GAAoBvpB,EAAK2b,GAEhC,IAD2B3B,GAAYha,EAAIwpB,gBAAkBxP,GAAYha,EAAIypB,mBAAqBzP,GAAYha,EAAI0pB,eAC3F,CAErB,IADwB1P,GAAYha,EAAI6V,WAAamE,GAAYha,EAAI2oB,cAAgB3O,GAAYha,EAAI0oB,UAEnG,MAAM,IAAIzT,EAA8B,kEAQ1C,OANK+E,GAAYha,EAAIwpB,gBAAexpB,EAAI6V,QAAU7V,EAAIwpB,cACjDxP,GAAYha,EAAIypB,mBAAkBzpB,EAAI2oB,WAAa3oB,EAAIypB,iBACvDzP,GAAYha,EAAI0pB,iBAAgB1pB,EAAI0oB,SAAW1oB,EAAI0pB,sBACjD1pB,EAAIwpB,oBACJxpB,EAAIypB,uBACJzpB,EAAI0pB,cACJ,CACLjB,mBAAoB9M,EAAIwI,wBACxBmE,YAAa3M,EAAIuI,iBAErB,CACE,MAAO,CACLuE,mBAAoB,EACpBH,YAAa,EAGnB,CAsBA,SAASqB,GAAwB3pB,GAC/B,MAAM4pB,EAAYC,GAAU7pB,EAAIwV,MAC9BsU,EAAaC,GAAe/pB,EAAIyV,MAAO,EAAG,IAC1CuU,EAAWD,GAAe/pB,EAAI0V,IAAK,EAAGuU,GAAYjqB,EAAIwV,KAAMxV,EAAIyV,QAClE,OAAKmU,EAEOE,GAEAE,GACH1C,GAAe,MAAOtnB,EAAI0V,KAF1B4R,GAAe,QAAStnB,EAAIyV,OAF5B6R,GAAe,OAAQtnB,EAAIwV,KAMtC,CACA,SAAS0U,GAAmBlqB,GAC1B,MAAM,KACJiW,EAAI,OACJC,EAAM,OACNE,EAAM,YACN2E,GACE/a,EACEmqB,EAAYJ,GAAe9T,EAAM,EAAG,KAAgB,KAATA,GAA0B,IAAXC,GAA2B,IAAXE,GAAgC,IAAhB2E,EAC9FqP,EAAcL,GAAe7T,EAAQ,EAAG,IACxCmU,EAAcN,GAAe3T,EAAQ,EAAG,IACxCkU,EAAmBP,GAAehP,EAAa,EAAG,KACpD,OAAKoP,EAEOC,EAEAC,GAEAC,GACHhD,GAAe,cAAevM,GAF9BuM,GAAe,SAAUlR,GAFzBkR,GAAe,SAAUpR,GAFzBoR,GAAe,OAAQrR,EAQlC,CAcA,SAAS+D,GAAYhe,GACnB,YAAoB,IAANA,CAChB,CACA,SAASgpB,GAAShpB,GAChB,MAAoB,iBAANA,CAChB,CACA,SAAS6tB,GAAU7tB,GACjB,MAAoB,iBAANA,GAAkBA,EAAI,GAAM,CAC5C,CAUA,SAAS8hB,KACP,IACE,MAAuB,oBAAT3F,QAA0BA,KAAK8F,kBAC/C,CAAE,MAAOvd,GACP,OAAO,CACT,CACF,CACA,SAASmjB,KACP,IACE,MAAuB,oBAAT1L,QAA0BA,KAAKuH,SAAW,aAAcvH,KAAKuH,OAAOpkB,WAAa,gBAAiB6c,KAAKuH,OAAOpkB,UAC9H,CAAE,MAAOoF,GACP,OAAO,CACT,CACF,CAOA,SAAS6pB,GAAO5uB,EAAK6uB,EAAIC,GACvB,GAAmB,IAAf9uB,EAAI/B,OAGR,OAAO+B,EAAI+uB,QAAO,CAACC,EAAMvuB,KACvB,MAAMwuB,EAAO,CAACJ,EAAGpuB,GAAOA,GACxB,OAAKuuB,GAEMF,EAAQE,EAAK,GAAIC,EAAK,MAAQD,EAAK,GACrCA,EAFAC,CAKT,GACC,MAAM,EACX,CAOA,SAASrvB,GAAeyE,EAAKiT,GAC3B,OAAOhZ,OAAOqB,UAAUC,eAAeX,KAAKoF,EAAKiT,EACnD,CACA,SAASwN,GAAqBoK,GAC5B,GAAgB,MAAZA,EACF,OAAO,KACF,GAAwB,iBAAbA,EAChB,MAAM,IAAIzV,EAAqB,mCAE/B,IAAK2U,GAAec,EAAStL,SAAU,EAAG,KAAOwK,GAAec,EAASrL,YAAa,EAAG,KAAO1jB,MAAMO,QAAQwuB,EAASpL,UAAYoL,EAASpL,QAAQjY,MAAKsjB,IAAMf,GAAee,EAAG,EAAG,KAClL,MAAM,IAAI1V,EAAqB,yBAEjC,MAAO,CACLmK,SAAUsL,EAAStL,SACnBC,YAAaqL,EAASrL,YACtBC,QAAS3jB,MAAMc,KAAKiuB,EAASpL,SAGnC,CAIA,SAASsK,GAAegB,EAAOC,EAAQ5lB,GACrC,OAAOykB,GAAUkB,IAAUA,GAASC,GAAUD,GAAS3lB,CACzD,CAMA,SAASyX,GAASxiB,EAAOkC,EAAI,GAE3B,IAAI0uB,EAMJ,OAJEA,EAHY5wB,EAAQ,EAGX,KAAO,IAAMA,GAAOwiB,SAAStgB,EAAG,MAE/B,GAAKlC,GAAOwiB,SAAStgB,EAAG,KAE7B0uB,CACT,CACA,SAASC,GAAaC,GACpB,OAAInR,GAAYmR,IAAsB,OAAXA,GAA8B,KAAXA,OAC5C,EAEOzrB,SAASyrB,EAAQ,GAE5B,CACA,SAASC,GAAcD,GACrB,OAAInR,GAAYmR,IAAsB,OAAXA,GAA8B,KAAXA,OAC5C,EAEOE,WAAWF,EAEtB,CACA,SAASG,GAAYC,GAEnB,IAAIvR,GAAYuR,IAA0B,OAAbA,GAAkC,KAAbA,EAE3C,CACL,MAAM/I,EAAkC,IAA9B6I,WAAW,KAAOE,GAC5B,OAAO1kB,KAAKuV,MAAMoG,EACpB,CACF,CACA,SAAS1F,GAAQ0O,EAAQC,EAAQC,GAAa,GAC5C,MAAMC,EAAS,IAAMF,EAErB,OADYC,EAAa7kB,KAAK+kB,MAAQ/kB,KAAKglB,OAC5BL,EAASG,GAAUA,CACpC,CAIA,SAAS5D,GAAWvS,GAClB,OAAOA,EAAO,GAAM,IAAMA,EAAO,KAAQ,GAAKA,EAAO,KAAQ,EAC/D,CACA,SAAS0T,GAAW1T,GAClB,OAAOuS,GAAWvS,GAAQ,IAAM,GAClC,CACA,SAASyU,GAAYzU,EAAMC,GACzB,MAAMqW,EAnDR,SAAkBC,EAAGxvB,GACnB,OAAOwvB,EAAIxvB,EAAIsK,KAAKuV,MAAM2P,EAAIxvB,EAChC,CAiDmByvB,CAASvW,EAAQ,EAAG,IAAM,EAE3C,OAAiB,IAAbqW,EACK/D,GAFGvS,GAAQC,EAAQqW,GAAY,IAET,GAAK,GAE3B,CAAC,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAIA,EAAW,EAEzE,CAGA,SAAShR,GAAa9a,GACpB,IAAIwnB,EAAI/O,KAAKgP,IAAIznB,EAAIwV,KAAMxV,EAAIyV,MAAQ,EAAGzV,EAAI0V,IAAK1V,EAAIiW,KAAMjW,EAAIkW,OAAQlW,EAAIoW,OAAQpW,EAAI+a,aAUzF,OAPI/a,EAAIwV,KAAO,KAAOxV,EAAIwV,MAAQ,IAChCgS,EAAI,IAAI/O,KAAK+O,GAIbA,EAAEE,eAAe1nB,EAAIwV,KAAMxV,EAAIyV,MAAQ,EAAGzV,EAAI0V,OAExC8R,CACV,CAGA,SAASyE,GAAgBzW,EAAMiT,EAAoBH,GAEjD,OADcF,GAAkBb,GAAU/R,EAAM,EAAGiT,GAAqBH,GACxDG,EAAqB,CACvC,CACA,SAASG,GAAgBF,EAAUD,EAAqB,EAAGH,EAAc,GACvE,MAAM4D,EAAaD,GAAgBvD,EAAUD,EAAoBH,GAC3D6D,EAAiBF,GAAgBvD,EAAW,EAAGD,EAAoBH,GACzE,OAAQY,GAAWR,GAAYwD,EAAaC,GAAkB,CAChE,CACA,SAASC,GAAe5W,GACtB,OAAIA,EAAO,GACFA,EACKA,EAAOyK,GAAS8G,mBAAqB,KAAOvR,EAAO,IAAOA,CAC1E,CAIA,SAASgD,GAAcd,EAAI2U,EAAc9T,EAAQD,EAAW,MAC1D,MAAMgB,EAAO,IAAIb,KAAKf,GACpB4E,EAAW,CACT7F,UAAW,MACXjB,KAAM,UACNC,MAAO,UACPC,IAAK,UACLO,KAAM,UACNC,OAAQ,WAERoC,IACFgE,EAAShE,SAAWA,GAEtB,MAAMgU,EAAW,CACfhW,aAAc+V,KACX/P,GAECpC,EAAS,IAAI/B,KAAKC,eAAeG,EAAQ+T,GAAU1S,cAAcN,GAAM+J,MAAKC,GAA8B,iBAAzBA,EAAE/f,KAAKhE,gBAC9F,OAAO2a,EAASA,EAAOld,MAAQ,IACjC,CAGA,SAAS2nB,GAAa4H,EAAYC,GAChC,IAAIC,EAAU/sB,SAAS6sB,EAAY,IAG/BxxB,OAAOwe,MAAMkT,KACfA,EAAU,GAEZ,MAAMC,EAAShtB,SAAS8sB,EAAc,KAAO,EAE7C,OAAiB,GAAVC,GADUA,EAAU,GAAKxyB,OAAO+kB,GAAGyN,GAAU,IAAMC,EAASA,EAErE,CAIA,SAASC,GAAS3vB,GAChB,MAAM4vB,EAAe7xB,OAAOiC,GAC5B,GAAqB,kBAAVA,GAAiC,KAAVA,GAAgBjC,OAAOwe,MAAMqT,GAAe,MAAM,IAAIxX,EAAqB,sBAAsBpY,KACnI,OAAO4vB,CACT,CACA,SAASC,GAAgB7sB,EAAK8sB,GAC5B,MAAMC,EAAa,CAAC,EACpB,IAAK,MAAMC,KAAKhtB,EACd,GAAIzE,GAAeyE,EAAKgtB,GAAI,CAC1B,MAAMlC,EAAI9qB,EAAIgtB,GACd,GAAIlC,QAA+B,SACnCiC,EAAWD,EAAWE,IAAML,GAAS7B,EACvC,CAEF,OAAOiC,CACT,CASA,SAASpV,GAAahW,EAAQiW,GAC5B,MAAM+G,EAAQ9X,KAAK+kB,MAAM/kB,KAAK8T,IAAIhZ,EAAS,KACzC4b,EAAU1W,KAAK+kB,MAAM/kB,KAAK8T,IAAIhZ,EAAS,KACvCsrB,EAAOtrB,GAAU,EAAI,IAAM,IAC7B,OAAQiW,GACN,IAAK,QACH,MAAO,GAAGqV,IAAOpQ,GAAS8B,EAAO,MAAM9B,GAASU,EAAS,KAC3D,IAAK,SACH,MAAO,GAAG0P,IAAOtO,IAAQpB,EAAU,EAAI,IAAIA,IAAY,KACzD,IAAK,SACH,MAAO,GAAG0P,IAAOpQ,GAAS8B,EAAO,KAAK9B,GAASU,EAAS,KAC1D,QACE,MAAM,IAAI2P,WAAW,gBAAgBtV,yCAE3C,CACA,SAASiR,GAAW7oB,GAClB,OA1MF,SAAcA,EAAKiO,GACjB,OAAOA,EAAKyc,QAAO,CAACyC,EAAGjlB,KACrBilB,EAAEjlB,GAAKlI,EAAIkI,GACJilB,IACN,CAAC,EACN,CAqMSC,CAAKptB,EAAK,CAAC,OAAQ,SAAU,SAAU,eAChD,CAMA,MAAMqtB,GAAa,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YAC5HC,GAAc,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC5FC,GAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC7E,SAAS/O,GAAO5kB,GACd,OAAQA,GACN,IAAK,SACH,MAAO,IAAI2zB,IACb,IAAK,QACH,MAAO,IAAID,IACb,IAAK,OACH,MAAO,IAAID,IACb,IAAK,UACH,MAAO,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,MACnE,IAAK,UACH,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC5E,QACE,OAAO,KAEb,CACA,MAAMG,GAAe,CAAC,SAAU,UAAW,YAAa,WAAY,SAAU,WAAY,UACpFC,GAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,GAAiB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACtD,SAAS5K,GAASlpB,GAChB,OAAQA,GACN,IAAK,SACH,MAAO,IAAI8zB,IACb,IAAK,QACH,MAAO,IAAID,IACb,IAAK,OACH,MAAO,IAAID,IACb,IAAK,UACH,MAAO,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACxC,QACE,OAAO,KAEb,CACA,MAAMxK,GAAY,CAAC,KAAM,MACnB2K,GAAW,CAAC,gBAAiB,eAC7BC,GAAY,CAAC,KAAM,MACnBC,GAAa,CAAC,IAAK,KACzB,SAAS5K,GAAKrpB,GACZ,OAAQA,GACN,IAAK,SACH,MAAO,IAAIi0B,IACb,IAAK,QACH,MAAO,IAAID,IACb,IAAK,OACH,MAAO,IAAID,IACb,QACE,OAAO,KAEb,CA6CA,SAASG,GAAgBC,EAAQC,GAC/B,IAAI1Y,EAAI,GACR,IAAK,MAAMhS,KAASyqB,EACdzqB,EAAM2qB,QACR3Y,GAAKhS,EAAMrD,IAEXqV,GAAK0Y,EAAc1qB,EAAMrD,KAG7B,OAAOqV,CACT,CACA,MAAM4Y,GAAyB,CAC7BC,EAAG5Y,EACH6Y,GAAIzY,EACJ0Y,IAAKvY,EACLwY,KAAMvY,EACNvP,EAAGwP,EACHuY,GAAIpY,EACJqY,IAAKnY,EACLoY,KAAMlY,EACNmY,EAAGlY,EACHmY,GAAIjY,EACJkY,IAAKjY,EACLkY,KAAMjY,EACN4L,EAAG3L,EACHiY,GAAI/X,EACJgY,IAAK7X,EACL8X,KAAM5X,EACN6X,EAAGnY,EACHoY,GAAIlY,EACJmY,IAAKhY,EACLiY,KAAM/X,GAOR,MAAMgY,GACJ,aAAO/iB,CAAOiM,EAAQ5F,EAAO,CAAC,GAC5B,OAAO,IAAI0c,GAAU9W,EAAQ5F,EAC/B,CACA,kBAAO2c,CAAYC,GAIjB,IAAIC,EAAU,KACZC,EAAc,GACdC,GAAY,EACd,MAAM3B,EAAS,GACf,IAAK,IAAIp0B,EAAI,EAAGA,EAAI41B,EAAI31B,OAAQD,IAAK,CACnC,MAAM0I,EAAIktB,EAAI/vB,OAAO7F,GACX,MAAN0I,GACEotB,EAAY71B,OAAS,GACvBm0B,EAAO3rB,KAAK,CACV6rB,QAASyB,GAAa,QAAQ7yB,KAAK4yB,GACnCxvB,IAAKwvB,IAGTD,EAAU,KACVC,EAAc,GACdC,GAAaA,GACJA,GAEArtB,IAAMmtB,EADfC,GAAeptB,GAIXotB,EAAY71B,OAAS,GACvBm0B,EAAO3rB,KAAK,CACV6rB,QAAS,QAAQpxB,KAAK4yB,GACtBxvB,IAAKwvB,IAGTA,EAAcptB,EACdmtB,EAAUntB,EAEd,CAOA,OANIotB,EAAY71B,OAAS,GACvBm0B,EAAO3rB,KAAK,CACV6rB,QAASyB,GAAa,QAAQ7yB,KAAK4yB,GACnCxvB,IAAKwvB,IAGF1B,CACT,CACA,6BAAOG,CAAuB5qB,GAC5B,OAAO4qB,GAAuB5qB,EAChC,CACA,WAAA5G,CAAY6b,EAAQoX,GAClBl0B,KAAKkX,KAAOgd,EACZl0B,KAAKkgB,IAAMpD,EACX9c,KAAKm0B,UAAY,IACnB,CACA,uBAAAC,CAAwB7S,EAAIrK,GACH,OAAnBlX,KAAKm0B,YACPn0B,KAAKm0B,UAAYn0B,KAAKkgB,IAAI2G,qBAM5B,OAJW7mB,KAAKm0B,UAAUxM,YAAYpG,EAAI,IACrCvhB,KAAKkX,QACLA,IAEKiF,QACZ,CACA,WAAAwL,CAAYpG,EAAIrK,EAAO,CAAC,GACtB,OAAOlX,KAAKkgB,IAAIyH,YAAYpG,EAAI,IAC3BvhB,KAAKkX,QACLA,GAEP,CACA,cAAAmd,CAAe9S,EAAIrK,GACjB,OAAOlX,KAAK2nB,YAAYpG,EAAIrK,GAAMiF,QACpC,CACA,mBAAAmY,CAAoB/S,EAAIrK,GACtB,OAAOlX,KAAK2nB,YAAYpG,EAAIrK,GAAMiH,eACpC,CACA,cAAAoW,CAAeC,EAAUtd,GAEvB,OADWlX,KAAK2nB,YAAY6M,EAAS7pB,MAAOuM,GAClC8G,IAAIyW,YAAYD,EAAS7pB,MAAMoX,WAAYyS,EAASE,IAAI3S,WACpE,CACA,eAAAnF,CAAgB2E,EAAIrK,GAClB,OAAOlX,KAAK2nB,YAAYpG,EAAIrK,GAAM0F,iBACpC,CACA,GAAA+X,CAAI7zB,EAAG8zB,EAAI,GAET,GAAI50B,KAAKkX,KAAKuJ,YACZ,OAAOW,GAAStgB,EAAG8zB,GAErB,MAAM1d,EAAO,IACRlX,KAAKkX,MAKV,OAHI0d,EAAI,IACN1d,EAAKwJ,MAAQkU,GAER50B,KAAKkgB,IAAI4H,gBAAgB5Q,GAAMiF,OAAOrb,EAC/C,CACA,wBAAA+zB,CAAyBtT,EAAIuS,GAC3B,MAAMgB,EAA0C,OAA3B90B,KAAKkgB,IAAII,cAC5ByU,EAAuB/0B,KAAKkgB,IAAIkE,gBAA8C,YAA5BpkB,KAAKkgB,IAAIkE,eAC3DsL,EAAS,CAACxY,EAAMkQ,IAAYpnB,KAAKkgB,IAAIkH,QAAQ7F,EAAIrK,EAAMkQ,GACvDlL,EAAehF,GACTqK,EAAGyT,eAA+B,IAAdzT,EAAGrb,QAAgBgR,EAAK+d,OACvC,IAEF1T,EAAGjF,QAAUiF,EAAG7D,KAAKxB,aAAaqF,EAAGtF,GAAI/E,EAAKiF,QAAU,GAEjE+Y,EAAW,IAAMJ,EA7LvB,SAA6BvT,GAC3B,OAAOgG,GAAUhG,EAAG/G,KAAO,GAAK,EAAI,EACtC,CA2LsC2a,CAAoB5T,GAAMmO,EAAO,CAC/DlV,KAAM,UACNQ,UAAW,OACV,aACHhB,EAAQ,CAAC7b,EAAQ6nB,IAAe8O,EA3LtC,SAA0BvT,EAAIpjB,GAC5B,OAAO4kB,GAAO5kB,GAAQojB,EAAGvH,MAAQ,EACnC,CAyLqDob,CAAiB7T,EAAIpjB,GAAUuxB,EAAO1J,EAAa,CAChGhM,MAAO7b,GACL,CACF6b,MAAO7b,EACP8b,IAAK,WACJ,SACHG,EAAU,CAACjc,EAAQ6nB,IAAe8O,EApMxC,SAA4BvT,EAAIpjB,GAC9B,OAAOkpB,GAASlpB,GAAQojB,EAAGnH,QAAU,EACvC,CAkMuDib,CAAmB9T,EAAIpjB,GAAUuxB,EAAO1J,EAAa,CACpG5L,QAASjc,GACP,CACFic,QAASjc,EACT6b,MAAO,OACPC,IAAK,WACJ,WACHqb,EAAaztB,IACX,MAAMqsB,EAAaN,GAAUnB,uBAAuB5qB,GACpD,OAAIqsB,EACKl0B,KAAKo0B,wBAAwB7S,EAAI2S,GAEjCrsB,CACT,EAEFuV,EAAMjf,GAAU22B,EA7MtB,SAAwBvT,EAAIpjB,GAC1B,OAAOqpB,GAAKrpB,GAAQojB,EAAGxH,KAAO,EAAI,EAAI,EACxC,CA2MqCwb,CAAehU,EAAIpjB,GAAUuxB,EAAO,CACjEtS,IAAKjf,GACJ,OAsNL,OAAOk0B,GAAgBuB,GAAUC,YAAYC,IArN3BjsB,IAEd,OAAQA,GAEN,IAAK,IACH,OAAO7H,KAAK20B,IAAIpT,EAAGjC,aACrB,IAAK,IAEL,IAAK,MACH,OAAOtf,KAAK20B,IAAIpT,EAAGjC,YAAa,GAElC,IAAK,IACH,OAAOtf,KAAK20B,IAAIpT,EAAG5G,QACrB,IAAK,KACH,OAAO3a,KAAK20B,IAAIpT,EAAG5G,OAAQ,GAE7B,IAAK,KACH,OAAO3a,KAAK20B,IAAIvpB,KAAKuV,MAAMY,EAAGjC,YAAc,IAAK,GACnD,IAAK,MACH,OAAOtf,KAAK20B,IAAIvpB,KAAKuV,MAAMY,EAAGjC,YAAc,MAE9C,IAAK,IACH,OAAOtf,KAAK20B,IAAIpT,EAAG9G,QACrB,IAAK,KACH,OAAOza,KAAK20B,IAAIpT,EAAG9G,OAAQ,GAE7B,IAAK,IACH,OAAOza,KAAK20B,IAAIpT,EAAG/G,KAAO,IAAO,EAAI,GAAK+G,EAAG/G,KAAO,IACtD,IAAK,KACH,OAAOxa,KAAK20B,IAAIpT,EAAG/G,KAAO,IAAO,EAAI,GAAK+G,EAAG/G,KAAO,GAAI,GAC1D,IAAK,IACH,OAAOxa,KAAK20B,IAAIpT,EAAG/G,MACrB,IAAK,KACH,OAAOxa,KAAK20B,IAAIpT,EAAG/G,KAAM,GAE3B,IAAK,IAEH,OAAO0B,EAAa,CAClBC,OAAQ,SACR8Y,OAAQj1B,KAAKkX,KAAK+d,SAEtB,IAAK,KAEH,OAAO/Y,EAAa,CAClBC,OAAQ,QACR8Y,OAAQj1B,KAAKkX,KAAK+d,SAEtB,IAAK,MAEH,OAAO/Y,EAAa,CAClBC,OAAQ,SACR8Y,OAAQj1B,KAAKkX,KAAK+d,SAEtB,IAAK,OAEH,OAAO1T,EAAG7D,KAAK1B,WAAWuF,EAAGtF,GAAI,CAC/BE,OAAQ,QACRW,OAAQ9c,KAAKkgB,IAAIpD,SAErB,IAAK,QAEH,OAAOyE,EAAG7D,KAAK1B,WAAWuF,EAAGtF,GAAI,CAC/BE,OAAQ,OACRW,OAAQ9c,KAAKkgB,IAAIpD,SAGrB,IAAK,IAEH,OAAOyE,EAAG5D,SAEZ,IAAK,IACH,OAAOuX,IAET,IAAK,IACH,OAAOH,EAAuBrF,EAAO,CACnCzV,IAAK,WACJ,OAASja,KAAK20B,IAAIpT,EAAGtH,KAC1B,IAAK,KACH,OAAO8a,EAAuBrF,EAAO,CACnCzV,IAAK,WACJ,OAASja,KAAK20B,IAAIpT,EAAGtH,IAAK,GAE/B,IAAK,IAaL,IAAK,IAEH,OAAOja,KAAK20B,IAAIpT,EAAGnH,SAZrB,IAAK,MAEH,OAAOA,EAAQ,SAAS,GAC1B,IAAK,OAEH,OAAOA,EAAQ,QAAQ,GACzB,IAAK,QAEH,OAAOA,EAAQ,UAAU,GAK3B,IAAK,MAEH,OAAOA,EAAQ,SAAS,GAC1B,IAAK,OAEH,OAAOA,EAAQ,QAAQ,GACzB,IAAK,QAEH,OAAOA,EAAQ,UAAU,GAE3B,IAAK,IAEH,OAAO2a,EAAuBrF,EAAO,CACnC1V,MAAO,UACPC,IAAK,WACJ,SAAWja,KAAK20B,IAAIpT,EAAGvH,OAC5B,IAAK,KAEH,OAAO+a,EAAuBrF,EAAO,CACnC1V,MAAO,UACPC,IAAK,WACJ,SAAWja,KAAK20B,IAAIpT,EAAGvH,MAAO,GACnC,IAAK,MAEH,OAAOA,EAAM,SAAS,GACxB,IAAK,OAEH,OAAOA,EAAM,QAAQ,GACvB,IAAK,QAEH,OAAOA,EAAM,UAAU,GAEzB,IAAK,IAEH,OAAO+a,EAAuBrF,EAAO,CACnC1V,MAAO,WACN,SAAWha,KAAK20B,IAAIpT,EAAGvH,OAC5B,IAAK,KAEH,OAAO+a,EAAuBrF,EAAO,CACnC1V,MAAO,WACN,SAAWha,KAAK20B,IAAIpT,EAAGvH,MAAO,GACnC,IAAK,MAEH,OAAOA,EAAM,SAAS,GACxB,IAAK,OAEH,OAAOA,EAAM,QAAQ,GACvB,IAAK,QAEH,OAAOA,EAAM,UAAU,GAEzB,IAAK,IAEH,OAAO+a,EAAuBrF,EAAO,CACnC3V,KAAM,WACL,QAAU/Z,KAAK20B,IAAIpT,EAAGxH,MAC3B,IAAK,KAEH,OAAOgb,EAAuBrF,EAAO,CACnC3V,KAAM,WACL,QAAU/Z,KAAK20B,IAAIpT,EAAGxH,KAAKhZ,WAAWC,OAAO,GAAI,GACtD,IAAK,OAEH,OAAO+zB,EAAuBrF,EAAO,CACnC3V,KAAM,WACL,QAAU/Z,KAAK20B,IAAIpT,EAAGxH,KAAM,GACjC,IAAK,SAEH,OAAOgb,EAAuBrF,EAAO,CACnC3V,KAAM,WACL,QAAU/Z,KAAK20B,IAAIpT,EAAGxH,KAAM,GAEjC,IAAK,IAEH,OAAOqD,EAAI,SACb,IAAK,KAEH,OAAOA,EAAI,QACb,IAAK,QACH,OAAOA,EAAI,UACb,IAAK,KACH,OAAOpd,KAAK20B,IAAIpT,EAAG0L,SAASlsB,WAAWC,OAAO,GAAI,GACpD,IAAK,OACH,OAAOhB,KAAK20B,IAAIpT,EAAG0L,SAAU,GAC/B,IAAK,IACH,OAAOjtB,KAAK20B,IAAIpT,EAAG2L,YACrB,IAAK,KACH,OAAOltB,KAAK20B,IAAIpT,EAAG2L,WAAY,GACjC,IAAK,IACH,OAAOltB,KAAK20B,IAAIpT,EAAGyM,iBACrB,IAAK,KACH,OAAOhuB,KAAK20B,IAAIpT,EAAGyM,gBAAiB,GACtC,IAAK,KACH,OAAOhuB,KAAK20B,IAAIpT,EAAG0M,cAAcltB,WAAWC,OAAO,GAAI,GACzD,IAAK,OACH,OAAOhB,KAAK20B,IAAIpT,EAAG0M,cAAe,GACpC,IAAK,IACH,OAAOjuB,KAAK20B,IAAIpT,EAAGiL,SACrB,IAAK,MACH,OAAOxsB,KAAK20B,IAAIpT,EAAGiL,QAAS,GAC9B,IAAK,IAEH,OAAOxsB,KAAK20B,IAAIpT,EAAGiU,SACrB,IAAK,KAEH,OAAOx1B,KAAK20B,IAAIpT,EAAGiU,QAAS,GAC9B,IAAK,IACH,OAAOx1B,KAAK20B,IAAIvpB,KAAKuV,MAAMY,EAAGtF,GAAK,MACrC,IAAK,IACH,OAAOjc,KAAK20B,IAAIpT,EAAGtF,IACrB,QACE,OAAOqZ,EAAWztB,GACtB,GAGN,CACA,wBAAA4tB,CAAyBC,EAAK5B,GAC5B,MAAM6B,EAAe9tB,IACjB,OAAQA,EAAM,IACZ,IAAK,IACH,MAAO,cACT,IAAK,IACH,MAAO,SACT,IAAK,IACH,MAAO,SACT,IAAK,IACH,MAAO,OACT,IAAK,IACH,MAAO,MACT,IAAK,IACH,MAAO,OACT,IAAK,IACH,MAAO,QACT,IAAK,IACH,MAAO,OACT,QACE,OAAO,KACX,EAUFE,EAAS6rB,GAAUC,YAAYC,GAC/B8B,EAAa7tB,EAAOknB,QAAO,CAAC4G,GAC1BrD,UACAhuB,SACIguB,EAAUqD,EAAQA,EAAMvd,OAAO9T,IAAM,IAE7C,OAAO6tB,GAAgBtqB,EAdL+tB,IAAUjuB,IACxB,MAAMkuB,EAASJ,EAAa9tB,GAC5B,OAAIkuB,EACK/1B,KAAK20B,IAAImB,EAAOljB,IAAImjB,GAASluB,EAAM1J,QAEnC0J,CACT,EAQ2B0qB,CADjBmD,EAAIM,WAAWJ,EAAW9sB,IAAI6sB,GAAc9pB,QAAOd,GAAKA,MAExE,EAaF,MAAMkrB,GAAY,+EAClB,SAASC,MAAkBC,GACzB,MAAMC,EAAOD,EAAQlH,QAAO,CAAClI,EAAGkC,IAAMlC,EAAIkC,EAAErpB,QAAQ,IACpD,OAAOqD,OAAO,IAAImzB,KACpB,CACA,SAASC,MAAqBC,GAC5B,OAAOzO,GAAKyO,EAAWrH,QAAO,EAAEsH,EAAYC,EAAYC,GAASC,KAC/D,MAAOlyB,EAAKkZ,EAAM/c,GAAQ+1B,EAAG7O,EAAG4O,GAChC,MAAO,CAAC,IACHF,KACA/xB,GACFkZ,GAAQ8Y,EAAY71B,EAAK,GAC3B,CAAC,CAAC,EAAG,KAAM,IAAIK,MAAM,EAAG,EAC7B,CACA,SAASuT,GAAMsF,KAAM8c,GACnB,GAAS,MAAL9c,EACF,MAAO,CAAC,KAAM,MAEhB,IAAK,MAAOxV,EAAOuyB,KAAcD,EAAU,CACzC,MAAM9O,EAAIxjB,EAAMuB,KAAKiU,GACrB,GAAIgO,EACF,OAAO+O,EAAU/O,EAErB,CACA,MAAO,CAAC,KAAM,KAChB,CACA,SAASgP,MAAerkB,GACtB,MAAO,CAACvM,EAAOwwB,KACb,MAAM5hB,EAAM,CAAC,EACb,IAAI3W,EACJ,IAAKA,EAAI,EAAGA,EAAIsU,EAAKrU,OAAQD,IAC3B2W,EAAIrC,EAAKtU,IAAMuxB,GAAaxpB,EAAMwwB,EAASv4B,IAE7C,MAAO,CAAC2W,EAAK,KAAM4hB,EAASv4B,EAAE,CAElC,CAGA,MAAM44B,GAAc,kCAEdC,GAAmB,sDACnBC,GAAe/zB,OAAO,GAAG8zB,GAAiBn3B,SAFxB,MAAMk3B,GAAYl3B,iBAAiBq2B,GAAUr2B,oBAG/Dq3B,GAAwBh0B,OAAO,OAAO+zB,GAAap3B,YAInDs3B,GAAqBL,GAAY,WAAY,aAAc,WAC3DM,GAAwBN,GAAY,OAAQ,WAE5CO,GAAen0B,OAAO,GAAG8zB,GAAiBn3B,cAAck3B,GAAYl3B,WAAWq2B,GAAUr2B,aACzFy3B,GAAwBp0B,OAAO,OAAOm0B,GAAax3B,YACzD,SAAS03B,GAAIrxB,EAAOqY,EAAKiZ,GACvB,MAAM1P,EAAI5hB,EAAMqY,GAChB,OAAOC,GAAYsJ,GAAK0P,EAAW9H,GAAa5H,EAClD,CASA,SAAS2P,GAAevxB,EAAOwwB,GAO7B,MAAO,CANM,CACXvT,MAAOoU,GAAIrxB,EAAOwwB,EAAQ,GAC1B3U,QAASwV,GAAIrxB,EAAOwwB,EAAS,EAAG,GAChCtT,QAASmU,GAAIrxB,EAAOwwB,EAAS,EAAG,GAChCgB,aAAc5H,GAAY5pB,EAAMwwB,EAAS,KAE7B,KAAMA,EAAS,EAC/B,CACA,SAASiB,GAAiBzxB,EAAOwwB,GAC/B,MAAMkB,GAAS1xB,EAAMwwB,KAAYxwB,EAAMwwB,EAAS,GAC9CmB,EAAa1O,GAAajjB,EAAMwwB,EAAS,GAAIxwB,EAAMwwB,EAAS,IAE9D,MAAO,CAAC,CAAC,EADAkB,EAAQ,KAAO7O,GAAgBrM,SAASmb,GAC/BnB,EAAS,EAC7B,CACA,SAASoB,GAAgB5xB,EAAOwwB,GAE9B,MAAO,CAAC,CAAC,EADIxwB,EAAMwwB,GAAUnZ,EAASzM,OAAO5K,EAAMwwB,IAAW,KAC5CA,EAAS,EAC7B,CAIA,MAAMqB,GAAc70B,OAAO,MAAM8zB,GAAiBn3B,WAI5Cm4B,GAAc,+PACpB,SAASC,GAAmB/xB,GAC1B,MAAO4T,EAAGoe,EAASC,EAAUC,EAASC,EAAQC,EAASC,EAAWC,EAAWC,GAAmBvyB,EAC1FwyB,EAA6B,MAAT5e,EAAE,GACtB6e,EAAkBH,GAA8B,MAAjBA,EAAU,GACzCI,EAAc,CAAChE,EAAKiE,GAAQ,SAAkB35B,IAAR01B,IAAsBiE,GAASjE,GAAO8D,IAAsB9D,EAAMA,EAC9G,MAAO,CAAC,CACN9R,MAAO8V,EAAYhJ,GAAcsI,IACjClV,OAAQ4V,EAAYhJ,GAAcuI,IAClClV,MAAO2V,EAAYhJ,GAAcwI,IACjClV,KAAM0V,EAAYhJ,GAAcyI,IAChClV,MAAOyV,EAAYhJ,GAAc0I,IACjCvW,QAAS6W,EAAYhJ,GAAc2I,IACnCnV,QAASwV,EAAYhJ,GAAc4I,GAA0B,OAAdA,GAC/Cd,aAAckB,EAAY9I,GAAY2I,GAAkBE,IAE5D,CAKA,MAAMG,GAAa,CACjBC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAEP,SAASC,GAAYC,EAAYvB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,GAC9E,MAAMpxB,EAAS,CACb4S,KAAyB,IAAnBke,EAAQ95B,OAAewyB,GAAelB,GAAawI,IAAYxI,GAAawI,GAClFje,MAAO6X,GAAY3sB,QAAQgzB,GAAY,EACvCje,IAAKwV,GAAa2I,GAClB5d,KAAMiV,GAAa4I,GACnB5d,OAAQgV,GAAa6I,IAMvB,OAJIC,IAAWpxB,EAAOwT,OAAS8U,GAAa8I,IACxCiB,IACFryB,EAAOiT,QAAUof,EAAWr7B,OAAS,EAAI4zB,GAAa7sB,QAAQs0B,GAAc,EAAIxH,GAAc9sB,QAAQs0B,GAAc,GAE/GryB,CACT,CAGA,MAAMsyB,GAAU,kMAChB,SAASC,GAAezzB,GACtB,MAAO,CAAEuzB,EAAYpB,EAAQF,EAAUD,EAASI,EAASC,EAAWC,EAAWoB,EAAWC,EAAW9I,EAAYC,GAAgB9qB,EAC/HkB,EAASoyB,GAAYC,EAAYvB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,GAClF,IAAIryB,EAQJ,OANEA,EADEyzB,EACOd,GAAWc,GACXC,EACA,EAEA1Q,GAAa4H,EAAYC,GAE7B,CAAC5pB,EAAQ,IAAI2hB,GAAgB5iB,GACtC,CAQA,MAAM2zB,GAAU,6HACdC,GAAS,yJACTC,GAAQ,4HACV,SAASC,GAAoB/zB,GAC3B,MAAO,CAAEuzB,EAAYpB,EAAQF,EAAUD,EAASI,EAASC,EAAWC,GAAatyB,EAEjF,MAAO,CADIszB,GAAYC,EAAYvB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,GAClEzP,GAAgBC,YAClC,CACA,SAASkR,GAAah0B,GACpB,MAAO,CAAEuzB,EAAYtB,EAAUE,EAAQC,EAASC,EAAWC,EAAWN,GAAWhyB,EAEjF,MAAO,CADIszB,GAAYC,EAAYvB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,GAClEzP,GAAgBC,YAClC,CACA,MAAMmR,GAA+BhE,GAhIjB,8CAgI6Ce,IAC3DkD,GAAgCjE,GAhIjB,8BAgI8Ce,IAC7DmD,GAAmClE,GAhIjB,mBAgIiDe,IACnEoD,GAAuBnE,GAAec,IACtCsD,GAA6BjE,IAxHnC,SAAuBpwB,EAAOwwB,GAM5B,MAAO,CALM,CACX1c,KAAMud,GAAIrxB,EAAOwwB,GACjBzc,MAAOsd,GAAIrxB,EAAOwwB,EAAS,EAAG,GAC9Bxc,IAAKqd,GAAIrxB,EAAOwwB,EAAS,EAAG,IAEhB,KAAMA,EAAS,EAC/B,GAiHoEe,GAAgBE,GAAkBG,IAChG0C,GAA8BlE,GAAkBa,GAAoBM,GAAgBE,GAAkBG,IACtG2C,GAA+BnE,GAAkBc,GAAuBK,GAAgBE,GAAkBG,IAC1G4C,GAA0BpE,GAAkBmB,GAAgBE,GAAkBG,IAkBpF,MAAM6C,GAAqBrE,GAAkBmB,IAI7C,MAAMmD,GAA+BzE,GAxJjB,wBAwJ6CmB,IAC3DuD,GAAuB1E,GAAekB,IACtCyD,GAAkCxE,GAAkBmB,GAAgBE,GAAkBG,IAK5F,MAAMiD,GAAY,mBAGZC,GAAiB,CACnB/X,MAAO,CACLC,KAAM,EACNC,MAAO,IACPpB,QAAS,MACTqB,QAAS,OACTsU,aAAc,QAEhBxU,KAAM,CACJC,MAAO,GACPpB,QAAS,KACTqB,QAAS,MACTsU,aAAc,OAEhBvU,MAAO,CACLpB,QAAS,GACTqB,QAAS,KACTsU,aAAc,MAEhB3V,QAAS,CACPqB,QAAS,GACTsU,aAAc,KAEhBtU,QAAS,CACPsU,aAAc,MAGlBuD,GAAe,CACbnY,MAAO,CACLC,SAAU,EACVC,OAAQ,GACRC,MAAO,GACPC,KAAM,IACNC,MAAO,KACPpB,QAAS,OACTqB,QAAS,QACTsU,aAAc,SAEhB3U,SAAU,CACRC,OAAQ,EACRC,MAAO,GACPC,KAAM,GACNC,MAAO,KACPpB,QAAS,OACTqB,QAAS,QACTsU,aAAc,SAEhB1U,OAAQ,CACNC,MAAO,EACPC,KAAM,GACNC,MAAO,IACPpB,QAAS,MACTqB,QAAS,OACTsU,aAAc,WAEbsD,IAELE,GAAqB,SACrBC,GAAsB,UACtBC,GAAiB,CACftY,MAAO,CACLC,SAAU,EACVC,OAAQ,GACRC,MAAOiY,QACPhY,KAAMgY,GACN/X,MAAO+X,QACPnZ,QAASmZ,SACT9X,QAAS8X,SAA+B,GACxCxD,aAAcwD,SAA+B,GAAK,KAEpDnY,SAAU,CACRC,OAAQ,EACRC,MAAOiY,UACPhY,KAAMgY,UACN/X,MAAO+X,SACPnZ,QAASmZ,SACT9X,QAAS8X,SAA+B,GAAK,EAC7CxD,aAAcwD,mBAEhBlY,OAAQ,CACNC,MAAOkY,mBACPjY,KAAMiY,GACNhY,MAAOgY,QACPpZ,QAASoZ,QACT/X,QAAS+X,QACTzD,aAAcyD,cAEbH,IAIDK,GAAiB,CAAC,QAAS,WAAY,SAAU,QAAS,OAAQ,QAAS,UAAW,UAAW,gBACjGC,GAAeD,GAAep6B,MAAM,GAAGs6B,UAG7C,SAASC,GAAQ7F,EAAKhP,EAAM8U,GAAQ,GAElC,MAAMC,EAAO,CACXpjB,OAAQmjB,EAAQ9U,EAAKrO,OAAS,IACzBqd,EAAIrd,UACHqO,EAAKrO,QAAU,CAAC,GAEtB6H,IAAKwV,EAAIxV,IAAIuG,MAAMC,EAAKxG,KACxBwb,mBAAoBhV,EAAKgV,oBAAsBhG,EAAIgG,mBACnDC,OAAQjV,EAAKiV,QAAUjG,EAAIiG,QAE7B,OAAO,IAAIC,GAASH,EACtB,CACA,SAASI,GAAiBF,EAAQG,GAChC,IAAIC,EACJ,IAAIC,EAAkD,OAA3CD,EAAqBD,EAAKrE,cAAwBsE,EAAqB,EAClF,IAAK,MAAMriB,KAAQ2hB,GAAar6B,MAAM,GAChC86B,EAAKpiB,KACPsiB,GAAOF,EAAKpiB,GAAQiiB,EAAOjiB,GAAoB,cAGnD,OAAOsiB,CACT,CAGA,SAASC,GAAgBN,EAAQG,GAG/B,MAAM5L,EAAS2L,GAAiBF,EAAQG,GAAQ,GAAK,EAAI,EACzDV,GAAec,aAAY,CAACC,EAAUpI,KACpC,GAAKxV,GAAYud,EAAK/H,IA0BpB,OAAOoI,EAzBP,GAAIA,EAAU,CACZ,MAAMC,EAAcN,EAAKK,GAAYjM,EAC/BmM,EAAOV,EAAO5H,GAASoI,GAiBvBG,EAASlxB,KAAKuV,MAAMyb,EAAcC,GACxCP,EAAK/H,IAAYuI,EAASpM,EAC1B4L,EAAKK,IAAaG,EAASD,EAAOnM,CACpC,CACA,OAAO6D,CAGT,GACC,MAIHqH,GAAenM,QAAO,CAACkN,EAAUpI,KAC/B,GAAKxV,GAAYud,EAAK/H,IAQpB,OAAOoI,EAPP,GAAIA,EAAU,CACZ,MAAMrM,EAAWgM,EAAKK,GAAY,EAClCL,EAAKK,IAAarM,EAClBgM,EAAK/H,IAAYjE,EAAW6L,EAAOQ,GAAUpI,EAC/C,CACA,OAAOA,CAGT,GACC,KACL,CA0BA,MAAM6H,GAIJ,WAAA36B,CAAYs7B,GACV,MAAMC,EAAyC,aAA9BD,EAAOb,qBAAqC,EAC7D,IAAIC,EAASa,EAAWrB,GAAiBH,GACrCuB,EAAOZ,SACTA,EAASY,EAAOZ,QAMlB37B,KAAKqY,OAASkkB,EAAOlkB,OAIrBrY,KAAKkgB,IAAMqc,EAAOrc,KAAO+D,GAAOpT,SAIhC7Q,KAAK07B,mBAAqBc,EAAW,WAAa,SAIlDx8B,KAAKy8B,QAAUF,EAAOE,SAAW,KAIjCz8B,KAAK27B,OAASA,EAId37B,KAAK08B,iBAAkB,CACzB,CAWA,iBAAOC,CAAW52B,EAAOmR,GACvB,OAAO0kB,GAAS1W,WAAW,CACzBuS,aAAc1xB,GACbmR,EACL,CAsBA,iBAAOgO,CAAW3gB,EAAK2S,EAAO,CAAC,GAC7B,GAAW,MAAP3S,GAA8B,iBAARA,EACxB,MAAM,IAAIoV,EAAqB,gEAAuE,OAARpV,EAAe,cAAgBA,IAE/H,OAAO,IAAIq3B,GAAS,CAClBvjB,OAAQ+Y,GAAgB7sB,EAAKq3B,GAASgB,eACtC1c,IAAK+D,GAAOiB,WAAWhO,GACvBwkB,mBAAoBxkB,EAAKwkB,mBACzBC,OAAQzkB,EAAKykB,QAEjB,CAYA,uBAAOkB,CAAiBC,GACtB,GAAIvT,GAASuT,GACX,OAAOlB,GAASe,WAAWG,GACtB,GAAIlB,GAASmB,WAAWD,GAC7B,OAAOA,EACF,GAA4B,iBAAjBA,EAChB,OAAOlB,GAAS1W,WAAW4X,GAE3B,MAAM,IAAInjB,EAAqB,6BAA6BmjB,oBAA+BA,IAE/F,CAgBA,cAAOE,CAAQt1B,EAAMwP,GACnB,MAAOuH,GA7UX,SAA0B5E,GACxB,OAAOtF,GAAMsF,EAAG,CAACke,GAAaC,IAChC,CA2UqBiF,CAAiBv1B,GAClC,OAAI+W,EACKmd,GAAS1W,WAAWzG,EAAQvH,GAE5B0kB,GAASa,QAAQ,aAAc,cAAc/0B,iCAExD,CAkBA,kBAAOw1B,CAAYx1B,EAAMwP,GACvB,MAAOuH,GAlWX,SAA0B5E,GACxB,OAAOtF,GAAMsF,EAAG,CAACie,GAAa4C,IAChC,CAgWqByC,CAAiBz1B,GAClC,OAAI+W,EACKmd,GAAS1W,WAAWzG,EAAQvH,GAE5B0kB,GAASa,QAAQ,aAAc,cAAc/0B,iCAExD,CAQA,cAAO+0B,CAAQtjB,EAAQuS,EAAc,MACnC,IAAKvS,EACH,MAAM,IAAIQ,EAAqB,oDAEjC,MAAM8iB,EAAUtjB,aAAkBsS,GAAUtS,EAAS,IAAIsS,GAAQtS,EAAQuS,GACzE,GAAIlH,GAAS4G,eACX,MAAM,IAAI7R,EAAqBkjB,GAE/B,OAAO,IAAIb,GAAS,CAClBa,WAGN,CAKA,oBAAOG,CAAcljB,GACnB,MAAM4X,EAAa,CACjBvX,KAAM,QACN8I,MAAO,QACP2S,QAAS,WACT1S,SAAU,WACV9I,MAAO,SACP+I,OAAQ,SACRqa,KAAM,QACNpa,MAAO,QACP/I,IAAK,OACLgJ,KAAM,OACNzI,KAAM,QACN0I,MAAO,QACPzI,OAAQ,UACRqH,QAAS,UACTnH,OAAQ,UACRwI,QAAS,UACT7D,YAAa,eACbmY,aAAc,gBACd/d,EAAOA,EAAK5V,cAAgB4V,GAC9B,IAAK4X,EAAY,MAAM,IAAI7X,EAAiBC,GAC5C,OAAO4X,CACT,CAOA,iBAAOyL,CAAWx8B,GAChB,OAAOA,GAAKA,EAAEm8B,kBAAmB,CACnC,CAMA,UAAI5f,GACF,OAAO9c,KAAKsc,QAAUtc,KAAKkgB,IAAIpD,OAAS,IAC1C,CAOA,mBAAIqH,GACF,OAAOnkB,KAAKsc,QAAUtc,KAAKkgB,IAAIiE,gBAAkB,IACnD,CAwBA,QAAAkZ,CAASvJ,EAAK5c,EAAO,CAAC,GAEpB,MAAMomB,EAAU,IACXpmB,EACHyJ,OAAsB,IAAfzJ,EAAKkZ,QAAkC,IAAflZ,EAAKyJ,OAEtC,OAAO3gB,KAAKsc,QAAUsX,GAAU/iB,OAAO7Q,KAAKkgB,IAAKod,GAAS7H,yBAAyBz1B,KAAM8zB,GAAOgH,EAClG,CAgBA,OAAAyC,CAAQrmB,EAAO,CAAC,GACd,IAAKlX,KAAKsc,QAAS,OAAOwe,GAC1B,MAAMh0B,EAAIs0B,GAAetyB,KAAI4Q,IAC3B,MAAMlV,EAAMxE,KAAKqY,OAAOqB,GACxB,OAAI6E,GAAY/Z,GACP,KAEFxE,KAAKkgB,IAAI4H,gBAAgB,CAC9B1F,MAAO,OACPob,YAAa,UACVtmB,EACHwC,KAAMA,EAAK1Y,MAAM,GAAI,KACpBmb,OAAO3X,EAAI,IACbqH,QAAO/K,GAAKA,IACf,OAAOd,KAAKkgB,IAAI8H,cAAc,CAC5BlgB,KAAM,cACNsa,MAAOlL,EAAKumB,WAAa,YACtBvmB,IACFiF,OAAOrV,EACZ,CAOA,QAAA42B,GACE,OAAK19B,KAAKsc,QACH,IACFtc,KAAKqY,QAFgB,CAAC,CAI7B,CAYA,KAAAslB,GAEE,IAAK39B,KAAKsc,QAAS,OAAO,KAC1B,IAAIzC,EAAI,IAaR,OAZmB,IAAf7Z,KAAK6iB,QAAahJ,GAAK7Z,KAAK6iB,MAAQ,KACpB,IAAhB7iB,KAAK+iB,QAAkC,IAAlB/iB,KAAK8iB,WAAgBjJ,GAAK7Z,KAAK+iB,OAAyB,EAAhB/iB,KAAK8iB,SAAe,KAClE,IAAf9iB,KAAKgjB,QAAanJ,GAAK7Z,KAAKgjB,MAAQ,KACtB,IAAdhjB,KAAKijB,OAAYpJ,GAAK7Z,KAAKijB,KAAO,KACnB,IAAfjjB,KAAKkjB,OAAgC,IAAjBljB,KAAK8hB,SAAkC,IAAjB9hB,KAAKmjB,SAAuC,IAAtBnjB,KAAKy3B,eAAoB5d,GAAK,KAC/E,IAAf7Z,KAAKkjB,QAAarJ,GAAK7Z,KAAKkjB,MAAQ,KACnB,IAAjBljB,KAAK8hB,UAAejI,GAAK7Z,KAAK8hB,QAAU,KACvB,IAAjB9hB,KAAKmjB,SAAuC,IAAtBnjB,KAAKy3B,eAG7B5d,GAAKwH,GAAQrhB,KAAKmjB,QAAUnjB,KAAKy3B,aAAe,IAAM,GAAK,KACnD,MAAN5d,IAAWA,GAAK,OACbA,CACT,CAkBA,SAAA+jB,CAAU1mB,EAAO,CAAC,GAChB,IAAKlX,KAAKsc,QAAS,OAAO,KAC1B,MAAMuhB,EAAS79B,KAAK89B,WACpB,GAAID,EAAS,GAAKA,GAAU,MAAU,OAAO,KAC7C3mB,EAAO,CACL6mB,sBAAsB,EACtBC,iBAAiB,EACjBC,eAAe,EACf9hB,OAAQ,cACLjF,EACHgnB,eAAe,GAKjB,OAHiBjX,GAAS0V,WAAWkB,EAAQ,CAC3CngB,KAAM,QAEQkgB,UAAU1mB,EAC5B,CAMA,MAAAinB,GACE,OAAOn+B,KAAK29B,OACd,CAMA,QAAA58B,GACE,OAAOf,KAAK29B,OACd,CAMA,CAAC5+B,OAAOq/B,IAAI,iCACV,OAAIp+B,KAAKsc,QACA,sBAAsBqD,KAAKC,UAAU5f,KAAKqY,YAE1C,+BAA+BrY,KAAKq+B,iBAE/C,CAMA,QAAAP,GACE,OAAK99B,KAAKsc,QACHuf,GAAiB77B,KAAK27B,OAAQ37B,KAAKqY,QADhB0F,GAE5B,CAMA,OAAAugB,GACE,OAAOt+B,KAAK89B,UACd,CAOA,IAAAjc,CAAK0c,GACH,IAAKv+B,KAAKsc,QAAS,OAAOtc,KAC1B,MAAM01B,EAAMkG,GAASiB,iBAAiB0B,GACpCp3B,EAAS,CAAC,EACZ,IAAK,MAAMsF,KAAK2uB,IACVt7B,GAAe41B,EAAIrd,OAAQ5L,IAAM3M,GAAeE,KAAKqY,OAAQ5L,MAC/DtF,EAAOsF,GAAKipB,EAAI9iB,IAAInG,GAAKzM,KAAK4S,IAAInG,IAGtC,OAAO8uB,GAAQv7B,KAAM,CACnBqY,OAAQlR,IACP,EACL,CAOA,KAAAq3B,CAAMD,GACJ,IAAKv+B,KAAKsc,QAAS,OAAOtc,KAC1B,MAAM01B,EAAMkG,GAASiB,iBAAiB0B,GACtC,OAAOv+B,KAAK6hB,KAAK6T,EAAI+I,SACvB,CASA,QAAAC,CAASC,GACP,IAAK3+B,KAAKsc,QAAS,OAAOtc,KAC1B,MAAMmH,EAAS,CAAC,EAChB,IAAK,MAAMsF,KAAKjO,OAAOgU,KAAKxS,KAAKqY,QAC/BlR,EAAOsF,GAAKykB,GAASyN,EAAG3+B,KAAKqY,OAAO5L,GAAIA,IAE1C,OAAO8uB,GAAQv7B,KAAM,CACnBqY,OAAQlR,IACP,EACL,CAUA,GAAAyL,CAAI8G,GACF,OAAO1Z,KAAK47B,GAASgB,cAAcljB,GACrC,CASA,GAAAklB,CAAIvmB,GACF,IAAKrY,KAAKsc,QAAS,OAAOtc,KAK1B,OAAOu7B,GAAQv7B,KAAM,CACnBqY,OALY,IACTrY,KAAKqY,UACL+Y,GAAgB/Y,EAAQujB,GAASgB,iBAKxC,CAOA,WAAAiC,EAAY,OACV/hB,EAAM,gBACNqH,EAAe,mBACfuX,EAAkB,OAClBC,GACE,CAAC,GAUH,OAAOJ,GAAQv7B,KALF,CACXkgB,IALUlgB,KAAKkgB,IAAIuG,MAAM,CACzB3J,SACAqH,oBAIAwX,SACAD,sBAGJ,CAUA,EAAAoD,CAAGplB,GACD,OAAO1Z,KAAKsc,QAAUtc,KAAKg2B,QAAQtc,GAAM9G,IAAI8G,GAAQqE,GACvD,CAiBA,SAAAghB,GACE,IAAK/+B,KAAKsc,QAAS,OAAOtc,KAC1B,MAAM87B,EAAO97B,KAAK09B,WAElB,OADAzB,GAAgBj8B,KAAK27B,OAAQG,GACtBP,GAAQv7B,KAAM,CACnBqY,OAAQyjB,IACP,EACL,CAOA,OAAAkD,GACE,IAAKh/B,KAAKsc,QAAS,OAAOtc,KAE1B,OAAOu7B,GAAQv7B,KAAM,CACnBqY,OAvkBN,SAAsByjB,GACpB,MAAMmD,EAAU,CAAC,EACjB,IAAK,MAAOtgC,EAAK4C,KAAU/C,OAAO0gC,QAAQpD,GAC1B,IAAVv6B,IACF09B,EAAQtgC,GAAO4C,GAGnB,OAAO09B,CACT,CA6jBiBE,CAAan/B,KAAK++B,YAAYK,aAAa1B,cAGrD,EACL,CAOA,OAAA1H,IAAWpT,GACT,IAAK5iB,KAAKsc,QAAS,OAAOtc,KAC1B,GAAqB,IAAjB4iB,EAAMzkB,OACR,OAAO6B,KAET4iB,EAAQA,EAAM9Z,KAAIyoB,GAAKqK,GAASgB,cAAcrL,KAC9C,MAAM8N,EAAQ,CAAC,EACbC,EAAc,CAAC,EACfxD,EAAO97B,KAAK09B,WACd,IAAI6B,EACJ,IAAK,MAAM9yB,KAAK2uB,GACd,GAAIxY,EAAM1d,QAAQuH,IAAM,EAAG,CACzB8yB,EAAW9yB,EACX,IAAI+yB,EAAM,EAGV,IAAK,MAAMC,KAAMH,EACfE,GAAOx/B,KAAK27B,OAAO8D,GAAIhzB,GAAK6yB,EAAYG,GACxCH,EAAYG,GAAM,EAIhBlW,GAASuS,EAAKrvB,MAChB+yB,GAAO1D,EAAKrvB,IAKd,MAAMvO,EAAIkN,KAAK+kB,MAAMqP,GACrBH,EAAM5yB,GAAKvO,EACXohC,EAAY7yB,IAAY,IAAN+yB,EAAiB,IAAJthC,GAAY,GAG7C,MAAWqrB,GAASuS,EAAKrvB,MACvB6yB,EAAY7yB,GAAKqvB,EAAKrvB,IAM1B,IAAK,MAAM9N,KAAO2gC,EACS,IAArBA,EAAY3gC,KACd0gC,EAAME,IAAa5gC,IAAQ4gC,EAAWD,EAAY3gC,GAAO2gC,EAAY3gC,GAAOqB,KAAK27B,OAAO4D,GAAU5gC,IAItG,OADAs9B,GAAgBj8B,KAAK27B,OAAQ0D,GACtB9D,GAAQv7B,KAAM,CACnBqY,OAAQgnB,IACP,EACL,CAOA,UAAAD,GACE,OAAKp/B,KAAKsc,QACHtc,KAAKg2B,QAAQ,QAAS,SAAU,QAAS,OAAQ,QAAS,UAAW,UAAW,gBAD7Dh2B,IAE5B,CAOA,MAAAy+B,GACE,IAAKz+B,KAAKsc,QAAS,OAAOtc,KAC1B,MAAM0/B,EAAU,CAAC,EACjB,IAAK,MAAMjzB,KAAKjO,OAAOgU,KAAKxS,KAAKqY,QAC/BqnB,EAAQjzB,GAAwB,IAAnBzM,KAAKqY,OAAO5L,GAAW,GAAKzM,KAAKqY,OAAO5L,GAEvD,OAAO8uB,GAAQv7B,KAAM,CACnBqY,OAAQqnB,IACP,EACL,CAMA,SAAI7c,GACF,OAAO7iB,KAAKsc,QAAUtc,KAAKqY,OAAOwK,OAAS,EAAI9E,GACjD,CAMA,YAAI+E,GACF,OAAO9iB,KAAKsc,QAAUtc,KAAKqY,OAAOyK,UAAY,EAAI/E,GACpD,CAMA,UAAIgF,GACF,OAAO/iB,KAAKsc,QAAUtc,KAAKqY,OAAO0K,QAAU,EAAIhF,GAClD,CAMA,SAAIiF,GACF,OAAOhjB,KAAKsc,QAAUtc,KAAKqY,OAAO2K,OAAS,EAAIjF,GACjD,CAMA,QAAIkF,GACF,OAAOjjB,KAAKsc,QAAUtc,KAAKqY,OAAO4K,MAAQ,EAAIlF,GAChD,CAMA,SAAImF,GACF,OAAOljB,KAAKsc,QAAUtc,KAAKqY,OAAO6K,OAAS,EAAInF,GACjD,CAMA,WAAI+D,GACF,OAAO9hB,KAAKsc,QAAUtc,KAAKqY,OAAOyJ,SAAW,EAAI/D,GACnD,CAMA,WAAIoF,GACF,OAAOnjB,KAAKsc,QAAUtc,KAAKqY,OAAO8K,SAAW,EAAIpF,GACnD,CAMA,gBAAI0Z,GACF,OAAOz3B,KAAKsc,QAAUtc,KAAKqY,OAAOof,cAAgB,EAAI1Z,GACxD,CAOA,WAAIzB,GACF,OAAwB,OAAjBtc,KAAKy8B,OACd,CAMA,iBAAI4B,GACF,OAAOr+B,KAAKy8B,QAAUz8B,KAAKy8B,QAAQtjB,OAAS,IAC9C,CAMA,sBAAIwmB,GACF,OAAO3/B,KAAKy8B,QAAUz8B,KAAKy8B,QAAQ/Q,YAAc,IACnD,CAQA,MAAAtP,CAAOwM,GACL,IAAK5oB,KAAKsc,UAAYsM,EAAMtM,QAC1B,OAAO,EAET,IAAKtc,KAAKkgB,IAAI9D,OAAOwM,EAAM1I,KACzB,OAAO,EAOT,IAAK,MAAMqR,KAAK6J,GACd,GANUwE,EAMF5/B,KAAKqY,OAAOkZ,GANNsO,EAMUjX,EAAMvQ,OAAOkZ,UAJ1BtyB,IAAP2gC,GAA2B,IAAPA,OAAwB3gC,IAAP4gC,GAA2B,IAAPA,EACtDD,IAAOC,GAIZ,OAAO,EAPX,IAAYD,EAAIC,EAUhB,OAAO,CACT,EAGF,MAAMC,GAAY,mBA2BlB,MAAMC,GAIJ,WAAA9+B,CAAYs7B,GAIVv8B,KAAK6Z,EAAI0iB,EAAO5xB,MAIhB3K,KAAKiF,EAAIs3B,EAAO7H,IAIhB10B,KAAKy8B,QAAUF,EAAOE,SAAW,KAIjCz8B,KAAKggC,iBAAkB,CACzB,CAQA,cAAOvD,CAAQtjB,EAAQuS,EAAc,MACnC,IAAKvS,EACH,MAAM,IAAIQ,EAAqB,oDAEjC,MAAM8iB,EAAUtjB,aAAkBsS,GAAUtS,EAAS,IAAIsS,GAAQtS,EAAQuS,GACzE,GAAIlH,GAAS4G,eACX,MAAM,IAAI9R,EAAqBmjB,GAE/B,OAAO,IAAIsD,GAAS,CAClBtD,WAGN,CAQA,oBAAOwD,CAAct1B,EAAO+pB,GAC1B,MAAMwL,EAAaC,GAAiBx1B,GAClCy1B,EAAWD,GAAiBzL,GACxB2L,EA5EV,SAA0B11B,EAAO+pB,GAC/B,OAAK/pB,GAAUA,EAAM2R,QAEToY,GAAQA,EAAIpY,QAEboY,EAAM/pB,EACRo1B,GAAStD,QAAQ,mBAAoB,qEAAqE9xB,EAAMgzB,mBAAmBjJ,EAAIiJ,WAEvI,KAJAoC,GAAStD,QAAQ,0BAFjBsD,GAAStD,QAAQ,2BAQ5B,CAkE0B6D,CAAiBJ,EAAYE,GACnD,OAAqB,MAAjBC,EACK,IAAIN,GAAS,CAClBp1B,MAAOu1B,EACPxL,IAAK0L,IAGAC,CAEX,CAQA,YAAOE,CAAM51B,EAAO4zB,GAClB,MAAM7I,EAAMkG,GAASiB,iBAAiB0B,GACpChd,EAAK4e,GAAiBx1B,GACxB,OAAOo1B,GAASE,cAAc1e,EAAIA,EAAGM,KAAK6T,GAC5C,CAQA,aAAO8K,CAAO9L,EAAK6J,GACjB,MAAM7I,EAAMkG,GAASiB,iBAAiB0B,GACpChd,EAAK4e,GAAiBzL,GACxB,OAAOqL,GAASE,cAAc1e,EAAGid,MAAM9I,GAAMnU,EAC/C,CAUA,cAAOyb,CAAQt1B,EAAMwP,GACnB,MAAO2C,EAAG5U,IAAMyC,GAAQ,IAAIpB,MAAM,IAAK,GACvC,GAAIuT,GAAK5U,EAAG,CACV,IAAI0F,EAAO81B,EAOP/L,EAAKgM,EANT,IACE/1B,EAAQsc,GAAS+V,QAAQnjB,EAAG3C,GAC5BupB,EAAe91B,EAAM2R,OACvB,CAAE,MAAOrX,GACPw7B,GAAe,CACjB,CAEA,IACE/L,EAAMzN,GAAS+V,QAAQ/3B,EAAGiS,GAC1BwpB,EAAahM,EAAIpY,OACnB,CAAE,MAAOrX,GACPy7B,GAAa,CACf,CACA,GAAID,GAAgBC,EAClB,OAAOX,GAASE,cAAct1B,EAAO+pB,GAEvC,GAAI+L,EAAc,CAChB,MAAM/K,EAAMkG,GAASoB,QAAQ/3B,EAAGiS,GAChC,GAAIwe,EAAIpZ,QACN,OAAOyjB,GAASQ,MAAM51B,EAAO+qB,EAEjC,MAAO,GAAIgL,EAAY,CACrB,MAAMhL,EAAMkG,GAASoB,QAAQnjB,EAAG3C,GAChC,GAAIwe,EAAIpZ,QACN,OAAOyjB,GAASS,OAAO9L,EAAKgB,EAEhC,CACF,CACA,OAAOqK,GAAStD,QAAQ,aAAc,cAAc/0B,iCACtD,CAOA,iBAAOi5B,CAAWpgC,GAChB,OAAOA,GAAKA,EAAEy/B,kBAAmB,CACnC,CAMA,SAAIr1B,GACF,OAAO3K,KAAKsc,QAAUtc,KAAK6Z,EAAI,IACjC,CAMA,OAAI6a,GACF,OAAO10B,KAAKsc,QAAUtc,KAAKiF,EAAI,IACjC,CAMA,WAAIqX,GACF,OAA8B,OAAvBtc,KAAKq+B,aACd,CAMA,iBAAIA,GACF,OAAOr+B,KAAKy8B,QAAUz8B,KAAKy8B,QAAQtjB,OAAS,IAC9C,CAMA,sBAAIwmB,GACF,OAAO3/B,KAAKy8B,QAAUz8B,KAAKy8B,QAAQ/Q,YAAc,IACnD,CAOA,MAAAvtB,CAAOub,EAAO,gBACZ,OAAO1Z,KAAKsc,QAAUtc,KAAK4gC,WAAelnB,GAAO9G,IAAI8G,GAAQqE,GAC/D,CAWA,KAAAhY,CAAM2T,EAAO,eAAgBxC,GAC3B,IAAKlX,KAAKsc,QAAS,OAAOyB,IAC1B,MAAMpT,EAAQ3K,KAAK2K,MAAMk2B,QAAQnnB,EAAMxC,GACvC,IAAIwd,EASJ,OAPEA,EADU,MAARxd,GAAgBA,EAAK4pB,eACjB9gC,KAAK00B,IAAImK,YAAY,CACzB/hB,OAAQnS,EAAMmS,SAGV9c,KAAK00B,IAEbA,EAAMA,EAAImM,QAAQnnB,EAAMxC,GACjB9L,KAAKuV,MAAM+T,EAAIqM,KAAKp2B,EAAO+O,GAAM9G,IAAI8G,KAAUgb,EAAI4J,YAAct+B,KAAK00B,IAAI4J,UACnF,CAOA,OAAA0C,CAAQtnB,GACN,QAAO1Z,KAAKsc,UAAUtc,KAAKihC,WAAajhC,KAAKiF,EAAEu5B,MAAM,GAAGwC,QAAQhhC,KAAK6Z,EAAGH,GAC1E,CAMA,OAAAunB,GACE,OAAOjhC,KAAK6Z,EAAEykB,YAAct+B,KAAKiF,EAAEq5B,SACrC,CAOA,OAAA4C,CAAQC,GACN,QAAKnhC,KAAKsc,SACHtc,KAAK6Z,EAAIsnB,CAClB,CAOA,QAAAC,CAASD,GACP,QAAKnhC,KAAKsc,SACHtc,KAAKiF,GAAKk8B,CACnB,CAOA,QAAAE,CAASF,GACP,QAAKnhC,KAAKsc,UACHtc,KAAK6Z,GAAKsnB,GAAYnhC,KAAKiF,EAAIk8B,EACxC,CASA,GAAAvC,EAAI,MACFj0B,EAAK,IACL+pB,GACE,CAAC,GACH,OAAK10B,KAAKsc,QACHyjB,GAASE,cAAct1B,GAAS3K,KAAK6Z,EAAG6a,GAAO10B,KAAKiF,GADjCjF,IAE5B,CAOA,OAAAshC,IAAWC,GACT,IAAKvhC,KAAKsc,QAAS,MAAO,GAC1B,MAAMklB,EAASD,EAAUz4B,IAAIq3B,IAAkBt0B,QAAOkgB,GAAK/rB,KAAKqhC,SAAStV,KAAI0V,MAAK,CAAC/P,EAAGzkB,IAAMykB,EAAEoM,WAAa7wB,EAAE6wB,aAC3G4D,EAAU,GACZ,IAAI,EACA7nB,GACE7Z,KACJ9B,EAAI,EACN,KAAO2b,EAAI7Z,KAAKiF,GAAG,CACjB,MAAM08B,EAAQH,EAAOtjC,IAAM8B,KAAKiF,EAC9BtE,GAAQghC,GAAS3hC,KAAKiF,EAAIjF,KAAKiF,EAAI08B,EACrCD,EAAQ/6B,KAAKo5B,GAASE,cAAcpmB,EAAGlZ,IACvCkZ,EAAIlZ,EACJzC,GAAK,CACP,CACA,OAAOwjC,CACT,CAQA,OAAAE,CAAQrD,GACN,MAAM7I,EAAMkG,GAASiB,iBAAiB0B,GACtC,IAAKv+B,KAAKsc,UAAYoZ,EAAIpZ,SAAsC,IAA3BoZ,EAAIoJ,GAAG,gBAC1C,MAAO,GAET,IAIEn+B,GAJE,EACAkZ,GACE7Z,KACJ6hC,EAAM,EAER,MAAMH,EAAU,GAChB,KAAO7nB,EAAI7Z,KAAKiF,GAAG,CACjB,MAAM08B,EAAQ3hC,KAAK2K,MAAMkX,KAAK6T,EAAIgJ,UAASpO,GAAKA,EAAIuR,KACpDlhC,GAAQghC,GAAS3hC,KAAKiF,EAAIjF,KAAKiF,EAAI08B,EACnCD,EAAQ/6B,KAAKo5B,GAASE,cAAcpmB,EAAGlZ,IACvCkZ,EAAIlZ,EACJkhC,GAAO,CACT,CACA,OAAOH,CACT,CAOA,aAAAI,CAAcC,GACZ,OAAK/hC,KAAKsc,QACHtc,KAAK4hC,QAAQ5hC,KAAK7B,SAAW4jC,GAAe/gC,MAAM,EAAG+gC,GADlC,EAE5B,CAOA,QAAAC,CAASpZ,GACP,OAAO5oB,KAAKiF,EAAI2jB,EAAM/O,GAAK7Z,KAAK6Z,EAAI+O,EAAM3jB,CAC5C,CAOA,UAAAg9B,CAAWrZ,GACT,QAAK5oB,KAAKsc,UACFtc,KAAKiF,IAAO2jB,EAAM/O,CAC5B,CAOA,QAAAqoB,CAAStZ,GACP,QAAK5oB,KAAKsc,UACFsM,EAAM3jB,IAAOjF,KAAK6Z,CAC5B,CAOA,OAAAsoB,CAAQvZ,GACN,QAAK5oB,KAAKsc,UACHtc,KAAK6Z,GAAK+O,EAAM/O,GAAK7Z,KAAKiF,GAAK2jB,EAAM3jB,EAC9C,CAOA,MAAAmX,CAAOwM,GACL,SAAK5oB,KAAKsc,UAAYsM,EAAMtM,WAGrBtc,KAAK6Z,EAAEuC,OAAOwM,EAAM/O,IAAM7Z,KAAKiF,EAAEmX,OAAOwM,EAAM3jB,GACvD,CASA,YAAAm9B,CAAaxZ,GACX,IAAK5oB,KAAKsc,QAAS,OAAOtc,KAC1B,MAAM6Z,EAAI7Z,KAAK6Z,EAAI+O,EAAM/O,EAAI7Z,KAAK6Z,EAAI+O,EAAM/O,EAC1C5U,EAAIjF,KAAKiF,EAAI2jB,EAAM3jB,EAAIjF,KAAKiF,EAAI2jB,EAAM3jB,EACxC,OAAI4U,GAAK5U,EACA,KAEA86B,GAASE,cAAcpmB,EAAG5U,EAErC,CAQA,KAAAo9B,CAAMzZ,GACJ,IAAK5oB,KAAKsc,QAAS,OAAOtc,KAC1B,MAAM6Z,EAAI7Z,KAAK6Z,EAAI+O,EAAM/O,EAAI7Z,KAAK6Z,EAAI+O,EAAM/O,EAC1C5U,EAAIjF,KAAKiF,EAAI2jB,EAAM3jB,EAAIjF,KAAKiF,EAAI2jB,EAAM3jB,EACxC,OAAO86B,GAASE,cAAcpmB,EAAG5U,EACnC,CAQA,YAAOq9B,CAAMC,GACX,MAAO1M,EAAO2M,GAASD,EAAUd,MAAK,CAAC/P,EAAGzkB,IAAMykB,EAAE7X,EAAI5M,EAAE4M,IAAGoV,QAAO,EAAEwT,EAAO1O,GAAU3nB,IAC9E2nB,EAEMA,EAAQiO,SAAS51B,IAAS2nB,EAAQkO,WAAW71B,GAC/C,CAACq2B,EAAO1O,EAAQsO,MAAMj2B,IAEtB,CAACq2B,EAAMnqB,OAAO,CAACyb,IAAW3nB,GAJ1B,CAACq2B,EAAOr2B,IAMhB,CAAC,GAAI,OAIR,OAHIo2B,GACF3M,EAAMlvB,KAAK67B,GAEN3M,CACT,CAOA,UAAO6M,CAAIH,GACT,IAAI53B,EAAQ,KACVg4B,EAAe,EACjB,MAAMjB,EAAU,GACdkB,EAAOL,EAAUz5B,KAAI5K,GAAK,CAAC,CACzB2kC,KAAM3kC,EAAE2b,EACR/R,KAAM,KACL,CACD+6B,KAAM3kC,EAAE+G,EACR6C,KAAM,QAGR5H,EADYG,MAAMR,UAAUyY,UAAUsqB,GACtBnB,MAAK,CAAC/P,EAAGzkB,IAAMykB,EAAEmR,KAAO51B,EAAE41B,OAC5C,IAAK,MAAM3kC,KAAKgC,EACdyiC,GAA2B,MAAXzkC,EAAE4J,KAAe,GAAK,EACjB,IAAjB66B,EACFh4B,EAAQzM,EAAE2kC,MAENl4B,IAAUA,IAAWzM,EAAE2kC,MACzBnB,EAAQ/6B,KAAKo5B,GAASE,cAAct1B,EAAOzM,EAAE2kC,OAE/Cl4B,EAAQ,MAGZ,OAAOo1B,GAASuC,MAAMZ,EACxB,CAOA,UAAAoB,IAAcP,GACZ,OAAOxC,GAAS2C,IAAI,CAAC1iC,MAAMsY,OAAOiqB,IAAYz5B,KAAI5K,GAAK8B,KAAKoiC,aAAalkC,KAAI2N,QAAO3N,GAAKA,IAAMA,EAAE+iC,WACnG,CAMA,QAAAlgC,GACE,OAAKf,KAAKsc,QACH,IAAItc,KAAK6Z,EAAE8jB,aAAa39B,KAAKiF,EAAE04B,WADZmC,EAE5B,CAMA,CAAC/gC,OAAOq/B,IAAI,iCACV,OAAIp+B,KAAKsc,QACA,qBAAqBtc,KAAK6Z,EAAE8jB,iBAAiB39B,KAAKiF,EAAE04B,YAEpD,+BAA+B39B,KAAKq+B,iBAE/C,CAoBA,cAAA0E,CAAe7O,EAAapa,EAAY5C,EAAO,CAAC,GAC9C,OAAOlX,KAAKsc,QAAUsX,GAAU/iB,OAAO7Q,KAAK6Z,EAAEqG,IAAIuG,MAAMvP,GAAOgd,GAAYK,eAAev0B,MAAQ8/B,EACpG,CAQA,KAAAnC,CAAMzmB,GACJ,OAAKlX,KAAKsc,QACH,GAAGtc,KAAK6Z,EAAE8jB,MAAMzmB,MAASlX,KAAKiF,EAAE04B,MAAMzmB,KADnB4oB,EAE5B,CAQA,SAAAkD,GACE,OAAKhjC,KAAKsc,QACH,GAAGtc,KAAK6Z,EAAEmpB,eAAehjC,KAAKiF,EAAE+9B,cADblD,EAE5B,CASA,SAAAlC,CAAU1mB,GACR,OAAKlX,KAAKsc,QACH,GAAGtc,KAAK6Z,EAAE+jB,UAAU1mB,MAASlX,KAAKiF,EAAE24B,UAAU1mB,KAD3B4oB,EAE5B,CAaA,QAAAzC,CAAS4F,GAAY,UACnBC,EAAY,OACV,CAAC,GACH,OAAKljC,KAAKsc,QACH,GAAGtc,KAAK6Z,EAAEwjB,SAAS4F,KAAcC,IAAYljC,KAAKiF,EAAEo4B,SAAS4F,KAD1CnD,EAE5B,CAcA,UAAAc,CAAWlnB,EAAMxC,GACf,OAAKlX,KAAKsc,QAGHtc,KAAKiF,EAAE87B,KAAK/gC,KAAK6Z,EAAGH,EAAMxC,GAFxB0kB,GAASa,QAAQz8B,KAAKq+B,cAGjC,CASA,YAAA8E,CAAaC,GACX,OAAOrD,GAASE,cAAcmD,EAAMpjC,KAAK6Z,GAAIupB,EAAMpjC,KAAKiF,GAC1D,EAMF,MAAMo+B,GAMJ,aAAOC,CAAO5lB,EAAO8G,GAAS6E,aAC5B,MAAMka,EAAQtc,GAASoE,MAAMzJ,QAAQlE,GAAMkhB,IAAI,CAC7C5kB,MAAO,KAET,OAAQ0D,EAAK3B,aAAewnB,EAAMr9B,SAAWq9B,EAAM3E,IAAI,CACrD5kB,MAAO,IACN9T,MACL,CAOA,sBAAOs9B,CAAgB9lB,GACrB,OAAOJ,EAASG,YAAYC,EAC9B,CAgBA,oBAAO0L,CAAcxqB,GACnB,OAAOwqB,GAAcxqB,EAAO4lB,GAAS6E,YACvC,CASA,qBAAOZ,EAAe,OACpB3L,EAAS,KAAI,OACb2mB,EAAS,MACP,CAAC,GACH,OAAQA,GAAUxf,GAAOpT,OAAOiM,IAAS2L,gBAC3C,CAUA,gCAAOib,EAA0B,OAC/B5mB,EAAS,KAAI,OACb2mB,EAAS,MACP,CAAC,GACH,OAAQA,GAAUxf,GAAOpT,OAAOiM,IAAS4L,uBAC3C,CASA,yBAAOib,EAAmB,OACxB7mB,EAAS,KAAI,OACb2mB,EAAS,MACP,CAAC,GAEH,OAAQA,GAAUxf,GAAOpT,OAAOiM,IAAS6L,iBAAiB3nB,OAC5D,CAmBA,aAAO+hB,CAAO5kB,EAAS,QAAQ,OAC7B2e,EAAS,KAAI,gBACbqH,EAAkB,KAAI,OACtBsf,EAAS,KAAI,eACbrf,EAAiB,WACf,CAAC,GACH,OAAQqf,GAAUxf,GAAOpT,OAAOiM,EAAQqH,EAAiBC,IAAiBrB,OAAO5kB,EACnF,CAeA,mBAAOylC,CAAazlC,EAAS,QAAQ,OACnC2e,EAAS,KAAI,gBACbqH,EAAkB,KAAI,OACtBsf,EAAS,KAAI,eACbrf,EAAiB,WACf,CAAC,GACH,OAAQqf,GAAUxf,GAAOpT,OAAOiM,EAAQqH,EAAiBC,IAAiBrB,OAAO5kB,GAAQ,EAC3F,CAgBA,eAAOkpB,CAASlpB,EAAS,QAAQ,OAC/B2e,EAAS,KAAI,gBACbqH,EAAkB,KAAI,OACtBsf,EAAS,MACP,CAAC,GACH,OAAQA,GAAUxf,GAAOpT,OAAOiM,EAAQqH,EAAiB,OAAOkD,SAASlpB,EAC3E,CAcA,qBAAO0lC,CAAe1lC,EAAS,QAAQ,OACrC2e,EAAS,KAAI,gBACbqH,EAAkB,KAAI,OACtBsf,EAAS,MACP,CAAC,GACH,OAAQA,GAAUxf,GAAOpT,OAAOiM,EAAQqH,EAAiB,OAAOkD,SAASlpB,GAAQ,EACnF,CAUA,gBAAOopB,EAAU,OACfzK,EAAS,MACP,CAAC,GACH,OAAOmH,GAAOpT,OAAOiM,GAAQyK,WAC/B,CAYA,WAAOC,CAAKrpB,EAAS,SAAS,OAC5B2e,EAAS,MACP,CAAC,GACH,OAAOmH,GAAOpT,OAAOiM,EAAQ,KAAM,WAAW0K,KAAKrpB,EACrD,CAWA,eAAO2lC,GACL,MAAO,CACLC,SAAU1hB,KACV2hB,WAAY5b,KAEhB,EAGF,SAAS6b,GAAQC,EAASC,GACxB,MAAMC,EAAc7iB,GAAMA,EAAG8iB,MAAM,EAAG,CAClCC,eAAe,IACdzD,QAAQ,OAAOvC,UAClBtX,EAAKod,EAAYD,GAASC,EAAYF,GACxC,OAAO94B,KAAKuV,MAAMib,GAASe,WAAW3V,GAAI8X,GAAG,QAC/C,CA6CA,SAASiC,GAAMmD,EAASC,EAAOvhB,EAAO1L,GACpC,IAAKuf,EAAQiL,EAAS6C,EAAWC,GA7CnC,SAAwB/N,EAAQ0N,EAAOvhB,GACrC,MAAM6hB,EAAU,CAAC,CAAC,QAAS,CAAC/S,EAAGzkB,IAAMA,EAAE8M,KAAO2X,EAAE3X,MAAO,CAAC,WAAY,CAAC2X,EAAGzkB,IAAMA,EAAEuoB,QAAU9D,EAAE8D,QAA8B,GAAnBvoB,EAAE8M,KAAO2X,EAAE3X,OAAY,CAAC,SAAU,CAAC2X,EAAGzkB,IAAMA,EAAE+M,MAAQ0X,EAAE1X,MAA4B,IAAnB/M,EAAE8M,KAAO2X,EAAE3X,OAAa,CAAC,QAAS,CAAC2X,EAAGzkB,KAC5M,MAAMgW,EAAOghB,GAAQvS,EAAGzkB,GACxB,OAAQgW,EAAOA,EAAO,GAAK,CAAC,GAC1B,CAAC,OAAQghB,KACPvC,EAAU,CAAC,EACXwC,EAAUzN,EAChB,IAAI+N,EAAaD,EAUjB,IAAK,MAAO7qB,EAAMgrB,KAAWD,EACvB7hB,EAAM1d,QAAQwU,IAAS,IACzB8qB,EAAc9qB,EACdgoB,EAAQhoB,GAAQgrB,EAAOjO,EAAQ0N,GAC/BI,EAAYL,EAAQriB,KAAK6f,GACrB6C,EAAYJ,GAEdzC,EAAQhoB,MACR+c,EAASyN,EAAQriB,KAAK6f,IAKTyC,IAEXI,EAAY9N,EAEZiL,EAAQhoB,KACR+c,EAASyN,EAAQriB,KAAK6f,KAGxBjL,EAAS8N,GAIf,MAAO,CAAC9N,EAAQiL,EAAS6C,EAAWC,EACtC,CAEkDG,CAAeT,EAASC,EAAOvhB,GAC/E,MAAMgiB,EAAkBT,EAAQ1N,EAC1BoO,EAAkBjiB,EAAM/W,QAAO0lB,GAAK,CAAC,QAAS,UAAW,UAAW,gBAAgBrsB,QAAQqsB,IAAM,IACzE,IAA3BsT,EAAgB1mC,SACdomC,EAAYJ,IACdI,EAAY9N,EAAO5U,KAAK,CACtB,CAAC2iB,GAAc,KAGfD,IAAc9N,IAChBiL,EAAQ8C,IAAgB9C,EAAQ8C,IAAgB,GAAKI,GAAmBL,EAAY9N,KAGxF,MAAM8H,EAAW3C,GAAS1W,WAAWwc,EAASxqB,GAC9C,OAAI2tB,EAAgB1mC,OAAS,EACpBy9B,GAASe,WAAWiI,EAAiB1tB,GAAM8e,WAAW6O,GAAiBhjB,KAAK0c,GAE5EA,CAEX,CAGA,SAASuG,GAAQzgC,EAAO0gC,EAAO7mC,GAAKA,GAClC,MAAO,CACLmG,QACA2gC,MAAO,EAAEnrB,KAAOkrB,EAtxGpB,SAAqB5+B,GACnB,IAAI5E,EAAQ0C,SAASkC,EAAK,IAC1B,GAAI2X,MAAMvc,GAAQ,CAChBA,EAAQ,GACR,IAAK,IAAIrD,EAAI,EAAGA,EAAIiI,EAAIhI,OAAQD,IAAK,CACnC,MAAMuK,EAAOtC,EAAI0J,WAAW3R,GAC5B,IAAiD,IAA7CiI,EAAIjI,GAAGgN,OAAOse,GAAiBQ,SACjCzoB,GAASwpB,GAAa7lB,QAAQiB,EAAIjI,SAElC,IAAK,MAAMS,KAAOmsB,GAAuB,CACvC,MAAOzf,EAAK45B,GAAOna,GAAsBnsB,GACrC8J,GAAQ4C,GAAO5C,GAAQw8B,IACzB1jC,GAASkH,EAAO4C,EAEpB,CAEJ,CACA,OAAOpH,SAAS1C,EAAO,GACzB,CACE,OAAOA,CAEX,CAiwGyB2jC,CAAYrrB,IAErC,CACA,MACMsrB,GAAc,KADP9lC,OAAO2E,aAAa,QAE3BohC,GAAoB,IAAIniC,OAAOkiC,GAAa,KAClD,SAASE,GAAaxrB,GAGpB,OAAOA,EAAEnW,QAAQ,MAAO,QAAQA,QAAQ0hC,GAAmBD,GAC7D,CACA,SAASG,GAAqBzrB,GAC5B,OAAOA,EAAEnW,QAAQ,MAAO,IACvBA,QAAQ0hC,GAAmB,KAC3BthC,aACH,CACA,SAASyhC,GAAMC,EAAS5zB,GACtB,OAAgB,OAAZ4zB,EACK,KAEA,CACLnhC,MAAOpB,OAAOuiC,EAAQ18B,IAAIu8B,IAAcp8B,KAAK,MAC7C+7B,MAAO,EAAEnrB,KAAO2rB,EAAQ9Y,WAAUxuB,GAAKonC,GAAqBzrB,KAAOyrB,GAAqBpnC,KAAM0T,EAGpG,CACA,SAAS1L,GAAO7B,EAAOohC,GACrB,MAAO,CACLphC,QACA2gC,MAAO,EAAE,CAAEU,EAAG7d,KAAOqB,GAAawc,EAAG7d,GACrC4d,SAEJ,CACA,SAASE,GAAOthC,GACd,MAAO,CACLA,QACA2gC,MAAO,EAAEnrB,KAAOA,EAEpB,CA0JA,MAAM+rB,GAA0B,CAC9B7rB,KAAM,CACJ,UAAW,KACX2I,QAAS,SAEX1I,MAAO,CACL0I,QAAS,IACT,UAAW,KACXmjB,MAAO,MACPC,KAAM,QAER7rB,IAAK,CACHyI,QAAS,IACT,UAAW,MAEbtI,QAAS,CACPyrB,MAAO,MACPC,KAAM,QAERC,UAAW,IACXC,UAAW,IACX/nB,OAAQ,CACNyE,QAAS,IACT,UAAW,MAEbujB,OAAQ,CACNvjB,QAAS,IACT,UAAW,MAEbjI,OAAQ,CACNiI,QAAS,IACT,UAAW,MAEb/H,OAAQ,CACN+H,QAAS,IACT,UAAW,MAEb7H,aAAc,CACZirB,KAAM,QACND,MAAO,QA8IX,IAAIK,GAAqB,KAkBzB,SAASC,GAAkBp+B,EAAQ+U,GACjC,OAAOzc,MAAMR,UAAUyY,UAAUvQ,EAAOe,KAAIiC,GAZ9C,SAA+BlD,EAAOiV,GACpC,GAAIjV,EAAM2qB,QACR,OAAO3qB,EAET,MACME,EAASq+B,GADIxS,GAAUnB,uBAAuB5qB,EAAMrD,KACZsY,GAC9C,OAAc,MAAV/U,GAAkBA,EAAO0K,cAASxT,GAC7B4I,EAEFE,CACT,CAEmDs+B,CAAsBt7B,EAAG+R,KAC5E,CAMA,MAAMwpB,GACJ,WAAArlC,CAAY6b,EAAQX,GAMlB,GALAnc,KAAK8c,OAASA,EACd9c,KAAKmc,OAASA,EACdnc,KAAK+H,OAASo+B,GAAkBvS,GAAUC,YAAY1X,GAASW,GAC/D9c,KAAK4iB,MAAQ5iB,KAAK+H,OAAOe,KAAIiC,GArWjC,SAAsBlD,EAAOqY,GAC3B,MAAMqmB,EAAMtb,GAAW/K,GACrBsmB,EAAMvb,GAAW/K,EAAK,OACtBumB,EAAQxb,GAAW/K,EAAK,OACxBwmB,EAAOzb,GAAW/K,EAAK,OACvBymB,EAAM1b,GAAW/K,EAAK,OACtB0mB,EAAW3b,GAAW/K,EAAK,SAC3B2mB,EAAa5b,GAAW/K,EAAK,SAC7B4mB,EAAW7b,GAAW/K,EAAK,SAC3B6mB,EAAY9b,GAAW/K,EAAK,SAC5B8mB,EAAY/b,GAAW/K,EAAK,SAC5B+mB,EAAYhc,GAAW/K,EAAK,SAC5BsS,EAAUznB,IAAK,OACb1G,MAAOpB,QArBQ1B,EAqBWwJ,EAAEvG,IApBzBjD,EAAMmC,QAAQ,8BAA+B,UAqBhDshC,MAAO,EAAEnrB,KAAOA,EAChB2Y,SAAS,GAvBf,IAAqBjxB,CAwBf,EA2HEmY,EA1HM3O,KACR,GAAIlD,EAAM2qB,QACR,OAAOA,EAAQznB,GAEjB,OAAQA,EAAEvG,KAER,IAAK,IACH,OAAO+gC,GAAMrlB,EAAIsH,KAAK,SAAU,GAClC,IAAK,KACH,OAAO+d,GAAMrlB,EAAIsH,KAAK,QAAS,GAEjC,IAAK,IACH,OAAOsd,GAAQgC,GACjB,IAAK,KAwEL,IAAK,KACH,OAAOhC,GAAQkC,EAAWrW,IAvE5B,IAAK,OAoEL,IAAK,OACH,OAAOmU,GAAQ4B,GAnEjB,IAAK,QACH,OAAO5B,GAAQmC,GACjB,IAAK,SACH,OAAOnC,GAAQ6B,GAEjB,IAAK,IAQL,IAAK,IASL,IAAK,IAYL,IAAK,IAIL,IAAK,IAIL,IAAK,IAEL,IAAK,IAIL,IAAK,IAuBL,IAAK,IACH,OAAO7B,GAAQ8B,GAjEjB,IAAK,KAQL,IAAK,KASL,IAAK,KAQL,IAAK,KAIL,IAAK,KAIL,IAAK,KAML,IAAK,KAIL,IAAK,KAuBL,IAAK,KACH,OAAO9B,GAAQ0B,GAjEjB,IAAK,MACH,OAAOjB,GAAMrlB,EAAI6C,OAAO,SAAS,GAAO,GAC1C,IAAK,OACH,OAAOwiB,GAAMrlB,EAAI6C,OAAO,QAAQ,GAAO,GAKzC,IAAK,MACH,OAAOwiB,GAAMrlB,EAAI6C,OAAO,SAAS,GAAQ,GAC3C,IAAK,OACH,OAAOwiB,GAAMrlB,EAAI6C,OAAO,QAAQ,GAAQ,GAO1C,IAAK,IAyBL,IAAK,IACH,OAAO+hB,GAAQ+B,GAxBjB,IAAK,MAyBL,IAAK,MACH,OAAO/B,GAAQ2B,GACjB,IAAK,IACH,OAAOd,GAAOoB,GAChB,IAAK,KACH,OAAOpB,GAAOiB,GAChB,IAAK,MAgBL,IAAK,IACL,IAAK,IACH,OAAO9B,GAAQyB,GAfjB,IAAK,IACH,OAAOhB,GAAMrlB,EAAIqH,YAAa,GAehC,IAAK,MACH,OAAOge,GAAMrlB,EAAImH,SAAS,SAAS,GAAQ,GAC7C,IAAK,OACH,OAAOke,GAAMrlB,EAAImH,SAAS,QAAQ,GAAQ,GAC5C,IAAK,MACH,OAAOke,GAAMrlB,EAAImH,SAAS,SAAS,GAAO,GAC5C,IAAK,OACH,OAAOke,GAAMrlB,EAAImH,SAAS,QAAQ,GAAO,GAE3C,IAAK,IACL,IAAK,KACH,OAAOnhB,GAAO,IAAIjD,OAAO,QAAQ2jC,EAAShnC,eAAe4mC,EAAI5mC,aAAc,GAC7E,IAAK,MACH,OAAOsG,GAAO,IAAIjD,OAAO,QAAQ2jC,EAAShnC,WAAW4mC,EAAI5mC,YAAa,GAGxE,IAAK,IACH,OAAO+lC,GAAO,sBAGhB,IAAK,IACH,OAAOA,GAAO,aAChB,QACE,OAAOnT,EAAQznB,GACnB,EAESm8B,CAAQr/B,IAAU,CAC7Bw2B,cA/LgB,qDAkMlB,OADA3kB,EAAK7R,MAAQA,EACN6R,CACT,CAqNsCytB,CAAap8B,EAAG+R,KAClD9c,KAAKonC,kBAAoBpnC,KAAK4iB,MAAMgF,MAAK7c,GAAKA,EAAEszB,iBAC3Cr+B,KAAKonC,kBAAmB,CAC3B,MAAOC,EAAaC,GA9HjB,CAAC,KAFU1kB,EAgI6B5iB,KAAK4iB,OA/HnC9Z,KAAIyoB,GAAKA,EAAEltB,QAAO4qB,QAAO,CAAClI,EAAGkC,IAAM,GAAGlC,KAAKkC,EAAErpB,WAAW,OACtDgjB,GA+Hf5iB,KAAKqE,MAAQpB,OAAOokC,EAAa,KACjCrnC,KAAKsnC,SAAWA,CAClB,CAnIJ,IAAoB1kB,CAoIlB,CACA,iBAAA2kB,CAAkB3oC,GAChB,GAAKoB,KAAKsc,QAMH,CACL,MAAOkrB,EAAYC,GAzIzB,SAAe7oC,EAAOyF,EAAOijC,GAC3B,MAAMG,EAAU7oC,EAAMqH,MAAM5B,GAC5B,GAAIojC,EAAS,CACX,MAAMnxB,EAAM,CAAC,EACb,IAAIoxB,EAAa,EACjB,IAAK,MAAMxpC,KAAKopC,EACd,GAAIxnC,GAAewnC,EAAUppC,GAAI,CAC/B,MAAMwnC,EAAI4B,EAASppC,GACjBunC,EAASC,EAAED,OAASC,EAAED,OAAS,EAAI,GAChCC,EAAElT,SAAWkT,EAAE79B,QAClByO,EAAIovB,EAAE79B,MAAMrD,IAAI,IAAMkhC,EAAEV,MAAMyC,EAAQzmC,MAAM0mC,EAAYA,EAAajC,KAEvEiC,GAAcjC,CAChB,CAEF,MAAO,CAACgC,EAASnxB,EACnB,CACE,MAAO,CAACmxB,EAAS,CAAC,EAEtB,CAsHoCxhC,CAAMrH,EAAOoB,KAAKqE,MAAOrE,KAAKsnC,WACzDngC,EAAQuW,EAAMiqB,GAAkBF,EAtHzC,SAA6BA,GAkC3B,IACIE,EADAjqB,EAAO,KAkCX,OAhCKa,GAAYkpB,EAAQjmB,KACvB9D,EAAOJ,EAASzM,OAAO42B,EAAQjmB,IAE5BjD,GAAYkpB,EAAQG,KAClBlqB,IACHA,EAAO,IAAIoL,GAAgB2e,EAAQG,IAErCD,EAAiBF,EAAQG,GAEtBrpB,GAAYkpB,EAAQI,KACvBJ,EAAQK,EAAsB,GAAjBL,EAAQI,EAAI,GAAS,GAE/BtpB,GAAYkpB,EAAQ/B,KACnB+B,EAAQ/B,EAAI,IAAoB,IAAd+B,EAAQ/V,EAC5B+V,EAAQ/B,GAAK,GACU,KAAd+B,EAAQ/B,GAA0B,IAAd+B,EAAQ/V,IACrC+V,EAAQ/B,EAAI,IAGE,IAAd+B,EAAQM,GAAWN,EAAQO,IAC7BP,EAAQO,GAAKP,EAAQO,GAElBzpB,GAAYkpB,EAAQlW,KACvBkW,EAAQQ,EAAIpY,GAAY4X,EAAQlW,IAS3B,CAPM/yB,OAAOgU,KAAKi1B,GAASxY,QAAO,CAAChG,EAAGxc,KAC3C,MAAMsa,EA7DQlf,KACd,OAAQA,GACN,IAAK,IACH,MAAO,cACT,IAAK,IACH,MAAO,SACT,IAAK,IACH,MAAO,SACT,IAAK,IACL,IAAK,IACH,MAAO,OACT,IAAK,IACH,MAAO,MACT,IAAK,IACH,MAAO,UACT,IAAK,IACL,IAAK,IACH,MAAO,QACT,IAAK,IACH,MAAO,OACT,IAAK,IACL,IAAK,IACH,MAAO,UACT,IAAK,IACH,MAAO,aACT,IAAK,IACH,MAAO,WACT,IAAK,IACH,MAAO,UACT,QACE,OAAO,KACX,EA8BUqgC,CAAQz7B,GAIlB,OAHIsa,IACFkC,EAAElC,GAAK0gB,EAAQh7B,IAEVwc,CAAC,GACP,CAAC,GACUvL,EAAMiqB,EACtB,CAiDmDQ,CAAoBV,GAAW,CAAC,KAAM,UAAMxoC,GACzF,GAAIa,GAAe2nC,EAAS,MAAQ3nC,GAAe2nC,EAAS,KAC1D,MAAM,IAAIjuB,EAA8B,yDAE1C,MAAO,CACL5a,QACAmJ,OAAQ/H,KAAK+H,OACb1D,MAAOrE,KAAKqE,MACZmjC,aACAC,UACAtgC,SACAuW,OACAiqB,iBAEJ,CArBE,MAAO,CACL/oC,QACAmJ,OAAQ/H,KAAK+H,OACbs2B,cAAer+B,KAAKq+B,cAmB1B,CACA,WAAI/hB,GACF,OAAQtc,KAAKonC,iBACf,CACA,iBAAI/I,GACF,OAAOr+B,KAAKonC,kBAAoBpnC,KAAKonC,kBAAkB/I,cAAgB,IACzE,EAEF,SAASkJ,GAAkBzqB,EAAQle,EAAOud,GAExC,OADe,IAAImqB,GAAYxpB,EAAQX,GACzBorB,kBAAkB3oC,EAClC,CAUA,SAASwnC,GAAmBlS,EAAYpX,GACtC,IAAKoX,EACH,OAAO,KAET,MACMkU,EADYxU,GAAU/iB,OAAOiM,EAAQoX,GACtBvM,aAvFhBue,KACHA,GAAqBjf,GAAS0V,WAAW,gBAEpCuJ,KAqFDlkB,EAAQomB,EAAGjqB,gBACXkqB,EAAeD,EAAGxrB,kBACxB,OAAOoF,EAAMlZ,KAAI8rB,GAvOnB,SAAsB3S,EAAMiS,EAAYmU,GACtC,MAAM,KACJvgC,EAAI,MACJvG,GACE0gB,EACJ,GAAa,YAATna,EAAoB,CACtB,MAAMwgC,EAAU,QAAQlnC,KAAKG,GAC7B,MAAO,CACLixB,SAAU8V,EACV9jC,IAAK8jC,EAAU,IAAM/mC,EAEzB,CACA,MAAM6gB,EAAQ8R,EAAWpsB,GAKzB,IAAIygC,EAAazgC,EACJ,SAATA,IAEAygC,EADuB,MAArBrU,EAAWjW,OACAiW,EAAWjW,OAAS,SAAW,SACX,MAAxBiW,EAAWlZ,UACS,QAAzBkZ,EAAWlZ,WAAgD,QAAzBkZ,EAAWlZ,UAClC,SAEA,SAKFqtB,EAAapqB,OAAS,SAAW,UAGlD,IAAIzZ,EAAMohC,GAAwB2C,GAIlC,GAHmB,iBAAR/jC,IACTA,EAAMA,EAAI4d,IAER5d,EACF,MAAO,CACLguB,SAAS,EACThuB,MAIN,CA2LwBgkC,CAAa5T,EAAGV,EAAYmU,IACpD,CAEA,MAAMI,GAAU,mBACVC,GAAW,OACjB,SAASC,GAAgBjrB,GACvB,OAAO,IAAI+N,GAAQ,mBAAoB,aAAa/N,EAAKxc,yBAC3D,CAMA,SAAS0nC,GAAuBrnB,GAI9B,OAHoB,OAAhBA,EAAG+L,WACL/L,EAAG+L,SAAWR,GAAgBvL,EAAG3a,IAE5B2a,EAAG+L,QACZ,CAKA,SAASub,GAA4BtnB,GAInC,OAHyB,OAArBA,EAAGunB,gBACLvnB,EAAGunB,cAAgBhc,GAAgBvL,EAAG3a,EAAG2a,EAAGrB,IAAIwI,wBAAyBnH,EAAGrB,IAAIuI,mBAE3ElH,EAAGunB,aACZ,CAIA,SAASriB,GAAMsiB,EAAMriB,GACnB,MAAMqN,EAAU,CACd9X,GAAI8sB,EAAK9sB,GACTyB,KAAMqrB,EAAKrrB,KACX9W,EAAGmiC,EAAKniC,EACRrG,EAAGwoC,EAAKxoC,EACR2f,IAAK6oB,EAAK7oB,IACVuc,QAASsM,EAAKtM,SAEhB,OAAO,IAAIxV,GAAS,IACf8M,KACArN,EACHsiB,IAAKjV,GAET,CAIA,SAASkV,GAAUC,EAAS3oC,EAAG4oC,GAE7B,IAAIC,EAAWF,EAAc,GAAJ3oC,EAAS,IAGlC,MAAM8oC,EAAKF,EAAGjjC,OAAOkjC,GAGrB,GAAI7oC,IAAM8oC,EACR,MAAO,CAACD,EAAU7oC,GAIpB6oC,GAAuB,IAAVC,EAAK9oC,GAAU,IAG5B,MAAM+oC,EAAKH,EAAGjjC,OAAOkjC,GACrB,OAAIC,IAAOC,EACF,CAACF,EAAUC,GAIb,CAACH,EAA6B,GAAnB99B,KAAKC,IAAIg+B,EAAIC,GAAW,IAAMl+B,KAAK65B,IAAIoE,EAAIC,GAC/D,CAGA,SAASC,GAAQttB,EAAI/V,GAEnB,MAAM6lB,EAAI,IAAI/O,KADdf,GAAe,GAAT/V,EAAc,KAEpB,MAAO,CACL6T,KAAMgS,EAAEG,iBACRlS,MAAO+R,EAAEyd,cAAgB,EACzBvvB,IAAK8R,EAAE0d,aACPjvB,KAAMuR,EAAE2d,cACRjvB,OAAQsR,EAAE4d,gBACVhvB,OAAQoR,EAAE6d,gBACVtqB,YAAayM,EAAE8d,qBAEnB,CAGA,SAASC,GAAQvlC,EAAK2B,EAAQwX,GAC5B,OAAOurB,GAAU5pB,GAAa9a,GAAM2B,EAAQwX,EAC9C,CAGA,SAASqsB,GAAWhB,EAAMrT,GACxB,MAAMsU,EAAOjB,EAAKxoC,EAChBwZ,EAAOgvB,EAAKniC,EAAEmT,KAAO3O,KAAK+kB,MAAMuF,EAAI7S,OACpC7I,EAAQ+uB,EAAKniC,EAAEoT,MAAQ5O,KAAK+kB,MAAMuF,EAAI3S,QAAqC,EAA3B3X,KAAK+kB,MAAMuF,EAAI5S,UAC/Dlc,EAAI,IACCmiC,EAAKniC,EACRmT,OACAC,QACAC,IAAK7O,KAAKC,IAAI09B,EAAKniC,EAAEqT,IAAKuU,GAAYzU,EAAMC,IAAU5O,KAAK+kB,MAAMuF,EAAIzS,MAAgC,EAAxB7X,KAAK+kB,MAAMuF,EAAI1S,QAE9FinB,EAAcrO,GAAS1W,WAAW,CAChCrC,MAAO6S,EAAI7S,MAAQzX,KAAK+kB,MAAMuF,EAAI7S,OAClCC,SAAU4S,EAAI5S,SAAW1X,KAAK+kB,MAAMuF,EAAI5S,UACxCC,OAAQ2S,EAAI3S,OAAS3X,KAAK+kB,MAAMuF,EAAI3S,QACpCC,MAAO0S,EAAI1S,MAAQ5X,KAAK+kB,MAAMuF,EAAI1S,OAClCC,KAAMyS,EAAIzS,KAAO7X,KAAK+kB,MAAMuF,EAAIzS,MAChCC,MAAOwS,EAAIxS,MACXpB,QAAS4T,EAAI5T,QACbqB,QAASuS,EAAIvS,QACbsU,aAAc/B,EAAI+B,eACjBqH,GAAG,gBACNoK,EAAU7pB,GAAazY,GACzB,IAAKqV,EAAI1b,GAAK0oC,GAAUC,EAASc,EAAMjB,EAAKrrB,MAM5C,OALoB,IAAhBusB,IACFhuB,GAAMguB,EAEN1pC,EAAIwoC,EAAKrrB,KAAKxX,OAAO+V,IAEhB,CACLA,KACA1b,IAEJ,CAIA,SAAS2pC,GAAoBzrB,EAAQ0rB,EAAYjzB,EAAMiF,EAAQzU,EAAMigC,GACnE,MAAM,QACJ/lB,EAAO,KACPlE,GACExG,EACJ,GAAIuH,GAAyC,IAA/BjgB,OAAOgU,KAAKiM,GAAQtgB,QAAgBgsC,EAAY,CAC5D,MAAMC,EAAqBD,GAAczsB,EACvCqrB,EAAO9hB,GAAS/B,WAAWzG,EAAQ,IAC9BvH,EACHwG,KAAM0sB,EACNzC,mBAEJ,OAAO/lB,EAAUmnB,EAAOA,EAAKnnB,QAAQlE,EACvC,CACE,OAAOuJ,GAASwV,QAAQ,IAAIhR,GAAQ,aAAc,cAAc/jB,yBAA4ByU,KAEhG,CAIA,SAASkuB,GAAa9oB,EAAIpF,EAAQ8Y,GAAS,GACzC,OAAO1T,EAAGjF,QAAUsX,GAAU/iB,OAAOoT,GAAOpT,OAAO,SAAU,CAC3DokB,SACAxU,aAAa,IACZoU,yBAAyBtT,EAAIpF,GAAU,IAC5C,CACA,SAAS6mB,GAAUziC,EAAG+pC,GACpB,MAAMC,EAAahqC,EAAEqG,EAAEmT,KAAO,MAAQxZ,EAAEqG,EAAEmT,KAAO,EACjD,IAAInT,EAAI,GAYR,OAXI2jC,GAAchqC,EAAEqG,EAAEmT,MAAQ,IAAGnT,GAAK,KACtCA,GAAKwa,GAAS7gB,EAAEqG,EAAEmT,KAAMwwB,EAAa,EAAI,GACrCD,GACF1jC,GAAK,IACLA,GAAKwa,GAAS7gB,EAAEqG,EAAEoT,OAClBpT,GAAK,IACLA,GAAKwa,GAAS7gB,EAAEqG,EAAEqT,OAElBrT,GAAKwa,GAAS7gB,EAAEqG,EAAEoT,OAClBpT,GAAKwa,GAAS7gB,EAAEqG,EAAEqT,MAEbrT,CACT,CACA,SAASg3B,GAAUr9B,EAAG+pC,EAAUtM,EAAiBD,EAAsBG,EAAesM,GACpF,IAAI5jC,EAAIwa,GAAS7gB,EAAEqG,EAAE4T,MAmCrB,OAlCI8vB,GACF1jC,GAAK,IACLA,GAAKwa,GAAS7gB,EAAEqG,EAAE6T,QACM,IAApBla,EAAEqG,EAAE0Y,aAAoC,IAAf/e,EAAEqG,EAAE+T,QAAiBqjB,IAChDp3B,GAAK,MAGPA,GAAKwa,GAAS7gB,EAAEqG,EAAE6T,QAEI,IAApBla,EAAEqG,EAAE0Y,aAAoC,IAAf/e,EAAEqG,EAAE+T,QAAiBqjB,IAChDp3B,GAAKwa,GAAS7gB,EAAEqG,EAAE+T,QACM,IAApBpa,EAAEqG,EAAE0Y,aAAsBye,IAC5Bn3B,GAAK,IACLA,GAAKwa,GAAS7gB,EAAEqG,EAAE0Y,YAAa,KAG/B4e,IACE39B,EAAEy0B,eAA8B,IAAbz0B,EAAE2F,SAAiBskC,EACxC5jC,GAAK,IACIrG,EAAEA,EAAI,GACfqG,GAAK,IACLA,GAAKwa,GAAShW,KAAK+kB,OAAO5vB,EAAEA,EAAI,KAChCqG,GAAK,IACLA,GAAKwa,GAAShW,KAAK+kB,OAAO5vB,EAAEA,EAAI,OAEhCqG,GAAK,IACLA,GAAKwa,GAAShW,KAAK+kB,MAAM5vB,EAAEA,EAAI,KAC/BqG,GAAK,IACLA,GAAKwa,GAAShW,KAAK+kB,MAAM5vB,EAAEA,EAAI,OAG/BiqC,IACF5jC,GAAK,IAAMrG,EAAEmd,KAAK5B,SAAW,KAExBlV,CACT,CAGA,MAAM6jC,GAAoB,CACtBzwB,MAAO,EACPC,IAAK,EACLO,KAAM,EACNC,OAAQ,EACRE,OAAQ,EACR2E,YAAa,GAEforB,GAAwB,CACtBxd,WAAY,EACZ9S,QAAS,EACTI,KAAM,EACNC,OAAQ,EACRE,OAAQ,EACR2E,YAAa,GAEfqrB,GAA2B,CACzBne,QAAS,EACThS,KAAM,EACNC,OAAQ,EACRE,OAAQ,EACR2E,YAAa,GAIXsrB,GAAe,CAAC,OAAQ,QAAS,MAAO,OAAQ,SAAU,SAAU,eACxEC,GAAmB,CAAC,WAAY,aAAc,UAAW,OAAQ,SAAU,SAAU,eACrFC,GAAsB,CAAC,OAAQ,UAAW,OAAQ,SAAU,SAAU,eAiCxE,SAASC,GAA4BrxB,GACnC,OAAQA,EAAK5V,eACX,IAAK,eACL,IAAK,gBACH,MAAO,eACT,IAAK,kBACL,IAAK,mBACH,MAAO,kBACT,IAAK,gBACL,IAAK,iBACH,MAAO,gBACT,QACE,OA1CN,SAAuB4V,GACrB,MAAM4X,EAAa,CACjBvX,KAAM,OACN8I,MAAO,OACP7I,MAAO,QACP+I,OAAQ,QACR9I,IAAK,MACLgJ,KAAM,MACNzI,KAAM,OACN0I,MAAO,OACPzI,OAAQ,SACRqH,QAAS,SACT0T,QAAS,UACT1S,SAAU,UACVnI,OAAQ,SACRwI,QAAS,SACT7D,YAAa,cACbmY,aAAc,cACdrd,QAAS,UACTiN,SAAU,UACV2jB,WAAY,aACZC,YAAa,aACbC,YAAa,aACbC,SAAU,WACVC,UAAW,WACX5e,QAAS,WACT9S,EAAK5V,eACP,IAAKwtB,EAAY,MAAM,IAAI7X,EAAiBC,GAC5C,OAAO4X,CACT,CAaasL,CAAcljB,GAE3B,CAkCA,SAAS2xB,GAAQ9mC,EAAK2S,GACpB,MAAMwG,EAAO0L,GAAclS,EAAKwG,KAAM8G,GAAS6E,aAC/C,IAAK3L,EAAKpB,QACR,OAAO2K,GAASwV,QAAQkM,GAAgBjrB,IAE1C,MAAMwC,EAAM+D,GAAOiB,WAAWhO,GAC9B,IAAI+E,EAAI1b,EAGR,GAAKge,GAAYha,EAAIwV,MAanBkC,EAAKuI,GAAS6G,UAbY,CAC1B,IAAK,MAAMkG,KAAKqZ,GACVrsB,GAAYha,EAAIgtB,MAClBhtB,EAAIgtB,GAAKkZ,GAAkBlZ,IAG/B,MAAMkL,EAAUvO,GAAwB3pB,IAAQkqB,GAAmBlqB,GACnE,GAAIk4B,EACF,OAAOxV,GAASwV,QAAQA,GAE1B,MAAM6O,EAhCV,SAA4B5tB,GAO1B,OANK6tB,GAAqB7tB,UACHze,IAAjBusC,KACFA,GAAehnB,GAAS6G,OAE1BkgB,GAAqB7tB,GAAQA,EAAKxX,OAAOslC,KAEpCD,GAAqB7tB,EAC9B,CAwByB+tB,CAAmB/tB,IACvCzB,EAAI1b,GAAKupC,GAAQvlC,EAAK+mC,EAAc5tB,EACvC,CAGA,OAAO,IAAIuJ,GAAS,CAClBhL,KACAyB,OACAwC,MACA3f,KAEJ,CACA,SAASmrC,GAAa/gC,EAAO+pB,EAAKxd,GAChC,MAAMkZ,IAAQ7R,GAAYrH,EAAKkZ,QAAgBlZ,EAAKkZ,MAClDjU,EAAS,CAACvV,EAAG8S,KACX9S,EAAIya,GAAQza,EAAGwpB,GAASlZ,EAAKy0B,UAAY,EAAI,GAAG,GAEhD,OADkBjX,EAAIxU,IAAIuG,MAAMvP,GAAM6Q,aAAa7Q,GAClCiF,OAAOvV,EAAG8S,EAAK,EAElCgrB,EAAShrB,GACHxC,EAAKy0B,UACFjX,EAAIsM,QAAQr2B,EAAO+O,GAEV,EADLgb,EAAImM,QAAQnnB,GAAMqnB,KAAKp2B,EAAMk2B,QAAQnnB,GAAOA,GAAM9G,IAAI8G,GAGxDgb,EAAIqM,KAAKp2B,EAAO+O,GAAM9G,IAAI8G,GAGvC,GAAIxC,EAAKwC,KACP,OAAOyC,EAAOuoB,EAAOxtB,EAAKwC,MAAOxC,EAAKwC,MAExC,IAAK,MAAMA,KAAQxC,EAAK0L,MAAO,CAC7B,MAAM7c,EAAQ2+B,EAAOhrB,GACrB,GAAItO,KAAK8T,IAAInZ,IAAU,EACrB,OAAOoW,EAAOpW,EAAO2T,EAEzB,CACA,OAAOyC,EAAOxR,EAAQ+pB,GAAO,EAAI,EAAGxd,EAAK0L,MAAM1L,EAAK0L,MAAMzkB,OAAS,GACrE,CACA,SAASytC,GAASC,GAChB,IACE90B,EADEG,EAAO,CAAC,EAQZ,OANI20B,EAAQ1tC,OAAS,GAA4C,iBAAhC0tC,EAAQA,EAAQ1tC,OAAS,IACxD+Y,EAAO20B,EAAQA,EAAQ1tC,OAAS,GAChC4Y,EAAO1W,MAAMc,KAAK0qC,GAAS7qC,MAAM,EAAG6qC,EAAQ1tC,OAAS,IAErD4Y,EAAO1W,MAAMc,KAAK0qC,GAEb,CAAC30B,EAAMH,EAChB,CAKA,IAAIy0B,GAOAD,GAAuB,CAAC,EAsB5B,MAAMtkB,GAIJ,WAAAhmB,CAAYs7B,GACV,MAAM7e,EAAO6e,EAAO7e,MAAQ8G,GAAS6E,YACrC,IAAIoT,EAAUF,EAAOE,UAAYn9B,OAAOwe,MAAMye,EAAOtgB,IAAM,IAAIwP,GAAQ,iBAAmB,QAAW/N,EAAKpB,QAAkC,KAAxBqsB,GAAgBjrB,IAIpI1d,KAAKic,GAAKsC,GAAYge,EAAOtgB,IAAMuI,GAAS6G,MAAQkR,EAAOtgB,GAC3D,IAAIrV,EAAI,KACNrG,EAAI,KACN,IAAKk8B,EAAS,CAEZ,GADkBF,EAAOyM,KAAOzM,EAAOyM,IAAI/sB,KAAOjc,KAAKic,IAAMsgB,EAAOyM,IAAItrB,KAAKtB,OAAOsB,IAEjF9W,EAAGrG,GAAK,CAACg8B,EAAOyM,IAAIpiC,EAAG21B,EAAOyM,IAAIzoC,OAC9B,CAGL,MAAMurC,EAAKviB,GAASgT,EAAOh8B,KAAOg8B,EAAOyM,IAAMzM,EAAOh8B,EAAImd,EAAKxX,OAAOlG,KAAKic,IAC3ErV,EAAI2iC,GAAQvpC,KAAKic,GAAI6vB,GACrBrP,EAAUn9B,OAAOwe,MAAMlX,EAAEmT,MAAQ,IAAI0R,GAAQ,iBAAmB,KAChE7kB,EAAI61B,EAAU,KAAO71B,EACrBrG,EAAIk8B,EAAU,KAAOqP,CACvB,CACF,CAKA9rC,KAAK+rC,MAAQruB,EAIb1d,KAAKkgB,IAAMqc,EAAOrc,KAAO+D,GAAOpT,SAIhC7Q,KAAKy8B,QAAUA,EAIfz8B,KAAKstB,SAAW,KAIhBttB,KAAK8oC,cAAgB,KAIrB9oC,KAAK4G,EAAIA,EAIT5G,KAAKO,EAAIA,EAITP,KAAKgsC,iBAAkB,CACzB,CAWA,UAAO3gB,GACL,OAAO,IAAIpE,GAAS,CAAC,EACvB,CAuBA,YAAO0Q,GACL,MAAOzgB,EAAMH,GAAQ60B,GAASjsC,YAC3Boa,EAAMC,EAAOC,EAAKO,EAAMC,EAAQE,EAAQ2E,GAAevI,EAC1D,OAAOs0B,GAAQ,CACbtxB,OACAC,QACAC,MACAO,OACAC,SACAE,SACA2E,eACCpI,EACL,CA2BA,UAAOgQ,GACL,MAAOhQ,EAAMH,GAAQ60B,GAASjsC,YAC3Boa,EAAMC,EAAOC,EAAKO,EAAMC,EAAQE,EAAQ2E,GAAevI,EAE1D,OADAG,EAAKwG,KAAOoL,GAAgBC,YACrBsiB,GAAQ,CACbtxB,OACAC,QACAC,MACAO,OACAC,SACAE,SACA2E,eACCpI,EACL,CASA,iBAAO+0B,CAAWpuB,EAAM3V,EAAU,CAAC,GACjC,MAAM+T,GAt2HM1b,EAs2HMsd,EAr2HyB,kBAAtCrf,OAAOqB,UAAUkB,SAAS5B,KAAKoB,GAq2HVsd,EAAKygB,UAAYvgB,KAt2H/C,IAAgBxd,EAu2HZ,GAAIjB,OAAOwe,MAAM7B,GACf,OAAOgL,GAASwV,QAAQ,iBAE1B,MAAMyP,EAAY9iB,GAAclhB,EAAQwV,KAAM8G,GAAS6E,aACvD,OAAK6iB,EAAU5vB,QAGR,IAAI2K,GAAS,CAClBhL,GAAIA,EACJyB,KAAMwuB,EACNhsB,IAAK+D,GAAOiB,WAAWhd,KALhB+e,GAASwV,QAAQkM,GAAgBuD,GAO5C,CAaA,iBAAOvP,CAAWlF,EAAcvvB,EAAU,CAAC,GACzC,GAAKqhB,GAASkO,GAEP,OAAIA,GAAgBiR,IAAYjR,EAAeiR,GAE7CzhB,GAASwV,QAAQ,0BAEjB,IAAIxV,GAAS,CAClBhL,GAAIwb,EACJ/Z,KAAM0L,GAAclhB,EAAQwV,KAAM8G,GAAS6E,aAC3CnJ,IAAK+D,GAAOiB,WAAWhd,KARzB,MAAM,IAAIyR,EAAqB,gEAAgE8d,gBAA2BA,IAW9H,CAaA,kBAAO0U,CAAYhpB,EAASjb,EAAU,CAAC,GACrC,GAAKqhB,GAASpG,GAGZ,OAAO,IAAI8D,GAAS,CAClBhL,GAAc,IAAVkH,EACJzF,KAAM0L,GAAclhB,EAAQwV,KAAM8G,GAAS6E,aAC3CnJ,IAAK+D,GAAOiB,WAAWhd,KALzB,MAAM,IAAIyR,EAAqB,yCAQnC,CAmCA,iBAAOuL,CAAW3gB,EAAK2S,EAAO,CAAC,GAC7B3S,EAAMA,GAAO,CAAC,EACd,MAAM2nC,EAAY9iB,GAAclS,EAAKwG,KAAM8G,GAAS6E,aACpD,IAAK6iB,EAAU5vB,QACb,OAAO2K,GAASwV,QAAQkM,GAAgBuD,IAE1C,MAAMhsB,EAAM+D,GAAOiB,WAAWhO,GACxBoa,EAAaF,GAAgB7sB,EAAKwmC,KAClC,mBACJ/d,EAAkB,YAClBH,GACEiB,GAAoBwD,EAAYpR,GAC9BksB,EAAQ5nB,GAAS6G,MACrBigB,EAAgB/sB,GAAYrH,EAAKywB,gBAAwCuE,EAAUhmC,OAAOkmC,GAAvCl1B,EAAKywB,eACxD0E,GAAmB9tB,GAAY+S,EAAW9E,SAC1C8f,GAAsB/tB,GAAY+S,EAAWvX,MAC7CwyB,GAAoBhuB,GAAY+S,EAAWtX,SAAWuE,GAAY+S,EAAWrX,KAC7EuyB,EAAiBF,GAAsBC,EACvCE,EAAkBnb,EAAWrE,UAAYqE,EAAWpE,WAQtD,IAAKsf,GAAkBH,IAAoBI,EACzC,MAAM,IAAIjzB,EAA8B,uEAE1C,GAAI+yB,GAAoBF,EACtB,MAAM,IAAI7yB,EAA8B,0CAE1C,MAAMkzB,EAAcD,GAAmBnb,EAAWlX,UAAYoyB,EAG9D,IAAI5pB,EACF+pB,EACAC,EAASrD,GAAQ6C,EAAOd,GACtBoB,GACF9pB,EAAQioB,GACR8B,EAAgBjC,GAChBkC,EAAS9f,GAAgB8f,EAAQ5f,EAAoBH,IAC5Cwf,GACTzpB,EAAQkoB,GACR6B,EAAgBhC,GAChBiC,EAASlf,GAAmBkf,KAE5BhqB,EAAQgoB,GACR+B,EAAgBlC,IAIlB,IAAIoC,GAAa,EACjB,IAAK,MAAMtb,KAAK3O,EAAO,CAEhBrE,GADK+S,EAAWC,IAInBD,EAAWC,GADFsb,EACOF,EAAcpb,GAEdqb,EAAOrb,GAJvBsb,GAAa,CAMjB,CAGA,MAAMC,EAAqBJ,EAvlI/B,SAA4BnoC,EAAKyoB,EAAqB,EAAGH,EAAc,GACrE,MAAMsB,EAAYC,GAAU7pB,EAAI0oB,UAC9B8f,EAAYze,GAAe/pB,EAAI2oB,WAAY,EAAGC,GAAgB5oB,EAAI0oB,SAAUD,EAAoBH,IAChGmgB,EAAe1e,GAAe/pB,EAAI6V,QAAS,EAAG,GAChD,OAAK+T,EAEO4e,GAEAC,GACHnhB,GAAe,UAAWtnB,EAAI6V,SAF9ByR,GAAe,OAAQtnB,EAAI2oB,YAF3BrB,GAAe,WAAYtnB,EAAI0oB,SAM1C,CA4kI6CggB,CAAmB3b,EAAYtE,EAAoBH,GAAewf,EA3kI/G,SAA+B9nC,GAC7B,MAAM4pB,EAAYC,GAAU7pB,EAAIwV,MAC9BmzB,EAAe5e,GAAe/pB,EAAIioB,QAAS,EAAGiB,GAAWlpB,EAAIwV,OAC/D,OAAKoU,GAEO+e,GACHrhB,GAAe,UAAWtnB,EAAIioB,SAF9BX,GAAe,OAAQtnB,EAAIwV,KAItC,CAmkIiIozB,CAAsB7b,GAAcpD,GAAwBoD,GACvLmL,EAAUqQ,GAAsBre,GAAmB6C,GACrD,GAAImL,EACF,OAAOxV,GAASwV,QAAQA,GAI1B,MAAM2Q,EAAYV,EAAcrf,GAAgBiE,EAAYtE,EAAoBH,GAAewf,EAAkBze,GAAmB0D,GAAcA,GAC/I+b,EAASC,GAAexD,GAAQsD,EAAW9B,EAAcY,GAC1DnD,EAAO,IAAI9hB,GAAS,CAClBhL,GAAIoxB,EACJ3vB,KAAMwuB,EACN3rC,EAAG+sC,EACHptB,QAIJ,OAAIoR,EAAWlX,SAAWoyB,GAAkBjoC,EAAI6V,UAAY2uB,EAAK3uB,QACxD6M,GAASwV,QAAQ,qBAAsB,uCAAuCnL,EAAWlX,yBAAyB2uB,EAAKpL,WAE3HoL,EAAKzsB,QAGHysB,EAFE9hB,GAASwV,QAAQsM,EAAKtM,QAGjC,CAmBA,cAAOO,CAAQt1B,EAAMwP,EAAO,CAAC,GAC3B,MAAO4kB,EAAMqO,GA3mGjB,SAAsBtwB,GACpB,OAAOtF,GAAMsF,EAAG,CAACqgB,GAA8BI,IAA6B,CAACH,GAA+BI,IAA8B,CAACH,GAAkCI,IAA+B,CAACH,GAAsBI,IACrO,CAymG+B8S,CAAa7lC,GACxC,OAAOwiC,GAAoBpO,EAAMqO,EAAYjzB,EAAM,WAAYxP,EACjE,CAiBA,kBAAO8lC,CAAY9lC,EAAMwP,EAAO,CAAC,GAC/B,MAAO4kB,EAAMqO,GA5nGjB,SAA0BtwB,GACxB,OAAOtF,GArCT,SAA2BsF,GAEzB,OAAOA,EAAEnW,QAAQ,qBAAsB,KAAKA,QAAQ,WAAY,KAAK6C,MACvE,CAkCeknC,CAAkB5zB,GAAI,CAAC4f,GAASC,IAC/C,CA0nG+BgU,CAAiBhmC,GAC5C,OAAOwiC,GAAoBpO,EAAMqO,EAAYjzB,EAAM,WAAYxP,EACjE,CAkBA,eAAOimC,CAASjmC,EAAMwP,EAAO,CAAC,GAC5B,MAAO4kB,EAAMqO,GA9oGjB,SAAuBtwB,GACrB,OAAOtF,GAAMsF,EAAG,CAACggB,GAASG,IAAsB,CAACF,GAAQE,IAAsB,CAACD,GAAOE,IACzF,CA4oG+B2T,CAAclmC,GACzC,OAAOwiC,GAAoBpO,EAAMqO,EAAYjzB,EAAM,OAAQA,EAC7D,CAgBA,iBAAO22B,CAAWnmC,EAAMosB,EAAK5c,EAAO,CAAC,GACnC,GAAIqH,GAAY7W,IAAS6W,GAAYuV,GACnC,MAAM,IAAIna,EAAqB,oDAEjC,MAAM,OACFmD,EAAS,KAAI,gBACbqH,EAAkB,MAChBjN,EACJ42B,EAAc7pB,GAAOC,SAAS,CAC5BpH,SACAqH,kBACAG,aAAa,KAEdwX,EAAMqO,EAAYxC,EAAgBlL,GA72BzC,SAAyB3f,EAAQle,EAAOud,GACtC,MAAM,OACJhV,EAAM,KACNuW,EAAI,eACJiqB,EAAc,cACdtJ,GACEkJ,GAAkBzqB,EAAQle,EAAOud,GACrC,MAAO,CAAChV,EAAQuW,EAAMiqB,EAAgBtJ,EACxC,CAq2BoD0P,CAAgBD,EAAapmC,EAAMosB,GACnF,OAAI2I,EACKxV,GAASwV,QAAQA,GAEjByN,GAAoBpO,EAAMqO,EAAYjzB,EAAM,UAAU4c,IAAOpsB,EAAMigC,EAE9E,CAKA,iBAAOqG,CAAWtmC,EAAMosB,EAAK5c,EAAO,CAAC,GACnC,OAAO+P,GAAS4mB,WAAWnmC,EAAMosB,EAAK5c,EACxC,CAuBA,cAAO+2B,CAAQvmC,EAAMwP,EAAO,CAAC,GAC3B,MAAO4kB,EAAMqO,GArsGjB,SAAkBtwB,GAChB,OAAOtF,GAAMsF,EAAG,CAAC8gB,GAA8BL,IAA6B,CAACM,GAAsBC,IACrG,CAmsG+BqT,CAASxmC,GACpC,OAAOwiC,GAAoBpO,EAAMqO,EAAYjzB,EAAM,MAAOxP,EAC5D,CAQA,cAAO+0B,CAAQtjB,EAAQuS,EAAc,MACnC,IAAKvS,EACH,MAAM,IAAIQ,EAAqB,oDAEjC,MAAM8iB,EAAUtjB,aAAkBsS,GAAUtS,EAAS,IAAIsS,GAAQtS,EAAQuS,GACzE,GAAIlH,GAAS4G,eACX,MAAM,IAAIlS,EAAqBujB,GAE/B,OAAO,IAAIxV,GAAS,CAClBwV,WAGN,CAOA,iBAAO0R,CAAW5tC,GAChB,OAAOA,GAAKA,EAAEyrC,kBAAmB,CACnC,CAQA,yBAAOoC,CAAmBla,EAAYma,EAAa,CAAC,GAClD,MAAMC,EAAYlI,GAAmBlS,EAAYjQ,GAAOiB,WAAWmpB,IACnE,OAAQC,EAAmBA,EAAUxlC,KAAIiC,GAAKA,EAAIA,EAAEvG,IAAM,OAAMyE,KAAK,IAAjD,IACtB,CASA,mBAAOslC,CAAaza,EAAKua,EAAa,CAAC,GAErC,OADiBlI,GAAkBvS,GAAUC,YAAYC,GAAM7P,GAAOiB,WAAWmpB,IACjEvlC,KAAIiC,GAAKA,EAAEvG,MAAKyE,KAAK,GACvC,CACA,iBAAOsU,GACLiuB,QAAevsC,EACfssC,GAAuB,CAAC,CAC1B,CAWA,GAAA34B,CAAI8G,GACF,OAAO1Z,KAAK0Z,EACd,CAQA,WAAI4C,GACF,OAAwB,OAAjBtc,KAAKy8B,OACd,CAMA,iBAAI4B,GACF,OAAOr+B,KAAKy8B,QAAUz8B,KAAKy8B,QAAQtjB,OAAS,IAC9C,CAMA,sBAAIwmB,GACF,OAAO3/B,KAAKy8B,QAAUz8B,KAAKy8B,QAAQ/Q,YAAc,IACnD,CAOA,UAAI5O,GACF,OAAO9c,KAAKsc,QAAUtc,KAAKkgB,IAAIpD,OAAS,IAC1C,CAOA,mBAAIqH,GACF,OAAOnkB,KAAKsc,QAAUtc,KAAKkgB,IAAIiE,gBAAkB,IACnD,CAOA,kBAAIC,GACF,OAAOpkB,KAAKsc,QAAUtc,KAAKkgB,IAAIkE,eAAiB,IAClD,CAMA,QAAI1G,GACF,OAAO1d,KAAK+rC,KACd,CAMA,YAAIpuB,GACF,OAAO3d,KAAKsc,QAAUtc,KAAK0d,KAAKxc,KAAO,IACzC,CAOA,QAAI6Y,GACF,OAAO/Z,KAAKsc,QAAUtc,KAAK4G,EAAEmT,KAAOgE,GACtC,CAOA,WAAIyX,GACF,OAAOx1B,KAAKsc,QAAUlR,KAAKojC,KAAKxuC,KAAK4G,EAAEoT,MAAQ,GAAK+D,GACtD,CAOA,SAAI/D,GACF,OAAOha,KAAKsc,QAAUtc,KAAK4G,EAAEoT,MAAQ+D,GACvC,CAOA,OAAI9D,GACF,OAAOja,KAAKsc,QAAUtc,KAAK4G,EAAEqT,IAAM8D,GACrC,CAOA,QAAIvD,GACF,OAAOxa,KAAKsc,QAAUtc,KAAK4G,EAAE4T,KAAOuD,GACtC,CAOA,UAAItD,GACF,OAAOza,KAAKsc,QAAUtc,KAAK4G,EAAE6T,OAASsD,GACxC,CAOA,UAAIpD,GACF,OAAO3a,KAAKsc,QAAUtc,KAAK4G,EAAE+T,OAASoD,GACxC,CAOA,eAAIuB,GACF,OAAOtf,KAAKsc,QAAUtc,KAAK4G,EAAE0Y,YAAcvB,GAC7C,CAQA,YAAIkP,GACF,OAAOjtB,KAAKsc,QAAUssB,GAAuB5oC,MAAMitB,SAAWlP,GAChE,CAQA,cAAImP,GACF,OAAOltB,KAAKsc,QAAUssB,GAAuB5oC,MAAMktB,WAAanP,GAClE,CASA,WAAI3D,GACF,OAAOpa,KAAKsc,QAAUssB,GAAuB5oC,MAAMoa,QAAU2D,GAC/D,CAMA,aAAI0wB,GACF,OAAOzuC,KAAKsc,SAAWtc,KAAKkgB,IAAIyI,iBAAiBlW,SAASzS,KAAKoa,QACjE,CAQA,gBAAI2T,GACF,OAAO/tB,KAAKsc,QAAUusB,GAA4B7oC,MAAMoa,QAAU2D,GACpE,CAQA,mBAAIiQ,GACF,OAAOhuB,KAAKsc,QAAUusB,GAA4B7oC,MAAMktB,WAAanP,GACvE,CAOA,iBAAIkQ,GACF,OAAOjuB,KAAKsc,QAAUusB,GAA4B7oC,MAAMitB,SAAWlP,GACrE,CAOA,WAAIyO,GACF,OAAOxsB,KAAKsc,QAAUoR,GAAmB1tB,KAAK4G,GAAG4lB,QAAUzO,GAC7D,CAQA,cAAI2wB,GACF,OAAO1uC,KAAKsc,QAAU+mB,GAAKtgB,OAAO,QAAS,CACzC0gB,OAAQzjC,KAAKkgB,MACZlgB,KAAKga,MAAQ,GAAK,IACvB,CAQA,aAAI20B,GACF,OAAO3uC,KAAKsc,QAAU+mB,GAAKtgB,OAAO,OAAQ,CACxC0gB,OAAQzjC,KAAKkgB,MACZlgB,KAAKga,MAAQ,GAAK,IACvB,CAQA,gBAAI40B,GACF,OAAO5uC,KAAKsc,QAAU+mB,GAAKhc,SAAS,QAAS,CAC3Coc,OAAQzjC,KAAKkgB,MACZlgB,KAAKoa,QAAU,GAAK,IACzB,CAQA,eAAIy0B,GACF,OAAO7uC,KAAKsc,QAAU+mB,GAAKhc,SAAS,OAAQ,CAC1Coc,OAAQzjC,KAAKkgB,MACZlgB,KAAKoa,QAAU,GAAK,IACzB,CAQA,UAAIlU,GACF,OAAOlG,KAAKsc,SAAWtc,KAAKO,EAAIwd,GAClC,CAOA,mBAAI+wB,GACF,OAAI9uC,KAAKsc,QACAtc,KAAK0d,KAAK1B,WAAWhc,KAAKic,GAAI,CACnCE,OAAQ,QACRW,OAAQ9c,KAAK8c,SAGR,IAEX,CAOA,kBAAIiyB,GACF,OAAI/uC,KAAKsc,QACAtc,KAAK0d,KAAK1B,WAAWhc,KAAKic,GAAI,CACnCE,OAAQ,OACRW,OAAQ9c,KAAK8c,SAGR,IAEX,CAMA,iBAAIkY,GACF,OAAOh1B,KAAKsc,QAAUtc,KAAK0d,KAAK3B,YAAc,IAChD,CAMA,WAAIizB,GACF,OAAIhvC,KAAKg1B,gBAGAh1B,KAAKkG,OAASlG,KAAK4+B,IAAI,CAC5B5kB,MAAO,EACPC,IAAK,IACJ/T,QAAUlG,KAAKkG,OAASlG,KAAK4+B,IAAI,CAClC5kB,MAAO,IACN9T,OAEP,CASA,kBAAA+oC,GACE,IAAKjvC,KAAKsc,SAAWtc,KAAKg1B,cACxB,MAAO,CAACh1B,MAEV,MAAMkvC,EAAQ,MACRC,EAAW,IACXjG,EAAU7pB,GAAarf,KAAK4G,GAC5BwoC,EAAWpvC,KAAK0d,KAAKxX,OAAOgjC,EAAUgG,GACtCG,EAASrvC,KAAK0d,KAAKxX,OAAOgjC,EAAUgG,GACpCI,EAAKtvC,KAAK0d,KAAKxX,OAAOgjC,EAAUkG,EAAWD,GAC3C9F,EAAKrpC,KAAK0d,KAAKxX,OAAOgjC,EAAUmG,EAASF,GAC/C,GAAIG,IAAOjG,EACT,MAAO,CAACrpC,MAEV,MAAMuvC,EAAMrG,EAAUoG,EAAKH,EACrBK,EAAMtG,EAAUG,EAAK8F,EACrBM,EAAKlG,GAAQgG,EAAKD,GAClBI,EAAKnG,GAAQiG,EAAKnG,GACxB,OAAIoG,EAAGj1B,OAASk1B,EAAGl1B,MAAQi1B,EAAGh1B,SAAWi1B,EAAGj1B,QAAUg1B,EAAG90B,SAAW+0B,EAAG/0B,QAAU80B,EAAGnwB,cAAgBowB,EAAGpwB,YAC9F,CAACmH,GAAMzmB,KAAM,CAClBic,GAAIszB,IACF9oB,GAAMzmB,KAAM,CACdic,GAAIuzB,KAGD,CAACxvC,KACV,CAQA,gBAAI2vC,GACF,OAAOrjB,GAAWtsB,KAAK+Z,KACzB,CAQA,eAAIyU,GACF,OAAOA,GAAYxuB,KAAK+Z,KAAM/Z,KAAKga,MACrC,CAQA,cAAIyT,GACF,OAAOztB,KAAKsc,QAAUmR,GAAWztB,KAAK+Z,MAAQgE,GAChD,CASA,mBAAIoP,GACF,OAAOntB,KAAKsc,QAAU6Q,GAAgBntB,KAAKitB,UAAYlP,GACzD,CAQA,wBAAI6xB,GACF,OAAO5vC,KAAKsc,QAAU6Q,GAAgBntB,KAAKiuB,cAAejuB,KAAKkgB,IAAIwI,wBAAyB1oB,KAAKkgB,IAAIuI,kBAAoB1K,GAC3H,CAQA,qBAAA8xB,CAAsB34B,EAAO,CAAC,GAC5B,MAAM,OACJ4F,EAAM,gBACNqH,EAAe,SACfyB,GACEgO,GAAU/iB,OAAO7Q,KAAKkgB,IAAIuG,MAAMvP,GAAOA,GAAM0F,gBAAgB5c,MACjE,MAAO,CACL8c,SACAqH,kBACAC,eAAgBwB,EAEpB,CAYA,KAAAye,CAAMn+B,EAAS,EAAGgR,EAAO,CAAC,GACxB,OAAOlX,KAAK4hB,QAAQkH,GAAgBrM,SAASvW,GAASgR,EACxD,CAQA,OAAA44B,GACE,OAAO9vC,KAAK4hB,QAAQ4C,GAAS6E,YAC/B,CAWA,OAAAzH,CAAQlE,GAAM,cACZ4mB,GAAgB,EAAK,iBACrByL,GAAmB,GACjB,CAAC,GAEH,IADAryB,EAAO0L,GAAc1L,EAAM8G,GAAS6E,cAC3BjN,OAAOpc,KAAK0d,MACnB,OAAO1d,KACF,GAAK0d,EAAKpB,QAEV,CACL,IAAI0zB,EAAQhwC,KAAKic,GACjB,GAAIqoB,GAAiByL,EAAkB,CACrC,MAAME,EAAcvyB,EAAKxX,OAAOlG,KAAKic,IAC/Bi0B,EAAQlwC,KAAK09B,YAClBsS,GAASlG,GAAQoG,EAAOD,EAAavyB,EACxC,CACA,OAAO+I,GAAMzmB,KAAM,CACjBic,GAAI+zB,EACJtyB,QAEJ,CAZE,OAAOuJ,GAASwV,QAAQkM,GAAgBjrB,GAa5C,CAQA,WAAAmhB,EAAY,OACV/hB,EAAM,gBACNqH,EAAe,eACfC,GACE,CAAC,GAMH,OAAOqC,GAAMzmB,KAAM,CACjBkgB,IANUlgB,KAAKkgB,IAAIuG,MAAM,CACzB3J,SACAqH,kBACAC,oBAKJ,CAQA,SAAA+rB,CAAUrzB,GACR,OAAO9c,KAAK6+B,YAAY,CACtB/hB,UAEJ,CAeA,GAAA8hB,CAAIvmB,GACF,IAAKrY,KAAKsc,QAAS,OAAOtc,KAC1B,MAAMsxB,EAAaF,GAAgB/Y,EAAQ0yB,KACrC,mBACJ/d,EAAkB,YAClBH,GACEiB,GAAoBwD,EAAYtxB,KAAKkgB,KACnCkwB,GAAoB7xB,GAAY+S,EAAWrE,YAAc1O,GAAY+S,EAAWpE,cAAgB3O,GAAY+S,EAAWlX,SAC3HiyB,GAAmB9tB,GAAY+S,EAAW9E,SAC1C8f,GAAsB/tB,GAAY+S,EAAWvX,MAC7CwyB,GAAoBhuB,GAAY+S,EAAWtX,SAAWuE,GAAY+S,EAAWrX,KAC7EuyB,EAAiBF,GAAsBC,EACvCE,EAAkBnb,EAAWrE,UAAYqE,EAAWpE,WACtD,IAAKsf,GAAkBH,IAAoBI,EACzC,MAAM,IAAIjzB,EAA8B,uEAE1C,GAAI+yB,GAAoBF,EACtB,MAAM,IAAI7yB,EAA8B,0CAE1C,IAAI62B,EACAD,EACFC,EAAQhjB,GAAgB,IACnBP,GAAgB9sB,KAAK4G,EAAGomB,EAAoBH,MAC5CyE,GACFtE,EAAoBH,GACbtO,GAAY+S,EAAW9E,UAMjC6jB,EAAQ,IACHrwC,KAAK09B,cACLpM,GAKD/S,GAAY+S,EAAWrX,OACzBo2B,EAAMp2B,IAAM7O,KAAKC,IAAImjB,GAAY6hB,EAAMt2B,KAAMs2B,EAAMr2B,OAAQq2B,EAAMp2B,OAbnEo2B,EAAQziB,GAAmB,IACtBF,GAAmB1tB,KAAK4G,MACxB0qB,IAcP,MAAOrV,EAAI1b,GAAKupC,GAAQuG,EAAOrwC,KAAKO,EAAGP,KAAK0d,MAC5C,OAAO+I,GAAMzmB,KAAM,CACjBic,KACA1b,KAEJ,CAeA,IAAAshB,CAAK0c,GACH,IAAKv+B,KAAKsc,QAAS,OAAOtc,KAE1B,OAAOymB,GAAMzmB,KAAM+pC,GAAW/pC,KADlB47B,GAASiB,iBAAiB0B,IAExC,CAQA,KAAAC,CAAMD,GACJ,IAAKv+B,KAAKsc,QAAS,OAAOtc,KAE1B,OAAOymB,GAAMzmB,KAAM+pC,GAAW/pC,KADlB47B,GAASiB,iBAAiB0B,GAAUE,UAElD,CAcA,OAAAoC,CAAQnnB,GAAM,eACZonB,GAAiB,GACf,CAAC,GACH,IAAK9gC,KAAKsc,QAAS,OAAOtc,KAC1B,MAAMO,EAAI,CAAC,EACT+vC,EAAiB1U,GAASgB,cAAcljB,GAC1C,OAAQ42B,GACN,IAAK,QACH/vC,EAAEyZ,MAAQ,EAEZ,IAAK,WACL,IAAK,SACHzZ,EAAE0Z,IAAM,EAEV,IAAK,QACL,IAAK,OACH1Z,EAAEia,KAAO,EAEX,IAAK,QACHja,EAAEka,OAAS,EAEb,IAAK,UACHla,EAAEoa,OAAS,EAEb,IAAK,UACHpa,EAAE+e,YAAc,EAKpB,GAAuB,UAAnBgxB,EACF,GAAIxP,EAAgB,CAClB,MAAMjU,EAAc7sB,KAAKkgB,IAAIuI,kBACvB,QACJrO,GACEpa,KACAoa,EAAUyS,IACZtsB,EAAE2sB,WAAaltB,KAAKktB,WAAa,GAEnC3sB,EAAE6Z,QAAUyS,CACd,MACEtsB,EAAE6Z,QAAU,EAGhB,GAAuB,aAAnBk2B,EAA+B,CACjC,MAAMzI,EAAIz8B,KAAKojC,KAAKxuC,KAAKga,MAAQ,GACjCzZ,EAAEyZ,MAAkB,GAAT6tB,EAAI,GAAS,CAC1B,CACA,OAAO7nC,KAAK4+B,IAAIr+B,EAClB,CAcA,KAAAgwC,CAAM72B,EAAMxC,GACV,OAAOlX,KAAKsc,QAAUtc,KAAK6hB,KAAK,CAC9B,CAACnI,GAAO,IACPmnB,QAAQnnB,EAAMxC,GAAMsnB,MAAM,GAAKx+B,IACpC,CAgBA,QAAAq9B,CAASvJ,EAAK5c,EAAO,CAAC,GACpB,OAAOlX,KAAKsc,QAAUsX,GAAU/iB,OAAO7Q,KAAKkgB,IAAI0G,cAAc1P,IAAO2d,yBAAyB70B,KAAM8zB,GAAO2U,EAC7G,CAqBA,cAAA1F,CAAe7O,EAAapa,EAAY5C,EAAO,CAAC,GAC9C,OAAOlX,KAAKsc,QAAUsX,GAAU/iB,OAAO7Q,KAAKkgB,IAAIuG,MAAMvP,GAAOgd,GAAYG,eAAer0B,MAAQyoC,EAClG,CAeA,aAAA+H,CAAct5B,EAAO,CAAC,GACpB,OAAOlX,KAAKsc,QAAUsX,GAAU/iB,OAAO7Q,KAAKkgB,IAAIuG,MAAMvP,GAAOA,GAAMod,oBAAoBt0B,MAAQ,EACjG,CAgBA,KAAA29B,EAAM,OACJxhB,EAAS,WAAU,gBACnB6hB,GAAkB,EAAK,qBACvBD,GAAuB,EAAK,cAC5BG,GAAgB,EAAI,aACpBsM,GAAe,GACb,CAAC,GACH,IAAKxqC,KAAKsc,QACR,OAAO,KAET,MAAMnF,EAAiB,aAAXgF,EACZ,IAAIvV,EAAIo8B,GAAUhjC,KAAMmX,GAGxB,OAFAvQ,GAAK,IACLA,GAAKg3B,GAAU59B,KAAMmX,EAAK6mB,EAAiBD,EAAsBG,EAAesM,GACzE5jC,CACT,CAUA,SAAAo8B,EAAU,OACR7mB,EAAS,YACP,CAAC,GACH,OAAKnc,KAAKsc,QAGH0mB,GAAUhjC,KAAiB,aAAXmc,GAFd,IAGX,CAOA,aAAAs0B,GACE,OAAOpG,GAAarqC,KAAM,eAC5B,CAiBA,SAAA49B,EAAU,qBACRG,GAAuB,EAAK,gBAC5BC,GAAkB,EAAK,cACvBE,GAAgB,EAAI,cACpBD,GAAgB,EAAK,aACrBuM,GAAe,EAAK,OACpBruB,EAAS,YACP,CAAC,GACH,IAAKnc,KAAKsc,QACR,OAAO,KAGT,OADQ2hB,EAAgB,IAAM,IACnBL,GAAU59B,KAAiB,aAAXmc,EAAuB6hB,EAAiBD,EAAsBG,EAAesM,EAC1G,CAQA,SAAAkG,GACE,OAAOrG,GAAarqC,KAAM,iCAAiC,EAC7D,CAUA,MAAA2wC,GACE,OAAOtG,GAAarqC,KAAKqkC,QAAS,kCACpC,CAOA,SAAAuM,GACE,OAAK5wC,KAAKsc,QAGH0mB,GAAUhjC,MAAM,GAFd,IAGX,CAcA,SAAA6wC,EAAU,cACR3S,GAAgB,EAAI,YACpB4S,GAAc,EAAK,mBACnBC,GAAqB,GACnB,CAAC,GACH,IAAIjd,EAAM,eAWV,OAVIgd,GAAe5S,KACb6S,IACFjd,GAAO,KAELgd,EACFhd,GAAO,IACEoK,IACTpK,GAAO,OAGJuW,GAAarqC,KAAM8zB,GAAK,EACjC,CAcA,KAAAkd,CAAM95B,EAAO,CAAC,GACZ,OAAKlX,KAAKsc,QAGH,GAAGtc,KAAK4wC,eAAe5wC,KAAK6wC,UAAU35B,KAFpC,IAGX,CAMA,QAAAnW,GACE,OAAOf,KAAKsc,QAAUtc,KAAK29B,QAAU8K,EACvC,CAMA,CAAC1pC,OAAOq/B,IAAI,iCACV,OAAIp+B,KAAKsc,QACA,kBAAkBtc,KAAK29B,kBAAkB39B,KAAK0d,KAAKxc,iBAAiBlB,KAAK8c,WAEzE,+BAA+B9c,KAAKq+B,iBAE/C,CAMA,OAAAC,GACE,OAAOt+B,KAAK89B,UACd,CAMA,QAAAA,GACE,OAAO99B,KAAKsc,QAAUtc,KAAKic,GAAK8B,GAClC,CAMA,SAAAkzB,GACE,OAAOjxC,KAAKsc,QAAUtc,KAAKic,GAAK,IAAO8B,GACzC,CAMA,aAAAmzB,GACE,OAAOlxC,KAAKsc,QAAUlR,KAAKuV,MAAM3gB,KAAKic,GAAK,KAAQ8B,GACrD,CAMA,MAAAogB,GACE,OAAOn+B,KAAK29B,OACd,CAMA,MAAAwT,GACE,OAAOnxC,KAAK+hB,UACd,CASA,QAAA2b,CAASxmB,EAAO,CAAC,GACf,IAAKlX,KAAKsc,QAAS,MAAO,CAAC,EAC3B,MAAMzX,EAAO,IACR7E,KAAK4G,GAOV,OALIsQ,EAAKk6B,gBACPvsC,EAAKuf,eAAiBpkB,KAAKokB,eAC3Bvf,EAAKsf,gBAAkBnkB,KAAKkgB,IAAIiE,gBAChCtf,EAAKiY,OAAS9c,KAAKkgB,IAAIpD,QAElBjY,CACT,CAMA,QAAAkd,GACE,OAAO,IAAI/E,KAAKhd,KAAKsc,QAAUtc,KAAKic,GAAK8B,IAC3C,CAmBA,IAAAgjB,CAAKsQ,EAAe33B,EAAO,eAAgBxC,EAAO,CAAC,GACjD,IAAKlX,KAAKsc,UAAY+0B,EAAc/0B,QAClC,OAAOsf,GAASa,QAAQ,0CAE1B,MAAM6U,EAAU,CACdx0B,OAAQ9c,KAAK8c,OACbqH,gBAAiBnkB,KAAKmkB,mBACnBjN,GAEC0L,GA/uKU0M,EA+uKS5V,EA9uKpBrZ,MAAMO,QAAQ0uB,GAASA,EAAQ,CAACA,IA8uKNxmB,IAAI8yB,GAASgB,eAC1C2U,EAAeF,EAAc/S,UAAYt+B,KAAKs+B,UAG9CkT,EAASzQ,GAFCwQ,EAAevxC,KAAOqxC,EACxBE,EAAeF,EAAgBrxC,KACT4iB,EAAO0uB,GAnvK3C,IAAoBhiB,EAovKhB,OAAOiiB,EAAeC,EAAO/S,SAAW+S,CAC1C,CAUA,OAAAC,CAAQ/3B,EAAO,eAAgBxC,EAAO,CAAC,GACrC,OAAOlX,KAAK+gC,KAAK9Z,GAASoE,MAAO3R,EAAMxC,EACzC,CAOA,KAAAw6B,CAAML,GACJ,OAAOrxC,KAAKsc,QAAUyjB,GAASE,cAAcjgC,KAAMqxC,GAAiBrxC,IACtE,CAaA,OAAAghC,CAAQqQ,EAAe33B,EAAMxC,GAC3B,IAAKlX,KAAKsc,QAAS,OAAO,EAC1B,MAAMq1B,EAAUN,EAAc/S,UACxBsT,EAAiB5xC,KAAK4hB,QAAQyvB,EAAc3zB,KAAM,CACtD4mB,eAAe,IAEjB,OAAOsN,EAAe/Q,QAAQnnB,EAAMxC,IAASy6B,GAAWA,GAAWC,EAAerB,MAAM72B,EAAMxC,EAChG,CASA,MAAAkF,CAAOwM,GACL,OAAO5oB,KAAKsc,SAAWsM,EAAMtM,SAAWtc,KAAKs+B,YAAc1V,EAAM0V,WAAat+B,KAAK0d,KAAKtB,OAAOwM,EAAMlL,OAAS1d,KAAKkgB,IAAI9D,OAAOwM,EAAM1I,IACtI,CAoBA,UAAA2xB,CAAW3pC,EAAU,CAAC,GACpB,IAAKlI,KAAKsc,QAAS,OAAO,KAC1B,MAAMzX,EAAOqD,EAAQrD,MAAQoiB,GAAS/B,WAAW,CAAC,EAAG,CACjDxH,KAAM1d,KAAK0d,OAEbo0B,EAAU5pC,EAAQ4pC,QAAU9xC,KAAO6E,GAAQqD,EAAQ4pC,QAAU5pC,EAAQ4pC,QAAU,EACjF,IAAIlvB,EAAQ,CAAC,QAAS,SAAU,OAAQ,QAAS,UAAW,WACxDlJ,EAAOxR,EAAQwR,KAKnB,OAJIrZ,MAAMO,QAAQsH,EAAQwR,QACxBkJ,EAAQ1a,EAAQwR,KAChBA,OAAOza,GAEFysC,GAAa7mC,EAAM7E,KAAK6hB,KAAKiwB,GAAU,IACzC5pC,EACHwa,QAAS,SACTE,QACAlJ,QAEJ,CAeA,kBAAAq4B,CAAmB7pC,EAAU,CAAC,GAC5B,OAAKlI,KAAKsc,QACHovB,GAAaxjC,EAAQrD,MAAQoiB,GAAS/B,WAAW,CAAC,EAAG,CAC1DxH,KAAM1d,KAAK0d,OACT1d,KAAM,IACLkI,EACHwa,QAAS,OACTE,MAAO,CAAC,QAAS,SAAU,QAC3B+oB,WAAW,IAPa,IAS5B,CAOA,UAAOtgC,IAAOk2B,GACZ,IAAKA,EAAUyQ,MAAM/qB,GAASknB,YAC5B,MAAM,IAAIx0B,EAAqB,2CAEjC,OAAOmV,GAAOyS,GAAWrjC,GAAKA,EAAEogC,WAAWlzB,KAAKC,IAClD,CAOA,UAAO45B,IAAO1D,GACZ,IAAKA,EAAUyQ,MAAM/qB,GAASknB,YAC5B,MAAM,IAAIx0B,EAAqB,2CAEjC,OAAOmV,GAAOyS,GAAWrjC,GAAKA,EAAEogC,WAAWlzB,KAAK65B,IAClD,CAWA,wBAAOgN,CAAkBvqC,EAAMosB,EAAK5rB,EAAU,CAAC,GAC7C,MAAM,OACF4U,EAAS,KAAI,gBACbqH,EAAkB,MAChBjc,EAMN,OAAOq/B,GALStjB,GAAOC,SAAS,CAC5BpH,SACAqH,kBACAG,aAAa,IAEqB5c,EAAMosB,EAC9C,CAKA,wBAAOoe,CAAkBxqC,EAAMosB,EAAK5rB,EAAU,CAAC,GAC7C,OAAO+e,GAASgrB,kBAAkBvqC,EAAMosB,EAAK5rB,EAC/C,CAcA,wBAAOiqC,CAAkBre,EAAK5rB,EAAU,CAAC,GACvC,MAAM,OACF4U,EAAS,KAAI,gBACbqH,EAAkB,MAChBjc,EACJ4lC,EAAc7pB,GAAOC,SAAS,CAC5BpH,SACAqH,kBACAG,aAAa,IAEjB,OAAO,IAAIgiB,GAAYwH,EAAaha,EACtC,CAYA,uBAAOse,CAAiB1qC,EAAM2qC,EAAcn7B,EAAO,CAAC,GAClD,GAAIqH,GAAY7W,IAAS6W,GAAY8zB,GACnC,MAAM,IAAI14B,EAAqB,iEAEjC,MAAM,OACFmD,EAAS,KAAI,gBACbqH,EAAkB,MAChBjN,EACJ42B,EAAc7pB,GAAOC,SAAS,CAC5BpH,SACAqH,kBACAG,aAAa,IAEjB,IAAKwpB,EAAY1xB,OAAOi2B,EAAav1B,QACnC,MAAM,IAAInD,EAAqB,4CAA4Cm0B,4CAA2DuE,EAAav1B,UAErJ,MAAM,OACJ3V,EAAM,KACNuW,EAAI,eACJiqB,EAAc,cACdtJ,GACEgU,EAAa9K,kBAAkB7/B,GACnC,OAAI22B,EACKpX,GAASwV,QAAQ4B,GAEjB6L,GAAoB/iC,EAAQuW,EAAMxG,EAAM,UAAUm7B,EAAal2B,SAAUzU,EAAMigC,EAE1F,CAQA,qBAAW7tB,GACT,OAAOA,CACT,CAMA,mBAAWI,GACT,OAAOA,CACT,CAMA,gCAAWC,GACT,OAAOA,CACT,CAMA,oBAAWE,GACT,OAAOA,CACT,CAMA,oBAAWC,GACT,OAAOA,CACT,CAMA,sBAAWC,GACT,OAAOA,CACT,CAMA,4BAAWG,GACT,OAAOA,CACT,CAMA,iCAAWE,GACT,OAAOA,CACT,CAMA,gCAAWE,GACT,OAAOA,CACT,CAMA,yBAAWC,GACT,OAAOA,CACT,CAMA,+BAAWE,GACT,OAAOA,CACT,CAMA,oCAAWC,GACT,OAAOA,CACT,CAMA,mCAAWC,GACT,OAAOA,CACT,CAMA,yBAAWC,GACT,OAAOA,CACT,CAMA,sCAAWC,GACT,OAAOA,CACT,CAMA,uBAAWC,GACT,OAAOA,CACT,CAMA,oCAAWC,GACT,OAAOA,CACT,CAMA,oCAAWC,GACT,OAAOA,CACT,CAMA,wBAAWC,GACT,OAAOA,CACT,CAMA,qCAAWC,GACT,OAAOA,CACT,CAMA,wBAAWC,GACT,OAAOA,CACT,CAMA,qCAAWC,GACT,OAAOA,CACT,EAMF,SAASukB,GAAiBmS,GACxB,GAAIrrB,GAASknB,WAAWmE,GACtB,OAAOA,EACF,GAAIA,GAAeA,EAAYhU,SAAW/U,GAAS+oB,EAAYhU,WACpE,OAAOrX,GAASglB,WAAWqG,GACtB,GAAIA,GAAsC,iBAAhBA,EAC/B,OAAOrrB,GAAS/B,WAAWotB,GAE3B,MAAM,IAAI34B,EAAqB,8BAA8B24B,qBAA+BA,IAEhG,CAIAzvC,EAAQokB,SAAWA,GACnBpkB,EAAQ+4B,SAAWA,GACnB/4B,EAAQimB,gBAAkBA,GAC1BjmB,EAAQya,SAAWA,EACnBza,EAAQwgC,KAAOA,GACfxgC,EAAQk9B,SAAWA,GACnBl9B,EAAQsmB,YAAcA,GACtBtmB,EAAQ2hB,SAAWA,GACnB3hB,EAAQ2Z,WAAaA,EACrB3Z,EAAQ0vC,QAXQ,QAYhB1vC,EAAQgZ,KAAOA,C","sources":["webpack://source-maps/ClientApp/node_modules/.pnpm/marked@4.3.0/node_modules/marked/lib/marked.cjs","webpack://source-maps/ClientApp/node_modules/.pnpm/luxon@3.5.0/node_modules/luxon/build/node/luxon.js"],"sourcesContent":["/**\n * marked v4.3.0 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n'use strict';\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, _toPropertyKey(descriptor.key), descriptor);\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}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\nexports.defaults = getDefaults();\nfunction changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nvar escapeTest = /[&<>\"']/;\nvar escapeReplace = new RegExp(escapeTest.source, 'g');\nvar escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nvar escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nvar escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nvar getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n};\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nvar unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n/**\n * @param {string} html\n */\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nvar caret = /(^|[^\\[])\\^/g;\n\n/**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\nvar nonWordAndColonTest = /[^\\w:]/g;\nvar originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n/**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n var prot;\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\nvar baseUrls = {};\nvar justDomain = /^[^:]+:\\/*[^/]*$/;\nvar protocol = /^([^:]+:)[\\s\\S]*$/;\nvar domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n/**\n * @param {string} base\n * @param {string} href\n */\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\nvar noopTest = {\n exec: function noopTest() {}\n};\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n var l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n var suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n var l = str.length;\n var level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\n// copied from https://stackoverflow.com/a/5450113/806777\n/**\n * @param {string} pattern\n * @param {number} count\n */\nfunction repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n var result = '';\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n count >>= 1;\n pattern += pattern;\n }\n return result + pattern;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n var href = link.href;\n var title = link.title ? escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n var token = {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n var indentInNode = matchIndentInNode[0];\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n }).join('\\n');\n}\n\n/**\n * Tokenizer\n */\nvar Tokenizer = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || exports.defaults;\n }\n var _proto = Tokenizer.prototype;\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n };\n _proto.code = function code(src) {\n var cap = this.rules.block.code.exec(src);\n if (cap) {\n var text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n };\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text: text\n };\n }\n };\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n if (cap) {\n var text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n var trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text,\n tokens: this.lexer.inline(text)\n };\n }\n };\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n var text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n var top = this.lexer.state.top;\n this.lexer.state.top = true;\n var tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: tokens,\n text: text\n };\n }\n };\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n if (cap) {\n var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;\n var bull = cap[1].trim();\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? \"\\\\d{1,9}\\\\\" + bull.slice(-1) : \"\\\\\" + bull;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n var itemRegex = new RegExp(\"^( {0,3}\" + bull + \")((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))\");\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) {\n // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, function (t) {\n return ' '.repeat(3 * t.length);\n });\n nextLine = src.split('\\n', 1)[0];\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n blankLine = false;\n if (!line && /^ *$/.test(nextLine)) {\n // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n var nextBulletRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))\");\n var hrRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)\");\n var fencesBeginRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:```|~~~)\");\n var headingBeginRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}#\");\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) {\n // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) {\n // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) {\n // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n var l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n var spacers = list.items[i].tokens.filter(function (t) {\n return t.type === 'space';\n });\n var hasMultipleLineBreaks = spacers.length > 0 && spacers.some(function (t) {\n return /\\n.*\\n/.test(t.raw);\n });\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n };\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n if (cap) {\n var token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n var text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.type = 'paragraph';\n token.text = text;\n token.tokens = this.lexer.inline(text);\n }\n return token;\n }\n };\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n if (cap) {\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n var href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n var title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag: tag,\n raw: cap[0],\n href: href,\n title: title\n };\n }\n };\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1]).map(function (c) {\n return {\n text: c\n };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i, j, k, row;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {\n return {\n text: c\n };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n return item;\n }\n }\n };\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n };\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n var text = cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text: text,\n tokens: this.lexer.inline(text)\n };\n }\n };\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n };\n _proto.escape = function escape$1(src) {\n var cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n };\n _proto.tag = function tag(src) {\n var cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]\n };\n }\n };\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n if (cap) {\n var trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n var lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n var href = cap[2];\n var title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n };\n _proto.reflink = function reflink(src, links) {\n var cap;\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n };\n _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n var match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDF70-\\uDF81\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n var nextChar = match[1] || match[2] || '';\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n var lLength = match[0].length - 1;\n var rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n var raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n var _text = raw.slice(1, -1);\n return {\n type: 'em',\n raw: raw,\n text: _text,\n tokens: this.lexer.inlineTokens(_text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n var text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw: raw,\n text: text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n };\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n };\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n var text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n _proto.url = function url(src, mangle) {\n var cap;\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n _proto.inlineText = function inlineText(src, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n if (cap) {\n var text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n return Tokenizer;\n}();\n\n/**\n * Block-Level Grammar\n */\nvar block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:.|\\n(?!\\n))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */).replace('bull', block.bullet).getRegex();\nblock.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\nblock.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n.replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n.replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n.getRegex();\nblock.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = _extends({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = _extends({}, block.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n});\n\nblock.gfm.table = edit(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n.replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n.getRegex();\nblock.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n.replace('table', block.gfm.table) // interrupt paragraphs with table\n.replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n.replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n.getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = _extends({}, block.normal, {\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+?\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '| \" + text + \"
\\n';\n }\n return '' + (escaped ? _code : escape(_code, true)) + '
\\n';\n }\n\n /**\n * @param {string} quote\n */;\n _proto.blockquote = function blockquote(quote) {\n return \"' + (escaped ? _code : escape(_code, true)) + '
\\n\" + quote + \"
\\n\";\n };\n _proto.html = function html(_html) {\n return _html;\n }\n\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */;\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n var id = this.options.headerPrefix + slugger.slug(raw);\n return \"
\\n' : '
\\n';\n };\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '' + type + '>\\n';\n }\n\n /**\n * @param {string} text\n */;\n _proto.listitem = function listitem(text) {\n return \"
\" + text + \"
\";\n };\n _proto.br = function br() {\n return this.options.xhtml ? 'An error occurred:
' + escape(e.message + '', true) + '';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n}\nfunction parseMarkdown(lexer, parser) {\n return function (src, opt, callback) {\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n var origOpt = _extends({}, opt);\n opt = _extends({}, marked.defaults, origOpt);\n var throwError = onError(opt.silent, opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected'));\n }\n checkSanitizeDeprecation(opt);\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e);\n }\n var done = function done(err) {\n var out;\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt);\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e;\n }\n }\n opt.highlight = highlight;\n return err ? throwError(err) : callback(null, out);\n };\n if (!highlight || highlight.length < 3) {\n return done();\n }\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n if (pending === 0) {\n done();\n }\n return;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(function (src) {\n return lexer(src, opt);\n }).then(function (tokens) {\n return opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(function () {\n return tokens;\n }) : tokens;\n }).then(function (tokens) {\n return parser(tokens, opt);\n }).then(function (html) {\n return opt.hooks ? opt.hooks.postprocess(html) : html;\n })[\"catch\"](throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n var _tokens = lexer(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n var html = parser(_tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e);\n }\n };\n}\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);\n}\n\n/**\n * Options\n */\n\nmarked.options = marked.setOptions = function (opt) {\n marked.defaults = _extends({}, marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n};\nmarked.getDefaults = getDefaults;\nmarked.defaults = exports.defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function () {\n var extensions = marked.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n args.forEach(function (pack) {\n // copy options to new object\n var opts = _extends({}, pack);\n\n // set async to true if it was set to true before\n opts.async = marked.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach(function (ext) {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if (ext.renderer) {\n // Renderer extensions\n var prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (ext.tokenizer) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer();\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n var ret = pack.renderer[prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n };\n for (var prop in pack.renderer) {\n _loop(prop);\n }\n opts.renderer = renderer;\n })();\n }\n if (pack.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n var ret = pack.tokenizer[prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n };\n for (var prop in pack.tokenizer) {\n _loop2(prop);\n }\n opts.tokenizer = tokenizer;\n })();\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n (function () {\n var hooks = marked.defaults.hooks || new Hooks();\n var _loop3 = function _loop3(prop) {\n var prevHook = hooks[prop];\n if (Hooks.passThroughHooks.has(prop)) {\n hooks[prop] = function (arg) {\n if (marked.defaults.async) {\n return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(function (ret) {\n return prevHook.call(hooks, ret);\n });\n }\n var ret = pack.hooks[prop].call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[prop] = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n var ret = pack.hooks[prop].apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n };\n for (var prop in pack.hooks) {\n _loop3(prop);\n }\n opts.hooks = hooks;\n })();\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n var _walkTokens = marked.defaults.walkTokens;\n opts.walkTokens = function (token) {\n var values = [];\n values.push(pack.walkTokens.call(this, token));\n if (_walkTokens) {\n values = values.concat(_walkTokens.call(this, token));\n }\n return values;\n };\n }\n marked.setOptions(opts);\n });\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens, callback) {\n var values = [];\n var _loop4 = function _loop4() {\n var token = _step.value;\n values = values.concat(callback.call(marked, token));\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n values = values.concat(marked.walkTokens(_cell.tokens, callback));\n }\n }\n break;\n }\n case 'list':\n {\n values = values.concat(marked.walkTokens(token.items, callback));\n break;\n }\n default:\n {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n values = values.concat(marked.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(marked.walkTokens(token.tokens, callback));\n }\n }\n }\n };\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n _loop4();\n }\n return values;\n};\n\n/**\n * Parse Inline\n * @param {string} src\n */\nmarked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);\n\n/**\n * Expose\n */\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\nmarked.Tokenizer = Tokenizer;\nmarked.Slugger = Slugger;\nmarked.Hooks = Hooks;\nmarked.parse = marked;\nvar options = marked.options;\nvar setOptions = marked.setOptions;\nvar use = marked.use;\nvar walkTokens = marked.walkTokens;\nvar parseInline = marked.parseInline;\nvar parse = marked;\nvar parser = Parser.parse;\nvar lexer = Lexer.lex;\n\nexports.Hooks = Hooks;\nexports.Lexer = Lexer;\nexports.Parser = Parser;\nexports.Renderer = Renderer;\nexports.Slugger = Slugger;\nexports.TextRenderer = TextRenderer;\nexports.Tokenizer = Tokenizer;\nexports.getDefaults = getDefaults;\nexports.lexer = lexer;\nexports.marked = marked;\nexports.options = options;\nexports.parse = parse;\nexports.parseInline = parseInline;\nexports.parser = parser;\nexports.setOptions = setOptions;\nexports.use = use;\nexports.walkTokens = walkTokens;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nclass InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nclass InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nclass InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nclass ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nclass InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nclass InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nclass ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n\n/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\nconst DATE_SHORT = {\n year: n,\n month: n,\n day: n\n};\nconst DATE_MED = {\n year: n,\n month: s,\n day: n\n};\nconst DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s\n};\nconst DATE_FULL = {\n year: n,\n month: l,\n day: n\n};\nconst DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l\n};\nconst TIME_SIMPLE = {\n hour: n,\n minute: n\n};\nconst TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n\n};\nconst TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\nconst TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\nconst TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hourCycle: \"h23\"\n};\nconst TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\"\n};\nconst TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: s\n};\nconst TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: l\n};\nconst DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n\n};\nconst DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\nconst DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n\n};\nconst DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\nconst DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n\n};\nconst DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s\n};\nconst DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\nconst DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l\n};\nconst DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\n\n/**\n * @interface\n */\nclass Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The IANA name of this zone.\n * Defaults to `name` if not overwritten by a subclass.\n * @abstract\n * @type {string}\n */\n get ianaName() {\n return this.name;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get isUniversal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n\nlet singleton$1 = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nclass SystemZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {SystemZone}\n */\n static get instance() {\n if (singleton$1 === null) {\n singleton$1 = new SystemZone();\n }\n return singleton$1;\n }\n\n /** @override **/\n get type() {\n return \"system\";\n }\n\n /** @override **/\n get name() {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, {\n format,\n locale\n }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"system\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n era: \"short\"\n });\n }\n return dtfCache[zone];\n}\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n era: 3,\n hour: 4,\n minute: 5,\n second: 6\n};\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n}\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const {\n type,\n value\n } = formatted[i];\n const pos = typeToPos[type];\n if (type === \"era\") {\n filled[pos] = value;\n } else if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nclass IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @deprecated For backward compatibility, this forwards to isValidZone, better use `isValidZone()` directly instead.\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return this.isValidZone(s);\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n if (!zone) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", {\n timeZone: zone\n }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /**\n * The type of zone. `iana` for all instances of `IANAZone`.\n * @override\n * @type {string}\n */\n get type() {\n return \"iana\";\n }\n\n /**\n * The name of this zone (i.e. the IANA zone name).\n * @override\n * @type {string}\n */\n get name() {\n return this.zoneName;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year:\n * Always returns false for all IANA zones.\n * @override\n * @type {boolean}\n */\n get isUniversal() {\n return false;\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, {\n format,\n locale\n }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /**\n * Returns the offset's value as a string\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @override\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n const date = new Date(ts);\n if (isNaN(date)) return NaN;\n const dtf = makeDTF(this.name);\n let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date);\n if (adOrBc === \"BC\") {\n year = -Math.abs(year) + 1;\n }\n\n // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n const adjustedHour = hour === 24 ? 0 : hour;\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0\n });\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @override\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /**\n * Return whether this Zone is valid.\n * @override\n * @type {boolean}\n */\n get isValid() {\n return this.valid;\n }\n}\n\n// todo - remap caching\n\nlet intlLFCache = {};\nfunction getCachedLF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlLFCache[key];\n if (!dtf) {\n dtf = new Intl.ListFormat(locString, opts);\n intlLFCache[key] = dtf;\n }\n return dtf;\n}\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const {\n base,\n ...cacheKeyOpts\n } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else {\n sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\n return sysLocaleCache;\n }\n}\nlet weekInfoCache = {};\nfunction getCachedWeekInfo(locString) {\n let data = weekInfoCache[locString];\n if (!data) {\n const locale = new Intl.Locale(locString);\n // browsers currently implement this as a property, but spec says it should be a getter function\n data = \"getWeekInfo\" in locale ? locale.getWeekInfo() : locale.weekInfo;\n weekInfoCache[locString] = data;\n }\n return data;\n}\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n // private subtags and unicode subtags have ordering requirements,\n // and we're not properly parsing this, so just strip out the\n // private ones if they exist.\n const xIndex = localeStr.indexOf(\"-x-\");\n if (xIndex !== -1) {\n localeStr = localeStr.substring(0, xIndex);\n }\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n let selectedStr;\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n selectedStr = localeStr;\n } catch (e) {\n const smaller = localeStr.substring(0, uIndex);\n options = getCachedDTF(smaller).resolvedOptions();\n selectedStr = smaller;\n }\n const {\n numberingSystem,\n calendar\n } = options;\n return [selectedStr, numberingSystem, calendar];\n }\n}\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (outputCalendar || numberingSystem) {\n if (!localeStr.includes(\"-u-\")) {\n localeStr += \"-u\";\n }\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n}\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2009, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\nfunction listStuff(loc, length, englishFn, intlFn) {\n const mode = loc.listingMode();\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return loc.numberingSystem === \"latn\" || !loc.locale || loc.locale.startsWith(\"en\") || new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\";\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n const {\n padTo,\n floor,\n ...otherOpts\n } = opts;\n if (!forceSimple || Object.keys(otherOpts).length > 0) {\n const intlOpts = {\n useGrouping: false,\n ...opts\n };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.originalZone = undefined;\n let z = undefined;\n if (this.opts.timeZone) {\n // Don't apply any workarounds if a timeZone is explicitly provided in opts\n this.dt = dt;\n } else if (dt.zone.type === \"fixed\") {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata so\n // we manually apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.offset === 0 ? dt : dt.setZone(\"UTC\").plus({\n minutes: dt.offset\n });\n this.originalZone = dt.zone;\n }\n } else if (dt.zone.type === \"system\") {\n this.dt = dt;\n } else if (dt.zone.type === \"iana\") {\n this.dt = dt;\n z = dt.zone.name;\n } else {\n // Custom zones can have any offset / offsetName so we just manually\n // apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.setZone(\"UTC\").plus({\n minutes: dt.offset\n });\n this.originalZone = dt.zone;\n }\n const intlOpts = {\n ...this.opts\n };\n intlOpts.timeZone = intlOpts.timeZone || z;\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n format() {\n if (this.originalZone) {\n // If we have to substitute in the actual zone name, we have to use\n // formatToParts so that the timezone can be replaced.\n return this.formatToParts().map(({\n value\n }) => value).join(\"\");\n }\n return this.dtf.format(this.dt.toJSDate());\n }\n formatToParts() {\n const parts = this.dtf.formatToParts(this.dt.toJSDate());\n if (this.originalZone) {\n return parts.map(part => {\n if (part.type === \"timeZoneName\") {\n const offsetName = this.originalZone.offsetName(this.dt.ts, {\n locale: this.dt.locale,\n format: this.opts.timeZoneName\n });\n return {\n ...part,\n value: offsetName\n };\n } else {\n return part;\n }\n });\n }\n return parts;\n }\n resolvedOptions() {\n return this.dtf.resolvedOptions();\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = {\n style: \"long\",\n ...opts\n };\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\nconst fallbackWeekSettings = {\n firstDay: 1,\n minimalDays: 4,\n weekend: [6, 7]\n};\n\n/**\n * @private\n */\n\nclass Locale {\n static fromOpts(opts) {\n return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.weekSettings, opts.defaultToEN);\n }\n static create(locale, numberingSystem, outputCalendar, weekSettings, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale;\n // the system locale is useful for human-readable strings but annoying for parsing/formatting known formats\n const localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\n const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\n const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n const weekSettingsR = validateWeekSettings(weekSettings) || Settings.defaultWeekSettings;\n return new Locale(localeR, numberingSystemR, outputCalendarR, weekSettingsR, specifiedLocale);\n }\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n static fromObject({\n locale,\n numberingSystem,\n outputCalendar,\n weekSettings\n } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar, weekSettings);\n }\n constructor(locale, numbering, outputCalendar, weekSettings, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.weekSettings = weekSettings;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n this.weekdaysCache = {\n format: {},\n standalone: {}\n };\n this.monthsCache = {\n format: {},\n standalone: {}\n };\n this.meridiemCache = null;\n this.eraCache = {};\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n return this.fastNumbersCached;\n }\n listingMode() {\n const isActuallyEn = this.isEnglish();\n const hasNoWeirdness = (this.numberingSystem === null || this.numberingSystem === \"latn\") && (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\n }\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(alts.locale || this.specifiedLocale, alts.numberingSystem || this.numberingSystem, alts.outputCalendar || this.outputCalendar, validateWeekSettings(alts.weekSettings) || this.weekSettings, alts.defaultToEN || false);\n }\n }\n redefaultToEN(alts = {}) {\n return this.clone({\n ...alts,\n defaultToEN: true\n });\n }\n redefaultToSystem(alts = {}) {\n return this.clone({\n ...alts,\n defaultToEN: false\n });\n }\n months(length, format = false) {\n return listStuff(this, length, months, () => {\n const intl = format ? {\n month: length,\n day: \"numeric\"\n } : {\n month: length\n },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths(dt => this.extract(dt, intl, \"month\"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n weekdays(length, format = false) {\n return listStuff(this, length, weekdays, () => {\n const intl = format ? {\n weekday: length,\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\"\n } : {\n weekday: length\n },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays(dt => this.extract(dt, intl, \"weekday\"));\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n meridiems() {\n return listStuff(this, undefined, () => meridiems, () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = {\n hour: \"numeric\",\n hourCycle: \"h12\"\n };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(dt => this.extract(dt, intl, \"dayperiod\"));\n }\n return this.meridiemCache;\n });\n }\n eras(length) {\n return listStuff(this, length, eras, () => {\n const intl = {\n era: length\n };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(dt => this.extract(dt, intl, \"era\"));\n }\n return this.eraCache[length];\n });\n }\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find(m => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n listFormatter(opts = {}) {\n return getCachedLF(this.intl, opts);\n }\n isEnglish() {\n return this.locale === \"en\" || this.locale.toLowerCase() === \"en-us\" || new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\");\n }\n getWeekSettings() {\n if (this.weekSettings) {\n return this.weekSettings;\n } else if (!hasLocaleWeekInfo()) {\n return fallbackWeekSettings;\n } else {\n return getCachedWeekInfo(this.locale);\n }\n }\n getStartOfWeek() {\n return this.getWeekSettings().firstDay;\n }\n getMinDaysInFirstWeek() {\n return this.getWeekSettings().minimalDays;\n }\n getWeekendDays() {\n return this.getWeekSettings().weekend;\n }\n equals(other) {\n return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar;\n }\n toString() {\n return `Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`;\n }\n}\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nclass FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /**\n * The type of zone. `fixed` for all instances of `FixedOffsetZone`.\n * @override\n * @type {string}\n */\n get type() {\n return \"fixed\";\n }\n\n /**\n * The name of this zone.\n * All fixed zones' names always start with \"UTC\" (plus optional offset)\n * @override\n * @type {string}\n */\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n /**\n * The IANA name of this zone, i.e. `Etc/UTC` or `Etc/GMT+/-nn`\n *\n * @override\n * @type {string}\n */\n get ianaName() {\n if (this.fixed === 0) {\n return \"Etc/UTC\";\n } else {\n return `Etc/GMT${formatOffset(-this.fixed, \"narrow\")}`;\n }\n }\n\n /**\n * Returns the offset's common name at the specified timestamp.\n *\n * For fixed offset zones this equals to the zone name.\n * @override\n */\n offsetName() {\n return this.name;\n }\n\n /**\n * Returns the offset's value as a string\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year:\n * Always returns true for all fixed offset zones.\n * @override\n * @type {boolean}\n */\n get isUniversal() {\n return true;\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n *\n * For fixed offset zones, this is constant and does not depend on a timestamp.\n * @override\n * @return {number}\n */\n offset() {\n return this.fixed;\n }\n\n /**\n * Return whether this Zone is equal to another zone (i.e. also fixed and same offset)\n * @override\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /**\n * Return whether this Zone is valid:\n * All fixed offset zones are valid.\n * @override\n * @type {boolean}\n */\n get isValid() {\n return true;\n }\n}\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nclass InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n\n/**\n * @private\n */\nfunction normalizeZone(input, defaultZone) {\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"default\") return defaultZone;else if (lowered === \"local\" || lowered === \"system\") return SystemZone.instance;else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && \"offset\" in input && typeof input.offset === \"function\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n\nconst numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\"\n};\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881]\n};\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\nfunction parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\n// cache of {numberingSystem: {append: regex}}\nlet digitRegexCache = {};\nfunction resetDigitRegexCache() {\n digitRegexCache = {};\n}\nfunction digitRegex({\n numberingSystem\n}, append = \"\") {\n const ns = numberingSystem || \"latn\";\n if (!digitRegexCache[ns]) {\n digitRegexCache[ns] = {};\n }\n if (!digitRegexCache[ns][append]) {\n digitRegexCache[ns][append] = new RegExp(`${numberingSystems[ns]}${append}`);\n }\n return digitRegexCache[ns][append];\n}\n\nlet now = () => Date.now(),\n defaultZone = \"system\",\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n twoDigitCutoffYear = 60,\n throwOnInvalid,\n defaultWeekSettings = null;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nclass Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * Use the value \"system\" to reset this value to the system's time zone.\n * @type {string}\n */\n static set defaultZone(zone) {\n defaultZone = zone;\n }\n\n /**\n * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\n * The default value is the system's time zone (the one set on the machine that runs this code).\n * @type {Zone}\n */\n static get defaultZone() {\n return normalizeZone(defaultZone, SystemZone.instance);\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * @typedef {Object} WeekSettings\n * @property {number} firstDay\n * @property {number} minimalDays\n * @property {number[]} weekend\n */\n\n /**\n * @return {WeekSettings|null}\n */\n static get defaultWeekSettings() {\n return defaultWeekSettings;\n }\n\n /**\n * Allows overriding the default locale week settings, i.e. the start of the week, the weekend and\n * how many days are required in the first week of a year.\n * Does not affect existing instances.\n *\n * @param {WeekSettings|null} weekSettings\n */\n static set defaultWeekSettings(weekSettings) {\n defaultWeekSettings = validateWeekSettings(weekSettings);\n }\n\n /**\n * Get the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n * @type {number}\n */\n static get twoDigitCutoffYear() {\n return twoDigitCutoffYear;\n }\n\n /**\n * Set the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n * @type {number}\n * @example Settings.twoDigitCutoffYear = 0 // all 'yy' are interpreted as 20th century\n * @example Settings.twoDigitCutoffYear = 99 // all 'yy' are interpreted as 21st century\n * @example Settings.twoDigitCutoffYear = 50 // '49' -> 2049; '50' -> 1950\n * @example Settings.twoDigitCutoffYear = 1950 // interpreted as 50\n * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpreted as 50\n */\n static set twoDigitCutoffYear(cutoffYear) {\n twoDigitCutoffYear = cutoffYear % 100;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n DateTime.resetCache();\n resetDigitRegexCache();\n }\n}\n\nclass Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\"unit out of range\", `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`);\n}\nfunction dayOfWeek(year, month, day) {\n const d = new Date(Date.UTC(year, month - 1, day));\n if (year < 100 && year >= 0) {\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n const js = d.getUTCDay();\n return js === 0 ? 7 : js;\n}\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex(i => i < ordinal),\n day = ordinal - table[month0];\n return {\n month: month0 + 1,\n day\n };\n}\nfunction isoWeekdayToLocal(isoWeekday, startOfWeek) {\n return (isoWeekday - startOfWeek + 7) % 7 + 1;\n}\n\n/**\n * @private\n */\n\nfunction gregorianToWeek(gregObj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const {\n year,\n month,\n day\n } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = isoWeekdayToLocal(dayOfWeek(year, month, day), startOfWeek);\n let weekNumber = Math.floor((ordinal - weekday + 14 - minDaysInFirstWeek) / 7),\n weekYear;\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear, minDaysInFirstWeek, startOfWeek);\n } else if (weekNumber > weeksInWeekYear(year, minDaysInFirstWeek, startOfWeek)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n return {\n weekYear,\n weekNumber,\n weekday,\n ...timeObject(gregObj)\n };\n}\nfunction weekToGregorian(weekData, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const {\n weekYear,\n weekNumber,\n weekday\n } = weekData,\n weekdayOfJan4 = isoWeekdayToLocal(dayOfWeek(weekYear, 1, minDaysInFirstWeek), startOfWeek),\n yearInDays = daysInYear(weekYear);\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 7 + minDaysInFirstWeek,\n year;\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n const {\n month,\n day\n } = uncomputeOrdinal(year, ordinal);\n return {\n year,\n month,\n day,\n ...timeObject(weekData)\n };\n}\nfunction gregorianToOrdinal(gregData) {\n const {\n year,\n month,\n day\n } = gregData;\n const ordinal = computeOrdinal(year, month, day);\n return {\n year,\n ordinal,\n ...timeObject(gregData)\n };\n}\nfunction ordinalToGregorian(ordinalData) {\n const {\n year,\n ordinal\n } = ordinalData;\n const {\n month,\n day\n } = uncomputeOrdinal(year, ordinal);\n return {\n year,\n month,\n day,\n ...timeObject(ordinalData)\n };\n}\n\n/**\n * Check if local week units like localWeekday are used in obj.\n * If so, validates that they are not mixed with ISO week units and then copies them to the normal week unit properties.\n * Modifies obj in-place!\n * @param obj the object values\n */\nfunction usesLocalWeekValues(obj, loc) {\n const hasLocaleWeekData = !isUndefined(obj.localWeekday) || !isUndefined(obj.localWeekNumber) || !isUndefined(obj.localWeekYear);\n if (hasLocaleWeekData) {\n const hasIsoWeekData = !isUndefined(obj.weekday) || !isUndefined(obj.weekNumber) || !isUndefined(obj.weekYear);\n if (hasIsoWeekData) {\n throw new ConflictingSpecificationError(\"Cannot mix locale-based week fields with ISO-based week fields\");\n }\n if (!isUndefined(obj.localWeekday)) obj.weekday = obj.localWeekday;\n if (!isUndefined(obj.localWeekNumber)) obj.weekNumber = obj.localWeekNumber;\n if (!isUndefined(obj.localWeekYear)) obj.weekYear = obj.localWeekYear;\n delete obj.localWeekday;\n delete obj.localWeekNumber;\n delete obj.localWeekYear;\n return {\n minDaysInFirstWeek: loc.getMinDaysInFirstWeek(),\n startOfWeek: loc.getStartOfWeek()\n };\n } else {\n return {\n minDaysInFirstWeek: 4,\n startOfWeek: 1\n };\n }\n}\nfunction hasInvalidWeekData(obj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear, minDaysInFirstWeek, startOfWeek)),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.weekNumber);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\nfunction hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\nfunction hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\nfunction hasInvalidTimeData(obj) {\n const {\n hour,\n minute,\n second,\n millisecond\n } = obj;\n const validHour = integerBetween(hour, 0, 23) || hour === 24 && minute === 0 && second === 0 && millisecond === 0,\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n\n/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\n/**\n * @private\n */\n\n// TYPES\n\nfunction isUndefined(o) {\n return typeof o === \"undefined\";\n}\nfunction isNumber(o) {\n return typeof o === \"number\";\n}\nfunction isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\nfunction isString(o) {\n return typeof o === \"string\";\n}\nfunction isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nfunction hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\nfunction hasLocaleWeekInfo() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.Locale && (\"weekInfo\" in Intl.Locale.prototype || \"getWeekInfo\" in Intl.Locale.prototype);\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nfunction maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\nfunction bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\nfunction pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nfunction validateWeekSettings(settings) {\n if (settings == null) {\n return null;\n } else if (typeof settings !== \"object\") {\n throw new InvalidArgumentError(\"Week settings must be an object\");\n } else {\n if (!integerBetween(settings.firstDay, 1, 7) || !integerBetween(settings.minimalDays, 1, 7) || !Array.isArray(settings.weekend) || settings.weekend.some(v => !integerBetween(v, 1, 7))) {\n throw new InvalidArgumentError(\"Invalid week settings\");\n }\n return {\n firstDay: settings.firstDay,\n minimalDays: settings.minimalDays,\n weekend: Array.from(settings.weekend)\n };\n }\n}\n\n// NUMBERS AND STRINGS\n\nfunction integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nfunction floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\nfunction padStart(input, n = 2) {\n const isNeg = input < 0;\n let padded;\n if (isNeg) {\n padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n } else {\n padded = (\"\" + input).padStart(n, \"0\");\n }\n return padded;\n}\nfunction parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\nfunction parseFloating(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseFloat(string);\n }\n}\nfunction parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\nfunction roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nfunction isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\nfunction daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// convert a calendar object to a local timestamp (epoch, but with the offset baked in)\nfunction objToLocalTS(obj) {\n let d = Date.UTC(obj.year, obj.month - 1, obj.day, obj.hour, obj.minute, obj.second, obj.millisecond);\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n // set the month and day again, this is necessary because year 2000 is a leap year, but year 100 is not\n // so if obj.year is in 99, but obj.day makes it roll over into year 100,\n // the calculations done by Date.UTC are using year 2000 - which is incorrect\n d.setUTCFullYear(obj.year, obj.month - 1, obj.day);\n }\n return +d;\n}\n\n// adapted from moment.js: https://github.com/moment/moment/blob/000ac1800e620f770f4eb31b5ae908f6167b0ab2/src/lib/units/week-calendar-utils.js\nfunction firstWeekOffset(year, minDaysInFirstWeek, startOfWeek) {\n const fwdlw = isoWeekdayToLocal(dayOfWeek(year, 1, minDaysInFirstWeek), startOfWeek);\n return -fwdlw + minDaysInFirstWeek - 1;\n}\nfunction weeksInWeekYear(weekYear, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const weekOffset = firstWeekOffset(weekYear, minDaysInFirstWeek, startOfWeek);\n const weekOffsetNext = firstWeekOffset(weekYear + 1, minDaysInFirstWeek, startOfWeek);\n return (daysInYear(weekYear) - weekOffset + weekOffsetNext) / 7;\n}\nfunction untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > Settings.twoDigitCutoffYear ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nfunction parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\"\n };\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n const modified = {\n timeZoneName: offsetFormat,\n ...intlOpts\n };\n const parsed = new Intl.DateTimeFormat(locale, modified).formatToParts(date).find(m => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n}\n\n// signedOffset('-5', '30') -> -330\nfunction signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nfunction asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue)) throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\nfunction normalizeObject(obj, normalizer) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\n/**\n * Returns the offset's value as a string\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\nfunction formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\nfunction timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n\n/**\n * @private\n */\n\nconst monthsLong = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\nconst monthsShort = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nconst monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\nfunction months(length) {\n switch (length) {\n case \"narrow\":\n return [...monthsNarrow];\n case \"short\":\n return [...monthsShort];\n case \"long\":\n return [...monthsLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\nconst weekdaysLong = [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"];\nconst weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\nconst weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\nfunction weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [...weekdaysNarrow];\n case \"short\":\n return [...weekdaysShort];\n case \"long\":\n return [...weekdaysLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\nconst meridiems = [\"AM\", \"PM\"];\nconst erasLong = [\"Before Christ\", \"Anno Domini\"];\nconst erasShort = [\"BC\", \"AD\"];\nconst erasNarrow = [\"B\", \"A\"];\nfunction eras(length) {\n switch (length) {\n case \"narrow\":\n return [...erasNarrow];\n case \"short\":\n return [...erasShort];\n case \"long\":\n return [...erasLong];\n default:\n return null;\n }\n}\nfunction meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\nfunction weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\nfunction monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\nfunction eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\nfunction formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"]\n };\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow ? singular ? lilUnits[1] : lilUnits[2] || lilUnits[1] : singular ? units[unit][0] : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\nconst macroTokenToFormatOpts = {\n D: DATE_SHORT,\n DD: DATE_MED,\n DDD: DATE_FULL,\n DDDD: DATE_HUGE,\n t: TIME_SIMPLE,\n tt: TIME_WITH_SECONDS,\n ttt: TIME_WITH_SHORT_OFFSET,\n tttt: TIME_WITH_LONG_OFFSET,\n T: TIME_24_SIMPLE,\n TT: TIME_24_WITH_SECONDS,\n TTT: TIME_24_WITH_SHORT_OFFSET,\n TTTT: TIME_24_WITH_LONG_OFFSET,\n f: DATETIME_SHORT,\n ff: DATETIME_MED,\n fff: DATETIME_FULL,\n ffff: DATETIME_HUGE,\n F: DATETIME_SHORT_WITH_SECONDS,\n FF: DATETIME_MED_WITH_SECONDS,\n FFF: DATETIME_FULL_WITH_SECONDS,\n FFFF: DATETIME_HUGE_WITH_SECONDS\n};\n\n/**\n * @private\n */\n\nclass Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n static parseFormat(fmt) {\n // white-space is always considered a literal in user-provided formats\n // the \" \" token has a special meaning (see unitForToken)\n\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({\n literal: bracketed || /^\\s+$/.test(currentFull),\n val: currentFull\n });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({\n literal: /^\\s+$/.test(currentFull),\n val: currentFull\n });\n }\n currentFull = c;\n current = c;\n }\n }\n if (currentFull.length > 0) {\n splits.push({\n literal: bracketed || /^\\s+$/.test(currentFull),\n val: currentFull\n });\n }\n return splits;\n }\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, {\n ...this.opts,\n ...opts\n });\n return df.format();\n }\n dtFormatter(dt, opts = {}) {\n return this.loc.dtFormatter(dt, {\n ...this.opts,\n ...opts\n });\n }\n formatDateTime(dt, opts) {\n return this.dtFormatter(dt, opts).format();\n }\n formatDateTimeParts(dt, opts) {\n return this.dtFormatter(dt, opts).formatToParts();\n }\n formatInterval(interval, opts) {\n const df = this.dtFormatter(interval.start, opts);\n return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate());\n }\n resolvedOptions(dt, opts) {\n return this.dtFormatter(dt, opts).resolvedOptions();\n }\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n const opts = {\n ...this.opts\n };\n if (p > 0) {\n opts.padTo = p;\n }\n return this.loc.numberFormatter(opts).format(n);\n }\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = opts => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () => knownEnglish ? meridiemForDateTime(dt) : string({\n hour: \"numeric\",\n hourCycle: \"h12\"\n }, \"dayperiod\"),\n month = (length, standalone) => knownEnglish ? monthForDateTime(dt, length) : string(standalone ? {\n month: length\n } : {\n month: length,\n day: \"numeric\"\n }, \"month\"),\n weekday = (length, standalone) => knownEnglish ? weekdayForDateTime(dt, length) : string(standalone ? {\n weekday: length\n } : {\n weekday: length,\n month: \"long\",\n day: \"numeric\"\n }, \"weekday\"),\n maybeMacro = token => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = length => knownEnglish ? eraForDateTime(dt, length) : string({\n era: length\n }, \"era\"),\n tokenToString = token => {\n // Where possible: https://cldr.unicode.org/translation/date-time/date-time-symbols\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // fractional seconds\n case \"uu\":\n return this.num(Math.floor(dt.millisecond / 10), 2);\n case \"uuu\":\n return this.num(Math.floor(dt.millisecond / 100));\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({\n format: \"narrow\",\n allowZ: this.opts.allowZ\n });\n case \"ZZ\":\n // like +06:00\n return formatOffset({\n format: \"short\",\n allowZ: this.opts.allowZ\n });\n case \"ZZZ\":\n // like +0600\n return formatOffset({\n format: \"techie\",\n allowZ: this.opts.allowZ\n });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, {\n format: \"short\",\n locale: this.loc.locale\n });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, {\n format: \"long\",\n locale: this.loc.locale\n });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({\n day: \"numeric\"\n }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({\n day: \"2-digit\"\n }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter ? string({\n month: \"numeric\",\n day: \"numeric\"\n }, \"month\") : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter ? string({\n month: \"2-digit\",\n day: \"numeric\"\n }, \"month\") : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter ? string({\n month: \"numeric\"\n }, \"month\") : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter ? string({\n month: \"2-digit\"\n }, \"month\") : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({\n year: \"numeric\"\n }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter ? string({\n year: \"2-digit\"\n }, \"year\") : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter ? string({\n year: \"numeric\"\n }, \"year\") : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter ? string({\n year: \"numeric\"\n }, \"year\") : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"n\":\n return this.num(dt.localWeekNumber);\n case \"nn\":\n return this.num(dt.localWeekNumber, 2);\n case \"ii\":\n return this.num(dt.localWeekYear.toString().slice(-2), 2);\n case \"iiii\":\n return this.num(dt.localWeekYear, 4);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n formatDurationFromString(dur, fmt) {\n const tokenToField = token => {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"w\":\n return \"week\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n default:\n return null;\n }\n },\n tokenToString = lildur => token => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce((found, {\n literal,\n val\n }) => literal ? found : found.concat(val), []),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter(t => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nconst ianaRegex = /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\nfunction combineExtractors(...extractors) {\n return m => extractors.reduce(([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [{\n ...mergedVals,\n ...val\n }, zone || mergedZone, next];\n }, [{}, null, 1]).slice(0, 2);\n}\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/;\nconst isoExtendedZone = `(?:${offsetRegex.source}?(?:\\\\[(${ianaRegex.source})\\\\])?)?`;\nconst isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\nconst isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);\nconst isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`);\nconst isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\nconst isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\nconst isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\nconst extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\nconst extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\nconst sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\nconst sqlTimeRegex = RegExp(`${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`);\nconst sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1)\n };\n return [item, null, cursor + 3];\n}\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3])\n };\n return [item, null, cursor + 4];\n}\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration = /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\nfunction extractISODuration(match) {\n const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] = match;\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n const maybeNegate = (num, force = false) => num !== undefined && (force || num && hasNegativePrefix) ? -num : num;\n return [{\n years: maybeNegate(parseFloating(yearStr)),\n months: maybeNegate(parseFloating(monthStr)),\n weeks: maybeNegate(parseFloating(weekStr)),\n days: maybeNegate(parseFloating(dayStr)),\n hours: maybeNegate(parseFloating(hourStr)),\n minutes: maybeNegate(parseFloating(minuteStr)),\n seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds)\n }];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n};\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr)\n };\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday = weekdayStr.length > 3 ? weekdaysLong.indexOf(weekdayStr) + 1 : weekdaysShort.indexOf(weekdayStr) + 1;\n }\n return result;\n}\n\n// RFC 2822/5322\nconst rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\nfunction extractRFC2822(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr, obsOffset, milOffset, offHourStr, offMinuteStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n return [result, new FixedOffsetZone(offset)];\n}\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^()]*\\)|[\\n\\t]/g, \" \").replace(/(\\s\\s+)/g, \" \").trim();\n}\n\n// http date\n\nconst rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 = /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\nconst extractISOYmdTimeAndOffset = combineExtractors(extractISOYmd, extractISOTime, extractISOOffset, extractIANAZone);\nconst extractISOWeekTimeAndOffset = combineExtractors(extractISOWeekData, extractISOTime, extractISOOffset, extractIANAZone);\nconst extractISOOrdinalDateAndTime = combineExtractors(extractISOOrdinalData, extractISOTime, extractISOOffset, extractIANAZone);\nconst extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset, extractIANAZone);\n\n/*\n * @private\n */\n\nfunction parseISODate(s) {\n return parse(s, [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset], [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime], [isoTimeCombinedRegex, extractISOTimeAndOffset]);\n}\nfunction parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\nfunction parseHTTPDate(s) {\n return parse(s, [rfc1123, extractRFC1123Or850], [rfc850, extractRFC1123Or850], [ascii, extractASCII]);\n}\nfunction parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\nfunction parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(extractISOTime, extractISOOffset, extractIANAZone);\nfunction parseSQL(s) {\n return parse(s, [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]);\n}\n\nconst INVALID$2 = \"Invalid Duration\";\n\n// unit conversion constants\nconst lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000\n },\n hours: {\n minutes: 60,\n seconds: 60 * 60,\n milliseconds: 60 * 60 * 1000\n },\n minutes: {\n seconds: 60,\n milliseconds: 60 * 1000\n },\n seconds: {\n milliseconds: 1000\n }\n },\n casualMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000\n },\n ...lowOrderMatrix\n },\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: daysInYearAccurate * 24 / 4,\n minutes: daysInYearAccurate * 24 * 60 / 4,\n seconds: daysInYearAccurate * 24 * 60 * 60 / 4,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000 / 4\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000\n },\n ...lowOrderMatrix\n };\n\n// units ordered by size\nconst orderedUnits$1 = [\"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\"];\nconst reverseUnits = orderedUnits$1.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone$1(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : {\n ...dur.values,\n ...(alts.values || {})\n },\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n matrix: alts.matrix || dur.matrix\n };\n return new Duration(conf);\n}\nfunction durationToMillis(matrix, vals) {\n var _vals$milliseconds;\n let sum = (_vals$milliseconds = vals.milliseconds) != null ? _vals$milliseconds : 0;\n for (const unit of reverseUnits.slice(1)) {\n if (vals[unit]) {\n sum += vals[unit] * matrix[unit][\"milliseconds\"];\n }\n }\n return sum;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n // the logic below assumes the overall value of the duration is positive\n // if this is not the case, factor is used to make it so\n const factor = durationToMillis(matrix, vals) < 0 ? -1 : 1;\n orderedUnits$1.reduceRight((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const previousVal = vals[previous] * factor;\n const conv = matrix[current][previous];\n\n // if (previousVal < 0):\n // lower order unit is negative (e.g. { years: 2, days: -2 })\n // normalize this by reducing the higher order unit by the appropriate amount\n // and increasing the lower order unit\n // this can never make the higher order unit negative, because this function only operates\n // on positive durations, so the amount of time represented by the lower order unit cannot\n // be larger than the higher order unit\n // else:\n // lower order unit is positive (e.g. { years: 2, days: 450 } or { years: -2, days: 450 })\n // in this case we attempt to convert as much as possible from the lower order unit into\n // the higher order one\n //\n // Math.floor takes care of both of these cases, rounding away from 0\n // if previousVal < 0 it makes the absolute value larger\n // if previousVal >= it makes the absolute value smaller\n const rollUp = Math.floor(previousVal / conv);\n vals[current] += rollUp * factor;\n vals[previous] -= rollUp * conv * factor;\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n\n // try to convert any decimals into smaller units if possible\n // for example for { years: 2.5, days: 0, seconds: 0 } we want to get { years: 2, days: 182, hours: 12 }\n orderedUnits$1.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const fraction = vals[previous] % 1;\n vals[previous] -= fraction;\n vals[current] += fraction * matrix[previous][current];\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n// Remove all properties with a value of 0 from an object\nfunction removeZeroes(vals) {\n const newVals = {};\n for (const [key, value] of Object.entries(vals)) {\n if (value !== 0) {\n newVals[key] = value;\n }\n }\n return newVals;\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nclass Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n let matrix = accurate ? accurateMatrix : casualMatrix;\n if (config.matrix) {\n matrix = config.matrix;\n }\n\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = matrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject({\n milliseconds: count\n }, opts);\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {Object} [opts=[]] - options for creating this Duration\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the custom conversion system to use\n * @return {Duration}\n */\n static fromObject(obj, opts = {}) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(`Duration.fromObject: argument expected to be an object, got ${obj === null ? \"null\" : typeof obj}`);\n }\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit),\n loc: Locale.fromObject(opts),\n conversionAccuracy: opts.conversionAccuracy,\n matrix: opts.matrix\n });\n }\n\n /**\n * Create a Duration from DurationLike.\n *\n * @param {Object | number | Duration} durationLike\n * One of:\n * - object with keys like 'years' and 'hours'.\n * - number representing milliseconds\n * - Duration instance\n * @return {Duration}\n */\n static fromDurationLike(durationLike) {\n if (isNumber(durationLike)) {\n return Duration.fromMillis(durationLike);\n } else if (Duration.isDuration(durationLike)) {\n return durationLike;\n } else if (typeof durationLike === \"object\") {\n return Duration.fromObject(durationLike);\n } else {\n throw new InvalidArgumentError(`Unknown duration argument ${durationLike} of type ${typeof durationLike}`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the preset conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({\n invalid\n });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\"\n }[unit ? unit.toLowerCase() : unit];\n if (!normalized) throw new InvalidUnitError(unit);\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return o && o.isLuxonDuration || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `w` for weeks\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * Tokens can be escaped by wrapping with single quotes.\n * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = {\n ...opts,\n floor: opts.round !== false && opts.floor !== false\n };\n return this.isValid ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt) : INVALID$2;\n }\n\n /**\n * Returns a string representation of a Duration with all units included.\n * To modify its behavior, use `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options\n * @param {Object} opts - Formatting options. Accepts the same keys as the options parameter of the native `Intl.NumberFormat` constructor, as well as `listStyle`.\n * @param {string} [opts.listStyle='narrow'] - How to format the merged list. Corresponds to the `style` property of the options parameter of the native `Intl.ListFormat` constructor.\n * @example\n * ```js\n * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })\n * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'\n * dur.toHuman({ listStyle: \"long\" }) //=> '1 day, 5 hours, and 6 minutes'\n * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 day, 5 hr, 6 min'\n * ```\n */\n toHuman(opts = {}) {\n if (!this.isValid) return INVALID$2;\n const l = orderedUnits$1.map(unit => {\n const val = this.values[unit];\n if (isUndefined(val)) {\n return null;\n }\n return this.loc.numberFormatter({\n style: \"unit\",\n unitDisplay: \"long\",\n ...opts,\n unit: unit.slice(0, -1)\n }).format(val);\n }).filter(n => n);\n return this.loc.listFormatter({\n type: \"conjunction\",\n style: opts.listStyle || \"narrow\",\n ...opts\n }).format(l);\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject() {\n if (!this.isValid) return {};\n return {\n ...this.values\n };\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0) s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n opts = {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\",\n ...opts,\n includeOffset: false\n };\n const dateTime = DateTime.fromMillis(millis, {\n zone: \"UTC\"\n });\n return dateTime.toISOTime(opts);\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns a string representation of this Duration appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Duration { values: ${JSON.stringify(this.values)} }`;\n } else {\n return `Duration { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n if (!this.isValid) return NaN;\n return durationToMillis(this.matrix, this.values);\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration),\n result = {};\n for (const k of orderedUnits$1) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n return clone$1(this, {\n values: result\n }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hours\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone$1(this, {\n values: result\n }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n const mixed = {\n ...this.values,\n ...normalizeObject(values, Duration.normalizeUnit)\n };\n return clone$1(this, {\n values: mixed\n });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({\n locale,\n numberingSystem,\n conversionAccuracy,\n matrix\n } = {}) {\n const loc = this.loc.clone({\n locale,\n numberingSystem\n });\n const opts = {\n loc,\n matrix,\n conversionAccuracy\n };\n return clone$1(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * Assuming the overall value of the Duration is positive, this means:\n * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example)\n * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise\n * the overall value would be negative, see third example)\n * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example)\n *\n * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone$1(this, {\n values: vals\n }, true);\n }\n\n /**\n * Rescale units to its largest representation\n * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 }\n * @return {Duration}\n */\n rescale() {\n if (!this.isValid) return this;\n const vals = removeZeroes(this.normalize().shiftToAll().toObject());\n return clone$1(this, {\n values: vals\n }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n if (units.length === 0) {\n return this;\n }\n units = units.map(u => Duration.normalizeUnit(u));\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n for (const k of orderedUnits$1) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n // only keep the integer part for now in the hopes of putting any decimal part\n // into a smaller unit later\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] += key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n normalizeValues(this.matrix, built);\n return clone$1(this, {\n values: built\n }, true);\n }\n\n /**\n * Shift this Duration to all available units.\n * Same as shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\")\n * @return {Duration}\n */\n shiftToAll() {\n if (!this.isValid) return this;\n return this.shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\");\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n }\n return clone$1(this, {\n values: negated\n }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n for (const u of orderedUnits$1) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n\nconst INVALID$1 = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\"end before start\", `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`);\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.\n * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toLocaleString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n */\nclass Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({\n invalid\n });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n const validateError = validateStartEnd(builtStart, builtEnd);\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `