{"version":3,"sources":["jsdelivr-header.js","/npm/marked@4.3.0/lib/marked.umd.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,CCKA,SAAW,EAAQ,GACE,iBAAZ,SAA0C,oBAAX,OAAyB,EAAQ,SACrD,mBAAX,QAAyB,OAAO,IAAM,OAAO,CAAC,WAAY,GACU,GAA1E,EAA+B,oBAAf,WAA6B,WAAa,GAAU,MAAqB,OAAS,CAAC,EACrG,CAJD,CAIG,MAAM,SAAW,GAAW,aAE7B,SAAS,EAAkB,EAAQ,GACjC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACrC,IAAI,EAAa,EAAM,GACvB,EAAW,WAAa,EAAW,aAAc,EACjD,EAAW,cAAe,EACtB,UAAW,IAAY,EAAW,UAAW,GACjD,OAAO,eAAe,GAkEF,EAlEyB,EAAW,IAmEtD,SACkB,iBADlB,EAXN,SAAsB,EAAO,GAC3B,GAAqB,iBAAV,GAAgC,OAAV,EAAgB,OAAO,EACxD,IAAI,EAAO,EAAM,OAAO,aACxB,QAAa,IAAT,EAAoB,CACtB,IAAI,EAAM,EAAK,KAAK,EAAO,GAAQ,WACnC,GAAmB,iBAAR,EAAkB,OAAO,EACpC,MAAM,IAAI,UAAU,+CACtB,CACA,OAAiB,WAAT,EAAoB,OAAS,QAAQ,EAC/C,CAEY,CAAa,EAAK,WACK,EAAM,OAAO,IApEkB,EAChE,CAiEF,IAAwB,EAClB,CAjEN,CASA,SAAS,IAYP,OAXA,EAAW,OAAO,OAAS,OAAO,OAAO,OAAS,SAAU,GAC1D,IAAK,IAAI,EAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CACzC,IAAI,EAAS,UAAU,GACvB,IAAK,IAAI,KAAO,EACV,OAAO,UAAU,eAAe,KAAK,EAAQ,KAC/C,EAAO,GAAO,EAAO,GAG3B,CACA,OAAO,CACT,EACO,EAAS,MAAM,KAAM,UAC9B,CASA,SAAS,EAAkB,EAAK,IACnB,MAAP,GAAe,EAAM,EAAI,UAAQ,EAAM,EAAI,QAC/C,IAAK,IAAI,EAAI,EAAG,EAAO,IAAI,MAAM,GAAM,EAAI,EAAK,IAAK,EAAK,GAAK,EAAI,GACnE,OAAO,CACT,CACA,SAAS,EAAgC,EAAG,GAC1C,IAAI,EAAuB,oBAAX,QAA0B,EAAE,OAAO,WAAa,EAAE,cAClE,GAAI,EAAI,OAAQ,EAAK,EAAG,KAAK,IAAI,KAAK,KAAK,GAC3C,GAAI,MAAM,QAAQ,KAAO,EAhB3B,SAAqC,EAAG,GACtC,GAAK,EAAL,CACA,GAAiB,iBAAN,EAAgB,OAAO,EAAkB,EAAG,GACvD,IAAI,EAAI,OAAO,UAAU,SAAS,KAAK,GAAG,MAAM,GAAI,GAEpD,MADU,WAAN,GAAkB,EAAE,cAAa,EAAI,EAAE,YAAY,MAC7C,QAAN,GAAqB,QAAN,EAAoB,MAAM,KAAK,GACxC,cAAN,GAAqB,2CAA2C,KAAK,GAAW,EAAkB,EAAG,QAAzG,CALc,CAMhB,CASgC,CAA4B,KAAO,GAAkB,GAAyB,iBAAb,EAAE,OAAqB,CAChH,IAAI,EAAI,GACZ,IAAI,EAAI,EACR,OAAO,WACL,OAAI,GAAK,EAAE,OAAe,CACxB,MAAM,GAED,CACL,MAAM,EACN,MAAO,EAAE,KAEb,CACF,CACA,MAAM,IAAI,UAAU,wIACtB,CAgBA,SAAS,IACP,MAAO,CACL,OAAO,EACP,QAAS,KACT,QAAQ,EACR,WAAY,KACZ,KAAK,EACL,WAAW,EACX,aAAc,GACd,UAAW,KACX,MAAO,KACP,WAAY,YACZ,QAAQ,EACR,UAAU,EACV,SAAU,KACV,UAAU,EACV,UAAW,KACX,QAAQ,EACR,aAAa,EACb,UAAW,KACX,WAAY,KACZ,OAAO,EAEX,CACA,EAAQ,SAvBC,CACL,OAAO,EACP,QAAS,KACT,QAAQ,EACR,WAAY,KACZ,KAAK,EACL,WAAW,EACX,aAAc,GACd,UAAW,KACX,MAAO,KACP,WAAY,YACZ,QAAQ,EACR,UAAU,EACV,SAAU,KACV,UAAU,EACV,UAAW,KACX,QAAQ,EACR,aAAa,EACb,UAAW,KACX,WAAY,KACZ,OAAO,GAWX,IAAI,EAAa,UACb,EAAgB,IAAI,OAAO,EAAW,OAAQ,KAC9C,EAAqB,oDACrB,EAAwB,IAAI,OAAO,EAAmB,OAAQ,KAC9D,EAAqB,CACvB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SAEH,EAAuB,SAA8B,GACvD,OAAO,EAAmB,EAC5B,EACA,SAAS,EAAO,EAAM,GACpB,GAAI,GACF,GAAI,EAAW,KAAK,GAClB,OAAO,EAAK,QAAQ,EAAe,QAGrC,GAAI,EAAmB,KAAK,GAC1B,OAAO,EAAK,QAAQ,EAAuB,GAG/C,OAAO,CACT,CACA,IAAI,EAAe,6CAKnB,SAAS,EAAS,GAEhB,OAAO,EAAK,QAAQ,GAAc,SAAU,EAAG,GAE7C,MAAU,WADV,EAAI,EAAE,eACoB,IACN,MAAhB,EAAE,OAAO,GACY,MAAhB,EAAE,OAAO,GAAa,OAAO,aAAa,SAAS,EAAE,UAAU,GAAI,KAAO,OAAO,cAAc,EAAE,UAAU,IAE7G,EACT,GACF,CACA,IAAI,EAAQ,eAMZ,SAAS,EAAK,EAAO,GACnB,EAAyB,iBAAV,EAAqB,EAAQ,EAAM,OAClD,EAAM,GAAO,GACb,IAAI,EAAM,CACR,QAAS,SAAiB,EAAM,GAI9B,OAFA,GADA,EAAM,EAAI,QAAU,GACV,QAAQ,EAAO,MACzB,EAAQ,EAAM,QAAQ,EAAM,GACrB,CACT,EACA,SAAU,WACR,OAAO,IAAI,OAAO,EAAO,EAC3B,GAEF,OAAO,CACT,CACA,IAAI,EAAsB,UACtB,EAAuB,gCAO3B,SAAS,EAAS,EAAU,EAAM,GAChC,GAAI,EAAU,CACZ,IAAI,EACJ,IACE,EAAO,mBAAmB,EAAS,IAAO,QAAQ,EAAqB,IAAI,aAC7E,CAAE,MAAO,GACP,OAAO,IACT,CACA,GAAoC,IAAhC,EAAK,QAAQ,gBAAsD,IAA9B,EAAK,QAAQ,cAAgD,IAA1B,EAAK,QAAQ,SACvF,OAAO,IAEX,CACI,IAAS,EAAqB,KAAK,KACrC,EAkBJ,SAAoB,EAAM,GACnB,EAAS,IAAM,KAId,EAAW,KAAK,GAClB,EAAS,IAAM,GAAQ,EAAO,IAE9B,EAAS,IAAM,GAAQ,EAAM,EAAM,KAAK,IAG5C,EAAO,EAAS,IAAM,GACtB,IAAI,GAAsC,IAAvB,EAAK,QAAQ,KAChC,MAA6B,OAAzB,EAAK,UAAU,EAAG,GAChB,EACK,EAEF,EAAK,QAAQ,EAAU,MAAQ,EACV,MAAnB,EAAK,OAAO,GACjB,EACK,EAEF,EAAK,QAAQ,EAAQ,MAAQ,EAE7B,EAAO,CAElB,CA5CW,CAAW,EAAM,IAE1B,IACE,EAAO,UAAU,GAAM,QAAQ,OAAQ,IACzC,CAAE,MAAO,GACP,OAAO,IACT,CACA,OAAO,CACT,CACA,IAAI,EAAW,CAAC,EACZ,EAAa,mBACb,EAAW,oBACX,EAAS,4BAiCb,IAAI,EAAW,CACb,KAAM,WAAqB,GAE7B,SAAS,EAAW,EAAU,GAG5B,IAeE,EAfQ,EAAS,QAAQ,OAAO,SAAU,EAAO,EAAQ,GAGvD,IAFA,IAAI,GAAU,EACZ,EAAO,IACA,GAAQ,GAAmB,OAAd,EAAI,IACxB,GAAW,EAEb,OAAI,EAGK,IAGA,IAEX,IACY,MAAM,OAChB,EAAI,EASR,GANK,EAAM,GAAG,QACZ,EAAM,QAEJ,EAAM,OAAS,IAAM,EAAM,EAAM,OAAS,GAAG,QAC/C,EAAM,MAEJ,EAAM,OAAS,EACjB,EAAM,OAAO,QAEb,KAAO,EAAM,OAAS,GACpB,EAAM,KAAK,IAGf,KAAO,EAAI,EAAM,OAAQ,IAEvB,EAAM,GAAK,EAAM,GAAG,OAAO,QAAQ,QAAS,KAE9C,OAAO,CACT,CAUA,SAAS,EAAM,EAAK,EAAG,GACrB,IAAI,EAAI,EAAI,OACZ,GAAU,IAAN,EACF,MAAO,GAOT,IAHA,IAAI,EAAU,EAGP,EAAU,GAAG,CAClB,IAAI,EAAW,EAAI,OAAO,EAAI,EAAU,GACxC,GAAI,IAAa,GAAM,EAEhB,IAAI,IAAa,IAAK,EAG3B,MAFA,GAGF,MALE,GAMJ,CACA,OAAO,EAAI,MAAM,EAAG,EAAI,EAC1B,CAiCA,SAAS,EAAa,EAAS,GAC7B,GAAI,EAAQ,EACV,MAAO,GAGT,IADA,IAAI,EAAS,GACN,EAAQ,GACD,EAAR,IACF,GAAU,GAEZ,IAAU,EACV,GAAW,EAEb,OAAO,EAAS,CAClB,CAEA,SAAS,EAAW,EAAK,EAAM,EAAK,GAClC,IAAI,EAAO,EAAK,KACZ,EAAQ,EAAK,MAAQ,EAAO,EAAK,OAAS,KAC1C,EAAO,EAAI,GAAG,QAAQ,cAAe,MACzC,GAAyB,MAArB,EAAI,GAAG,OAAO,GAAY,CAC5B,EAAM,MAAM,QAAS,EACrB,IAAI,EAAQ,CACV,KAAM,OACN,IAAK,EACL,KAAM,EACN,MAAO,EACP,KAAM,EACN,OAAQ,EAAM,aAAa,IAG7B,OADA,EAAM,MAAM,QAAS,EACd,CACT,CACA,MAAO,CACL,KAAM,QACN,IAAK,EACL,KAAM,EACN,MAAO,EACP,KAAM,EAAO,GAEjB,CAuBA,IAAI,EAAyB,WAC3B,SAAS,EAAU,GACjB,KAAK,QAAU,GAAW,EAAQ,QACpC,CACA,IAAI,EAAS,EAAU,UA8pBvB,OA7pBA,EAAO,MAAQ,SAAe,GAC5B,IAAI,EAAM,KAAK,MAAM,MAAM,QAAQ,KAAK,GACxC,GAAI,GAAO,EAAI,GAAG,OAAS,EACzB,MAAO,CACL,KAAM,QACN,IAAK,EAAI,GAGf,EACA,EAAO,KAAO,SAAc,GAC1B,IAAI,EAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GACrC,GAAI,EAAK,CACP,IAAI,EAAO,EAAI,GAAG,QAAQ,YAAa,IACvC,MAAO,CACL,KAAM,OACN,IAAK,EAAI,GACT,eAAgB,WAChB,KAAO,KAAK,QAAQ,SAA+B,EAApB,EAAM,EAAM,MAE/C,CACF,EACA,EAAO,OAAS,SAAgB,GAC9B,IAAI,EAAM,KAAK,MAAM,MAAM,OAAO,KAAK,GACvC,GAAI,EAAK,CACP,IAAI,EAAM,EAAI,GACV,EApDV,SAAgC,EAAK,GACnC,IAAI,EAAoB,EAAI,MAAM,iBAClC,GAA0B,OAAtB,EACF,OAAO,EAET,IAAI,EAAe,EAAkB,GACrC,OAAO,EAAK,MAAM,MAAM,KAAI,SAAU,GACpC,IAAI,EAAoB,EAAK,MAAM,QACnC,OAA0B,OAAtB,EACK,EAEU,EAAkB,GACpB,QAAU,EAAa,OAC/B,EAAK,MAAM,EAAa,QAE1B,CACT,IAAG,KAAK,KACV,CAmCiB,CAAuB,EAAK,EAAI,IAAM,IACjD,MAAO,CACL,KAAM,OACN,IAAK,EACL,KAAM,EAAI,GAAK,EAAI,GAAG,OAAO,QAAQ,KAAK,MAAM,OAAO,SAAU,MAAQ,EAAI,GAC7E,KAAM,EAEV,CACF,EACA,EAAO,QAAU,SAAiB,GAChC,IAAI,EAAM,KAAK,MAAM,MAAM,QAAQ,KAAK,GACxC,GAAI,EAAK,CACP,IAAI,EAAO,EAAI,GAAG,OAGlB,GAAI,KAAK,KAAK,GAAO,CACnB,IAAI,EAAU,EAAM,EAAM,KACtB,KAAK,QAAQ,SACf,EAAO,EAAQ,OACL,IAAW,KAAK,KAAK,KAE/B,EAAO,EAAQ,OAEnB,CACA,MAAO,CACL,KAAM,UACN,IAAK,EAAI,GACT,MAAO,EAAI,GAAG,OACd,KAAM,EACN,OAAQ,KAAK,MAAM,OAAO,GAE9B,CACF,EACA,EAAO,GAAK,SAAY,GACtB,IAAI,EAAM,KAAK,MAAM,MAAM,GAAG,KAAK,GACnC,GAAI,EACF,MAAO,CACL,KAAM,KACN,IAAK,EAAI,GAGf,EACA,EAAO,WAAa,SAAoB,GACtC,IAAI,EAAM,KAAK,MAAM,MAAM,WAAW,KAAK,GAC3C,GAAI,EAAK,CACP,IAAI,EAAO,EAAI,GAAG,QAAQ,eAAgB,IACtC,EAAM,KAAK,MAAM,MAAM,IAC3B,KAAK,MAAM,MAAM,KAAM,EACvB,IAAI,EAAS,KAAK,MAAM,YAAY,GAEpC,OADA,KAAK,MAAM,MAAM,IAAM,EAChB,CACL,KAAM,aACN,IAAK,EAAI,GACT,OAAQ,EACR,KAAM,EAEV,CACF,EACA,EAAO,KAAO,SAAc,GAC1B,IAAI,EAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GACrC,GAAI,EAAK,CACP,IAAI,EAAK,EAAQ,EAAW,EAAQ,EAAG,EAAW,EAAmB,EAAM,EAAU,EAAS,EAAc,EACxG,EAAO,EAAI,GAAG,OACd,EAAY,EAAK,OAAS,EAC1B,EAAO,CACT,KAAM,OACN,IAAK,GACL,QAAS,EACT,MAAO,GAAa,EAAK,MAAM,GAAI,GAAK,GACxC,OAAO,EACP,MAAO,IAET,EAAO,EAAY,aAAe,EAAK,OAAO,GAAK,KAAO,EACtD,KAAK,QAAQ,WACf,EAAO,EAAY,EAAO,SAO5B,IAHA,IAAI,EAAY,IAAI,OAAO,WAAa,EAAO,iCAGxC,IACL,GAAW,EACL,EAAM,EAAU,KAAK,MAGvB,KAAK,MAAM,MAAM,GAAG,KAAK,IALnB,CA+BV,GAtBA,EAAM,EAAI,GACV,EAAM,EAAI,UAAU,EAAI,QACxB,EAAO,EAAI,GAAG,MAAM,KAAM,GAAG,GAAG,QAAQ,QAAQ,SAAU,GACxD,MAAO,IAAI,OAAO,EAAI,EAAE,OAC1B,IACA,EAAW,EAAI,MAAM,KAAM,GAAG,GAC1B,KAAK,QAAQ,UACf,EAAS,EACT,EAAe,EAAK,aAGpB,GADA,EAAS,EAAI,GAAG,OAAO,SACL,EAAI,EAAI,EAC1B,EAAe,EAAK,MAAM,GAC1B,GAAU,EAAI,GAAG,QAEnB,GAAY,GACP,GAAQ,OAAO,KAAK,KAEvB,GAAO,EAAW,KAClB,EAAM,EAAI,UAAU,EAAS,OAAS,GACtC,GAAW,IAER,EAOH,IANA,IAAI,EAAkB,IAAI,OAAO,QAAU,KAAK,IAAI,EAAG,EAAS,GAAK,uDACjE,EAAU,IAAI,OAAO,QAAU,KAAK,IAAI,EAAG,EAAS,GAAK,sDACzD,EAAmB,IAAI,OAAO,QAAU,KAAK,IAAI,EAAG,EAAS,GAAK,gBAClE,EAAoB,IAAI,OAAO,QAAU,KAAK,IAAI,EAAG,EAAS,GAAK,MAGhE,IAEL,EADA,EAAU,EAAI,MAAM,KAAM,GAAG,GAIzB,KAAK,QAAQ,WACf,EAAW,EAAS,QAAQ,0BAA2B,QAIrD,EAAiB,KAAK,MAKtB,EAAkB,KAAK,KAKvB,EAAgB,KAAK,KAKrB,EAAQ,KAAK,IAzBP,CA4BV,GAAI,EAAS,OAAO,SAAW,IAAW,EAAS,OAEjD,GAAgB,KAAO,EAAS,MAAM,OACjC,CAEL,GAAI,EACF,MAIF,GAAI,EAAK,OAAO,SAAW,EAEzB,MAEF,GAAI,EAAiB,KAAK,GACxB,MAEF,GAAI,EAAkB,KAAK,GACzB,MAEF,GAAI,EAAQ,KAAK,GACf,MAEF,GAAgB,KAAO,CACzB,CACK,GAAc,EAAS,SAE1B,GAAY,GAEd,GAAO,EAAU,KACjB,EAAM,EAAI,UAAU,EAAQ,OAAS,GACrC,EAAO,EAAS,MAAM,EACxB,CAEG,EAAK,QAEJ,EACF,EAAK,OAAQ,EACJ,YAAY,KAAK,KAC1B,GAAoB,IAKpB,KAAK,QAAQ,MACf,EAAS,cAAc,KAAK,MAE1B,EAA0B,SAAd,EAAO,GACnB,EAAe,EAAa,QAAQ,eAAgB,KAGxD,EAAK,MAAM,KAAK,CACd,KAAM,YACN,IAAK,EACL,OAAQ,EACR,QAAS,EACT,OAAO,EACP,KAAM,IAER,EAAK,KAAO,CACd,CAGA,EAAK,MAAM,EAAK,MAAM,OAAS,GAAG,IAAM,EAAI,YAC5C,EAAK,MAAM,EAAK,MAAM,OAAS,GAAG,KAAO,EAAa,YACtD,EAAK,IAAM,EAAK,IAAI,YACpB,IAAI,EAAI,EAAK,MAAM,OAGnB,IAAK,EAAI,EAAG,EAAI,EAAG,IAGjB,GAFA,KAAK,MAAM,MAAM,KAAM,EACvB,EAAK,MAAM,GAAG,OAAS,KAAK,MAAM,YAAY,EAAK,MAAM,GAAG,KAAM,KAC7D,EAAK,MAAO,CAEf,IAAI,EAAU,EAAK,MAAM,GAAG,OAAO,QAAO,SAAU,GAClD,MAAkB,UAAX,EAAE,IACX,IACI,EAAwB,EAAQ,OAAS,GAAK,EAAQ,MAAK,SAAU,GACvE,MAAO,SAAS,KAAK,EAAE,IACzB,IACA,EAAK,MAAQ,CACf,CAIF,GAAI,EAAK,MACP,IAAK,EAAI,EAAG,EAAI,EAAG,IACjB,EAAK,MAAM,GAAG,OAAQ,EAG1B,OAAO,CACT,CACF,EACA,EAAO,KAAO,SAAc,GAC1B,IAAI,EAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GACrC,GAAI,EAAK,CACP,IAAI,EAAQ,CACV,KAAM,OACN,IAAK,EAAI,GACT,KAAM,KAAK,QAAQ,YAAyB,QAAX,EAAI,IAA2B,WAAX,EAAI,IAA8B,UAAX,EAAI,IAChF,KAAM,EAAI,IAEZ,GAAI,KAAK,QAAQ,SAAU,CACzB,IAAI,EAAO,KAAK,QAAQ,UAAY,KAAK,QAAQ,UAAU,EAAI,IAAM,EAAO,EAAI,IAChF,EAAM,KAAO,YACb,EAAM,KAAO,EACb,EAAM,OAAS,KAAK,MAAM,OAAO,EACnC,CACA,OAAO,CACT,CACF,EACA,EAAO,IAAM,SAAa,GACxB,IAAI,EAAM,KAAK,MAAM,MAAM,IAAI,KAAK,GACpC,GAAI,EAAK,CACP,IAAI,EAAM,EAAI,GAAG,cAAc,QAAQ,OAAQ,KAC3C,EAAO,EAAI,GAAK,EAAI,GAAG,QAAQ,WAAY,MAAM,QAAQ,KAAK,MAAM,OAAO,SAAU,MAAQ,GAC7F,EAAQ,EAAI,GAAK,EAAI,GAAG,UAAU,EAAG,EAAI,GAAG,OAAS,GAAG,QAAQ,KAAK,MAAM,OAAO,SAAU,MAAQ,EAAI,GAC5G,MAAO,CACL,KAAM,MACN,IAAK,EACL,IAAK,EAAI,GACT,KAAM,EACN,MAAO,EAEX,CACF,EACA,EAAO,MAAQ,SAAe,GAC5B,IAAI,EAAM,KAAK,MAAM,MAAM,MAAM,KAAK,GACtC,GAAI,EAAK,CACP,IAAI,EAAO,CACT,KAAM,QACN,OAAQ,EAAW,EAAI,IAAI,KAAI,SAAU,GACvC,MAAO,CACL,KAAM,EAEV,IACA,MAAO,EAAI,GAAG,QAAQ,aAAc,IAAI,MAAM,UAC9C,KAAM,EAAI,IAAM,EAAI,GAAG,OAAS,EAAI,GAAG,QAAQ,YAAa,IAAI,MAAM,MAAQ,IAEhF,GAAI,EAAK,OAAO,SAAW,EAAK,MAAM,OAAQ,CAC5C,EAAK,IAAM,EAAI,GACf,IACI,EAAG,EAAG,EAAG,EADT,EAAI,EAAK,MAAM,OAEnB,IAAK,EAAI,EAAG,EAAI,EAAG,IACb,YAAY,KAAK,EAAK,MAAM,IAC9B,EAAK,MAAM,GAAK,QACP,aAAa,KAAK,EAAK,MAAM,IACtC,EAAK,MAAM,GAAK,SACP,YAAY,KAAK,EAAK,MAAM,IACrC,EAAK,MAAM,GAAK,OAEhB,EAAK,MAAM,GAAK,KAIpB,IADA,EAAI,EAAK,KAAK,OACT,EAAI,EAAG,EAAI,EAAG,IACjB,EAAK,KAAK,GAAK,EAAW,EAAK,KAAK,GAAI,EAAK,OAAO,QAAQ,KAAI,SAAU,GACxE,MAAO,CACL,KAAM,EAEV,IAOF,IADA,EAAI,EAAK,OAAO,OACX,EAAI,EAAG,EAAI,EAAG,IACjB,EAAK,OAAO,GAAG,OAAS,KAAK,MAAM,OAAO,EAAK,OAAO,GAAG,MAK3D,IADA,EAAI,EAAK,KAAK,OACT,EAAI,EAAG,EAAI,EAAG,IAEjB,IADA,EAAM,EAAK,KAAK,GACX,EAAI,EAAG,EAAI,EAAI,OAAQ,IAC1B,EAAI,GAAG,OAAS,KAAK,MAAM,OAAO,EAAI,GAAG,MAG7C,OAAO,CACT,CACF,CACF,EACA,EAAO,SAAW,SAAkB,GAClC,IAAI,EAAM,KAAK,MAAM,MAAM,SAAS,KAAK,GACzC,GAAI,EACF,MAAO,CACL,KAAM,UACN,IAAK,EAAI,GACT,MAA4B,MAArB,EAAI,GAAG,OAAO,GAAa,EAAI,EACtC,KAAM,EAAI,GACV,OAAQ,KAAK,MAAM,OAAO,EAAI,IAGpC,EACA,EAAO,UAAY,SAAmB,GACpC,IAAI,EAAM,KAAK,MAAM,MAAM,UAAU,KAAK,GAC1C,GAAI,EAAK,CACP,IAAI,EAA4C,OAArC,EAAI,GAAG,OAAO,EAAI,GAAG,OAAS,GAAc,EAAI,GAAG,MAAM,GAAI,GAAK,EAAI,GACjF,MAAO,CACL,KAAM,YACN,IAAK,EAAI,GACT,KAAM,EACN,OAAQ,KAAK,MAAM,OAAO,GAE9B,CACF,EACA,EAAO,KAAO,SAAc,GAC1B,IAAI,EAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GACrC,GAAI,EACF,MAAO,CACL,KAAM,OACN,IAAK,EAAI,GACT,KAAM,EAAI,GACV,OAAQ,KAAK,MAAM,OAAO,EAAI,IAGpC,EACA,EAAO,OAAS,SAAkB,GAChC,IAAI,EAAM,KAAK,MAAM,OAAO,OAAO,KAAK,GACxC,GAAI,EACF,MAAO,CACL,KAAM,SACN,IAAK,EAAI,GACT,KAAM,EAAO,EAAI,IAGvB,EACA,EAAO,IAAM,SAAa,GACxB,IAAI,EAAM,KAAK,MAAM,OAAO,IAAI,KAAK,GACrC,GAAI,EAWF,OAVK,KAAK,MAAM,MAAM,QAAU,QAAQ,KAAK,EAAI,IAC/C,KAAK,MAAM,MAAM,QAAS,EACjB,KAAK,MAAM,MAAM,QAAU,UAAU,KAAK,EAAI,MACvD,KAAK,MAAM,MAAM,QAAS,IAEvB,KAAK,MAAM,MAAM,YAAc,iCAAiC,KAAK,EAAI,IAC5E,KAAK,MAAM,MAAM,YAAa,EACrB,KAAK,MAAM,MAAM,YAAc,mCAAmC,KAAK,EAAI,MACpF,KAAK,MAAM,MAAM,YAAa,GAEzB,CACL,KAAM,KAAK,QAAQ,SAAW,OAAS,OACvC,IAAK,EAAI,GACT,OAAQ,KAAK,MAAM,MAAM,OACzB,WAAY,KAAK,MAAM,MAAM,WAC7B,KAAM,KAAK,QAAQ,SAAW,KAAK,QAAQ,UAAY,KAAK,QAAQ,UAAU,EAAI,IAAM,EAAO,EAAI,IAAM,EAAI,GAGnH,EACA,EAAO,KAAO,SAAc,GAC1B,IAAI,EAAM,KAAK,MAAM,OAAO,KAAK,KAAK,GACtC,GAAI,EAAK,CACP,IAAI,EAAa,EAAI,GAAG,OACxB,IAAK,KAAK,QAAQ,UAAY,KAAK,KAAK,GAAa,CAEnD,IAAK,KAAK,KAAK,GACb,OAIF,IAAI,EAAa,EAAM,EAAW,MAAM,GAAI,GAAI,MAChD,IAAK,EAAW,OAAS,EAAW,QAAU,GAAM,EAClD,MAEJ,KAAO,CAEL,IAAI,EA1hBZ,SAA4B,EAAK,GAC/B,IAA2B,IAAvB,EAAI,QAAQ,EAAE,IAChB,OAAQ,EAKV,IAHA,IAAI,EAAI,EAAI,OACR,EAAQ,EACV,EAAI,EACC,EAAI,EAAG,IACZ,GAAe,OAAX,EAAI,GACN,SACK,GAAI,EAAI,KAAO,EAAE,GACtB,SACK,GAAI,EAAI,KAAO,EAAE,MACtB,EACY,EACV,OAAO,EAIb,OAAQ,CACV,CAsgB6B,CAAmB,EAAI,GAAI,MAChD,GAAI,GAAkB,EAAG,CACvB,IACI,GADgC,IAAxB,EAAI,GAAG,QAAQ,KAAa,EAAI,GACtB,EAAI,GAAG,OAAS,EACtC,EAAI,GAAK,EAAI,GAAG,UAAU,EAAG,GAC7B,EAAI,GAAK,EAAI,GAAG,UAAU,EAAG,GAAS,OACtC,EAAI,GAAK,EACX,CACF,CACA,IAAI,EAAO,EAAI,GACX,EAAQ,GACZ,GAAI,KAAK,QAAQ,SAAU,CAEzB,IAAI,EAAO,gCAAgC,KAAK,GAC5C,IACF,EAAO,EAAK,GACZ,EAAQ,EAAK,GAEjB,MACE,EAAQ,EAAI,GAAK,EAAI,GAAG,MAAM,GAAI,GAAK,GAWzC,OATA,EAAO,EAAK,OACR,KAAK,KAAK,KAGV,EAFE,KAAK,QAAQ,WAAa,KAAK,KAAK,GAE/B,EAAK,MAAM,GAEX,EAAK,MAAM,GAAI,IAGnB,EAAW,EAAK,CACrB,KAAM,EAAO,EAAK,QAAQ,KAAK,MAAM,OAAO,SAAU,MAAQ,EAC9D,MAAO,EAAQ,EAAM,QAAQ,KAAK,MAAM,OAAO,SAAU,MAAQ,GAChE,EAAI,GAAI,KAAK,MAClB,CACF,EACA,EAAO,QAAU,SAAiB,EAAK,GACrC,IAAI,EACJ,IAAK,EAAM,KAAK,MAAM,OAAO,QAAQ,KAAK,MAAU,EAAM,KAAK,MAAM,OAAO,OAAO,KAAK,IAAO,CAC7F,IAAI,GAAQ,EAAI,IAAM,EAAI,IAAI,QAAQ,OAAQ,KAE9C,KADA,EAAO,EAAM,EAAK,gBACP,CACT,IAAI,EAAO,EAAI,GAAG,OAAO,GACzB,MAAO,CACL,KAAM,OACN,IAAK,EACL,KAAM,EAEV,CACA,OAAO,EAAW,EAAK,EAAM,EAAI,GAAI,KAAK,MAC5C,CACF,EACA,EAAO,SAAW,SAAkB,EAAK,EAAW,QACjC,IAAb,IACF,EAAW,IAEb,IAAI,EAAQ,KAAK,MAAM,OAAO,SAAS,OAAO,KAAK,GACnD,GAAK,KAGD,EAAM,KAAM,EAAS,MAAM,o0RAA/B,CACA,IAAI,EAAW,EAAM,IAAM,EAAM,IAAM,GACvC,IAAK,GAAY,IAA0B,KAAb,GAAmB,KAAK,MAAM,OAAO,YAAY,KAAK,IAAY,CAC9F,IACI,EACF,EAFE,EAAU,EAAM,GAAG,OAAS,EAG9B,EAAa,EACb,EAAgB,EACd,EAAyB,MAAhB,EAAM,GAAG,GAAa,KAAK,MAAM,OAAO,SAAS,UAAY,KAAK,MAAM,OAAO,SAAS,UAKrG,IAJA,EAAO,UAAY,EAGnB,EAAY,EAAU,OAAO,EAAI,EAAI,OAAS,GACH,OAAnC,EAAQ,EAAO,KAAK,KAE1B,GADA,EAAS,EAAM,IAAM,EAAM,IAAM,EAAM,IAAM,EAAM,IAAM,EAAM,IAAM,EAAM,GAI3E,GADA,EAAU,EAAO,OACb,EAAM,IAAM,EAAM,GAEpB,GAAc,OAET,MAAI,EAAM,IAAM,EAAM,KAEvB,EAAU,KAAQ,EAAU,GAAW,GAO7C,MADA,GAAc,GACG,GAAjB,CAGA,EAAU,KAAK,IAAI,EAAS,EAAU,EAAa,GACnD,IAAI,EAAM,EAAI,MAAM,EAAG,EAAU,EAAM,OAAS,EAAM,GAAG,OAAS,EAAO,QAAU,GAGnF,GAAI,KAAK,IAAI,EAAS,GAAW,EAAG,CAClC,IAAI,EAAQ,EAAI,MAAM,GAAI,GAC1B,MAAO,CACL,KAAM,KACN,IAAK,EACL,KAAM,EACN,OAAQ,KAAK,MAAM,aAAa,GAEpC,CAGA,IAAI,EAAO,EAAI,MAAM,GAAI,GACzB,MAAO,CACL,KAAM,SACN,IAAK,EACL,KAAM,EACN,OAAQ,KAAK,MAAM,aAAa,GAvBN,OANxB,GAAiB,CAgCzB,CAzDy2R,CA0D32R,EACA,EAAO,SAAW,SAAkB,GAClC,IAAI,EAAM,KAAK,MAAM,OAAO,KAAK,KAAK,GACtC,GAAI,EAAK,CACP,IAAI,EAAO,EAAI,GAAG,QAAQ,MAAO,KAC7B,EAAmB,OAAO,KAAK,GAC/B,EAA0B,KAAK,KAAK,IAAS,KAAK,KAAK,GAK3D,OAJI,GAAoB,IACtB,EAAO,EAAK,UAAU,EAAG,EAAK,OAAS,IAEzC,EAAO,EAAO,GAAM,GACb,CACL,KAAM,WACN,IAAK,EAAI,GACT,KAAM,EAEV,CACF,EACA,EAAO,GAAK,SAAY,GACtB,IAAI,EAAM,KAAK,MAAM,OAAO,GAAG,KAAK,GACpC,GAAI,EACF,MAAO,CACL,KAAM,KACN,IAAK,EAAI,GAGf,EACA,EAAO,IAAM,SAAa,GACxB,IAAI,EAAM,KAAK,MAAM,OAAO,IAAI,KAAK,GACrC,GAAI,EACF,MAAO,CACL,KAAM,MACN,IAAK,EAAI,GACT,KAAM,EAAI,GACV,OAAQ,KAAK,MAAM,aAAa,EAAI,IAG1C,EACA,EAAO,SAAW,SAAkB,EAAK,GACvC,IAEM,EAAM,EAFR,EAAM,KAAK,MAAM,OAAO,SAAS,KAAK,GAC1C,GAAI,EASF,OALE,EAFa,MAAX,EAAI,GAEC,WADP,EAAO,EAAO,KAAK,QAAQ,OAAS,EAAO,EAAI,IAAM,EAAI,KAGzD,EAAO,EAAO,EAAI,IAGb,CACL,KAAM,OACN,IAAK,EAAI,GACT,KAAM,EACN,KAAM,EACN,OAAQ,CAAC,CACP,KAAM,OACN,IAAK,EACL,KAAM,IAId,EACA,EAAO,IAAM,SAAa,EAAK,GAC7B,IAAI,EACJ,GAAI,EAAM,KAAK,MAAM,OAAO,IAAI,KAAK,GAAM,CACzC,IAAI,EAAM,EACV,GAAe,MAAX,EAAI,GAEN,EAAO,WADP,EAAO,EAAO,KAAK,QAAQ,OAAS,EAAO,EAAI,IAAM,EAAI,SAEpD,CAEL,IAAI,EACJ,GACE,EAAc,EAAI,GAClB,EAAI,GAAK,KAAK,MAAM,OAAO,WAAW,KAAK,EAAI,IAAI,SAC5C,IAAgB,EAAI,IAC7B,EAAO,EAAO,EAAI,IAEhB,EADa,SAAX,EAAI,GACC,UAAY,EAAI,GAEhB,EAAI,EAEf,CACA,MAAO,CACL,KAAM,OACN,IAAK,EAAI,GACT,KAAM,EACN,KAAM,EACN,OAAQ,CAAC,CACP,KAAM,OACN,IAAK,EACL,KAAM,IAGZ,CACF,EACA,EAAO,WAAa,SAAoB,EAAK,GAC3C,IAEM,EAFF,EAAM,KAAK,MAAM,OAAO,KAAK,KAAK,GACtC,GAAI,EAOF,OAJE,EADE,KAAK,MAAM,MAAM,WACZ,KAAK,QAAQ,SAAW,KAAK,QAAQ,UAAY,KAAK,QAAQ,UAAU,EAAI,IAAM,EAAO,EAAI,IAAM,EAAI,GAEvG,EAAO,KAAK,QAAQ,YAAc,EAAY,EAAI,IAAM,EAAI,IAE9D,CACL,KAAM,OACN,IAAK,EAAI,GACT,KAAM,EAGZ,EACO,CACT,CAnqB6B,GAwqBzB,EAAQ,CACV,QAAS,mBACT,KAAM,uCACN,OAAQ,8GACR,GAAI,qEACJ,QAAS,uCACT,WAAY,0CACZ,KAAM,uCACN,KAAM,mdAUN,IAAK,kGACL,MAAO,EACP,SAAU,gDAGV,WAAY,uFACZ,KAAM,UAER,OAAe,8BACf,OAAe,gEACf,EAAM,IAAM,EAAK,EAAM,KAAK,QAAQ,QAAS,EAAM,QAAQ,QAAQ,QAAS,EAAM,QAAQ,WAC1F,EAAM,OAAS,wBACf,EAAM,cAAgB,EAAK,iBAAiB,QAAQ,OAAQ,EAAM,QAAQ,WAC1E,EAAM,KAAO,EAAK,EAAM,MAAM,QAAQ,QAAS,EAAM,QAAQ,QAAQ,KAAM,mEAAmE,QAAQ,MAAO,UAAY,EAAM,IAAI,OAAS,KAAK,WACjM,EAAM,KAAO,gWACb,EAAM,SAAW,+BACjB,EAAM,KAAO,EAAK,EAAM,KAAM,KAAK,QAAQ,UAAW,EAAM,UAAU,QAAQ,MAAO,EAAM,MAAM,QAAQ,YAAa,4EAA4E,WAClM,EAAM,UAAY,EAAK,EAAM,YAAY,QAAQ,KAAM,EAAM,IAAI,QAAQ,UAAW,iBAAiB,QAAQ,YAAa,IACzH,QAAQ,SAAU,IAAI,QAAQ,aAAc,WAAW,QAAQ,SAAU,kDAAkD,QAAQ,OAAQ,0BAC3I,QAAQ,OAAQ,+DAA+D,QAAQ,MAAO,EAAM,MACpG,WACD,EAAM,WAAa,EAAK,EAAM,YAAY,QAAQ,YAAa,EAAM,WAAW,WAMhF,EAAM,OAAS,EAAS,CAAC,EAAG,GAM5B,EAAM,IAAM,EAAS,CAAC,EAAG,EAAM,OAAQ,CACrC,MAAO,qKAKT,EAAM,IAAI,MAAQ,EAAK,EAAM,IAAI,OAAO,QAAQ,KAAM,EAAM,IAAI,QAAQ,UAAW,iBAAiB,QAAQ,aAAc,WAAW,QAAQ,OAAQ,cAAc,QAAQ,SAAU,kDAAkD,QAAQ,OAAQ,0BACtP,QAAQ,OAAQ,+DAA+D,QAAQ,MAAO,EAAM,MACpG,WACD,EAAM,IAAI,UAAY,EAAK,EAAM,YAAY,QAAQ,KAAM,EAAM,IAAI,QAAQ,UAAW,iBAAiB,QAAQ,YAAa,IAC7H,QAAQ,QAAS,EAAM,IAAI,OAC3B,QAAQ,aAAc,WAAW,QAAQ,SAAU,kDAAkD,QAAQ,OAAQ,0BACrH,QAAQ,OAAQ,+DAA+D,QAAQ,MAAO,EAAM,MACpG,WAKD,EAAM,SAAW,EAAS,CAAC,EAAG,EAAM,OAAQ,CAC1C,KAAM,EAAK,8IAC+D,QAAQ,UAAW,EAAM,UAAU,QAAQ,OAAQ,qKAAoL,WACjT,IAAK,oEACL,QAAS,yBACT,OAAQ,EAER,SAAU,mCACV,UAAW,EAAK,EAAM,OAAO,YAAY,QAAQ,KAAM,EAAM,IAAI,QAAQ,UAAW,mBAAmB,QAAQ,WAAY,EAAM,UAAU,QAAQ,aAAc,WAAW,QAAQ,UAAW,IAAI,QAAQ,QAAS,IAAI,QAAQ,QAAS,IAAI,aAM/O,IAAI,EAAS,CACX,OAAQ,8CACR,SAAU,sCACV,IAAK,EACL,IAAK,2JAML,KAAM,gDACN,QAAS,0BACT,OAAQ,wBACR,cAAe,wBACf,SAAU,CACR,OAAQ,2DAGR,UAAW,6RACX,UAAW,kPAGb,KAAM,sCACN,GAAI,wBACJ,IAAK,EACL,KAAM,8EACN,YAAa,sBAoFf,SAAS,EAAY,GACnB,OAAO,EAEN,QAAQ,OAAQ,KAEhB,QAAQ,MAAO,KAEf,QAAQ,0BAA2B,OAEnC,QAAQ,KAAM,KAEd,QAAQ,+BAAgC,OAExC,QAAQ,KAAM,KAEd,QAAQ,SAAU,IACrB,CAMA,SAAS,EAAO,GACd,IACE,EACA,EAFE,EAAM,GAGN,EAAI,EAAK,OACb,IAAK,EAAI,EAAG,EAAI,EAAG,IACjB,EAAK,EAAK,WAAW,GACjB,KAAK,SAAW,KAClB,EAAK,IAAM,EAAG,SAAS,KAEzB,GAAO,KAAO,EAAK,IAErB,OAAO,CACT,CAlHA,EAAO,aAAe,uCACtB,EAAO,YAAc,EAAK,EAAO,aAAa,QAAQ,eAAgB,EAAO,cAAc,WAG3F,EAAO,UAAY,4CAGnB,EAAO,YAAc,8BACrB,EAAO,SAAW,EAAK,EAAM,UAAU,QAAQ,eAAa,UAAO,WACnE,EAAO,SAAS,OAAS,EAAK,EAAO,SAAS,QAAQ,QAAQ,SAAU,EAAO,cAAc,WAC7F,EAAO,SAAS,UAAY,EAAK,EAAO,SAAS,UAAW,KAAK,QAAQ,SAAU,EAAO,cAAc,WACxG,EAAO,SAAS,UAAY,EAAK,EAAO,SAAS,UAAW,KAAK,QAAQ,SAAU,EAAO,cAAc,WACxG,EAAO,SAAW,8CAClB,EAAO,QAAU,+BACjB,EAAO,OAAS,+IAChB,EAAO,SAAW,EAAK,EAAO,UAAU,QAAQ,SAAU,EAAO,SAAS,QAAQ,QAAS,EAAO,QAAQ,WAC1G,EAAO,WAAa,8EACpB,EAAO,IAAM,EAAK,EAAO,KAAK,QAAQ,UAAW,EAAO,UAAU,QAAQ,YAAa,EAAO,YAAY,WAC1G,EAAO,OAAS,sDAChB,EAAO,MAAQ,uCACf,EAAO,OAAS,8DAChB,EAAO,KAAO,EAAK,EAAO,MAAM,QAAQ,QAAS,EAAO,QAAQ,QAAQ,OAAQ,EAAO,OAAO,QAAQ,QAAS,EAAO,QAAQ,WAC9H,EAAO,QAAU,EAAK,EAAO,SAAS,QAAQ,QAAS,EAAO,QAAQ,QAAQ,MAAO,EAAM,QAAQ,WACnG,EAAO,OAAS,EAAK,EAAO,QAAQ,QAAQ,MAAO,EAAM,QAAQ,WACjE,EAAO,cAAgB,EAAK,EAAO,cAAe,KAAK,QAAQ,UAAW,EAAO,SAAS,QAAQ,SAAU,EAAO,QAAQ,WAM3H,EAAO,OAAS,EAAS,CAAC,EAAG,GAM7B,EAAO,SAAW,EAAS,CAAC,EAAG,EAAO,OAAQ,CAC5C,OAAQ,CACN,MAAO,WACP,OAAQ,iEACR,OAAQ,cACR,OAAQ,YAEV,GAAI,CACF,MAAO,QACP,OAAQ,6DACR,OAAQ,YACR,OAAQ,WAEV,KAAM,EAAK,2BAA2B,QAAQ,QAAS,EAAO,QAAQ,WACtE,QAAS,EAAK,iCAAiC,QAAQ,QAAS,EAAO,QAAQ,aAOjF,EAAO,IAAM,EAAS,CAAC,EAAG,EAAO,OAAQ,CACvC,OAAQ,EAAK,EAAO,QAAQ,QAAQ,KAAM,QAAQ,WAClD,gBAAiB,4EACjB,IAAK,mEACL,WAAY,6EACZ,IAAK,+CACL,KAAM,+NAER,EAAO,IAAI,IAAM,EAAK,EAAO,IAAI,IAAK,KAAK,QAAQ,QAAS,EAAO,IAAI,iBAAiB,WAKxF,EAAO,OAAS,EAAS,CAAC,EAAG,EAAO,IAAK,CACvC,GAAI,EAAK,EAAO,IAAI,QAAQ,OAAQ,KAAK,WACzC,KAAM,EAAK,EAAO,IAAI,MAAM,QAAQ,OAAQ,iBAAiB,QAAQ,UAAW,KAAK,aA+CvF,IAAI,EAAqB,WACvB,SAAS,EAAM,GACb,KAAK,OAAS,GACd,KAAK,OAAO,MAAQ,OAAO,OAAO,MAClC,KAAK,QAAU,GAAW,EAAQ,SAClC,KAAK,QAAQ,UAAY,KAAK,QAAQ,WAAa,IAAI,EACvD,KAAK,UAAY,KAAK,QAAQ,UAC9B,KAAK,UAAU,QAAU,KAAK,QAC9B,KAAK,UAAU,MAAQ,KACvB,KAAK,YAAc,GACnB,KAAK,MAAQ,CACX,QAAQ,EACR,YAAY,EACZ,KAAK,GAEP,IAAI,EAAQ,CACV,MAAO,EAAM,OACb,OAAQ,EAAO,QAEb,KAAK,QAAQ,UACf,EAAM,MAAQ,EAAM,SACpB,EAAM,OAAS,EAAO,UACb,KAAK,QAAQ,MACtB,EAAM,MAAQ,EAAM,IAChB,KAAK,QAAQ,OACf,EAAM,OAAS,EAAO,OAEtB,EAAM,OAAS,EAAO,KAG1B,KAAK,UAAU,MAAQ,CACzB,CAQA,EAAM,IAAM,SAAa,EAAK,GAE5B,OADY,IAAI,EAAM,GACT,IAAI,EACnB,EAKA,EAAM,UAAY,SAAmB,EAAK,GAExC,OADY,IAAI,EAAM,GACT,aAAa,EAC5B,EAKA,IAv1CoB,EAAa,EAAY,EAu1CzC,EAAS,EAAM,UA4ZnB,OA3ZA,EAAO,IAAM,SAAa,GAGxB,IAAI,EACJ,IAHA,EAAM,EAAI,QAAQ,WAAY,MAC9B,KAAK,YAAY,EAAK,KAAK,QAEpB,EAAO,KAAK,YAAY,SAC7B,KAAK,aAAa,EAAK,IAAK,EAAK,QAEnC,OAAO,KAAK,MACd,EAKA,EAAO,YAAc,SAAqB,EAAK,GAC7C,IAWI,EAAO,EAAW,EAAQ,EAX1B,EAAQ,KAYZ,SAXe,IAAX,IACF,EAAS,IAGT,EADE,KAAK,QAAQ,SACT,EAAI,QAAQ,MAAO,QAAQ,QAAQ,SAAU,IAE7C,EAAI,QAAQ,gBAAgB,SAAU,EAAG,EAAS,GACtD,OAAO,EAAU,OAAO,OAAO,EAAK,OACtC,IAGK,GACL,KAAI,KAAK,QAAQ,YAAc,KAAK,QAAQ,WAAW,OAAS,KAAK,QAAQ,WAAW,MAAM,MAAK,SAAU,GAC3G,SAAI,EAAQ,EAAa,KAAK,CAC5B,MAAO,GACN,EAAK,MACN,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,IACL,EAGX,KAKA,GAAI,EAAQ,KAAK,UAAU,MAAM,GAC/B,EAAM,EAAI,UAAU,EAAM,IAAI,QACL,IAArB,EAAM,IAAI,QAAgB,EAAO,OAAS,EAG5C,EAAO,EAAO,OAAS,GAAG,KAAO,KAEjC,EAAO,KAAK,QAMhB,GAAI,EAAQ,KAAK,UAAU,KAAK,GAC9B,EAAM,EAAI,UAAU,EAAM,IAAI,UAC9B,EAAY,EAAO,EAAO,OAAS,KAEE,cAAnB,EAAU,MAA2C,SAAnB,EAAU,KAK5D,EAAO,KAAK,IAJZ,EAAU,KAAO,KAAO,EAAM,IAC9B,EAAU,MAAQ,KAAO,EAAM,KAC/B,KAAK,YAAY,KAAK,YAAY,OAAS,GAAG,IAAM,EAAU,WAQlE,GAAI,EAAQ,KAAK,UAAU,OAAO,GAChC,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAI,EAAQ,KAAK,UAAU,QAAQ,GACjC,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAI,EAAQ,KAAK,UAAU,GAAG,GAC5B,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAI,EAAQ,KAAK,UAAU,WAAW,GACpC,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAI,EAAQ,KAAK,UAAU,KAAK,GAC9B,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAI,EAAQ,KAAK,UAAU,KAAK,GAC9B,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAI,EAAQ,KAAK,UAAU,IAAI,GAC7B,EAAM,EAAI,UAAU,EAAM,IAAI,UAC9B,EAAY,EAAO,EAAO,OAAS,KACE,cAAnB,EAAU,MAA2C,SAAnB,EAAU,KAIlD,KAAK,OAAO,MAAM,EAAM,OAClC,KAAK,OAAO,MAAM,EAAM,KAAO,CAC7B,KAAM,EAAM,KACZ,MAAO,EAAM,SANf,EAAU,KAAO,KAAO,EAAM,IAC9B,EAAU,MAAQ,KAAO,EAAM,IAC/B,KAAK,YAAY,KAAK,YAAY,OAAS,GAAG,IAAM,EAAU,WAWlE,GAAI,EAAQ,KAAK,UAAU,MAAM,GAC/B,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAI,EAAQ,KAAK,UAAU,SAAS,GAClC,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAyBd,GAnBA,EAAS,EACL,KAAK,QAAQ,YAAc,KAAK,QAAQ,WAAW,YACrD,WACE,IAAI,EAAa,IACb,EAAU,EAAI,MAAM,GACpB,OAAY,EAChB,EAAM,QAAQ,WAAW,WAAW,SAAQ,SAAU,GAI3B,iBAHzB,EAAY,EAAc,KAAK,CAC7B,MAAO,MACN,KACkC,GAAa,IAChD,EAAa,KAAK,IAAI,EAAY,GAEtC,IACI,EAAa,KAAY,GAAc,IACzC,EAAS,EAAI,UAAU,EAAG,EAAa,GAE1C,CAfD,GAiBE,KAAK,MAAM,MAAQ,EAAQ,KAAK,UAAU,UAAU,IACtD,EAAY,EAAO,EAAO,OAAS,GAC/B,GAA2C,cAAnB,EAAU,MACpC,EAAU,KAAO,KAAO,EAAM,IAC9B,EAAU,MAAQ,KAAO,EAAM,KAC/B,KAAK,YAAY,MACjB,KAAK,YAAY,KAAK,YAAY,OAAS,GAAG,IAAM,EAAU,MAE9D,EAAO,KAAK,GAEd,EAAuB,EAAO,SAAW,EAAI,OAC7C,EAAM,EAAI,UAAU,EAAM,IAAI,aAKhC,GAAI,EAAQ,KAAK,UAAU,KAAK,GAC9B,EAAM,EAAI,UAAU,EAAM,IAAI,SAC9B,EAAY,EAAO,EAAO,OAAS,KACC,SAAnB,EAAU,MACzB,EAAU,KAAO,KAAO,EAAM,IAC9B,EAAU,MAAQ,KAAO,EAAM,KAC/B,KAAK,YAAY,MACjB,KAAK,YAAY,KAAK,YAAY,OAAS,GAAG,IAAM,EAAU,MAE9D,EAAO,KAAK,QAIhB,GAAI,EAAK,CACP,IAAI,EAAS,0BAA4B,EAAI,WAAW,GACxD,GAAI,KAAK,QAAQ,OAAQ,CACvB,QAAQ,MAAM,GACd,KACF,CACE,MAAM,IAAI,MAAM,EAEpB,CAGF,OADA,KAAK,MAAM,KAAM,EACV,CACT,EACA,EAAO,OAAS,SAAgB,EAAK,GAQnC,YAPe,IAAX,IACF,EAAS,IAEX,KAAK,YAAY,KAAK,CACpB,IAAK,EACL,OAAQ,IAEH,CACT,EAKA,EAAO,aAAe,SAAsB,EAAK,GAC/C,IAII,EAAO,EAAW,EAJlB,EAAS,UACE,IAAX,IACF,EAAS,IAKX,IACI,EACA,EAAc,EAFd,EAAY,EAKhB,GAAI,KAAK,OAAO,MAAO,CACrB,IAAI,EAAQ,OAAO,KAAK,KAAK,OAAO,OACpC,GAAI,EAAM,OAAS,EACjB,KAA8E,OAAtE,EAAQ,KAAK,UAAU,MAAM,OAAO,cAAc,KAAK,KACzD,EAAM,SAAS,EAAM,GAAG,MAAM,EAAM,GAAG,YAAY,KAAO,GAAI,MAChE,EAAY,EAAU,MAAM,EAAG,EAAM,OAAS,IAAM,EAAa,IAAK,EAAM,GAAG,OAAS,GAAK,IAAM,EAAU,MAAM,KAAK,UAAU,MAAM,OAAO,cAAc,WAIrK,CAEA,KAA0E,OAAlE,EAAQ,KAAK,UAAU,MAAM,OAAO,UAAU,KAAK,KACzD,EAAY,EAAU,MAAM,EAAG,EAAM,OAAS,IAAM,EAAa,IAAK,EAAM,GAAG,OAAS,GAAK,IAAM,EAAU,MAAM,KAAK,UAAU,MAAM,OAAO,UAAU,WAI3J,KAA4E,OAApE,EAAQ,KAAK,UAAU,MAAM,OAAO,YAAY,KAAK,KAC3D,EAAY,EAAU,MAAM,EAAG,EAAM,MAAQ,EAAM,GAAG,OAAS,GAAK,KAAO,EAAU,MAAM,KAAK,UAAU,MAAM,OAAO,YAAY,WACnI,KAAK,UAAU,MAAM,OAAO,YAAY,YAE1C,KAAO,GAOL,GANK,IACH,EAAW,IAEb,GAAe,IAGX,KAAK,QAAQ,YAAc,KAAK,QAAQ,WAAW,QAAU,KAAK,QAAQ,WAAW,OAAO,MAAK,SAAU,GAC7G,SAAI,EAAQ,EAAa,KAAK,CAC5B,MAAO,GACN,EAAK,MACN,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,IACL,EAGX,KAKA,GAAI,EAAQ,KAAK,UAAU,OAAO,GAChC,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAI,EAAQ,KAAK,UAAU,IAAI,GAC7B,EAAM,EAAI,UAAU,EAAM,IAAI,SAC9B,EAAY,EAAO,EAAO,OAAS,KACH,SAAf,EAAM,MAAsC,SAAnB,EAAU,MAClD,EAAU,KAAO,EAAM,IACvB,EAAU,MAAQ,EAAM,MAExB,EAAO,KAAK,QAMhB,GAAI,EAAQ,KAAK,UAAU,KAAK,GAC9B,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAI,EAAQ,KAAK,UAAU,QAAQ,EAAK,KAAK,OAAO,OAClD,EAAM,EAAI,UAAU,EAAM,IAAI,SAC9B,EAAY,EAAO,EAAO,OAAS,KACH,SAAf,EAAM,MAAsC,SAAnB,EAAU,MAClD,EAAU,KAAO,EAAM,IACvB,EAAU,MAAQ,EAAM,MAExB,EAAO,KAAK,QAMhB,GAAI,EAAQ,KAAK,UAAU,SAAS,EAAK,EAAW,GAClD,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAI,EAAQ,KAAK,UAAU,SAAS,GAClC,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAI,EAAQ,KAAK,UAAU,GAAG,GAC5B,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAI,EAAQ,KAAK,UAAU,IAAI,GAC7B,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAI,EAAQ,KAAK,UAAU,SAAS,EAAK,GACvC,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,QAKd,GAAK,KAAK,MAAM,UAAW,EAAQ,KAAK,UAAU,IAAI,EAAK,KA2B3D,GAnBA,EAAS,EACL,KAAK,QAAQ,YAAc,KAAK,QAAQ,WAAW,aACrD,WACE,IAAI,EAAa,IACb,EAAU,EAAI,MAAM,GACpB,OAAY,EAChB,EAAO,QAAQ,WAAW,YAAY,SAAQ,SAAU,GAI7B,iBAHzB,EAAY,EAAc,KAAK,CAC7B,MAAO,MACN,KACkC,GAAa,IAChD,EAAa,KAAK,IAAI,EAAY,GAEtC,IACI,EAAa,KAAY,GAAc,IACzC,EAAS,EAAI,UAAU,EAAG,EAAa,GAE1C,CAfD,GAiBE,EAAQ,KAAK,UAAU,WAAW,EAAQ,GAC5C,EAAM,EAAI,UAAU,EAAM,IAAI,QACF,MAAxB,EAAM,IAAI,OAAO,KAEnB,EAAW,EAAM,IAAI,OAAO,IAE9B,GAAe,GACf,EAAY,EAAO,EAAO,OAAS,KACC,SAAnB,EAAU,MACzB,EAAU,KAAO,EAAM,IACvB,EAAU,MAAQ,EAAM,MAExB,EAAO,KAAK,QAIhB,GAAI,EAAK,CACP,IAAI,EAAS,0BAA4B,EAAI,WAAW,GACxD,GAAI,KAAK,QAAQ,OAAQ,CACvB,QAAQ,MAAM,GACd,KACF,CACE,MAAM,IAAI,MAAM,EAEpB,OAlDE,EAAM,EAAI,UAAU,EAAM,IAAI,QAC9B,EAAO,KAAK,GAmDhB,OAAO,CACT,EAzuDoB,EA0uDP,EA1uDgC,EA0uDnB,CAAC,CACzB,IAAK,QACL,IAAK,WACH,MAAO,CACL,MAAO,EACP,OAAQ,EAEZ,KAjvD+B,EA0uDb,OAzuDJ,EAAkB,EAAY,UAAW,GACrD,GAAa,EAAkB,EAAa,GAChD,OAAO,eAAe,EAAa,YAAa,CAC9C,UAAU,IA+uDL,CACT,CApdyB,GAydrB,EAAwB,WAC1B,SAAS,EAAS,GAChB,KAAK,QAAU,GAAW,EAAQ,QACpC,CACA,IAAI,EAAS,EAAS,UA+JtB,OA9JA,EAAO,KAAO,SAAc,EAAO,EAAY,GAC7C,IAAI,GAAQ,GAAc,IAAI,MAAM,OAAO,GAC3C,GAAI,KAAK,QAAQ,UAAW,CAC1B,IAAI,EAAM,KAAK,QAAQ,UAAU,EAAO,GAC7B,MAAP,GAAe,IAAQ,IACzB,GAAU,EACV,EAAQ,EAEZ,CAEA,OADA,EAAQ,EAAM,QAAQ,MAAO,IAAM,KAC9B,EAGE,qBAAuB,KAAK,QAAQ,WAAa,EAAO,GAAQ,MAAQ,EAAU,EAAQ,EAAO,GAAO,IAAS,kBAF/G,eAAiB,EAAU,EAAQ,EAAO,GAAO,IAAS,iBAGrE,EAKA,EAAO,WAAa,SAAoB,GACtC,MAAO,iBAAmB,EAAQ,iBACpC,EACA,EAAO,KAAO,SAAc,GAC1B,OAAO,CACT,EAQA,EAAO,QAAU,SAAiB,EAAM,EAAO,EAAK,GAClD,OAAI,KAAK,QAAQ,UAER,KAAO,EAAQ,SADb,KAAK,QAAQ,aAAe,EAAQ,KAAK,IACZ,KAAQ,EAAO,MAAQ,EAAQ,MAIhE,KAAO,EAAQ,IAAM,EAAO,MAAQ,EAAQ,KACrD,EACA,EAAO,GAAK,WACV,OAAO,KAAK,QAAQ,MAAQ,UAAY,QAC1C,EACA,EAAO,KAAO,SAAc,EAAM,EAAS,GACzC,IAAI,EAAO,EAAU,KAAO,KAE5B,MAAO,IAAM,GADA,GAAqB,IAAV,EAAc,WAAa,EAAQ,IAAM,IAClC,MAAQ,EAAO,KAAO,EAAO,KAC9D,EAKA,EAAO,SAAW,SAAkB,GAClC,MAAO,OAAS,EAAO,SACzB,EACA,EAAO,SAAW,SAAkB,GAClC,MAAO,WAAa,EAAU,cAAgB,IAAM,+BAAiC,KAAK,QAAQ,MAAQ,KAAO,IAAM,IACzH,EAKA,EAAO,UAAY,SAAmB,GACpC,MAAO,MAAQ,EAAO,QACxB,EAMA,EAAO,MAAQ,SAAe,EAAQ,GAEpC,OADI,IAAM,EAAO,UAAY,EAAO,YAC7B,qBAA4B,EAAS,aAAe,EAAO,YACpE,EAKA,EAAO,SAAW,SAAkB,GAClC,MAAO,SAAW,EAAU,SAC9B,EACA,EAAO,UAAY,SAAmB,EAAS,GAC7C,IAAI,EAAO,EAAM,OAAS,KAAO,KAEjC,OADU,EAAM,MAAQ,IAAM,EAAO,WAAc,EAAM,MAAQ,KAAQ,IAAM,EAAO,KACzE,EAAW,KAAO,EAAO,KACxC,EAMA,EAAO,OAAS,SAAgB,GAC9B,MAAO,WAAa,EAAO,WAC7B,EAKA,EAAO,GAAK,SAAY,GACtB,MAAO,OAAS,EAAO,OACzB,EAKA,EAAO,SAAW,SAAkB,GAClC,MAAO,SAAW,EAAO,SAC3B,EACA,EAAO,GAAK,WACV,OAAO,KAAK,QAAQ,MAAQ,QAAU,MACxC,EAKA,EAAO,IAAM,SAAa,GACxB,MAAO,QAAU,EAAO,QAC1B,EAOA,EAAO,KAAO,SAAc,EAAM,EAAO,GAEvC,GAAa,QADb,EAAO,EAAS,KAAK,QAAQ,SAAU,KAAK,QAAQ,QAAS,IAE3D,OAAO,EAET,IAAI,EAAM,YAAc,EAAO,IAK/B,OAJI,IACF,GAAO,WAAa,EAAQ,KAE9B,GAAO,IAAM,EAAO,MAEtB,EAOA,EAAO,MAAQ,SAAe,EAAM,EAAO,GAEzC,GAAa,QADb,EAAO,EAAS,KAAK,QAAQ,SAAU,KAAK,QAAQ,QAAS,IAE3D,OAAO,EAET,IAAI,EAAM,aAAgB,EAAO,UAAc,EAAO,IAKtD,OAJI,IACF,GAAO,WAAc,EAAQ,KAE/B,GAAO,KAAK,QAAQ,MAAQ,KAAO,GAErC,EACA,EAAO,KAAO,SAAc,GAC1B,OAAO,CACT,EACO,CACT,CApK4B,GA0KxB,EAA4B,WAC9B,SAAS,IAAgB,CACzB,IAAI,EAAS,EAAa,UA6B1B,OA3BA,EAAO,OAAS,SAAgB,GAC9B,OAAO,CACT,EACA,EAAO,GAAK,SAAY,GACtB,OAAO,CACT,EACA,EAAO,SAAW,SAAkB,GAClC,OAAO,CACT,EACA,EAAO,IAAM,SAAa,GACxB,OAAO,CACT,EACA,EAAO,KAAO,SAAc,GAC1B,OAAO,CACT,EACA,EAAO,KAAO,SAAc,GAC1B,OAAO,CACT,EACA,EAAO,KAAO,SAAc,EAAM,EAAO,GACvC,MAAO,GAAK,CACd,EACA,EAAO,MAAQ,SAAe,EAAM,EAAO,GACzC,MAAO,GAAK,CACd,EACA,EAAO,GAAK,WACV,MAAO,EACT,EACO,CACT,CAhCgC,GAqC5B,EAAuB,WACzB,SAAS,IACP,KAAK,KAAO,CAAC,CACf,CAKA,IAAI,EAAS,EAAQ,UA4CrB,OA3CA,EAAO,UAAY,SAAmB,GACpC,OAAO,EAAM,cAAc,OAE1B,QAAQ,kBAAmB,IAE3B,QAAQ,gEAAiE,IAAI,QAAQ,MAAO,IAC/F,EAOA,EAAO,gBAAkB,SAAyB,EAAc,GAC9D,IAAI,EAAO,EACP,EAAuB,EAC3B,GAAI,KAAK,KAAK,eAAe,GAAO,CAClC,EAAuB,KAAK,KAAK,GACjC,GAEE,EAAO,EAAe,OADtB,QAEO,KAAK,KAAK,eAAe,GACpC,CAKA,OAJK,IACH,KAAK,KAAK,GAAgB,EAC1B,KAAK,KAAK,GAAQ,GAEb,CACT,EAQA,EAAO,KAAO,SAAc,EAAO,QACjB,IAAZ,IACF,EAAU,CAAC,GAEb,IAAI,EAAO,KAAK,UAAU,GAC1B,OAAO,KAAK,gBAAgB,EAAM,EAAQ,OAC5C,EACO,CACT,CArD2B,GA0DvB,EAAsB,WACxB,SAAS,EAAO,GACd,KAAK,QAAU,GAAW,EAAQ,SAClC,KAAK,QAAQ,SAAW,KAAK,QAAQ,UAAY,IAAI,EACrD,KAAK,SAAW,KAAK,QAAQ,SAC7B,KAAK,SAAS,QAAU,KAAK,QAC7B,KAAK,aAAe,IAAI,EACxB,KAAK,QAAU,IAAI,CACrB,CAKA,EAAO,MAAQ,SAAe,EAAQ,GAEpC,OADa,IAAI,EAAO,GACV,MAAM,EACtB,EAKA,EAAO,YAAc,SAAqB,EAAQ,GAEhD,OADa,IAAI,EAAO,GACV,YAAY,EAC5B,EAKA,IAAI,EAAS,EAAO,UAgQpB,OA/PA,EAAO,MAAQ,SAAe,EAAQ,QACxB,IAAR,IACF,GAAM,GAER,IACE,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAnBE,EAAM,GAoBN,EAAI,EAAO,OACf,IAAK,EAAI,EAAG,EAAI,EAAG,IAIjB,GAHA,EAAQ,EAAO,KAGX,KAAK,QAAQ,YAAc,KAAK,QAAQ,WAAW,WAAa,KAAK,QAAQ,WAAW,UAAU,EAAM,SAI9F,KAHZ,EAAM,KAAK,QAAQ,WAAW,UAAU,EAAM,MAAM,KAAK,CACvD,OAAQ,MACP,KACmB,CAAC,QAAS,KAAM,UAAW,OAAQ,QAAS,aAAc,OAAQ,OAAQ,YAAa,QAAQ,SAAS,EAAM,MAKtI,OAAQ,EAAM,MACZ,IAAK,QAED,SAEJ,IAAK,KAED,GAAO,KAAK,SAAS,KACrB,SAEJ,IAAK,UAED,GAAO,KAAK,SAAS,QAAQ,KAAK,YAAY,EAAM,QAAS,EAAM,MAAO,EAAS,KAAK,YAAY,EAAM,OAAQ,KAAK,eAAgB,KAAK,SAC5I,SAEJ,IAAK,OAED,GAAO,KAAK,SAAS,KAAK,EAAM,KAAM,EAAM,KAAM,EAAM,SACxD,SAEJ,IAAK,QAOD,IALA,EAAS,GAGT,EAAO,GACP,EAAK,EAAM,OAAO,OACb,EAAI,EAAG,EAAI,EAAI,IAClB,GAAQ,KAAK,SAAS,UAAU,KAAK,YAAY,EAAM,OAAO,GAAG,QAAS,CACxE,QAAQ,EACR,MAAO,EAAM,MAAM,KAMvB,IAHA,GAAU,KAAK,SAAS,SAAS,GACjC,EAAO,GACP,EAAK,EAAM,KAAK,OACX,EAAI,EAAG,EAAI,EAAI,IAAK,CAIvB,IAFA,EAAO,GACP,GAFA,EAAM,EAAM,KAAK,IAER,OACJ,EAAI,EAAG,EAAI,EAAI,IAClB,GAAQ,KAAK,SAAS,UAAU,KAAK,YAAY,EAAI,GAAG,QAAS,CAC/D,QAAQ,EACR,MAAO,EAAM,MAAM,KAGvB,GAAQ,KAAK,SAAS,SAAS,EACjC,CACA,GAAO,KAAK,SAAS,MAAM,EAAQ,GACnC,SAEJ,IAAK,aAED,EAAO,KAAK,MAAM,EAAM,QACxB,GAAO,KAAK,SAAS,WAAW,GAChC,SAEJ,IAAK,OAOD,IALA,EAAU,EAAM,QAChB,EAAQ,EAAM,MACd,EAAQ,EAAM,MACd,EAAK,EAAM,MAAM,OACjB,EAAO,GACF,EAAI,EAAG,EAAI,EAAI,IAElB,GADA,EAAO,EAAM,MAAM,IACJ,QACf,EAAO,EAAK,KACZ,EAAW,GACP,EAAK,OACP,EAAW,KAAK,SAAS,SAAS,GAC9B,EACE,EAAK,OAAO,OAAS,GAA6B,cAAxB,EAAK,OAAO,GAAG,MAC3C,EAAK,OAAO,GAAG,KAAO,EAAW,IAAM,EAAK,OAAO,GAAG,KAClD,EAAK,OAAO,GAAG,QAAU,EAAK,OAAO,GAAG,OAAO,OAAS,GAAuC,SAAlC,EAAK,OAAO,GAAG,OAAO,GAAG,OACxF,EAAK,OAAO,GAAG,OAAO,GAAG,KAAO,EAAW,IAAM,EAAK,OAAO,GAAG,OAAO,GAAG,OAG5E,EAAK,OAAO,QAAQ,CAClB,KAAM,OACN,KAAM,IAIV,GAAY,GAGhB,GAAY,KAAK,MAAM,EAAK,OAAQ,GACpC,GAAQ,KAAK,SAAS,SAAS,EAAU,EAAM,GAEjD,GAAO,KAAK,SAAS,KAAK,EAAM,EAAS,GACzC,SAEJ,IAAK,OAGD,GAAO,KAAK,SAAS,KAAK,EAAM,MAChC,SAEJ,IAAK,YAED,GAAO,KAAK,SAAS,UAAU,KAAK,YAAY,EAAM,SACtD,SAEJ,IAAK,OAGD,IADA,EAAO,EAAM,OAAS,KAAK,YAAY,EAAM,QAAU,EAAM,KACtD,EAAI,EAAI,GAA4B,SAAvB,EAAO,EAAI,GAAG,MAEhC,GAAQ,OADR,EAAQ,IAAS,IACK,OAAS,KAAK,YAAY,EAAM,QAAU,EAAM,MAExE,GAAO,EAAM,KAAK,SAAS,UAAU,GAAQ,EAC7C,SAEJ,QAEI,IAAI,EAAS,eAAiB,EAAM,KAAO,wBAC3C,GAAI,KAAK,QAAQ,OAEf,YADA,QAAQ,MAAM,GAGd,MAAM,IAAI,MAAM,QA7HpB,GAAO,GAAO,GAkIpB,OAAO,CACT,EAKA,EAAO,YAAc,SAAqB,EAAQ,GAChD,EAAW,GAAY,KAAK,SAC5B,IACE,EACA,EACA,EAHE,EAAM,GAIN,EAAI,EAAO,OACf,IAAK,EAAI,EAAG,EAAI,EAAG,IAIjB,GAHA,EAAQ,EAAO,KAGX,KAAK,QAAQ,YAAc,KAAK,QAAQ,WAAW,WAAa,KAAK,QAAQ,WAAW,UAAU,EAAM,SAI9F,KAHZ,EAAM,KAAK,QAAQ,WAAW,UAAU,EAAM,MAAM,KAAK,CACvD,OAAQ,MACP,KACmB,CAAC,SAAU,OAAQ,OAAQ,QAAS,SAAU,KAAM,WAAY,KAAM,MAAO,QAAQ,SAAS,EAAM,MAK5H,OAAQ,EAAM,MACZ,IAAK,SA6CL,IAAK,OAED,GAAO,EAAS,KAAK,EAAM,MAC3B,MA3CJ,IAAK,OAED,GAAO,EAAS,KAAK,EAAM,MAC3B,MAEJ,IAAK,OAED,GAAO,EAAS,KAAK,EAAM,KAAM,EAAM,MAAO,KAAK,YAAY,EAAM,OAAQ,IAC7E,MAEJ,IAAK,QAED,GAAO,EAAS,MAAM,EAAM,KAAM,EAAM,MAAO,EAAM,MACrD,MAEJ,IAAK,SAED,GAAO,EAAS,OAAO,KAAK,YAAY,EAAM,OAAQ,IACtD,MAEJ,IAAK,KAED,GAAO,EAAS,GAAG,KAAK,YAAY,EAAM,OAAQ,IAClD,MAEJ,IAAK,WAED,GAAO,EAAS,SAAS,EAAM,MAC/B,MAEJ,IAAK,KAED,GAAO,EAAS,KAChB,MAEJ,IAAK,MAED,GAAO,EAAS,IAAI,KAAK,YAAY,EAAM,OAAQ,IACnD,MAOJ,QAEI,IAAI,EAAS,eAAiB,EAAM,KAAO,wBAC3C,GAAI,KAAK,QAAQ,OAEf,YADA,QAAQ,MAAM,GAGd,MAAM,IAAI,MAAM,QA9DpB,GAAO,GAAO,GAmEpB,OAAO,CACT,EACO,CACT,CA9R0B,GAgStB,EAAqB,WACvB,SAAS,EAAM,GACb,KAAK,QAAU,GAAW,EAAQ,QACpC,CACA,IAAI,EAAS,EAAM,UAcnB,OAVA,EAAO,WAAa,SAAoB,GACtC,OAAO,CACT,EAKA,EAAO,YAAc,SAAqB,GACxC,OAAO,CACT,EACO,CACT,CAnByB,GA8CzB,SAAS,EAAc,EAAO,GAC5B,OAAO,SAAU,EAAK,EAAK,GACN,mBAAR,IACT,EAAW,EACX,EAAM,MAER,IAAI,EAAU,EAAS,CAAC,EAAG,GAEvB,EAhCR,SAAiB,EAAQ,EAAO,GAC9B,OAAO,SAAU,GAEf,GADA,EAAE,SAAW,8DACT,EAAQ,CACV,IAAI,EAAM,iCAAmC,EAAO,EAAE,QAAU,IAAI,GAAQ,SAC5E,OAAI,EACK,QAAQ,QAAQ,GAErB,OACF,EAAS,KAAM,GAGV,CACT,CACA,GAAI,EACF,OAAO,QAAQ,OAAO,GAExB,IAAI,EAIJ,MAAM,EAHJ,EAAS,EAIb,CACF,CASqB,EADjB,EAAM,EAAS,CAAC,EAAG,EAAO,SAAU,IACP,OAAQ,EAAI,MAAO,GAGhD,GAAI,MAAO,EACT,OAAO,EAAW,IAAI,MAAM,mDAE9B,GAAmB,iBAAR,EACT,OAAO,EAAW,IAAI,MAAM,wCAA0C,OAAO,UAAU,SAAS,KAAK,GAAO,sBAM9G,GA/hEJ,SAAkC,GAC5B,GAAO,EAAI,WAAa,EAAI,QAC9B,QAAQ,KAAK,0MAEjB,CAuhEI,CAAyB,GACrB,EAAI,QACN,EAAI,MAAM,QAAU,GAElB,EAAU,CACZ,IACI,EADA,EAAY,EAAI,UAEpB,IACM,EAAI,QACN,EAAM,EAAI,MAAM,WAAW,IAE7B,EAAS,EAAM,EAAK,EACtB,CAAE,MAAO,GACP,OAAO,EAAW,EACpB,CACA,IAAI,EAAO,SAAc,GACvB,IAAI,EACJ,IAAK,EACH,IACM,EAAI,YACN,EAAO,WAAW,EAAQ,EAAI,YAEhC,EAAM,EAAO,EAAQ,GACjB,EAAI,QACN,EAAM,EAAI,MAAM,YAAY,GAEhC,CAAE,MAAO,GACP,EAAM,CACR,CAGF,OADA,EAAI,UAAY,EACT,EAAM,EAAW,GAAO,EAAS,KAAM,EAChD,EACA,IAAK,GAAa,EAAU,OAAS,EACnC,OAAO,IAGT,UADO,EAAI,WACN,EAAO,OAAQ,OAAO,IAC3B,IAAI,EAAU,EAwBd,OAvBA,EAAO,WAAW,GAAQ,SAAU,GACf,SAAf,EAAM,OACR,IACA,YAAW,WACT,EAAU,EAAM,KAAM,EAAM,MAAM,SAAU,EAAK,GAC/C,GAAI,EACF,OAAO,EAAK,GAEF,MAAR,GAAgB,IAAS,EAAM,OACjC,EAAM,KAAO,EACb,EAAM,SAAU,GAGF,MADhB,GAEE,GAEJ,GACF,GAAG,GAEP,SACgB,IAAZ,GACF,IAGJ,CACA,GAAI,EAAI,MACN,OAAO,QAAQ,QAAQ,EAAI,MAAQ,EAAI,MAAM,WAAW,GAAO,GAAK,MAAK,SAAU,GACjF,OAAO,EAAM,EAAK,EACpB,IAAG,MAAK,SAAU,GAChB,OAAO,EAAI,WAAa,QAAQ,IAAI,EAAO,WAAW,EAAQ,EAAI,aAAa,MAAK,WAClF,OAAO,CACT,IAAK,CACP,IAAG,MAAK,SAAU,GAChB,OAAO,EAAO,EAAQ,EACxB,IAAG,MAAK,SAAU,GAChB,OAAO,EAAI,MAAQ,EAAI,MAAM,YAAY,GAAQ,CACnD,IAAU,MAAE,GAEd,IACM,EAAI,QACN,EAAM,EAAI,MAAM,WAAW,IAE7B,IAAI,EAAU,EAAM,EAAK,GACrB,EAAI,YACN,EAAO,WAAW,EAAS,EAAI,YAEjC,IAAI,EAAO,EAAO,EAAS,GAI3B,OAHI,EAAI,QACN,EAAO,EAAI,MAAM,YAAY,IAExB,CACT,CAAE,MAAO,GACP,OAAO,EAAW,EACpB,CACF,CACF,CAKA,SAAS,EAAO,EAAK,EAAK,GACxB,OAAO,EAAc,EAAM,IAAK,EAAO,MAAhC,CAAuC,EAAK,EAAK,EAC1D,CAhJA,EAAM,iBAAmB,IAAI,IAAI,CAAC,aAAc,gBAsJhD,EAAO,QAAU,EAAO,WAAa,SAAU,GA/2E/C,IAAwB,EAk3EtB,OAFA,EAAO,SAAW,EAAS,CAAC,EAAG,EAAO,SAAU,GAh3E1B,EAi3EP,EAAO,SAh3EtB,EAAQ,SAAW,EAi3EZ,CACT,EACA,EAAO,YAAc,EACrB,EAAO,SAAW,EAAQ,SAM1B,EAAO,IAAM,WAKX,IAJA,IAAI,EAAa,EAAO,SAAS,YAAc,CAC7C,UAAW,CAAC,EACZ,YAAa,CAAC,GAEP,EAAO,UAAU,OAAQ,EAAO,IAAI,MAAM,GAAO,EAAO,EAAG,EAAO,EAAM,IAC/E,EAAK,GAAQ,UAAU,GAEzB,EAAK,SAAQ,SAAU,GAErB,IAAI,EAAO,EAAS,CAAC,EAAG,GAsJxB,GAnJA,EAAK,MAAQ,EAAO,SAAS,OAAS,EAAK,QAAS,EAGhD,EAAK,aACP,EAAK,WAAW,SAAQ,SAAU,GAChC,IAAK,EAAI,KACP,MAAM,IAAI,MAAM,2BAElB,GAAI,EAAI,SAAU,CAEhB,IAAI,EAAe,EAAW,UAAU,EAAI,MAG1C,EAAW,UAAU,EAAI,MAFvB,EAE+B,WAC/B,IAAK,IAAI,EAAQ,UAAU,OAAQ,EAAO,IAAI,MAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACpF,EAAK,GAAS,UAAU,GAE1B,IAAI,EAAM,EAAI,SAAS,MAAM,KAAM,GAInC,OAHY,IAAR,IACF,EAAM,EAAa,MAAM,KAAM,IAE1B,CACT,EAEiC,EAAI,QAEzC,CACA,GAAI,EAAI,UAAW,CAEjB,IAAK,EAAI,OAAuB,UAAd,EAAI,OAAmC,WAAd,EAAI,MAC7C,MAAM,IAAI,MAAM,+CAEd,EAAW,EAAI,OACjB,EAAW,EAAI,OAAO,QAAQ,EAAI,WAElC,EAAW,EAAI,OAAS,CAAC,EAAI,WAE3B,EAAI,QAEY,UAAd,EAAI,MACF,EAAW,WACb,EAAW,WAAW,KAAK,EAAI,OAE/B,EAAW,WAAa,CAAC,EAAI,OAER,WAAd,EAAI,QACT,EAAW,YACb,EAAW,YAAY,KAAK,EAAI,OAEhC,EAAW,YAAc,CAAC,EAAI,QAItC,CACI,EAAI,cAEN,EAAW,YAAY,EAAI,MAAQ,EAAI,YAE3C,IACA,EAAK,WAAa,GAIhB,EAAK,UACP,WACE,IAAI,EAAW,EAAO,SAAS,UAAY,IAAI,EAC3C,EAAQ,SAAe,GACzB,IAAI,EAAe,EAAS,GAE5B,EAAS,GAAQ,WACf,IAAK,IAAI,EAAQ,UAAU,OAAQ,EAAO,IAAI,MAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACpF,EAAK,GAAS,UAAU,GAE1B,IAAI,EAAM,EAAK,SAAS,GAAM,MAAM,EAAU,GAI9C,OAHY,IAAR,IACF,EAAM,EAAa,MAAM,EAAU,IAE9B,CACT,CACF,EACA,IAAK,IAAI,KAAQ,EAAK,SACpB,EAAM,GAER,EAAK,SAAW,CACjB,CApBD,GAsBE,EAAK,WACP,WACE,IAAI,EAAY,EAAO,SAAS,WAAa,IAAI,EAC7C,EAAS,SAAgB,GAC3B,IAAI,EAAgB,EAAU,GAE9B,EAAU,GAAQ,WAChB,IAAK,IAAI,EAAQ,UAAU,OAAQ,EAAO,IAAI,MAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACpF,EAAK,GAAS,UAAU,GAE1B,IAAI,EAAM,EAAK,UAAU,GAAM,MAAM,EAAW,GAIhD,OAHY,IAAR,IACF,EAAM,EAAc,MAAM,EAAW,IAEhC,CACT,CACF,EACA,IAAK,IAAI,KAAQ,EAAK,UACpB,EAAO,GAET,EAAK,UAAY,CAClB,CApBD,GAwBE,EAAK,OACP,WACE,IAAI,EAAQ,EAAO,SAAS,OAAS,IAAI,EACrC,EAAS,SAAgB,GAC3B,IAAI,EAAW,EAAM,GACjB,EAAM,iBAAiB,IAAI,GAC7B,EAAM,GAAQ,SAAU,GACtB,GAAI,EAAO,SAAS,MAClB,OAAO,QAAQ,QAAQ,EAAK,MAAM,GAAM,KAAK,EAAO,IAAM,MAAK,SAAU,GACvE,OAAO,EAAS,KAAK,EAAO,EAC9B,IAEF,IAAI,EAAM,EAAK,MAAM,GAAM,KAAK,EAAO,GACvC,OAAO,EAAS,KAAK,EAAO,EAC9B,EAEA,EAAM,GAAQ,WACZ,IAAK,IAAI,EAAQ,UAAU,OAAQ,EAAO,IAAI,MAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACpF,EAAK,GAAS,UAAU,GAE1B,IAAI,EAAM,EAAK,MAAM,GAAM,MAAM,EAAO,GAIxC,OAHY,IAAR,IACF,EAAM,EAAS,MAAM,EAAO,IAEvB,CACT,CAEJ,EACA,IAAK,IAAI,KAAQ,EAAK,MACpB,EAAO,GAET,EAAK,MAAQ,CACd,CA/BD,GAmCE,EAAK,WAAY,CACnB,IAAI,EAAc,EAAO,SAAS,WAClC,EAAK,WAAa,SAAU,GAC1B,IAAI,EAAS,GAKb,OAJA,EAAO,KAAK,EAAK,WAAW,KAAK,KAAM,IACnC,IACF,EAAS,EAAO,OAAO,EAAY,KAAK,KAAM,KAEzC,CACT,CACF,CACA,EAAO,WAAW,EACpB,GACF,EAMA,EAAO,WAAa,SAAU,EAAQ,GAuCpC,IAtCA,IAsC8D,EAtC1D,EAAS,GACT,EAAS,WACX,IAAI,EAAQ,EAAM,MAElB,OADA,EAAS,EAAO,OAAO,EAAS,KAAK,EAAQ,IACrC,EAAM,MACZ,IAAK,QAED,IAAK,IAAgE,EAA5D,EAAa,EAAgC,EAAM,UAAmB,EAAS,KAAc,MAAO,CAC3G,IAAI,EAAO,EAAO,MAClB,EAAS,EAAO,OAAO,EAAO,WAAW,EAAK,OAAQ,GACxD,CACA,IAAK,IAA8D,EAA1D,EAAa,EAAgC,EAAM,QAAiB,EAAS,KAAc,MAElG,IADA,IAC4D,EAAnD,EAAa,EADZ,EAAO,SACqD,EAAS,KAAc,MAAO,CAClG,IAAI,EAAQ,EAAO,MACnB,EAAS,EAAO,OAAO,EAAO,WAAW,EAAM,OAAQ,GACzD,CAEF,MAEJ,IAAK,OAED,EAAS,EAAO,OAAO,EAAO,WAAW,EAAM,MAAO,IACtD,MAEJ,QAEQ,EAAO,SAAS,YAAc,EAAO,SAAS,WAAW,aAAe,EAAO,SAAS,WAAW,YAAY,EAAM,MAEvH,EAAO,SAAS,WAAW,YAAY,EAAM,MAAM,SAAQ,SAAU,GACnE,EAAS,EAAO,OAAO,EAAO,WAAW,EAAM,GAAc,GAC/D,IACS,EAAM,SACf,EAAS,EAAO,OAAO,EAAO,WAAW,EAAM,OAAQ,KAIjE,EACS,EAAY,EAAgC,KAAkB,EAAQ,KAAa,MAC1F,IAEF,OAAO,CACT,EAMA,EAAO,YAAc,EAAc,EAAM,UAAW,EAAO,aAK3D,EAAO,OAAS,EAChB,EAAO,OAAS,EAAO,MACvB,EAAO,SAAW,EAClB,EAAO,aAAe,EACtB,EAAO,MAAQ,EACf,EAAO,MAAQ,EAAM,IACrB,EAAO,UAAY,EACnB,EAAO,QAAU,EACjB,EAAO,MAAQ,EACf,EAAO,MAAQ,EACf,IAAI,EAAU,EAAO,QACjB,EAAa,EAAO,WACpB,EAAM,EAAO,IACb,EAAa,EAAO,WACpB,EAAc,EAAO,YACrB,EAAQ,EACR,EAAS,EAAO,MAChB,EAAQ,EAAM,IAElB,EAAQ,MAAQ,EAChB,EAAQ,MAAQ,EAChB,EAAQ,OAAS,EACjB,EAAQ,SAAW,EACnB,EAAQ,QAAU,EAClB,EAAQ,aAAe,EACvB,EAAQ,UAAY,EACpB,EAAQ,YAAc,EACtB,EAAQ,MAAQ,EAChB,EAAQ,OAAS,EACjB,EAAQ,QAAU,EAClB,EAAQ,MAAQ,EAChB,EAAQ,YAAc,EACtB,EAAQ,OAAS,EACjB,EAAQ,WAAa,EACrB,EAAQ,IAAM,EACd,EAAQ,WAAa,CAEtB","file":"/npm/marked@4.3.0/lib/marked.umd.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/marked@4.3.0/lib/marked.umd.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\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(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {}));\n})(this, (function (exports) { 'use strict';\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n    }\n  }\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    Object.defineProperty(Constructor, \"prototype\", {\n      writable: false\n    });\n    return Constructor;\n  }\n  function _extends() {\n    _extends = Object.assign ? Object.assign.bind() : function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n        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  }\n  function _unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n  }\n  function _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  }\n  function _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  }\n  function _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  }\n  function _toPropertyKey(arg) {\n    var key = _toPrimitive(arg, \"string\");\n    return typeof key === \"symbol\" ? key : String(key);\n  }\n\n  function 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  }\n  exports.defaults = getDefaults();\n  function changeDefaults(newDefaults) {\n    exports.defaults = newDefaults;\n  }\n\n  /**\n   * Helpers\n   */\n  var escapeTest = /[&<>\"']/;\n  var escapeReplace = new RegExp(escapeTest.source, 'g');\n  var escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\n  var escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\n  var escapeReplacements = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n  var getEscapeReplacement = function getEscapeReplacement(ch) {\n    return escapeReplacements[ch];\n  };\n  function 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  }\n  var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n  /**\n   * @param {string} html\n   */\n  function 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  }\n  var caret = /(^|[^\\[])\\^/g;\n\n  /**\n   * @param {string | RegExp} regex\n   * @param {string} opt\n   */\n  function 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  }\n  var nonWordAndColonTest = /[^\\w:]/g;\n  var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n  /**\n   * @param {boolean} sanitize\n   * @param {string} base\n   * @param {string} href\n   */\n  function 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  }\n  var baseUrls = {};\n  var justDomain = /^[^:]+:\\/*[^/]*$/;\n  var protocol = /^([^:]+:)[\\s\\S]*$/;\n  var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n  /**\n   * @param {string} base\n   * @param {string} href\n   */\n  function 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  }\n  var noopTest = {\n    exec: function noopTest() {}\n  };\n  function 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   */\n  function 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  }\n  function 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  }\n  function 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   */\n  function 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\n  function 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  }\n  function 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   */\n  var 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 && /^<a /i.test(cap[0])) {\n          this.lexer.state.inLink = true;\n        } else if (this.lexer.state.inLink && /^<\\/a>/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          // commonmark requires matching angle brackets\n          if (!/>$/.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(href)) {\n          if (this.options.pedantic && !/>$/.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   */\n  var 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    + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n    + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\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  };\n  block._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\n  block._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n  block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n  block.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n  block.listItemStart = edit(/^( *)(bull) */).replace('bull', block.bullet).getRegex();\n  block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\n  block._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';\n  block._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\n  block.html = edit(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n  block.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();\n  block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n\n  /**\n   * Normal Block Grammar\n   */\n\n  block.normal = _extends({}, block);\n\n  /**\n   * GFM Block Grammar\n   */\n\n  block.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\n  block.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();\n  block.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\n  block.pedantic = _extends({}, block.normal, {\n    html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n    + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n    def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n    heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n    fences: noopTest,\n    // fences not supported\n    lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n    paragraph: edit(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n  });\n\n  /**\n   * Inline-Level Grammar\n   */\n  var inline = {\n    escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n    autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n    url: noopTest,\n    tag: '^comment' + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n    + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n    + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n    + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n    + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>',\n    // CDATA section\n    link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n    reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n    nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n    reflinkSearch: 'reflink|nolink(?!\\\\()',\n    emStrong: {\n      lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n      //        (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left.  (5) and (6) can be either Left or Right.\n      //          () Skip orphan inside strong                                      () Consume to delim     (1) #***                (2) a***#, a***                             (3) #***a, ***a                 (4) ***#              (5) #***#                 (6) a***a\n      rDelimAst: /^(?:[^_*\\\\]|\\\\.)*?\\_\\_(?:[^_*\\\\]|\\\\.)*?\\*(?:[^_*\\\\]|\\\\.)*?(?=\\_\\_)|(?:[^*\\\\]|\\\\.)+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[^punct*_\\s])/,\n      rDelimUnd: /^(?:[^_*\\\\]|\\\\.)*?\\*\\*(?:[^_*\\\\]|\\\\.)*?\\_(?:[^_*\\\\]|\\\\.)*?(?=\\*\\*)|(?:[^_\\\\]|\\\\.)+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n    },\n\n    code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n    br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n    del: noopTest,\n    text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n    punctuation: /^([\\spunctuation])/\n  };\n\n  // list of punctuation marks from CommonMark spec\n  // without * and _ to handle the different emphasis markers * and _\n  inline._punctuation = '!\"#$%&\\'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~';\n  inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();\n\n  // sequences em should skip over [title](link), `code`, <html>\n  inline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n  // lookbehind is not available on Safari as of version 16\n  // inline.escapedEmSt = /(?<=(?:^|[^\\\\)(?:\\\\[^])*)\\\\[*_]/g;\n  inline.escapedEmSt = /(?:^|[^\\\\])(?:\\\\\\\\)*\\\\[*_]/g;\n  inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n  inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();\n  inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();\n  inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();\n  inline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n  inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n  inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n  inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();\n  inline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n  inline.tag = edit(inline.tag).replace('comment', inline._comment).replace('attribute', inline._attribute).getRegex();\n  inline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n  inline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n  inline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n  inline.link = edit(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();\n  inline.reflink = edit(inline.reflink).replace('label', inline._label).replace('ref', block._label).getRegex();\n  inline.nolink = edit(inline.nolink).replace('ref', block._label).getRegex();\n  inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();\n\n  /**\n   * Normal Inline Grammar\n   */\n\n  inline.normal = _extends({}, inline);\n\n  /**\n   * Pedantic Inline Grammar\n   */\n\n  inline.pedantic = _extends({}, inline.normal, {\n    strong: {\n      start: /^__|\\*\\*/,\n      middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n      endAst: /\\*\\*(?!\\*)/g,\n      endUnd: /__(?!_)/g\n    },\n    em: {\n      start: /^_|\\*/,\n      middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n      endAst: /\\*(?!\\*)/g,\n      endUnd: /_(?!_)/g\n    },\n    link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline._label).getRegex(),\n    reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline._label).getRegex()\n  });\n\n  /**\n   * GFM Inline Grammar\n   */\n\n  inline.gfm = _extends({}, inline.normal, {\n    escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n    _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n    url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n    _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n    del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n    text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n  });\n  inline.gfm.url = edit(inline.gfm.url, 'i').replace('email', inline.gfm._extended_email).getRegex();\n  /**\n   * GFM + Line Breaks Inline Grammar\n   */\n\n  inline.breaks = _extends({}, inline.gfm, {\n    br: edit(inline.br).replace('{2,}', '*').getRegex(),\n    text: edit(inline.gfm.text).replace('\\\\b_', '\\\\b_| {2,}\\\\n').replace(/\\{2,\\}/g, '*').getRegex()\n  });\n\n  /**\n   * smartypants text replacement\n   * @param {string} text\n   */\n  function smartypants(text) {\n    return text\n    // em-dashes\n    .replace(/---/g, \"\\u2014\")\n    // en-dashes\n    .replace(/--/g, \"\\u2013\")\n    // opening singles\n    .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, \"$1\\u2018\")\n    // closing singles & apostrophes\n    .replace(/'/g, \"\\u2019\")\n    // opening doubles\n    .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, \"$1\\u201C\")\n    // closing doubles\n    .replace(/\"/g, \"\\u201D\")\n    // ellipses\n    .replace(/\\.{3}/g, \"\\u2026\");\n  }\n\n  /**\n   * mangle email addresses\n   * @param {string} text\n   */\n  function mangle(text) {\n    var out = '',\n      i,\n      ch;\n    var l = text.length;\n    for (i = 0; i < l; i++) {\n      ch = text.charCodeAt(i);\n      if (Math.random() > 0.5) {\n        ch = 'x' + ch.toString(16);\n      }\n      out += '&#' + ch + ';';\n    }\n    return out;\n  }\n\n  /**\n   * Block Lexer\n   */\n  var Lexer = /*#__PURE__*/function () {\n    function Lexer(options) {\n      this.tokens = [];\n      this.tokens.links = Object.create(null);\n      this.options = options || exports.defaults;\n      this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n      this.tokenizer = this.options.tokenizer;\n      this.tokenizer.options = this.options;\n      this.tokenizer.lexer = this;\n      this.inlineQueue = [];\n      this.state = {\n        inLink: false,\n        inRawBlock: false,\n        top: true\n      };\n      var rules = {\n        block: block.normal,\n        inline: inline.normal\n      };\n      if (this.options.pedantic) {\n        rules.block = block.pedantic;\n        rules.inline = inline.pedantic;\n      } else if (this.options.gfm) {\n        rules.block = block.gfm;\n        if (this.options.breaks) {\n          rules.inline = inline.breaks;\n        } else {\n          rules.inline = inline.gfm;\n        }\n      }\n      this.tokenizer.rules = rules;\n    }\n\n    /**\n     * Expose Rules\n     */\n    /**\n     * Static Lex Method\n     */\n    Lexer.lex = function lex(src, options) {\n      var lexer = new Lexer(options);\n      return lexer.lex(src);\n    }\n\n    /**\n     * Static Lex Inline Method\n     */;\n    Lexer.lexInline = function lexInline(src, options) {\n      var lexer = new Lexer(options);\n      return lexer.inlineTokens(src);\n    }\n\n    /**\n     * Preprocessing\n     */;\n    var _proto = Lexer.prototype;\n    _proto.lex = function lex(src) {\n      src = src.replace(/\\r\\n|\\r/g, '\\n');\n      this.blockTokens(src, this.tokens);\n      var next;\n      while (next = this.inlineQueue.shift()) {\n        this.inlineTokens(next.src, next.tokens);\n      }\n      return this.tokens;\n    }\n\n    /**\n     * Lexing\n     */;\n    _proto.blockTokens = function blockTokens(src, tokens) {\n      var _this = this;\n      if (tokens === void 0) {\n        tokens = [];\n      }\n      if (this.options.pedantic) {\n        src = src.replace(/\\t/g, '    ').replace(/^ +$/gm, '');\n      } else {\n        src = src.replace(/^( *)(\\t+)/gm, function (_, leading, tabs) {\n          return leading + '    '.repeat(tabs.length);\n        });\n      }\n      var token, lastToken, cutSrc, lastParagraphClipped;\n      while (src) {\n        if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {\n          if (token = extTokenizer.call({\n            lexer: _this\n          }, src, tokens)) {\n            src = src.substring(token.raw.length);\n            tokens.push(token);\n            return true;\n          }\n          return false;\n        })) {\n          continue;\n        }\n\n        // newline\n        if (token = this.tokenizer.space(src)) {\n          src = src.substring(token.raw.length);\n          if (token.raw.length === 1 && tokens.length > 0) {\n            // if there's a single \\n as a spacer, it's terminating the last line,\n            // so move it there so that we don't get unecessary paragraph tags\n            tokens[tokens.length - 1].raw += '\\n';\n          } else {\n            tokens.push(token);\n          }\n          continue;\n        }\n\n        // code\n        if (token = this.tokenizer.code(src)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1];\n          // An indented code block cannot interrupt a paragraph.\n          if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n            lastToken.raw += '\\n' + token.raw;\n            lastToken.text += '\\n' + token.text;\n            this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n          } else {\n            tokens.push(token);\n          }\n          continue;\n        }\n\n        // fences\n        if (token = this.tokenizer.fences(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // heading\n        if (token = this.tokenizer.heading(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // hr\n        if (token = this.tokenizer.hr(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // blockquote\n        if (token = this.tokenizer.blockquote(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // list\n        if (token = this.tokenizer.list(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // html\n        if (token = this.tokenizer.html(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // def\n        if (token = this.tokenizer.def(src)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1];\n          if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n            lastToken.raw += '\\n' + token.raw;\n            lastToken.text += '\\n' + token.raw;\n            this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n          } else if (!this.tokens.links[token.tag]) {\n            this.tokens.links[token.tag] = {\n              href: token.href,\n              title: token.title\n            };\n          }\n          continue;\n        }\n\n        // table (gfm)\n        if (token = this.tokenizer.table(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // lheading\n        if (token = this.tokenizer.lheading(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // top-level paragraph\n        // prevent paragraph consuming extensions by clipping 'src' to extension start\n        cutSrc = src;\n        if (this.options.extensions && this.options.extensions.startBlock) {\n          (function () {\n            var startIndex = Infinity;\n            var tempSrc = src.slice(1);\n            var tempStart = void 0;\n            _this.options.extensions.startBlock.forEach(function (getStartIndex) {\n              tempStart = getStartIndex.call({\n                lexer: this\n              }, tempSrc);\n              if (typeof tempStart === 'number' && tempStart >= 0) {\n                startIndex = Math.min(startIndex, tempStart);\n              }\n            });\n            if (startIndex < Infinity && startIndex >= 0) {\n              cutSrc = src.substring(0, startIndex + 1);\n            }\n          })();\n        }\n        if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n          lastToken = tokens[tokens.length - 1];\n          if (lastParagraphClipped && lastToken.type === 'paragraph') {\n            lastToken.raw += '\\n' + token.raw;\n            lastToken.text += '\\n' + token.text;\n            this.inlineQueue.pop();\n            this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n          } else {\n            tokens.push(token);\n          }\n          lastParagraphClipped = cutSrc.length !== src.length;\n          src = src.substring(token.raw.length);\n          continue;\n        }\n\n        // text\n        if (token = this.tokenizer.text(src)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1];\n          if (lastToken && lastToken.type === 'text') {\n            lastToken.raw += '\\n' + token.raw;\n            lastToken.text += '\\n' + token.text;\n            this.inlineQueue.pop();\n            this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n          } else {\n            tokens.push(token);\n          }\n          continue;\n        }\n        if (src) {\n          var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n          if (this.options.silent) {\n            console.error(errMsg);\n            break;\n          } else {\n            throw new Error(errMsg);\n          }\n        }\n      }\n      this.state.top = true;\n      return tokens;\n    };\n    _proto.inline = function inline(src, tokens) {\n      if (tokens === void 0) {\n        tokens = [];\n      }\n      this.inlineQueue.push({\n        src: src,\n        tokens: tokens\n      });\n      return tokens;\n    }\n\n    /**\n     * Lexing/Compiling\n     */;\n    _proto.inlineTokens = function inlineTokens(src, tokens) {\n      var _this2 = this;\n      if (tokens === void 0) {\n        tokens = [];\n      }\n      var token, lastToken, cutSrc;\n\n      // String with links masked to avoid interference with em and strong\n      var maskedSrc = src;\n      var match;\n      var keepPrevChar, prevChar;\n\n      // Mask out reflinks\n      if (this.tokens.links) {\n        var links = Object.keys(this.tokens.links);\n        if (links.length > 0) {\n          while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n            if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n              maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n            }\n          }\n        }\n      }\n      // Mask out other blocks\n      while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n        maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n      }\n\n      // Mask out escaped em & strong delimiters\n      while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n        maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n        this.tokenizer.rules.inline.escapedEmSt.lastIndex--;\n      }\n      while (src) {\n        if (!keepPrevChar) {\n          prevChar = '';\n        }\n        keepPrevChar = false;\n\n        // extensions\n        if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {\n          if (token = extTokenizer.call({\n            lexer: _this2\n          }, src, tokens)) {\n            src = src.substring(token.raw.length);\n            tokens.push(token);\n            return true;\n          }\n          return false;\n        })) {\n          continue;\n        }\n\n        // escape\n        if (token = this.tokenizer.escape(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // tag\n        if (token = this.tokenizer.tag(src)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1];\n          if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n            lastToken.raw += token.raw;\n            lastToken.text += token.text;\n          } else {\n            tokens.push(token);\n          }\n          continue;\n        }\n\n        // link\n        if (token = this.tokenizer.link(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // reflink, nolink\n        if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1];\n          if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n            lastToken.raw += token.raw;\n            lastToken.text += token.text;\n          } else {\n            tokens.push(token);\n          }\n          continue;\n        }\n\n        // em & strong\n        if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // code\n        if (token = this.tokenizer.codespan(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // br\n        if (token = this.tokenizer.br(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // del (gfm)\n        if (token = this.tokenizer.del(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // autolink\n        if (token = this.tokenizer.autolink(src, mangle)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // url (gfm)\n        if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        }\n\n        // text\n        // prevent inlineText consuming extensions by clipping 'src' to extension start\n        cutSrc = src;\n        if (this.options.extensions && this.options.extensions.startInline) {\n          (function () {\n            var startIndex = Infinity;\n            var tempSrc = src.slice(1);\n            var tempStart = void 0;\n            _this2.options.extensions.startInline.forEach(function (getStartIndex) {\n              tempStart = getStartIndex.call({\n                lexer: this\n              }, tempSrc);\n              if (typeof tempStart === 'number' && tempStart >= 0) {\n                startIndex = Math.min(startIndex, tempStart);\n              }\n            });\n            if (startIndex < Infinity && startIndex >= 0) {\n              cutSrc = src.substring(0, startIndex + 1);\n            }\n          })();\n        }\n        if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n          src = src.substring(token.raw.length);\n          if (token.raw.slice(-1) !== '_') {\n            // Track prevChar before string of ____ started\n            prevChar = token.raw.slice(-1);\n          }\n          keepPrevChar = true;\n          lastToken = tokens[tokens.length - 1];\n          if (lastToken && lastToken.type === 'text') {\n            lastToken.raw += token.raw;\n            lastToken.text += token.text;\n          } else {\n            tokens.push(token);\n          }\n          continue;\n        }\n        if (src) {\n          var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n          if (this.options.silent) {\n            console.error(errMsg);\n            break;\n          } else {\n            throw new Error(errMsg);\n          }\n        }\n      }\n      return tokens;\n    };\n    _createClass(Lexer, null, [{\n      key: \"rules\",\n      get: function get() {\n        return {\n          block: block,\n          inline: inline\n        };\n      }\n    }]);\n    return Lexer;\n  }();\n\n  /**\n   * Renderer\n   */\n  var Renderer = /*#__PURE__*/function () {\n    function Renderer(options) {\n      this.options = options || exports.defaults;\n    }\n    var _proto = Renderer.prototype;\n    _proto.code = function code(_code, infostring, escaped) {\n      var lang = (infostring || '').match(/\\S*/)[0];\n      if (this.options.highlight) {\n        var out = this.options.highlight(_code, lang);\n        if (out != null && out !== _code) {\n          escaped = true;\n          _code = out;\n        }\n      }\n      _code = _code.replace(/\\n$/, '') + '\\n';\n      if (!lang) {\n        return '<pre><code>' + (escaped ? _code : escape(_code, true)) + '</code></pre>\\n';\n      }\n      return '<pre><code class=\"' + this.options.langPrefix + escape(lang) + '\">' + (escaped ? _code : escape(_code, true)) + '</code></pre>\\n';\n    }\n\n    /**\n     * @param {string} quote\n     */;\n    _proto.blockquote = function blockquote(quote) {\n      return \"<blockquote>\\n\" + quote + \"</blockquote>\\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 \"<h\" + level + \" id=\\\"\" + id + \"\\\">\" + text + \"</h\" + level + \">\\n\";\n      }\n\n      // ignore IDs\n      return \"<h\" + level + \">\" + text + \"</h\" + level + \">\\n\";\n    };\n    _proto.hr = function hr() {\n      return this.options.xhtml ? '<hr/>\\n' : '<hr>\\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 \"<li>\" + text + \"</li>\\n\";\n    };\n    _proto.checkbox = function checkbox(checked) {\n      return '<input ' + (checked ? 'checked=\"\" ' : '') + 'disabled=\"\" type=\"checkbox\"' + (this.options.xhtml ? ' /' : '') + '> ';\n    }\n\n    /**\n     * @param {string} text\n     */;\n    _proto.paragraph = function paragraph(text) {\n      return \"<p>\" + text + \"</p>\\n\";\n    }\n\n    /**\n     * @param {string} header\n     * @param {string} body\n     */;\n    _proto.table = function table(header, body) {\n      if (body) body = \"<tbody>\" + body + \"</tbody>\";\n      return '<table>\\n' + '<thead>\\n' + header + '</thead>\\n' + body + '</table>\\n';\n    }\n\n    /**\n     * @param {string} content\n     */;\n    _proto.tablerow = function tablerow(content) {\n      return \"<tr>\\n\" + content + \"</tr>\\n\";\n    };\n    _proto.tablecell = function tablecell(content, flags) {\n      var type = flags.header ? 'th' : 'td';\n      var tag = flags.align ? \"<\" + type + \" align=\\\"\" + flags.align + \"\\\">\" : \"<\" + type + \">\";\n      return tag + content + (\"</\" + type + \">\\n\");\n    }\n\n    /**\n     * span level renderer\n     * @param {string} text\n     */;\n    _proto.strong = function strong(text) {\n      return \"<strong>\" + text + \"</strong>\";\n    }\n\n    /**\n     * @param {string} text\n     */;\n    _proto.em = function em(text) {\n      return \"<em>\" + text + \"</em>\";\n    }\n\n    /**\n     * @param {string} text\n     */;\n    _proto.codespan = function codespan(text) {\n      return \"<code>\" + text + \"</code>\";\n    };\n    _proto.br = function br() {\n      return this.options.xhtml ? '<br/>' : '<br>';\n    }\n\n    /**\n     * @param {string} text\n     */;\n    _proto.del = function del(text) {\n      return \"<del>\" + text + \"</del>\";\n    }\n\n    /**\n     * @param {string} href\n     * @param {string} title\n     * @param {string} text\n     */;\n    _proto.link = function link(href, title, text) {\n      href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n      if (href === null) {\n        return text;\n      }\n      var out = '<a href=\"' + href + '\"';\n      if (title) {\n        out += ' title=\"' + title + '\"';\n      }\n      out += '>' + text + '</a>';\n      return out;\n    }\n\n    /**\n     * @param {string} href\n     * @param {string} title\n     * @param {string} text\n     */;\n    _proto.image = function image(href, title, text) {\n      href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n      if (href === null) {\n        return text;\n      }\n      var out = \"<img src=\\\"\" + href + \"\\\" alt=\\\"\" + text + \"\\\"\";\n      if (title) {\n        out += \" title=\\\"\" + title + \"\\\"\";\n      }\n      out += this.options.xhtml ? '/>' : '>';\n      return out;\n    };\n    _proto.text = function text(_text) {\n      return _text;\n    };\n    return Renderer;\n  }();\n\n  /**\n   * TextRenderer\n   * returns only the textual part of the token\n   */\n  var TextRenderer = /*#__PURE__*/function () {\n    function TextRenderer() {}\n    var _proto = TextRenderer.prototype;\n    // no need for block level renderers\n    _proto.strong = function strong(text) {\n      return text;\n    };\n    _proto.em = function em(text) {\n      return text;\n    };\n    _proto.codespan = function codespan(text) {\n      return text;\n    };\n    _proto.del = function del(text) {\n      return text;\n    };\n    _proto.html = function html(text) {\n      return text;\n    };\n    _proto.text = function text(_text) {\n      return _text;\n    };\n    _proto.link = function link(href, title, text) {\n      return '' + text;\n    };\n    _proto.image = function image(href, title, text) {\n      return '' + text;\n    };\n    _proto.br = function br() {\n      return '';\n    };\n    return TextRenderer;\n  }();\n\n  /**\n   * Slugger generates header id\n   */\n  var Slugger = /*#__PURE__*/function () {\n    function Slugger() {\n      this.seen = {};\n    }\n\n    /**\n     * @param {string} value\n     */\n    var _proto = Slugger.prototype;\n    _proto.serialize = function serialize(value) {\n      return value.toLowerCase().trim()\n      // remove html tags\n      .replace(/<[!\\/a-z].*?>/ig, '')\n      // remove unwanted chars\n      .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n    }\n\n    /**\n     * Finds the next safe (unique) slug to use\n     * @param {string} originalSlug\n     * @param {boolean} isDryRun\n     */;\n    _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n      var slug = originalSlug;\n      var occurenceAccumulator = 0;\n      if (this.seen.hasOwnProperty(slug)) {\n        occurenceAccumulator = this.seen[originalSlug];\n        do {\n          occurenceAccumulator++;\n          slug = originalSlug + '-' + occurenceAccumulator;\n        } while (this.seen.hasOwnProperty(slug));\n      }\n      if (!isDryRun) {\n        this.seen[originalSlug] = occurenceAccumulator;\n        this.seen[slug] = 0;\n      }\n      return slug;\n    }\n\n    /**\n     * Convert string to unique id\n     * @param {object} [options]\n     * @param {boolean} [options.dryrun] Generates the next unique slug without\n     * updating the internal accumulator.\n     */;\n    _proto.slug = function slug(value, options) {\n      if (options === void 0) {\n        options = {};\n      }\n      var slug = this.serialize(value);\n      return this.getNextSafeSlug(slug, options.dryrun);\n    };\n    return Slugger;\n  }();\n\n  /**\n   * Parsing & Compiling\n   */\n  var Parser = /*#__PURE__*/function () {\n    function Parser(options) {\n      this.options = options || exports.defaults;\n      this.options.renderer = this.options.renderer || new Renderer();\n      this.renderer = this.options.renderer;\n      this.renderer.options = this.options;\n      this.textRenderer = new TextRenderer();\n      this.slugger = new Slugger();\n    }\n\n    /**\n     * Static Parse Method\n     */\n    Parser.parse = function parse(tokens, options) {\n      var parser = new Parser(options);\n      return parser.parse(tokens);\n    }\n\n    /**\n     * Static Parse Inline Method\n     */;\n    Parser.parseInline = function parseInline(tokens, options) {\n      var parser = new Parser(options);\n      return parser.parseInline(tokens);\n    }\n\n    /**\n     * Parse Loop\n     */;\n    var _proto = Parser.prototype;\n    _proto.parse = function parse(tokens, top) {\n      if (top === void 0) {\n        top = true;\n      }\n      var out = '',\n        i,\n        j,\n        k,\n        l2,\n        l3,\n        row,\n        cell,\n        header,\n        body,\n        token,\n        ordered,\n        start,\n        loose,\n        itemBody,\n        item,\n        checked,\n        task,\n        checkbox,\n        ret;\n      var l = tokens.length;\n      for (i = 0; i < l; i++) {\n        token = tokens[i];\n\n        // Run any renderer extensions\n        if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n          ret = this.options.extensions.renderers[token.type].call({\n            parser: this\n          }, token);\n          if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n            out += ret || '';\n            continue;\n          }\n        }\n        switch (token.type) {\n          case 'space':\n            {\n              continue;\n            }\n          case 'hr':\n            {\n              out += this.renderer.hr();\n              continue;\n            }\n          case 'heading':\n            {\n              out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n              continue;\n            }\n          case 'code':\n            {\n              out += this.renderer.code(token.text, token.lang, token.escaped);\n              continue;\n            }\n          case 'table':\n            {\n              header = '';\n\n              // header\n              cell = '';\n              l2 = token.header.length;\n              for (j = 0; j < l2; j++) {\n                cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {\n                  header: true,\n                  align: token.align[j]\n                });\n              }\n              header += this.renderer.tablerow(cell);\n              body = '';\n              l2 = token.rows.length;\n              for (j = 0; j < l2; j++) {\n                row = token.rows[j];\n                cell = '';\n                l3 = row.length;\n                for (k = 0; k < l3; k++) {\n                  cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n                    header: false,\n                    align: token.align[k]\n                  });\n                }\n                body += this.renderer.tablerow(cell);\n              }\n              out += this.renderer.table(header, body);\n              continue;\n            }\n          case 'blockquote':\n            {\n              body = this.parse(token.tokens);\n              out += this.renderer.blockquote(body);\n              continue;\n            }\n          case 'list':\n            {\n              ordered = token.ordered;\n              start = token.start;\n              loose = token.loose;\n              l2 = token.items.length;\n              body = '';\n              for (j = 0; j < l2; j++) {\n                item = token.items[j];\n                checked = item.checked;\n                task = item.task;\n                itemBody = '';\n                if (item.task) {\n                  checkbox = this.renderer.checkbox(checked);\n                  if (loose) {\n                    if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n                      item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n                      if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n                        item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n                      }\n                    } else {\n                      item.tokens.unshift({\n                        type: 'text',\n                        text: checkbox\n                      });\n                    }\n                  } else {\n                    itemBody += checkbox;\n                  }\n                }\n                itemBody += this.parse(item.tokens, loose);\n                body += this.renderer.listitem(itemBody, task, checked);\n              }\n              out += this.renderer.list(body, ordered, start);\n              continue;\n            }\n          case 'html':\n            {\n              // TODO parse inline content if parameter markdown=1\n              out += this.renderer.html(token.text);\n              continue;\n            }\n          case 'paragraph':\n            {\n              out += this.renderer.paragraph(this.parseInline(token.tokens));\n              continue;\n            }\n          case 'text':\n            {\n              body = token.tokens ? this.parseInline(token.tokens) : token.text;\n              while (i + 1 < l && tokens[i + 1].type === 'text') {\n                token = tokens[++i];\n                body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n              }\n              out += top ? this.renderer.paragraph(body) : body;\n              continue;\n            }\n          default:\n            {\n              var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n              if (this.options.silent) {\n                console.error(errMsg);\n                return;\n              } else {\n                throw new Error(errMsg);\n              }\n            }\n        }\n      }\n      return out;\n    }\n\n    /**\n     * Parse Inline Tokens\n     */;\n    _proto.parseInline = function parseInline(tokens, renderer) {\n      renderer = renderer || this.renderer;\n      var out = '',\n        i,\n        token,\n        ret;\n      var l = tokens.length;\n      for (i = 0; i < l; i++) {\n        token = tokens[i];\n\n        // Run any renderer extensions\n        if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n          ret = this.options.extensions.renderers[token.type].call({\n            parser: this\n          }, token);\n          if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n            out += ret || '';\n            continue;\n          }\n        }\n        switch (token.type) {\n          case 'escape':\n            {\n              out += renderer.text(token.text);\n              break;\n            }\n          case 'html':\n            {\n              out += renderer.html(token.text);\n              break;\n            }\n          case 'link':\n            {\n              out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n              break;\n            }\n          case 'image':\n            {\n              out += renderer.image(token.href, token.title, token.text);\n              break;\n            }\n          case 'strong':\n            {\n              out += renderer.strong(this.parseInline(token.tokens, renderer));\n              break;\n            }\n          case 'em':\n            {\n              out += renderer.em(this.parseInline(token.tokens, renderer));\n              break;\n            }\n          case 'codespan':\n            {\n              out += renderer.codespan(token.text);\n              break;\n            }\n          case 'br':\n            {\n              out += renderer.br();\n              break;\n            }\n          case 'del':\n            {\n              out += renderer.del(this.parseInline(token.tokens, renderer));\n              break;\n            }\n          case 'text':\n            {\n              out += renderer.text(token.text);\n              break;\n            }\n          default:\n            {\n              var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n              if (this.options.silent) {\n                console.error(errMsg);\n                return;\n              } else {\n                throw new Error(errMsg);\n              }\n            }\n        }\n      }\n      return out;\n    };\n    return Parser;\n  }();\n\n  var Hooks = /*#__PURE__*/function () {\n    function Hooks(options) {\n      this.options = options || exports.defaults;\n    }\n    var _proto = Hooks.prototype;\n    /**\n     * Process markdown before marked\n     */\n    _proto.preprocess = function preprocess(markdown) {\n      return markdown;\n    }\n\n    /**\n     * Process HTML after marked is finished\n     */;\n    _proto.postprocess = function postprocess(html) {\n      return html;\n    };\n    return Hooks;\n  }();\n  Hooks.passThroughHooks = new Set(['preprocess', 'postprocess']);\n\n  function onError(silent, async, callback) {\n    return function (e) {\n      e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n      if (silent) {\n        var msg = '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';\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  }\n  function 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   */\n  function marked(src, opt, callback) {\n    return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);\n  }\n\n  /**\n   * Options\n   */\n\n  marked.options = marked.setOptions = function (opt) {\n    marked.defaults = _extends({}, marked.defaults, opt);\n    changeDefaults(marked.defaults);\n    return marked;\n  };\n  marked.getDefaults = getDefaults;\n  marked.defaults = exports.defaults;\n\n  /**\n   * Use Extension\n   */\n\n  marked.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\n  marked.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   */\n  marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);\n\n  /**\n   * Expose\n   */\n  marked.Parser = Parser;\n  marked.parser = Parser.parse;\n  marked.Renderer = Renderer;\n  marked.TextRenderer = TextRenderer;\n  marked.Lexer = Lexer;\n  marked.lexer = Lexer.lex;\n  marked.Tokenizer = Tokenizer;\n  marked.Slugger = Slugger;\n  marked.Hooks = Hooks;\n  marked.parse = marked;\n  var options = marked.options;\n  var setOptions = marked.setOptions;\n  var use = marked.use;\n  var walkTokens = marked.walkTokens;\n  var parseInline = marked.parseInline;\n  var parse = marked;\n  var parser = Parser.parse;\n  var lexer = Lexer.lex;\n\n  exports.Hooks = Hooks;\n  exports.Lexer = Lexer;\n  exports.Parser = Parser;\n  exports.Renderer = Renderer;\n  exports.Slugger = Slugger;\n  exports.TextRenderer = TextRenderer;\n  exports.Tokenizer = Tokenizer;\n  exports.getDefaults = getDefaults;\n  exports.lexer = lexer;\n  exports.marked = marked;\n  exports.options = options;\n  exports.parse = parse;\n  exports.parseInline = parseInline;\n  exports.parser = parser;\n  exports.setOptions = setOptions;\n  exports.use = use;\n  exports.walkTokens = walkTokens;\n\n}));\n"]}